软件工程解题

软件工程解题,第1张

3-7经典解析 一、选择题 1在软件生命周期中能准确确定软件系统必须做什么和必须具备的功能阶段是 。 A概要设计 B详细设计 C可行性分析 D需求分析 命题目的考查需求分析的概念。 解题要点需求分析能确定软件系统必须做什么和必须具备哪些功能。 IEEE软件工程标准词汇表对需求分析定义如下 1用户解决问题或达到目标所需的条件或权能 2系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或权能 3一种反映1或2所描述的条件或权能的文档说明。 需求分析阶段的工作可概括为4个方面 1需求获取 2需求分析 3编写需求规格说明书 4需求审评。 错解分析概要设计的基本任务有4条 1设计软件系统结构 2数据结构和数据库设计 3编写概要设计文档 4评审。 详细设计主要确定每个模块具体执行过程也称过程设计。可行性分析是需求分析之前要做的工作。 考点链接结构化分析方法。 答案D 2软件需求分析阶段的工作可以分为4个方面需求获取、需求分析、编写需求规格说明书以 及 n A阶段性报告 C总结 B需求审评 D都不正确 命题目的考查软件需求分析阶段的工作。 解题要点需求分析阶段的工作可概括为4个方面 1需求获取 2需求分析 3编写需求规格说明书 4需求审评。

一、需求获取阶段

在需求获取阶段,需要做好收集和管理两件事。

这些需求既有产品经理主动挖掘的,也有从用户、运营、业务方、领导等渠道被动获取的,无论哪个渠道来的需求,都需要有一个正式的地方进行管理,也就是我们通常所说的需求池。

不过,对于多方关注的重点需求,通过需求池来向各方同步就不太合适了:

一是因为需求池内容太多、太杂,向业务方、领导汇报的时候会有很多干扰信息,难以快速抓住重点;

二是因为需求池里面可能有些需求不适合完全公开。

这时我们就需要使用《事项跟踪表》来单独跟进,形式上用Excel、PPT都可以。

而放在《事项跟踪表》里的需求,也要在需求池里记录下来,即需求池是做全量需求管理的,《事项跟踪表》是做重点需求跟进、汇报的。

二、需求分析阶段

1 分析内容

需求分析主要从需求要素、定位、分解、优先级四个方面进行。

1)需求要素分析

需求要素分析是从需求本身出发,不考虑其他因素。

这些要素包括:内容、用户/角色、频次、价值、场景-动机、强度六个方面,这些要素的含义大家应该都比较清楚了,这里说一下分析各个要素的目的是什么:

分析需求内容,是为了弄清楚需求是什么;

分析需求用户/角色,是为了弄清楚需求为谁服务;

分析需求频次、强度,是为了弄清楚需求对用户的重要性、紧迫程度;

分析需求场景-动机,是为了弄清楚需求真伪、用户目的,更深入的理解需求;

分析需求价值,是为了弄清楚需求值不值得做。

2)定位分析

需求的定位分析是分析需求对产品当前阶段目标的意义。

分析需求的定位,有以下两个目的:

一是作为优先级排期的判断条件之一,如果需求与产品当前阶段的目标密切相关,则需要作为高优先级上线;

二是为了框定需求范围。每个需求的实现程度都有深有浅,可以很简单,也可以很复杂,了解了需求之于产品的定位,就能判断需求要做到什么程度。如果一个需求对产品很重要,那就需要做得很丰富,如果只是辅助需求,则需要适当轻量。

3)需求分解

原始需求的颗粒度往往较粗,不利于后续的分析、设计、开发等工作,所以我们需要对这些颗粒度较粗的原始需求进行分解,分解为一个个完整、独立、可实现的子需求。

4)优先级分析

优先级分析是以拆解后的子需求为单位进行的,根据各类优先级的判断方法、原则,初步评估各个子需求的上线顺序及时间。

2 常见问题

需求分析应该是大家从入行那天就知道要做的事,但大多数同学在做需求分析时会犯以下三个比较常见的错误。

1)缺乏系统性

这是在分析中最常见的问题,即很多同学在分析需求时没有系统性的框架,导致很多方面没有分析到、考虑到,从而对需求认识不全面。

2)缺乏深度

对需求某些要素认识比较浅,不够细致深入,例如在分析需求的用户时,没有对用户分层、切片,对各个分层的用户也缺乏足够的了解,导致对用户只有一个笼统、模糊的认识,最后自然无法深入进去。

不过分析是否有深度的定义其实很难把握,也缺乏明确的判断标准,需要随着分析者思维能力的提升、信息量的提升来加强。

转载以下资料供参考

从广义上理解:需求分析包括需求的获取、分析、规格说明、变更、验证、管理的一系列需求工程。

狭义上理解需求分析指需求的分析、定义过程。

原因

需求分析就是分析软件用户的需求是什么。如果投入大量的人力,物力、财力、时间,开发出的软件却没人要,那所有的投入都是徒劳。如果费了很大的精力,开发一个软件,最后却不满足用户的要求,从而要重新开发过,这种返工是让人痛心疾首的(相信大家都有体会)。比如:用户需要一个for linux的软件,而你在软件开发前期忽略了软件的运行环境,忘了向用户询问这个问题,而想当然的认为是开发for windows的软件。当你千辛万苦地开发完成向用户提交时才发现出了问题,那时候你是欲哭无泪了,恨不得找块豆腐一头撞死。

需求分析之所以重要,就因为他具有决策性、方向性、策略性的作用,他在软件开发的过程中具有举足轻重的地位,大家一定要对需求分析具有足够的重视。在一个大型软件系统的开发中,他的作用要远远大于程序设计。

任务

简言之,需求分析的任务就是解决“做什么"的问题,就是要全面地理解用户的各项要求,并准确地表达所接受的用户需求。

过程

需求分析阶段的工作,可以分为四个方面:问题识别、分析与综合、制订规格说明、评审。

问题识别:就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以及需求应该达到的标准。这些需求包括:功能需求(做什么)、性能需求(要达到什么指标)、环境需求(如机型、 *** 作系统等)、可靠性需求(不发生故障的概率)、安全保密需求、用户界面需求、资源使用需求(软件运行是所需的内存、CPU等)、软件成本消耗与开发进度需求、预先估计以后系统可能达到的目标。

分析与综合: 逐步细化所有的软件功能,找出系统各元素间的联系,接口特性和设计上的限制,分析他们是否满足需求,剔除不合理部分,增加需要部分。最后综合成系统的解决方案,给出要开发的系统的详细逻辑模型(做什么的模型)。

制订规格说明书: 即编制文档,描述需求的文档称为软件需求规格说明书。请注意,需求分析阶段的成果是需求规格说明书,向下一阶段提交。

评审: 对功能的正确性,完整性和清晰性,以及其它需求给予评价。评审通过才可进行下一阶段的工作,否则重新进行需求分析。

方法

需求分析的方法有很多,这里只强调原型化方法,其它的方法如:结构化方法、动态分析法等,从来没用过这些方法在此不讨论。

原型化方法是十分重要的,原型就是软件的一个早期可运行的版本,它实现了目标系统的某些或全部功能。

原型化方法就是尽可能快地建造一个粗糙的系统,这系统实现了目标系统的某些或全部功能。但是这个系统可能在可靠性、界面的友好性或其他方面上存在缺陷。建造这样一个系统的目的是为了考察某一方面的可行性,如算法的可行性、技术的可行性或考察是否满足用户的需求等。如:为了考察是否满足用户的要求,可以用某些软件工具快速的建造一个原型系统,这个系统只是一个界面,然后听取用户的意见,改进这个原型。以后的目标系统就在原型系统的基础上开发。

原型主要有三种类型:探索型、实验型、进化型。

探索型:目的是要弄清楚对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。

实验型:用于大规模开发和实现前,考核方案是否合适,规格说明是否可靠。

进化型:目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。

在使用原型化方法时有两种不同的策略:废弃策略、追加策略。

废弃策略:先建造一个功能简单而且质量要求不高的模型系统,针对这个系统反复进行修改,形成比较好的思想,据此设计出较完整、准确、一致、可靠的最终系统。系统构造完成后,原来的模型系统就被废弃不用。探索型和实验型属于这种策略。

追加策略:先构造一个功能简单而且质量要求不高的模型系统,作为最终系统的核心,然后通过不断地扩充修改,逐步追加新要求,发展成为最终系统。进化型属于这种策略。

需求分析20条法则

客户与开发人员交流需要好的方法。下面建议20条法则,客户和开发人员可以通过评审以下内容并达成共识。如果遇到分歧,将通过协商达成对各自义务的相互理解,以便减少以后的磨擦(如一方要求而另一方不愿意或不能够满足要求)。

1、 分析人员要使用符合客户语言习惯的表达

需求讨论集中于业务需求和任务,因此要使用术语。客户应将有关术语(例如:采价、印花商品等采购术语)教给分析人员,而客户不一定要懂得计算机行业的术语。

2、分析人员要了解客户的业务及目标

只有分析人员更好地了解客户的业务,才能使产品更好地满足需要。这将有助于开发人员设计出真正满足客户需要并达到期望的优秀软件。为帮助开发和分析人员,客户可以考虑邀请他们观察自己的工作流程。如果是切换新系统,那么开发和分析人员应使用一下旧系统,有利于他们明白系统是怎样工作的,其流程情况以及可供改进之处。

3、 分析人员必须编写软件需求报告

分析人员应将从客户那里获得的所有信息进行整理,以区分业务需求及规范、功能需求、质量目标、解决方法和其他信息。通过这些分析,客户就能得到一份“需求分析报告”,此份报告使开发人员和客户之间针对要开发的产品内容达成协议。报告应以一种客户认为易于翻阅和理解的方式组织编写。客户要评审此报告,以确保报告内容准确完整地表达其需求。一份高质量的“需求分析报告”有助于开发人员开发出真正需要的产品。

4、 要求得到需求工作结果的解释说明

分析人员可能采用了多种图表作为文字性“需求分析报告”的补充说明,因为工作图表能很清晰地描述出系统行为的某些方面,所以报告中各种图表有着极高的价值;虽然它们不太难于理解,但是客户可能对此并不熟悉,因此客户可以要求分析人员解释说明每个图表的作用、符号的意义和需求开发工作的结果,以及怎样检查图表有无错误及不一致等。

5、 开发人员要尊重客户的意见

如果用户与开发人员之间不能相互理解,那关于需求的讨论将会有障碍。共同合作能使大家“兼听则明”。参与需求开发过程的客户有权要求开发人员尊重他们并珍惜他们为项目成功所付出的时间,同样,客户也应对开发人员为项目成功这一共同目标所做出的努力表示尊重。

6、 开发人员要对需求及产品实施提出建议和解决方案

通常客户所说的“需求”已经是一种实际可行的实施方案,分析人员应尽力从这些解决方法中了解真正的业务需求,同时还应找出已有系统与当前业务不符之处,以确保产品不会无效或低效;在彻底弄清业务领域内的事情后,分析人员就能提出相当好的改进方法,有经验且有创造力的分析人员还能提出增加一些用户没有发现的很有价值的系统特性。

7、 描述产品使用特性

客户可以要求分析人员在实现功能需求的同时还注意软件的易用性,因为这些易用特性或质量属性能使客户更准确、高效地完成任务。例如:客户有时要求产品要“界面友好”或“健壮”或“高效率”,但对于开发人员来讲,太主观了并无实用价值。正确的做法是,分析人员通过询问和调查了解客户所要的“友好、健壮、高效所包含的具体特性,具体分析哪些特性对哪些特性有负面影响,在性能代价和所提出解决方案的预期利益之间做出权衡,以确保做出合理的取舍。

8、 允许重用已有的软件组件

需求通常有一定灵活性,分析人员可能发现已有的某个软件组件与客户描述的需求很相符,在这种情况下,分析人员应提供一些修改需求的选择以便开发人员能够降低新系统的开发成本和节省时间,而不必严格按原有的需求说明开发。所以说,如果想在产品中使用一些已有的商业常用组件,而它们并不完全适合您所需的特性,这时一定程度上的需求灵活性就显得极为重要了。

9、 要求对变更的代价提供真实可靠的评估

有不同的选择。而这时,对需求变更的影响进行评估从而对业务决策提供帮助,是十分必要的。所以,客户有权利要求开发人员通过分析给出一个真实可信的评估,包括影响、成本和得失等。开发人员不能由于不想实施变更而随意夸大评估成本。

10、 获得满足客户功能和质量要求的系统

每个人都希望项目成功,但这不仅要求客户要清晰地告知开发人员关于系统“做什么”所需的所有信息,而且还要求开发人员能通过交流了解清楚取舍与限制,一定要明确说明您的假设和潜在的期望,否则,开发人员开发出的产品很可能无法让您满意。

11、 给分析人员讲解您的业务

分析人员要依靠客户讲解业务概念及术语,但客户不能指望分析人员会成为该领域的专家,而只能让他们明白您的问题和目标;不要期望分析人员能把握客户业务的细微潜在之处,他们可能不知道那些对于客户来说理所当然的“常识”。

12、 抽出时间清楚地说明并完善需求

客户很忙,但无论如何客户有必要抽出时间参与“头脑高峰会议”的讨论,接受采访或其他获取需求的活动。有些分析人员可能先明白了您的观点,而过后发现还需要您的讲解,这时请耐心对待一些需求和需求的精化工作过程中的反复,因为它是人们交流中很自然的现象,何况这对软件产品的成功极为重要。

13、 准确而详细地说明需求

编写一份清晰、准确的需求文档是很困难的。由于处理细节问题不但烦人而且耗时,因此很容易留下模糊不清的需求。但是在开发过程中,必须解决这种模糊性和不准确性,而客户恰恰是为解决这些问题作出决定的最佳人选,否则,就只好靠开发人员去正确猜测了。

在需求分析中暂时加上“待定”标志是个方法。用该标志可指明哪些是需要进一步讨论、分析或增加信息的地方,有时也可能因为某个特殊需求难以解决或没有人愿意处理它而标注上“待定”。客户要尽量将每项需求的内容都阐述清楚,以便分析人员能准确地将它们写进“软件需求报告”中去。如果客户一时不能准确表达,通常就要求用原型技术,通过原型开发,客户可以同开发人员一起反复修改,不断完善需求定义。

14、 及时作出决定

分析人员会要求客户作出一些选择和决定,这些决定包括来自多个用户提出的处理方法或在质量特性冲突和信息准确度中选择折衷方案等。有权作出决定的客户必须积极地对待这一切,尽快做处理,做决定,因为开发人员通常只有等客户做出决定才能行动,而这种等待会延误项目的进展。

15、 尊重开发人员的需求可行性及成本评估

所有的软件功能都有其成本。客户所希望的某些产品特性可能在技术上行不通,或者实现它要付出极高的代价,而某些需求试图达到在 *** 作环境中不可能达到的性能,或试图得到一些根本得不到的数据。开发人员会对此作出负面的评价,客户应该尊重他们的意见。

16、 划分需求的优先级

绝大多数项目没有足够的时间或资源实现功能性的每个细节。决定哪些特性是必要的,哪些是重要的,是需求开发的主要部分,这只能由客户负责设定需求优先级,因为开发者不可能按照客户的观点决定需求优先级;开发人员将为您确定优先级提供有关每个需求的花费和风险的信息。

在时间和资源限制下,关于所需特性能否完成或完成多少应尊重开发人员的意见。尽管没有人愿意看到自己所希望的需求在项目中未被实现,但毕竟是要面对现实,业务决策有时不得不依据优先级来缩小项目范围或延长工期,或增加资源,或在质量上寻找折衷。

17、 评审需求文档和原型

客户评审需求文档,是给分析人员带来反馈信息的一个机会。如果客户认为编写的“需求分析报告”不够准确,就有必要尽早告知分析人员并为改进提供建议。更好的办法是先为产品开发一个原型。这样客户就能提供更有价值的反馈信息给开发人员,使他们更好地理解您的需求;原型并非是一个实际应用产品,但开发人员能将其转化、扩充成功能齐全的系统。

18、 需求变更要立即联系

不断的需求变更,会给在预定计划内完成的质量产品带来严重的不利影响。变更是不可避免的,但在开发周期中,变更越在晚期出现,其影响越大;变更不仅会导致代价极高的返工,而且工期将被延误,特别是在大体结构已完成后又需要增加新特性时。所以,一旦客户发现需要变更需求时,请立即通知分析人员。

19、 遵照开发小组处理需求变更的过程

为将变更带来的负面影响减少到最低限度,所有参与者必须遵照项目变更控制过程。这要求不放弃所有提出的变更,对每项要求的变更进行分析、综合考虑,最后做出合适的决策,以确定应将哪些变更引入项目中。

20、 尊重开发人员采用的需求分析过程

软件开发中最具挑战性的莫过于收集需求并确定其正确性,分析人员采用的方法有其合理性。也许客户认为收集需求的过程不太划算,但请相信花在需求开发上的时间是非常有价值的;如果您理解并支持分析人员为收集、编写需求文档和确保其质量所采用的技术,那么整个过程将会更为顺利。

“需求确认”意味着什么

在“需求分析报告”上签字确认,通常被认为是客户同意需求分析的标志行为,然而实际 *** 作中,客户往往把“签字”看作是毫无意义的事情。“他们要我在需求文档的最后一行下面签名,于是我就签了,否则这些开发人员不开始编码。”

这种态度将带来麻烦,譬如客户想更改需求或对产品不满时就会说:“不错,我是在需求分析报告上签了字,但我并没有时间去读完所有的内容,我是相信你们的,是你们非让我签字的。”

同样问题也会发生在仅把“签字确认”看作是完成任务的分析人员身上,一旦有需求变更出现,他便指着“需求分析报告”说:“您已经在需求上签字了,所以这些就是我们所开发的,如果您想要别的什么,您应早些告诉我们。”

这两种态度都是不对的。因为不可能在项目的早期就了解所有的需求,而且毫无疑问地需求将会出现变更,在“需求分析报告”上签字确认是终止需求分析过程的正确方法,所以我们必须明白签字意味着什么。

对“需求分析报告”的签名是建立在一个需求协议的基线上,因此我们对签名应该这样理解:“我同意这份需求文档表述了我们对项目软件需求的了解,进一步的变更可在此基线上通过项目定义的变更过程来进行。我知道变更可能会使我们重新协商成本、资源和项目阶段任务等事宜。”对需求分析达成一定的共识会使双方易于忍受将来的摩擦,这些摩擦来源于项目的改进和需求的误差或市场和业务的新要求等。需求确认将迷雾拨散,显现需求的真面目,给初步的需求开发工作画上了双方都明确的句号,并有助于形成一个持续良好的客户与开发人ONT>

进行有效的需求分析需要:制定计划和方案。要进行有效的需求分析,需要有具体的计划和方案,需要根据目前自己掌握的情况来确定自己的具体工作内容。有了计划和方案,更利于自己高效完成工作,也知道朝着什么方向努力。

进行有效的需求分析需要:收集更多的数据,要进行有效的需求分析,还是需要以更多的数据作为基础,数据量越多,自己分析的结论越接近现实结果,也更利于自己开展接下来的工作,不管是产品方面还是营销方面,都有很大的帮助。

进行有效的需求分析需要:和一线市场接触,和销售人员接触。要进行有效的需求分析,还需要了解市场,了解客户,知道销售人员每一天都要面对的客户群体是什么样的人,知道自己该怎么去研究客户与市场的需求。

进行有效的需求分析需要:找到切入点。要分析需求,还是需要有切入点,针对不同的客户有不同的方法和策略,而切入点也不一样。所以要具体问题具体分析,同时找到客户相对应的切入点。

进行有效的需求分析需要:安排专业的人来负责。专业的事情交给专业的人来完成,效果更好。尤其是进行需求分析的时候,要有效果有效率,还是要依靠专业人士,他们有知识和技巧,还有丰富的经验和阅历。

进行有效的需求分析需要:组建团队。除了专业的人来负责和指挥,还需要有专业的团队,团队一起来分析需求,会更有效。并且团队成员之间彼此互补,互相帮助和提意见,会让需求分析的结果更好一些。

进行有效的需求分析需要:坚持一定的原则,比如真实性、公正公平性、不虚夸等原则,这些原则会让我们的需求分析更有效,也能让我们在过程中树立正确的工作观和价值观,帮助我们尽快实现需求分析。

10月22日 10:37 尽量把客户所持的假设解释清楚,特别是那些发生冲突的部分。从字里行间去理解以明确客户没有表达清楚但又想加入的特性或特征。Gause 和Weinberg(1989)提出使用“上下文无关问题”—这是一个高层次的问题,它可以获取业务问题和可能的解决方案的全部信息。客户对这些问题的回答诸如“产品要求怎样的精确度”或“你能帮我解释一下你为什么不同意某人的回答吗?”这些回答可以更直接地认识问题,而这是封闭(close-end)问题所不能做到的。

需求获取利用了所有可用的信息来源,这些信息描述了问题域或在软件解决方案中合理的特性。一个研究表明:比起不成功的项目,一个成功的项目在开发者和客户之间采用了更多的交流方式(Kiel and Carmel 1995)。与单个客户或潜在的用户组一起座谈,对于业务软件包或信息管理系统(MIS)的应用来说是一种传统的需求来源。直接聘请用户进行获取需求的过程是为项目获得支持和买入(buy-in)的一种方式。

尽量理解用户用于表述他们需求的思维过程。充分研究用户执行任务时作出决策的过程,并提取出潜在的逻辑关系。流程图和决策树是描述这些逻辑决策途径的好方法。

在需求获取的过程中,你可能会发现对项目范围的定义存在误差,不是太大就是太小。如果范围太大,你将要收集比真正需要更多的需求,以传递足够的业务和客户的值,此时获取过程将会拖延。如果项目范围太小,那么客户将会提出很重要的但又在当前产品范围之外的需求。当前的范围太小,以致不能提供一个令人满意的产品。需求的获取将导致修改项目的范围和任务,但作出这样具有深远影响的改变,一定要小心谨慎。

正如经常所说的,需求主要是关于系统做什么,而解决方案如何实现是属于设计的范围。这样说虽然很简洁,但似乎过于简单化。需求的获取应该把重点放在“做什么”上,但在分析和设计之间还是存在一定的距离。你可以使用假设“怎么做”来分类并改善你对用户需求的理解。在需求的获取过程中,分析模型、屏幕图形和原型可以使概念表达得更加清楚,然后提供一个寻找错误和遗漏的办法。把你在需求开发阶段所形成的模型和屏幕效果看成是方便高效交流的概念性建议,而不应该看成是对设计者选择的一种限制。

需求获取讨论会中如果参与者过多,就会减慢进度。人数大致控制在5到7人是最好的。这些人包括客户、系统设计者、开发者和可视化设计者等主要工程角色。相反地,从极少的代表那里收集信息或者只听到呼声最高、最有舆论影响的用户的声音,也会造成问题。这将导致忽视特定用户类的重要的需求,或者其需求不能代表绝大多数用户的需要。最好的权衡在于选择一些授权为他们的用户类发言的产品代表者,他们也被同组用户类的其它代表所支持。

没有一个简单、清楚的信号暗示你什么时候已完成需求获取。当客户和开发者与他们的同事聊天、阅读工业和商业上的文献及在早上沐浴时思考时,他们都将对潜在产品产生新的构思。你不可能全面收集需求,但是下列的提示将会暗示你在需求获取的过程中的返回点。

1 如果用户不能想出更多的使用实例,也许你就完成了收集需求的工作。用户总是按其重要性的顺序来确定使用实例的。

2 如果用户提出新的使用实例,但你可以从其它使用实例的相关功能需求中获得这些新的使用实例,这时也许你就完成了收集需求的工作。这些新的使用实例可能是你已获取的其它使用实例的可选过程。

3 如果用户开始重复原先讨论过的问题,此时,也许你就完成了收集需求的工作。

4 如果所提出的新需求比你已确定的需求的优先级都低时,也许你就完成了收集需求的工作。

5 如果用户提出对将来产品的要求,而不是现在我们讨论的特定产品,也许你就完成了收集需求的工作。

以上知识大致上讨论需求分析应该如何做,实际上对于需求分析的方法有很多很多,已经形成了一定的理论,当然这种理论比较偏向与方法学,而方法学的应用主要还是要靠个人。所以,大家在实际应用的时候,不妨结合自己的实际,有选择性的采用一些方法,那你就是成功的。

用例在需求分析中的使用

多年来,分析者总是利用情节或经历来描述用户和软件系统的交互方式,从而获取需求(McGraw and Harbison 1997)。Ivar Jacobson(1992)把这种看法系统地阐述成用例(用例)的方法进行需求获取和建模。虽然用例来源于面向对象的开发环境,但是它也能应用在具有许多开发方法的项目中,因为用户并不关心你是怎样开发你的软件。而最重要的,用例的观点和思维过程带给需求开发的改变比起是否画正式的用例图显得更为重要。注意用户要利用系统做什么远远强于询问用户希望系统为他们做什么这一传统方法。

用例的重要功能是用画用例图的功能来鉴别和划分系统功能。它把系统分成角色(actor)和用例(用例)。角色(actor)表示系统用户能扮演的角色(role)。这些用户可能是人,可能是其他的计算机一些硬件或者甚至是其它软件系统,唯一的标准是它们必须要在被划分进用例的系统部分以外。它们必须能刺激系统部分并接收返回。用例描述了当角色给系统特定的刺激时系统的活动。这些活动被文本描述。它描述了触发用例的刺激的本质,输入和输出到其他活动者,和转换输入到输出的活动。用例文本通常也描述每一个活动在特殊的活动线时可能的错误和系统应采取的补救措施。

这样说可能会非常复杂,其实一个用例描述了系统和一个角色(actor)的交互顺序。用例被定义成系统执行的一系列动作,动作执行的结果能被指定角色察觉到。用例可以:

· 用例捕获某些用户可见的需求,实现一个具体的用户目标。

· 用例由角色激活,并提供确切的值给角色。

· 用例可大可小,但它必须是对一个具体的用户目标实现的完整描述。在UML中,用例表示为一个椭圆。

角色是指用户在系统中所扮演的角色。其图形化的表示是一个小人。在某些组织中很可能有许多角色实例(例如有很多个销售员),但就该系统而言,他们均起着同一种作用,扮演着相同的角色,所以用一个角色表示。一个用户也可以扮演多种角色。例如,一个高级营销人员既可以是贸易经理,也可以是普通的营销人员;一个营销人员也可以是售货员。在处理角色时,应考虑其作用,而不是人或工作名称,这一点是很重要的。

我们使用不带箭头的线段将角色与用例连接到一起,表示两者之间交换信息,称之为通信联系。角色触发用例,并与用例进行信息交换。单个角色可与多个用例联系;反过来,一个用例可与多个角色联系。对同一个用例而言,不同角色有着不同的作用:他们可以从用例中取值,也可以参与到用例中。需要注意的是角色在用例图中是用类似人的图形来表示,尽管执行的,但角色未必是人。例如,角色也可以是一个外界系统,该外界系统可能需要从当前系统中获取信息,与当前系统有进行交互。

一个用例可能包括完成某项任务的许多逻辑相关任务和交互顺序。因此,一个用例是相关的用法说明的集合,并且一个说明(scenario)是用例的实例。这种关系就像是类和对象的关系。在用例中,一个说明被视为事件的普通过程(normal course),也叫作主过程,基本过程,普通流,或“满意之路” (happy path)。在描述普通过程时列出执行者和系统之间相互交互或对话的顺序。当这种交互结束时,执行者也达到了预期的目的。

在用例中的其它说明可以描述为可选过程(alternative coruse)。可选过程也可促进成功地完成任务,但它们代表了任务的细节或用于完成任务的途径的变化部分。在交互序列中,普通过程可以在一些决策点上分解成可选过程,然后再重新汇成一个普通过程。

角色类和角色实例

软件产品最终是给一些用户来使用的,而用户之间的差异是非常大的。造成差异的原因包括了对计算机的认知程度的不同,使用习惯的不同,在软件目标组织中所处的地位不同,地理位置不同,业务熟练程度不同。

不同的用户都有自己一系列的功能需求和非功能需求。对电脑熟练程度不同的人可能就会有不同的要求,熟练程度低的用户可能希望有一个友好的界面,熟练程度高的用户可能更希望有快捷键或宏的 *** 作以提高工作效率。考虑到用户的差异性,将用户分类并研究用户类的行为特征是非常有必要的。所以在做具体的需求之前,先将用户分局行为和特点进行分类,对于研究、收集用户的需求是非常有帮助的。

可以利用一个简单的表格列出一些原始的分类,然后不断的完善这个表格。确认你的分类之间没有交集。并充分描述用户分类的行为,目的,要求等。在企业分析中,比较常见的分类可能包括,供应商,客户,部门等。

就像C++中的类和对象一样,我们把分析出的用户分类称为“角色类”,把实际的用户称为“角色实例”。在得到用户分类之后,最重要的就是要选出用户代表,用户代表不仅仅是在需求阶段中参与项目,还必须对项目的全过程负责。用户代表能够代表用户分类的需求。抓住用户代表的需求就大致把握住了用户类的需求。当然,需求分析还是需要在用户中做大规模的调查的,只是要把重点放在用户代表上。

确保和用户直接进行沟通!大家有没有玩过传话的游戏,可能看过。一群人排成一列,一句话从排头挨个向后传,到最后,那句话已经是面目全非了。所以,一定要保证项目组能够直接和用户接触。

对于和用户直接沟通这一点,一般的针对特定企业的应用系统当然是不成问题,可是如果是开发行业软件,和用户直接沟通就成为一件几乎是不可能的事情。在这种情况下,一般有几种解决的办法:

做大规模的市场调查,针对你的目标市场做市场调查,并根据统计学的理论建立你的数学模型。这部分的工作效果最好,其性质有些象一些游戏公司会发布一些Demo版的游戏。可是对于一般的企业来说,这项工作费时费力,高昂的成本往往使大家知难而退。我的意见是,方法是非常好的,但是可以采用折衷的办法,例如选取有代表性的企业,为特定企业制作一个较小的版本并收集反馈意见等。这涉及到很多市场营销的内容,并不是我的专业所长,这里就不多弄斧了。

聘请行业专家,一个行业专家往往可以在项目需求方面发挥极为重要的作用。一个行业专家往往都有大量的行业经验和行业的人际关系网络。在产品的设计方面,这个行业专家提供很多宝贵的意见。在目前很多的软件的开发过程中都采用了这种方式。行业专家有两种:一种是在这个行业中有很深的资历,但是对软件技术并不熟悉;第二种是开发过同类软件的软件专家,这种人在开发同类软件过程中已经积累了大量的项目经验,并且具有软件开发的知识。这种方式是获取需求的最好的方式。 分析对比同类软件,微软在开发Office、Visual Studio的时候,也是参照了Lotus和Borland的成熟产品。这种方式的特点在于成本很低,比较适合和其他的方式配合使用。但是,要注意自己有没有触犯专利法。

需求的冲突

有的时候,虽然已经将用户分类并选出了用户代表。但是需求的来源众多,往往会发生需求之间自相矛盾的事情。需求从四面八方收集来后,人们难以解决冲突,澄清模糊之处以及协调不一致之处。某些人还要对不可避免要发生的范围问题单独作出决定。在项目的早期阶段,你必须决定谁是需求问题的决策者。如果不清楚谁有权并且有责任来作出决策,或者授权的个人不愿意或不能作出决策,那么决策者的角色将自然而然地落在开发者身上。这是一个非常糟糕的选择,因为开发者通常没有足够多的信息和观点来作出业务上的决策。

在软件项目中,谁将对需求作出决策的问题并没有统一的正确答案。分析员有时听从呼声高的或来自最高层人物的最大的需求。即便使用用户代表这一手段,必须解决来自不同用户类的相冲突的需求。通常,应尽可能由处于公司底层的人作出决策,因为他们与问题密切相关,并能得到关于这些问题的广泛信息。

如果不同的用户类有不一致的需求,那么必须决策出满足哪一类用户的需求更为重要。了解可能使用产品的客户种类的信息和他们的用法与产品的业务目标的关系如何,将有助于你决定哪一个用户类所占份额最大。

当开发者想象中的产品与客户需求冲突时,通常应该由客户作出决策。然而,不要陷到“客户总是对的”的陷阱中去,对他们百依百顺。现实中,客户并不总是对的。客户总是持有自己的观点,开发者必须理解并尊重这一观点。

用例

在具体的需求过程中,有大的用例(业务用例),也有小的用例。主要是由于用例的范围决定的。用例像是一个黑盒,它没有包括任何和实现有关或是内部的一些信息。它很容易就被用户(也包括开发者)所理解(简单的谓词短语)。如果用例不足以表达足够的信息来支持系统的开发,就有必要把用例黑盒打开,审视其内部的结构,找出黑盒内部的Actor和用例。就这样通过不断的打开黑盒,分析黑盒,再打开新的黑盒。直到整个系统可以被清晰的了解为止。

为什么要采用这种分析方法呢?计算机系统除了在与外界系统、人员有一系列的交互,在系统内部也往往存在着复杂的交互。因此,在系统建模时,除了描述系统与外界的交互,同时还要描述系统内部的交互。传统的MIS系统中,系统与外界的交互较多。典型的,如ATM取款机:存在着大量的用户与ATM,ATM与其它系统的交互。而电信领域的系统,与外界的交互较少。例如,系统的输入可能仅仅是从交换机上采集信息,然后由系统进行处理。系统的复杂逻辑包含在系统内部处理的流程上,而非与外部系统的交互。建模主要任务是表达系统内部的交互。

用例图适于表达交互,之所以上面使用了电信系统,是因为用例最早来自于Ericsson的交换机系统。当时,还是Ericsson雇员的Jacobson初步建立了用例图的概念,并于1994年提出了OOSE方法,其最大特点是面向用例(Use-Case),并在用例的描述中引入了外部角色的概念。用例的概念是精确描述需求的重要武器,比较适合支持商业工程和需求分析。随着用例的发展,用例被大量的用于对功能进行描述。每个用例代表了系统与外部ACTOR的交互。可以采取顺序图来表达用例的具体 *** 作程序。ACTOR用于确定系统的边界。

ACTOR、用例可以从不同的层次来描述信息。采用该原则的原因有:

1 需求并不是在项目一开始就很明确,往往是随着项目的推进,逐渐细化。

2 人的认知往往具有层次的特性。从粗到细、从一般到特殊。采用不同的层次来描述,适于认知的过程。

使用用例开发系统的一般过程

在开发过程的初始阶段,可以根据具体的项目特点,制订开发各个视图之间的关联原则,指导规范。在开发的过程中,视图的组织原则应不断进行维护、更新。

识别ACTOR来识别系统与外界交互的实体。ACTOR具有特定领域的特征,例如:交换机(采集系统)、97信息系统等。在系统层次的ACTOR确定了系统的边界。

识别用例。同ACTOR一样,用例具有不同层次。对较为概括的USECASE,需要细化。注:系统开发需要一定的规则来确定,如何来分解用例;可能基于原有系统的经验,或是参考现有资料。

当用例细化到可以被理解的层次。需要基于用例进行下一步的开发。如前面提到的,用例主要用来描述交互。因此,存在交互的实体和交互的细节。交互的实体采用类图来描述;而交互的细节,采用顺序图来描述。

当系统复杂到一定层次时,类图和顺序图可能不能足以描述其复杂程度。在该情况下,需要使用状态图来辅助阐述。状态图和顺序图之间使用事件联结在一起。它们之间的一致性问题,目前UML和ROSE没有提供解决方案。相对折衷的方法是使用事件的命名规范强制一致性。

可以说,之前说的所有的东西都是为了能够导出用例在需求中的作用。用例是从用户的角度看待系统,而不是基于程序员的角度。这样的话,用例驱动的系统能够真正做到以用户为中心,用户的任何需求都能够在系统开发链中完整的体现。用户和程序员间通过用例沟通,避免了牛头马嘴的尴尬局面。 从前,系统开发者总是通过情节来获取需求,是问用户希望系统为他做什么。在Jacobson发明了用例的概念之后,需求获取就变成问用户要利用系统做什么。这是立场不同导致的结果。用户通常并不关心系统是如何实现的(也有少数可爱的技术狂是例外)。对他们来说,更重要的是要达到他的目的。相反的,大部分的程序员的工作习惯就是考虑计算机应该如何实现用户的要求。所幸的是,用例方法能够调和双方的矛盾,因为虽然用例是来源于用户,服务于用户,但是它同样可以用于开发的流程。当系统的开发过程都是基于用例的,用用例获取需求,用用例设计,用用例编码,用用例测试的时候。这个开发过程就是用例驱动的。 用例和用例文档

《软件需求》一书中提到了几种方法来确定用例:

· 首先明确执行者和他们的角色,然后确定业务过程,在这一过程中每一个参与者都在为确定用例而努力。

· 确定系统所能反映的外部事件,然后把这些事件与参与的执行者和特定的用例联系起来。

· 以特定的说明形式表达业务过程或日常行为,从这些说明中获得用例,并确定参与到用例中的执行者,有可能从现在的功能需求说明中获得用例。如果有些需求与用例不一致,就应考虑是否真的需要它们。

用例代表了用户的需求,在你的系统中,应该直接从不同用户类的代表或至少应从代理那里收集需求。用例为表达用户需求提供了一种方法,而这一方法必须与系统的业务需求相一致。分析者和用户必须检查每一个用例,在把它们纳入需求之前决定其是否在项目所定义的范围内。基于“用例”方法进行需求获取的目的在于:描述用户需要使用系统完成的所有任务。在理论上,用例的结果集将包括所有合理的系统功能。在现实中,你不可能获得完全包容,但是比起我所知道的其它获取方法,基于用例的方法可以为你带来更好的效果。

当使用用例进行需求获取时,应避免受不成熟的细节的影响。在对切合的客户任务取得共识之前,用户能很容易地在一个报表或对话框中列出每一项的精确设计。如果这些细节都作为需求记录下来,他们会给随后的设计过程带来不必要的限制。你可能要周期性地检查需求获取,以确保用户参与者将注意力集中在与今天所讨论的话题适合的抽象层上。向他们保证在开发过程中,将会详尽阐述他们的需求。在一个逐次详细描述过程中,重复地详述需求,以确定用户目标和任务,并作为用例。然后,把任务描述成功能需求,这些功能需求可以使用户完成其任务,也可以把它们描述成非功能需求,这些非功能需求描述了系统的限制和用户对质量的期望。虽然最初的屏幕构思有助于描述你对需求的理解,但是你必须细化用户界面设计。

建立用例文档。在每一次的需求获取之后,都会生成很多未整理的需求,你必须将它们组织成用例文档。使用诸如模板的技术能够提高你的速度和需求的复用性。一个用例文档可以使用表格来组织,主要的要素包括了用例标识号、用例名称、父用例标志号、创建者、创建时间、审核者、修订记录、角色、说明、先决条件、请求结果、优先级、普通过程、可选过程、例外、非功能需求、假设、注释和问题。

虽然列举出了这么多的属性,但是实际中使用的属性这要看你的团体而定,看项目的大小而定。把大量的时间花在用例的描述上是没有意义的。用户需要的是一个软件系统,并不是一大堆的用例说明。

目前,软件需求的分析与设计方法较多,一些大同小异,而有的则基本思路相差很大。从开发过程及特点出发,软件开发一般采用软件生存周期的开发方法,有时采用开发原型以帮助了解用户需求。在软件分析与设计时,自上而下由全局出发全面规划分析,然后逐步设计实现。

从系统分析出发,可将需求分析方法大致分为功能分解方法、结构化分析方法、信息建模法和面向对象的分析方法。

(1)功能分解方法。

将新系统作为多功能模块的组合。各功能义可分解为若干子功能及接口,子功能再继续分解。便可得到系统的雏形,即功能分解——功能、子功能、功能接口。

(2)结构化分析方法。

结构化分析方法是一种从问题空间到某种表示的映射方法,是结构化方法中重要且被普遍接受的表示系统,由数据流图和数据词典构成并表示。此分析法又称为数据流法。其基本策略是跟踪数据流,即研究问题域中数据流动方式及在各个环节上所进行的处理,从而发现数据流和加工。结构化分析可定义为数据流、数据处理或加工、数据存储、端点、处理说明和数据字典。

(3)信息建模方法。

它从数据角度对现实世界建立模型。大型软件较复杂;很难直接对其分析和设计,常借助模型。模型是开发中常用工具,系统包括数据处理、事务管理和决策支持。实质上,也可看成由一系列有序模型构成,其有序模型通常为功能模型、信息模型、数据模型、控制模型和决策模型。有序是指这些模型是分别在系统的不同开发阶段及开发层次一同建立的。建立系统常用的基本工具是E—R图。经过改进后称为信息建模法,后来又发展为语义数据建模方法,并引入了许多面向对象的特点。

信息建模可定义为实体或对象、属性、关系、父类型/子类型和关联对象。此方法的核心概念是实体和关系,基本工具是E-R图,其基本要素由实体、属性和联系构成。该方法的基本策略是从现实中找出实体,然后再用属性进行描述。

(4)面向对象的分析方法。

面向对象的分析方法的关键是识别问题域内的对象,分析它们之间的关系,并建立三类模型,即对象模型、动态模型和功能模型。面向对象主要考虑类或对象、结构与连接、继承和封装、消息通信,只表示面向对象的分析中几项最重要特征。类的对象是对问题域中事物的完整映射,包括事物的数据特征(即属性)和行为特征(即服务)

问题一:什么是需求分析,其目标是什么?《软件工程》 需求分析就是了解、判断用户需要什么、想最终达到工么目的、怎么实现,为你们提 品、服务、项目等提供目标和检验标准

问题二:如何系统的进行用户需求分析 1概念

需求的定义包括从用户角度(系统的外部行为),以及从开发者角度(一些内部特性)来阐述需求

关键的问题是一定要编写需求文档我曾经目睹过一个项目中途更换了所有的开发者,客户被迫与新的需求分析者坐到一起系统的分析人员说:我们想与你谈谈你的需求客户的第一反应便是:我已经将我的要求都告诉你们前任了,现在我要的就是给我编一个系统

百事通

而实际上,UGGs,需求并未编写成文档,因此新的分析人员不得不从头做起所以如果只有一堆邮件、会谈记录或一些零碎的未整理的对话,你就确信你已明白用户的需求,那完全是自欺欺人

需求的另外一种定义认为需求是用户所需要的并能触发一个程序或系统开发工作的说明有些需求分析专家拓展了这个概念:从系统外部能发现系统所具有的满足于用户的特点、功能及属性等这些定义强调的是产品是什么样的,而并非产品是怎样设计、构造的而下面的定义则从用户需要进一步转移到了系统特性:

需求是指明必须实现什么的规格说明它描述了系统的行为、特性或属性,是在开发过程中对系统的约束

从上面这些不同形式的定义不难发现:并没有一个清晰、毫无二义性的需求术语存在,真正的需求实际上在人们的脑海中,这个人们主要是指客户,但一般情况下,用户并不能描述自己的需要,只就需要系统分析人员根据用户的自己语言的描述整理出相关的需要再进一步和客户核对系统分析员和客户需要确保所有项目风险承担者在描述需求的那些名词的理解上务必达成共识

任何文档形式的需求(例如如下将要描述的需求规格说明书)仅是一个模型,一种描述

2需求分析的任务

开发软件系统最为困难的部分就是准确说明开发什么最为困难的概念性工作便是编写出详细技术需求,这包括所有面向用户、面向机器和其它软件系统的接口同时这也是一旦做错,将最终会给系统带来极大损害的部分,并且以后再对它进行修改也极为困难

目前,国内产品的庞杂,一家企业可能有几个系统并立运行,它们之间接口是系统开发人员最头痛的问题

对于商业最终用户应用程序,企业信息系统和软件作为一个大系统的一部分的产品是显而易见的但是对于我们开发人员来说,并没有编写出客户认可的需求文档,我们如何知道项目于何时结束而如果我们不知道什么对客户来说是重要的,那我们又如何能使客户感到满意呢

然而,即便并非出于商业目的的软件需求也是必须的例如库、组件和工具这些供开发小组内部使用的软件当然你可能偶尔勿需文档说明就能与其他人意见较为一致,但更常见的是出现重复返工这种不可避免的后果,而重新编制代码的代价远远超过重写一份需求文档的代价,这些血的教训正在国内的软件开发者身上发生

近来,我遇到一个开发小组开发包括代码编辑器在内的一套内部使用的计算机辅助软件不幸的是,当他们开发完这个工具后,发现这个工具不能打印出源代码文件,使用者当然希望有这个功能结果这个小组只好手工抄写源代码文档以供代码检查这说明那怕需求明确无误并构思准确,如果我们没有编写文档,软件达不到期望目标也只能是咎由自取了

相反的情况,我曾见一个要集成到错误跟踪系统中的简单界面写了一页需求说明而 *** 作系统系统管理员在为处理脚本时发现简单的一张需求清单竟是如此有用他们依据需求对系统进行测试时,此系统不仅非常清晰地实现了所有必需功能,而且未发现任何错误

事实上,需求文档在开发过程中一直起指导作用

3需求分析过程

可把整个软件需求工程>>

问题三:需求分析解决的问题是系统必须做什么 你好

解决的问题是做什么的问题

如果您对我的回答有不满意的地方,请您继续追问;

答题不易,互相理解~

问题四:需求分析的作用及如何进行需求分析 通过对应问题及其环境的理解与分析,为问题涉及的信息、功能及系统行为建立模型,将用户需求精确化、完全化,最终形成需求规格说明,这一系列的活动即构成软件开发生命周期的需求分析阶段。

需求分析是介于系统分析和软件设计阶段之间的桥梁。一方面,需求分析以系统规格说明和项目规划作为分析活动的基本出发点,并从软件角度对它们进行检查与调整;另一方面,需求规格说明又是软件设计、实现、测试直至维护的主要基础。良好的分析活动有助于避免或尽早剔除早期错误,从而提高软件生产率,降低开发成本,改进软件质量。

需求工程是随着计算机的发展而发展的,在计算机发展的初期,软件规模不大,软件开发所关注的是代码编写,需求分析很少受到重视。后来软件开发引入了生命周期的概念,需求分析成为其第一阶段。随着软件系统规模的扩大,需求分析与定义在整个软件开发与维护过程中越来越重要,直接关系到软件的成功与否。人们逐渐认识到需求分析活动不再仅限于软件开发的最初阶段,它贯穿于系统开发的整个生命周期。80年代中期,形成了软件工程的子领域――需求工程(requirementengineering,RE)。进入90年代以来,需求工程成为研究的热点之一。从1993年起每两年举办一次需求工程国际研讨会(ISRE),自1994年起每两年举办一次需求工程国际会议(ICRE),在1996年Springer-Verlag发行了一新的刊物――《RequirementsEngineering》。一些关于需求工程的工作小组也相继成立,如欧洲的RENOIR(RequirementsEngineeringNetworkofInternationalCooperatingResearchGroups),并开始开展工作。需求工程是指应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题并定义目标系统的所有外部特征的一门学科。它通过合适的工具和记号系统地描述待开发系统及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持。RE可分为系统需求工程(如果是针对由软硬件共同组成的整个系统)和软件需求工程(如果仅是专门针对纯软件部分)。软件需求工程是一门分析并记录软件需求的学科,它把系统需求分解成一些主要的子系统和任务,把这些子系统或任务分配给软件,并通过一系列重复的分析、设计、比较研究、原型开发过程把这些系统需求转换成软件的需求描述和一些性能参数。

需求工程是一个不断反复的需求定义、文档记录、需求演进的过程,并最终在验证的基础上冻结需求。80年代,HerbKrasner定义了需求工程的五阶段生命周期:需求定义和分析、需求决策、形成需求规格、需求实现与验证、需求演进管理。近来,MatthiasJarke和KlausPohl提出了三阶段周期的说法:获取、表示和验证。

综合了几种观点,可以把需求工程的活动划分为以下5个独立的阶段:

(1)需求获取:通过与用户的交流,对现有系统的观察及对任务进行分析,从而开发、捕获和修订用户的需求;

(2)需求建模:为最终用户所看到的系统建立一个概念模型,作为对需求的抽象描述,并尽可能多的捕获现实世界的语义;

(3)形成需求规格:生成需求模型构件的精确的形式化的描述,作为用户和开发者之间的一个协约;

(4)需求验证:以需求规格说明为输入,通过符号执行、模拟或快速原型等途径,分析需求规格的正确性和可行性;

(5)需求管理:支持系统的需求演进,如需求变化和可跟踪性问题。>>

问题五:什么是软件需求,什么是功能需求? 我们的软件产品或者项目,其需求都有三个层级和三个方面。一、我们首先看需求的三个层次软件需求包括3个不同的层次DD业务需求、用户需求和功能需求。业务需求 (Business requirement)表示组织或客户高层次的目标。业务需求通常来自项目投资人、购买产品的客户、实际用户的管理者、市场营销部门或产品策划部门。业 务需求描述了组织为什么要开发一个系统,即组织希望达到的目标。使用前景和范围(vision and scope)文档来记录业务需求,这份文档有时也被称作项目轮廓图或市场需求(project charter 或 market requirement)文档。用户需求 (user requirement)描述的是用户的目标,或用户要求系统必须能完成的任务。用例、场景描述和事件DD响应表都是表达用户需求的有效途径。也就是说用户需求描述了用户能使用系统来做些什么。功能需求 (functional requirement)规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求。功能需求有时也被称作行为需求 (behavīoral requirement),因为习惯上总是用“应该”对其进行描述:“系统应该发送电子邮件来通知用户已接受其预定”。功能需求描述是开发人员需要实现什 么。注意:用户需求不总是被转变成功能需求。产品特性,所谓特性(feature),是指一组逻辑上相关的功能需求,它们为用户提供某项功能,使业务目标 得以满足。对商业软件而言,特性则是一组能被客户识别,并帮助他决定是否购买的需求,也就是产品说明书中用着重号标明的部分。客户希望得到的产品特性和用 户的任务相关的需求不完全是一回事。一项特性可以包括多个用例,每个用例又要求实现多项功能需求,以便用户能够执行某项任务。系统需求 (system requirement)用于描述包含有多个子系统的产品(即系统)的顶级需求。系统可以只包含软件系统,也可以既包含软件又包含硬件子系统。人也可以是系统的一部分,因此某些系统功能可能要由人来承担。业务规则 包 括企业方针、 条例、工业标准、会计准则和计算方法等。业务规划本身并非软件需求,因为它们不属于任何特定软件系统的范围。然而,业务规则常常会限制谁 能够执行某些特定用例,或者规定系统为符合相关规则必须实现某些特定功能。有时,功能中特定的质量属性(通过功能实现)也源于业务规则。所以,对某些功能 需求进行追溯时,会发现其来源正是一条特定的业务规则。功能需求记录在软件需求规格说明(SRS)中。SRS完整地描述了软件系统的预期特性。SRS我们一般把它当作文档,其实,SRS还可以是包含需求信息的数据库 或电子表格;或者是存储在商业需求管理工具中的信息;而对于小型项目,甚至可能是一叠索引卡片。开发、测试 、质量保证、项目管理和其他 相关的项目功能都要用到 SRS。除此之外,对于需求层次,我们还有其它的分法:组织级需求->业务需求->用户需求->功能需求(有时也叫行为需求)。组织级需求: 一 般代表着组织的愿景和目标。对于大的公司,一般是通过资深的咨询顾问和咨询公司得出的,呈现的方式是咨询报告。比如在ITSM或者企业信息化这方面。典型 的组织级的需求是:降低成本、减少库存成本、提升IT服务部门在企业中的价值、通过ISO20000、提高IT服务的效率、提高员工的满意度等。业务需求: 是要完组织的使命,达成组织的愿景的各个业务流程和业务单元具有的需求。业务需求服从于组织需求。用户需求: 用户级的需求,是在业务级的需求下,各个岗>>

问题六:如何写系统需求分析 学生选课系统需求分析 第一部分 需求分析 1.系统功能模块基本划分本系统划分为三个子系统:系统管理系统:系统维护学生选课系统:学生选课 *** 作教师查询系统:学生选课情况查询 2. 系统维护 2 1 2. 1 . 1 . 学生基本资料维护目标:针对学生的基本资料进行添加、 删除、 更新、 查询。 2. 1 . 2. 学生基本资料维护概述:前提条件: 管理员要对学生基本资料进行添加、 删除、 更新或查询。角色: 各级别的系统管理员输入: 学生基本属性(学号、 姓名、 系部、 班级、 密码、 选课总学分) 。基本流程: 登录管理员系统→验证当前用户权限→选择“学生基本资料维护” →管理员添加、 删除或修改更新→验证输入或修改的数据→验证通过: 更新数据库, 验证不通过: 给出提示信息要求用户重新输入。输出: 学生基本资料报表。 2 2 2. 2. 1 . 教师基本资料维护目标:针对教师的基本资料进行添加、 删除、 更新、 查询。 2. 2. 2. 教师基本资料维护概述:前提条件: 管理员要对教师基本资料进行添加、 删除、 更新或查询。角色: 各级别的系统管理员输入: 教师基本资料(工号、 姓名、 系部、 密码、 相关资料)基本流程: 登录管理员系统→验证当前用户权限→选择“教师基本资料维护” →管理员添加、 删除或修改更新→验证输入或修改的数据→验证通过: 更新数据库, 验证不通过: 给出提示信息要求用户重新输入。输出: 教师基本资料报表。 2 3 2. 3. 1 . 课程基本资料维护目标:针对课程的基本资料进行添加、 删除、 更新、 查询。 2. 3. 2. 课程基本资料维护概述:前提条件: 管理员要对课程基本资料进行添加、 删除、 更新或查询。角色: 二级系统管理员输入: 课程基本资料(课程号、 课程名、 课程简介、 上课时间、 上课地点、 学时、 学分、 人数上线、当前人数、 教师号)基本流程: 登录管理员系统→验证当前用户权限→选择“课程基本资料维护” →管理员添加、 删除或修改更新→验证输入或修改的数据→验证通过: 更新数据库, 验证不通过: 给出提示信息要求用户重新输入。输出: 课程详细资料。 2 4 2. 4. 1 . 系部资料维护目标:针对系部资料进行添加、 删除、 更新、 查询。 2. 4. 2. 系部维护概述:前提条件: 管理员要对系部资料进行添加、 删除、 更新或查询。角色: 一级系统管理员输入: 系部资料(系号、 系名称)基本流程: 登录管理员系统→验证当前用户权限→选择“系部资料维护” →管理员添加、 删除或修改更新→验证输入或修改的数据→验证通过: 更新数据库, 验证不通过: 给出提示信息要求用户重新输入。输出: 无 2 5 2. 5. 1 . 管理员维护目标:设置各级管理员权限 2. 5. 2. 管理员维护概述:前提条件:角色: 一级管理员输入: 管理员权限基本流程: 登录系统→验证权限→设置管理员权限→验证设置→成功更新或失败返回输出: 2 6 2. 6. 1 . 修改密码目标:正确的修改管理员登录密码 2. 6. 2. 修改密码概述:前提条件: 用旧密码正确登录角色: 各级管理员输入: 旧密码、 新密码、 验证密码基本流程: 登录选课系统→验证权限→输入旧密码、 新密码、 验证密码提交→验证旧密码是否正确、 新密码和验证密码是否相同→成功或失败(一天内不能超过3 次)输出: 成功或失败信息 2 7 2. 7. 1 . 系统设置目标:通过系统设置来修改系统环境变量 2 . 7 . 2 . 系 统 设 置 >>

问题七:系统设计和需求分析的关系是什么??急求 2012-4-27 12:19 满意回答 网络规划与需求分析需求分析从字面上的意思来理解就是找出需和求的关系,从当前业务中找出最需要重视的方面,从已经运行的网络中找出最需要改进的地方,满足客户提出的各种合理要求,依据客户要求修改已经成形的方案本章重点21需求分析的类型22如何获得需求23可行性论证24工程招标与投标221应用背景分析应用背景需求分析概括了当前网络应用的技术背景,介绍了行业应用的方向和技术趋势,说明本企业网络信息化的必然性 应用背景需求分析要回答一些为什么要实施网络集成的问题(1) 国外同行业的信息化程度以及取得哪些成效 (2) 国内同行业的信息化趋势如何 (3) 本企业信息化的目的是什么 (4) 本企业拟采用的信息化步骤如何 需求分析的类型P33221应用背景分析应用背景需求分析要回答一些为什么要实施网络集成的问题(1) 国外同行业的信息化程度以及取得哪些成效 (2) 国内同行业的信息化趋势如何 (3) 本企业信息化的目的是什么 (4) 本企业拟采用的信息化步骤如何 需求分析的类型P33222业务需求业务需求分析的目标是明确企业的业务类型,应用系统软件种类,以及它们对网络功能指标(如带宽,服务质量QoS)的要求业务需求是企业建网中首要的环节,是进行网络规划与设计的基本依据 需求分析的类型P33222业务需求通过业务需求分析要为以下方面提供决策依据:(1) 需实现或改进的企业网络功能有那些(2) 需要集成的企业应用有哪些 (3) 需要电子邮件服务吗 (4) 需要Web服务吗 (5) 需要上网吗 带宽是多少 (6) 需要视频服务吗 (7) 需要什么样的数据共享模式 (8) 需要多大的带宽范围 (9) 计划投入的资金规模是多少 需求分析的类型P33223管理需求网络的管理是企业建网不可或缺的方面,网络是否按照设计目标提供稳定的服务主要依靠有效的网络管理高效的管理策略能提高网络的运营效率,建网之初就应该重视这些策略需求分析的类型P34223管理需求网络管理的需求分析要回答以下类似的问题:是否需要对网络进行远程管理,远程管理可以帮助网络管理员利用远程控制软件管理网络设备,使网管工作更方便,更高效谁来负责网络管理;需要哪些管理功能,如需不需要计费,是否要为网络建立域,选择什么样的域模式等;需求分析的类型P34223管理需求选择哪个供应商的网管软件,是否有详细的评估;选择哪个供应商的网络设备,其可管理性如何;需不需要跟踪和分析处理网络运行信息;将网管控制台配置在何处 是否采用了易于管理的设备和布线方式需求分析的类型P34224安全性需求企业安全性需求分析要明确以下几点:企业的敏感性数据的安全级别及其分布情况;网络用户的安全级别及其权限;可能存在的安全漏洞,这些漏洞对本系统的影响程度如何;网络设备的安全功能要求;需求分析的类型P34224安全性需求网络系统软件的安全评估;应用系统安全要求;采用什么样的杀毒软件;采用什么样的防火墙技术方案;安全软件系统的评估;网络遵循的安全规范和达到的安全级别需求分析的类型P34225通信量需求通信量需求是从网络应用出发,对当前技术条件下可以提供的网络带宽做出评估需求分析的

问题八:解决方案和需求分析还有系统设计有什么区别 方案是整体的说明

需求 是系统要做什么

系统设计是说要怎么做

问题九:软件需求分析的需求类型 下面这些定义是需求工程领域中常见术语的定义。软件需求包括三个不同的层次:业务需求、用户需求和功能需求(也包括非功能需求)。1.业务需求(business requirement)反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。2.用户需求(user requirement) 文档描述了用户使用产品必须要完成的任务,这在使用实例(usecase)文档或方案脚本说明中予以说明。3.功能需求(functional requirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。在软件需求规格说明书(SRS)中说明的功能需求充分描述了软件系统所应具有的外部行为。软件需求规格说明在开发、测试、质量保证、项目管理以及相关项目功能中都起了重要的作用。对一个大型系统来说,软件功能需求也许只是系统需求的一个子集,因为另外一些可能属于子系统(或软件部件)。作为功能需求的补充,软件需求规格说明还应包括非功能需求,它描述了系统展现给用户的行为和执行的 *** 作等。它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性。所谓约束是指对开发人员在软件产品设计和构造上的限制。质量属性是通过多种角度对产品的特点进行描述,从而反映产品功能。多角度描述产品对用户和开发人员都极为重要。下面以一个子处理程序为例来说明需求的不同种类。业务需求可能是:“用户能有效地纠正文档中的拼写错误”,该产品的包装盒封面上可能会标明这是个满足业务需求的拼写检查器。而对应的用户需求可能是“找出文档中的拼写错误并通过一个提供的替换项列表来供选择替换拼错的词”。同时,该拼写检查器还有许多功能需求,如找到并高亮度提示错词的 *** 作;显示提供替换词的对话框以及实现整个文档范围的替换。从以上定义可以发现,需求并未包括设计细节、实现细节、项目计划信息或测试信息。需求与这些没有关系,它关注的是充分说明你究竟想开发什么。项目也有其它方面的需求,如开发环境需求或发布产品及移植到支撑环境的需求。尽管这些需求对项目成功也至关重要,但它们并非本书所要讨论的。

以上就是关于软件工程解题全部的内容,包括:软件工程解题、需求分析有哪几个步骤、如何做好需求分析,需求调研等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9567710.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存