
软件需求复习提纲.doc
9页精选优质文档-----倾情为你奉上软件需求复习提纲第I部分 什么是软件需求?为什么要实现软件需求?哪些人应参与软件需求?一、软件或系统项目涉众:客户: 为达到其公司的业务目标而投资项目或购买产品用户:直接或间接与产品打交道,是客户的一部分需求分析员:负责编写需求并传达给开发团队开发人员:设计、实现和维护产品测试人员:确定产品的行为是否与预计的相一致文档编制人员:负责编写用户手册、培训资料和系统帮助项目经理:制定项目计划并带领开发人员获得成功法律人员:确保产品符合所有相关法规生产人员:制造包含该软件的产品市场营销人员:技术支持及其他与产品和客户打交道的人员常见的几种关于需求的定义说法:⑴需求是“任何促成设计决策的因素”;⑵用户为解决某个问题或达到某个目标而需具备的条件或能力系统或系统组件为符合合同、标准、规范或其他正式文档而必须满足的条件或必须具备的能力上述第一项或第二项中定义的条件和能力的文档表达⑶需求是对应该实现什么功能的说明——可以是对系统运行方式或系统特征与属性的描述;还可能是对系统开发过程的约束软件需求包括3个不同的层次——业务需求(表示组织或客户高层次的目标)、用户需求(用户的目标,或用户要求系统必须能完成的任务)和功能需求(规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求)。
除此之外,每个系统还有各种非功能需求软件需求工程分为需求开发和需求管理两部分需求开发的任务可进一步细分为获取、分析、规格说明和确认 需求管理的任务是“与客户就软件项目的需求达成并保持一致”需求管理包括下列活动:定义需求基线(某一时刻,对特定版本中已达成一致的需求内容的描述)审查需求变更请求,评估其可能产生的影响以决定是否批准以可控的方式将批准的需求变更融入项目中保持项目计划与需求的同步估计需求变更的影响,在此基础上协商新的需求约定跟踪每项需求,找到与其对应的设计、源代码和测试用例(test case)在项目开发过程中,始终跟踪需求的状态和变更镀金问题:开发人员为产品添加了一项需求说明中没有提到的功能,他认为“用户肯定会喜欢的”这就是镀金问题开发人员和需求分析员不应擅自添加特性,应该把创意和备选方案提交给客户,让他们做决定;要避免镀金问题,就应该追溯每项功能的来源,弄清楚为什么添加该功能 二、客户:广义地讲,客户泛指直接或间接得益于产品的个人或组织软件的客户包括那些提出软件需求,购买、定义、使用软件产品或选择接受软件功能的项目涉众低一层的需求——用户需求——则应来自实际使用产品的人这类用户(通常被称为“最终用户”)构成了另一类型的客户。
对于信息系统、签约开发或自己开发的项目,业务需求应来自投资项目人,而用户需求则应来自产品的实际使用者客户的权利:软件客户的权利法案(见表2.1),共列出了10项权利,理解其内容(2.2.1)客户的义务:软件客户的法案(见表2.2),列出了需求过程中客户对需求分析员和开发人员承担的10项义务理解其内容(2.2.2)关于签字:不可能在项目初期就能明确所有的需求,需求肯定要随时间的推移而发生变化参与者必须对项目初期的签字的准确含义应达成上述一致的理解三、知识:所有将要成为分析员的团队成员都应该接受需求工程方面的基本培训熟练的需求分析员应具备以下特点:耐心,思维条理性强,有良好的交际和沟通能力,理解产品应用领域,并且掌握丰富的需求工程技术 定义应用领域专业名称的术语表可以减少误解需求获取:确定用户群和他们的特点将产品的用户分成组,以避免出现某一用户群的需求被忽略的情况为每类用户选择代言人为每类用户选择至少一位能够准确反映其需求的代言人建立典型用户的中心小组把产品早期版本或同类产品的用户代表召集起来,收集他们对正在开发的产品的功能和质量特性的意见四、 即使没有明确指定,软件项目组中也会有某个人会担当需求分析员的角色,需求分析员职责含:是对项目涉众的需求进行收集、分析、记录和验证等职责的主要承担者。
是用户群体与软件开发团队间进行需求沟通的主要渠道第一项工作是帮助业务或投资管理人、产品经理或销售经理定义项目的业务需求对收集到的需求进行分析,找出那些客户没有明确说明的需求编写需求规格说明 需求分析员必备的技能倾听的技巧 要善于双向交流,就必须知道如何有效地倾听交谈和提问的技巧 大部分需求是通过讨论得到的,因此,需求分析员必须能够与不同的个人或小组就需求展开讨论分析能力 优秀的需求分析员能够以不同的方式思考问题.协调能力 需求获取过程中,对相关人员进行协调也是需求分析员必备的一项能力观察能力 观察力敏锐的需求分析员能够从不经意的闲谈中发现重要的信息写作能力 需求开发提交的主要结果是书面的需求规格说明,用于在客户、营销人员、管理人员和技术人员之间传递信息组织能力 需求分析员需要处理获取和分析过程中收集到的大量杂乱的信息建模能力 每个需求分析员都应该掌握从传统的流程图到结构化的分析模型(数据流图、实体关系图之类),直至当今的统一建模语言(UML)等多种分析工具人际交往能力 需求分析员应具备让彼此利益竞争的人们进行合作的能力创造力 需求分析员不能像抄录员那样只记下客户说过的每句话。
需求分析员必备的知识:需求分析员还需具备从实践经验中积累的广博知识其中最基本的是对当代需求管理技术的深刻理解,以及在各种不同的软件开发生命周期环境中应用这些技术的能力需求分析员需要将需求开发与管理活动贯穿于整个产品生命期中掌握应用领域的知识、最大限度地减少与客户间的误解开发人员要想成为需求分析员,需要多掌握一些业务领域的知识第二部分 软件需求开发五、 项目的范围定义了所提出的解决方案的概念和范围1)第一个版本的范围概述计划在产品的第一个版本中实现的主要特性2)各后续版本的范围要采用阶段性的开发方式,需要决定推迟实现哪些特性,并为后续的版本做出时间安排3)限制与排除定义项目包含的需求与不包含的需求之间的界线保持范围的适度正常情况下依据前景和范围文档决定需求范围,但有时被提议的新需求不在范围之内,却很有价值,因而需要对项目范围做出调整以容纳这一新的需求六、 要获得客户的需求,应采取以下步骤:a) 确定产品的不同用户类型b) 确定用户需求的来源c) 挑选出每一类用户和其他涉众的代表并与他们一起工作d) 商定谁是项目需求的决策者几种典型的软件需求来源:与潜在用户进行交谈和讨论 要想知道某个新软件的潜在用户的需求,最直接的方式莫过于向用户了解。
描述现有产品或竞争产品的文档这类文档可能也会描述产品必须遵循的企业或行业标准,以及法律和法规等系统需求规格说明同时包含硬件和软件的产品具有一个高级的系统需求规格说明,用于描述整个产品现有系统的问题报告和改进要求 客户服务和技术支持人员也是需求的重要来源市场调查和用户问卷调查 这类调查能够从广大的潜在用户那里收集到大量的数据观察用户如何工作让需求分析员观察现有系统的用户或将要推出的系统的潜在用户如何进行工作用户工作的情景分析 在确定用户需要借助系统完成哪些工作之后,需求分析员就能推导出用户完成这些工作必需的功能性需求事件和响应 列出系统必须响应的外部事件和正确的响应七、 需求获取中的注意事项●只向很少的用户代表收集意见,或者只听取声音最大、最固执己见的客户的意见,也是需求获取过程中存在的问题●获取用户需求的工作可能导致对产品前景或项目范围的修改●需求开发过程中产生的模型和界面草图应该被视为可以促进有效沟通的设计建议,而不应成为对设计者的约束必须让用户明白这些界面和原型只是用于说明,不一定是最终的解决方案●使用增量开发方法,把需求分解成低风险的更小的部分进行研究八、 用例的好处4 使用用例能够让用户更清楚地了解新系统可以提供的功能。
4 用例法还有助于为需求划分优先级优先级最高的功能性需求源自优先级最高的用例优先级高的用例具有以下特征:¤ 描述了系统实现的核心业务过程之一¤ 很多用户经常使用¤ 由重点用户类提出¤ 提供了为符合规定所需的功能¤ 其他系统功能依赖于该用例的存在4 用例法还有技术方面的好处,能够揭示重要的域对象,以及相互间的职责使用用例时应避免的问题¤ 用例过多 ¤ 用例过于复杂 ¤ 在用例中包含用户界面设计 ¤ 在用例中包含数据定义¤ 用户无法理解用例¤ 新的业务流程¤ 滥用包含和扩充关系九、 业务规则是对业务的某个方面进行定义或约束的语句业务规则包括5类:试举出约束、动作触发规则和计算的例子事实(fact)就是对业务的真实陈述,常常描述重要业务术语间的关联约束(constraint)限制了系统或它的用户可以执行哪些操作4 约束的例子包括:¤ 未满18周岁的借款人必须由父母或其它其他合法监护人作为贷款的联合签署人¤ 图书馆的借阅者最多可以同时借10本书¤ 只有最近12个月内接受过危险化学品使用方法培训的用户,才能申领属于一级危险品的化学制品化学品¤ 所有应用软件都必须符合政府法规中有关方便视力较弱人士使用的规定。
¤ 信件中可以不必写出投保人4位以上的社会保险号¤ 每24小时内,商业航空公司的机组人员必须至少得到连续8小时的休息动作触发规则:在特定条件下触发某个动作的规则4 下面是一些动作触发类业务规则的例子:¤ 如果化学品仓库中有所需化学品,则将现有的化学品交给申领人¤ 如果某瓶化学品到了失效日期,则通知其当前持有人¤ 每季度的最后一天,按规定生成该季度化学品使用和处理情况的OSHA和EPA报告¤ 如果客户订购的书的作者有多部作品,则在接受订单前向客户推荐作者的其他作品计算:有一类业务规则定义使用特定数学公式或算法进行的计算(computation)比如表9.1 购买商品数量不同折扣也不同的例子推论(inference)是根据某个条件的真实性得出某些新事实的规则,有时也称为推导出的知识4 下面是一些推论的例子:¤ 如果到期30天后还没有偿还应付款,则该账户是在拖欠债务¤ 如果接到订单5天后,卖方还不能发送客户订购的商品,则表明该商品延迟交货¤ 可能形成爆炸性分解物的化学品被认为在出厂一年后过期十、 需求开发的最终成果是,在客户和开发人员对所要开发的产品达成共识后,编写的具体的需求文档可以采用以下几种方式来表示软件需求¤ 文档 用结构合理的自然语言来精心编写需求文档。
¤ 图形化模型 这些模型可以描绘转换过程、系统状态和它们之间的变化、数据关系、逻辑流或者对象类及其关系¤ 形式化规格说明使用数学上精确的形式逻辑语言来定义需求 十一、 与文本相比,要交流某些类型的信息,使用示意图的效率可能更好示意图还有助于扫清不同的团队成员之间在语言和词汇上的障碍分析人员需要向其他涉众解释所用的模型和符号的用途十二、 产品的易用性、运行速度、出错频率,以及处理异常情况的能力这些特性被称为软件质量属性,是系统非功能(也叫非行为)性需求的一部分。
