需求工程与过程_第1页
需求工程与过程_第2页
需求工程与过程_第3页
需求工程与过程_第4页
需求工程与过程_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、需求工程与过程2.1 需求工程概述 需求工程是软件工程的核心组成局部,是需求工程是软件工程的核心组成局部,是指应用有效的技术、方法进行需求分析,确定指应用有效的技术、方法进行需求分析,确定客户需求,帮助分析和设计人员理解问题,并客户需求,帮助分析和设计人员理解问题,并定义目标系统的一门学科。定义目标系统的一门学科。2.1 需求工程概述需求开发活动内容v 获取每个用户类的需求。获取每个用户类的需求。v 确定产品所期望的用户类。确定产品所期望的用户类。v 了解实际用户任务和目标以及这些任务所支持的业务需求。了解实际用户任务和目标以及这些任务所支持的业务需求。v 分析源于用户的信息,以区别用户任务需

2、求、功能需求、业务规分析源于用户的信息,以区别用户任务需求、功能需求、业务规那么、质量属性。那么、质量属性。v 将系统级的需求分为几个子系统,并将需求中的一部份分配给软件将系统级的需求分为几个子系统,并将需求中的一部份分配给软件组件。例组件。例v 了解相关质量属性的重要性。了解相关质量属性的重要性。v 商讨实施优先级的划分。例商讨实施优先级的划分。例v 将所收集的用户需求编写成规格说明和模型。将所收集的用户需求编写成规格说明和模型。v 评审需求规格说明,确保对用户需求到达共同的理解与认识。评审需求规格说明,确保对用户需求到达共同的理解与认识。例例用户类用户是可分不同类型的,举例如下:用户是可分

3、不同类型的,举例如下:DZ在各种论坛的地位是有目共睹的,特别是在各种论坛的地位是有目共睹的,特别是BT下载论坛和娱乐论坛,而下载论坛和娱乐论坛,而且用户的需求是不同的,因此,建议开发不同功能的且用户的需求是不同的,因此,建议开发不同功能的Discuz!4.0版本,版本,适应不同用户需求。建议开发:适应不同用户需求。建议开发:1、标准版,适合一般用户和可以自己添加修改插件等用户。、标准版,适合一般用户和可以自己添加修改插件等用户。2、娱乐版,适合电影、游戏、休闲等论坛和下载论坛,可以集成更多的、娱乐版,适合电影、游戏、休闲等论坛和下载论坛,可以集成更多的娱乐插件。娱乐插件。3、插件版,适合对、插

4、件版,适合对Discuz!不熟悉,不能自己修改添加插件、喜欢全功不熟悉,不能自己修改添加插件、喜欢全功能的用户。能的用户。 也可以把也可以把2、3合并。合并。需求的变化和改动笑话一那么:笑话一那么:距离史记载,没有一个软件的需求改动少于三次。距离史记载,没有一个软件的需求改动少于三次。唯一只改动需求两次的客户是个死人。这个可怜唯一只改动需求两次的客户是个死人。这个可怜的家伙还是在运送第三次需求的路上被车子撞死的家伙还是在运送第三次需求的路上被车子撞死的。的。 cline 1995问题是:如何来管理好需求呢?问题是:如何来管理好需求呢?需求管理主要包括:建立基线、需求跟踪、变更需求管理主要包括:

5、建立基线、需求跟踪、变更控制等几个方面。控制等几个方面。需求管理活动内容v定义需求基线迅速制定需求文档的主体。定义需求基线迅速制定需求文档的主体。v评审提出的需求变更、评估每项变更的可能影响评审提出的需求变更、评估每项变更的可能影响从而决定是否实施它。从而决定是否实施它。v使当前的工程方案与需求一致。使当前的工程方案与需求一致。v估计变更需求所产生影响并在此根底上协商新的估计变更需求所产生影响并在此根底上协商新的承诺约定。承诺约定。v让每项需求都能与其对应的设计、源代码和测试让每项需求都能与其对应的设计、源代码和测试用例联系起来以实现跟踪。用例联系起来以实现跟踪。v在整个工程过程中,跟踪需求状

6、态及其变更情况。在整个工程过程中,跟踪需求状态及其变更情况。需求开发与需求管理之间的界限图2.2 软件需求与产品生命周期 软件产品经历需求、分析、设计、实现、部软件产品经历需求、分析、设计、实现、部署后,软件将被使用并进入维护阶段,直到最署后,软件将被使用并进入维护阶段,直到最后逐渐消亡。这样一个过程,叫软件生命周期后逐渐消亡。这样一个过程,叫软件生命周期模型。模型。软件生命周期模型软件生命周期模型一一 . .瀑布模型线性模型瀑布模型线性模型二二. RAD. RAD快速应用开发模型快速应用开发模型三三. . 螺旋模型螺旋模型四四. RUP. RUPRational United Process

7、Rational United Process五五. . 如何根据需求选择生命周期模型如何根据需求选择生命周期模型软件生命周期模型软件生命周期模型 瀑布模型规定了各项软件工程活动,包括:制定开发方案,进行需求分析和说明,软件设计,程序编码,测试及运行维护,并且规定了它们自上而下,相互衔接的固定顺序,如同瀑布流水,逐级下落。它是软工中根本模型。 一一. 瀑布模型线性模型瀑布模型线性模型软件生命周期模型软件生命周期模型瀑布模型图软件生命周期模型软件生命周期模型传统瀑布模型开发软件的特点n阶段间具有顺序性和依赖性阶段间具有顺序性和依赖性n推迟实现的观点推迟实现的观点n每个阶段必须完成规定的文档和成果

8、每个阶段必须完成规定的文档和成果n每个阶段结束前完成文档审查每个阶段结束前完成文档审查, , 尽早改正错误尽早改正错误软件生命周期模型软件生命周期模型 快速应用开发模型强调极短的开发周期,是线性快速应用开发模型强调极短的开发周期,是线性顺序模型的一个顺序模型的一个“高速变种,通过使用基于构件的高速变种,通过使用基于构件的建造方法赢得了快速开发。如果需求理解得很好且约建造方法赢得了快速开发。如果需求理解得很好且约束了工程范围,它的过程使得队伍在很短时间内创立束了工程范围,它的过程使得队伍在很短时间内创立出出“功能完善的系统。功能完善的系统。二二.RAD.RAD快速应用开发模型快速应用开发模型软件

9、生存周期模型软件生存周期模型一一. 需求方案需求方案 采用联合需求方案技术来收集需求信息,采用联合需求方案技术来收集需求信息,以结构化方式自顶向下、逐步求精、模块化设计以结构化方式自顶向下、逐步求精、模块化设计 讨讨论现有业务问题。论现有业务问题。二二. 用户描述用户描述 采用联合应用设计来管理用户的参与,开发采用联合应用设计来管理用户的参与,开发团队快速捕捉系统非技术设计阶段的用户信息。团队快速捕捉系统非技术设计阶段的用户信息。三三. 构建构建 包括详细设计、创立编码和测试以及在包括详细设计、创立编码和测试以及在某时间内发布给客户。某时间内发布给客户。四四. 结束结束 用户验收测试、系统安装

10、和用户培训。用户验收测试、系统安装和用户培训。 RAD RAD模型的阶段模型的阶段软件生存周期模型软件生存周期模型RAD快速应用开发模型图60-9060-90天天需求需求方案方案用户用户描述描述构建构建结束结束开开发发工工作作量量RAD使用模型的条件使用模型的条件n系统可基于构件开发和可缩放。系统可基于构件开发和可缩放。n用户能参与到整个生命周期中。用户能参与到整个生命周期中。n工程开发周期短。工程开发周期短。n工程团队熟悉应用领域,能熟练使用开发工具。工程团队熟悉应用领域,能熟练使用开发工具。n举例:某集团公司的举例:某集团公司的OAOA系统系统, ,烟草公司的资金结烟草公司的资金结算系统等

11、等。算系统等等。软件生存周期模型软件生存周期模型三三. .螺旋模型螺旋模型 对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型参加对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型参加了风险分析。了风险分析。 螺旋模型沿着螺线旋转,在笛卡尔坐标的四个象限上分别表达了四个螺旋模型沿着螺线旋转,在笛卡尔坐标的四个象限上分别表达了四个方面的活动,即:方面的活动,即:1.1.制定方案制定方案确定软件目标,选定实施方案,弄清工程开确定软件目标,选定实施方案,弄清工程开 发的限制条件。发的限制条件。2.2.风险分析风险分析分析所选方案,考虑如何识别和消除风险分析所选方案,考虑如何识别和消除风险

12、3.3.实施工程实施工程实施软件开发实施软件开发4.4.评估评估评价开发工作,提出修正建议和相应方案评价开发工作,提出修正建议和相应方案 沿螺线自内向外每旋转一圈便开发出更为完善的一个新的软沿螺线自内向外每旋转一圈便开发出更为完善的一个新的软件版本。件版本。 软件生命周期模型软件生命周期模型螺螺旋旋模模型型图图 评估评估举例:某集团公司的举例:某集团公司的ERP系统建设系统建设RUPRUP简介简介 Rational Unified Process简称RUP是一套软件工程过程,它又是文档化的软件工程产品,由Rational公司开发、维护并销售。 RUP又是一套软件工程方法的框架,各个组织可根据自

13、身的实际情况,以及工程规模对RUP进行裁剪和修改,以制定出符合需要的软件工程过程。RUPRUP简介简介 RUP吸收了多种开发模型的优点,具有很好的可操作性和实用性、从它一推出市场,凭借Rational在业界的领导地位、以及与统一建模语言Unified Model Language,以下简称UML的良好集成、多种CASE工具的支持、不断的升级与维护,迅速得到业界广泛的认同,越来越多的组织如IBM、Microsoft、Sun以它作为软件开发模型框架。RUPRUP简介简介 RUPRUP二维开发模型二维开发模型RUPRUP可以用二维坐标来可以用二维坐标来描述。横轴通过时间组描述。横轴通过时间组织,是过

14、程展开的生命织,是过程展开的生命周期特征,表达开发过周期特征,表达开发过程的动态结构,用来描程的动态结构,用来描述它的术语主要包括周述它的术语主要包括周期、阶段、迭代和里程期、阶段、迭代和里程碑;碑;纵轴以内容来组织纵轴以内容来组织为自然的逻辑活动,表为自然的逻辑活动,表达开发过程的静态结构,达开发过程的静态结构,用来描述它的术语主要用来描述它的术语主要包括活动、产物、工作包括活动、产物、工作者和工作流。者和工作流。 RUPRUP简介简介 RUP中的软件生命周期在时间上被分解为四个顺序的阶段,分别是:初始阶段、细化阶段、构造阶段和交付阶段。每个阶段结束于一个主要的里程碑;每个阶段本质上是两个里

15、程碑之间的时间跨度。在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许工程进入下一个阶段。 RUPRUP开发过程中的各个阶段和里程碑开发过程中的各个阶段和里程碑RUPRUP简介简介 RUP中的每个阶段可以进一步分解为迭代。一个迭代是一个完整的开发循环,产生一个可执行的产品版本,是最终产品的一个子集,它增量式地开展,从一个迭代过程到另一个迭代过程到成为最终的系统。RUP的迭代开发模式图RUPRUP简介简介 1.开发复用。减少开发人员的工作量,保证软件质量 2. 可降低风险 3.对需求进行有效管理 4.可视化建模(使用ROSE工具) 5.使用组件体系结

16、构,使软件体系架构更具弹性 6.贯穿整个开发周期的质量核查 7.对软件开发的变更控制 RUPRUP的特点的特点选择生命周期模型的总结选择生命周期模型的总结 需求情况需求情况 瀑布瀑布 模型模型 螺旋螺旋模型模型 RAD 迭代迭代模型模型需求容易定义或明确吗?需求容易定义或明确吗? 是是否否是是否否能在早期确定需求吗?能在早期确定需求吗?是是否否是是是是周期中需求经常变化吗?周期中需求经常变化吗? 否否是是是是是是基于需求特点选择生命周期模型基于需求特点选择生命周期模型v需求工程过程被认为是建立软件系统最重要的方需求工程过程被认为是建立软件系统最重要的方面之一,在工程中,它涵盖了与需求相关的所有

17、面之一,在工程中,它涵盖了与需求相关的所有活动。活动。v需求的开发过程需求的开发过程vPressman的需求工程过程的需求工程过程vBoehm的需求工程过程的需求工程过程 2.3 需求开发过程 2.3.1 需求开发过程1需求开发是一个迭代的过程需求开发是一个迭代的过程 重重新新评评估估 获获取取 分分析析 编编写写规规约约 验验证证 重重写写 证证实实 更更正正并并减减 小小误误 差差 2.3.1 需求开发过程2需需求求开开发发过过程程框框架架Pressman的需求工程过程的需求工程过程需求获取需求获取需求分析需求分析需求规格说明需求规格说明系统建模系统建模需求确认需求确认需求管理需求管理使用

18、在怎样的需求环境中?使用在怎样的需求环境中?Boehm的需求工程过程的需求工程过程确定重要的涉众确定重要的涉众确定满足涉众要求的条件确定满足涉众要求的条件确定确定2中的冲突因素中的冲突因素协商满足各方面要求的高层协议协商满足各方面要求的高层协议列出互相满足要求的选项列出互相满足要求的选项研究折中选项研究折中选项预期管理预期管理将协议融入将协议融入SRS和方案中和方案中重复重复1-8,直到完全开发完成,直到完全开发完成面临和解决新的风险工程面临和解决新的风险工程12345678910使用在哪些场合或使用在哪些场合或工程中?工程中?需求工程的方法需求工程方法分成四类:需求工程方法分成四类:1.1.

19、面向过程,注重输入输出面向过程,注重输入输出, ,如传统的结构化分析。如传统的结构化分析。2.2.面向数据,强调数据结构,如面向数据,强调数据结构,如E-RE-R模型,模型,DDDD描述。描述。3.3.面向控制,强调同步、并发,如面向控制,强调同步、并发,如DFDDFD图。图。4.4.面向对象,它建立在对象间的交互根底上,对面向对象,它建立在对象间的交互根底上,对对象模型、动态模型和功能模型三个方面对问对象模型、动态模型和功能模型三个方面对问题进行描述,如以题进行描述,如以UMLUML为根底的为根底的RoseRose的建模工具。的建模工具。结构化分析结构化分析v即使没有明确指定,软件工程组中也

20、会有某个人即使没有明确指定,软件工程组中也会有某个人会担当需求分析员的角色。会担当需求分析员的角色。v企业的企业的IS组织中,行使这一职责的专家被称为业组织中,行使这一职责的专家被称为业务分析员。务分析员。v对需求分析员的不同称谓还包括系统分析员、需对需求分析员的不同称谓还包括系统分析员、需求工程师、需求经理,也有简称分析员的。求工程师、需求经理,也有简称分析员的。2.4 需求工程的角色系统分析员2.4.1 需求分析员的职责与要求v 需求分析员是对工程涉需求分析员是对工程涉众的需求进行收集众的需求进行收集 、分析、记录和验证等职分析、记录和验证等职责的主要承担者。责的主要承担者。v 如下图,需

21、求分析员如下图,需求分析员是用户群体与软件开是用户群体与软件开发团队间进行需求沟发团队间进行需求沟通的主要渠道。通的主要渠道。 需求分析员需求分析员 项目管理项目管理 规格与复杂度信息规格与复杂度信息 用户代表用户代表 用户需求用户需求 开发开发 功能及功能及 非功能需求非功能需求 需求分析 期望与约束期望与约束 功能及非功能需求功能及非功能需求 测试测试 其他股东其他股东 注意:注意:不要指望优秀的开发人员或知识渊博的不要指望优秀的开发人员或知识渊博的用户可以自动成为优秀的业务分析员,而用户可以自动成为优秀的业务分析员,而不需要为他们提供培训、锻炼不需要为他们提供培训、锻炼、学习资料、学习资

22、料和指导。和指导。岗位职责:岗位职责:1.1.收集、整理、分析、提炼、跟踪、控制用户的产品需求;收集、整理、分析、提炼、跟踪、控制用户的产品需求;2.2.编写产品需求说明书,准确描述和解释业务需求;编写产品需求说明书,准确描述和解释业务需求;3.3.编写设计文档,引导编写设计文档,引导UIUI设计师制作产品原型(可选);设计师制作产品原型(可选);4.4.编写详细产品需求分析书,提供给软件开发工程师,测试工程师。编写详细产品需求分析书,提供给软件开发工程师,测试工程师。职位要求:职位要求:1. 大学本科及以上学历,专业不限;大学本科及以上学历,专业不限;2. 具备具备N年以上软件产品需求分析的

23、工作经验;年以上软件产品需求分析的工作经验;3. 具备较强的沟通和协调能力,引导用户提出需求;具备较强的沟通和协调能力,引导用户提出需求;4. 具备较强的需求分析能力,进行业务需求整理、分析;具备较强的需求分析能力,进行业务需求整理、分析;5. 具有较强的领悟能力和学习能力,能迅速了解行业知识;具有较强的领悟能力和学习能力,能迅速了解行业知识;6. 有较强的语言和文字表达能力;标准的文档写作能力;从有较强的语言和文字表达能力;标准的文档写作能力;从毕设开始毕设开始7. 熟悉熟悉UML语言,能使用软件工具进行建模。语言,能使用软件工具进行建模。2.4.1 需求分析员的职责与要求需求分析员需求分析

24、员 职位要求描述举例职位要求描述举例计算机或相关专业毕业,本科以上学历,计算机或相关专业毕业,本科以上学历,3 3年以上开发经验;年以上开发经验;熟悉面向对象的分析,设计和开发方法;熟悉面向对象的分析,设计和开发方法;熟悉熟悉UMLUML,RoseRose,PowerDesignerPowerDesigner等软件工程建模工具;等软件工程建模工具;能够进行需求分析,编写分析文档及规格说明书;能够进行需求分析,编写分析文档及规格说明书;能够熟练阅读能够熟练阅读MSDNMSDN等英文资料;等英文资料;熟悉熟悉WindowsWindows操作系统,熟悉操作系统,熟悉WindowsWindows平台下

25、编程;平台下编程;熟悉熟悉C#,VC+C#,VC+或或JAVAJAVA;熟悉系统、网络、数据库编程;熟悉系统、网络、数据库编程;熟悉测试方法,错误分析定位;熟悉测试方法,错误分析定位;有大型系统开发经验者优先有大型系统开发经验者优先;一、一、 业务方面的业务方面的二二 、计算机方面的、计算机方面的1. 客户不懂计算机,不知道如何用计算机术语表达自己的业务需求客户不懂计算机,不知道如何用计算机术语表达自己的业务需求。 2. 程序员不懂业务,不知道代码和业务类需求之间联系程序员不懂业务,不知道代码和业务类需求之间联系。3. 只有系统分析员,既明白客户的业务需求,也理解程序员的只有系统分析员,既明白

26、客户的业务需求,也理解程序员的计算机术语,因此,他通过需求调研获取用户需求,然后编计算机术语,因此,他通过需求调研获取用户需求,然后编写需求规格说明书,告诉程序员做什么。写需求规格说明书,告诉程序员做什么。 系统分析员必须具有两方面的知识系统分析员必须具有两方面的知识2.4.2 需求分析员知识与技能v下面列出需求分析员的技能:下面列出需求分析员的技能:v倾听的技巧倾听的技巧 v交谈和提问的技巧交谈和提问的技巧 v 大局部需求是通过讨论得到的,因此,需求大局部需求是通过讨论得到的,因此,需求分析员必须能够与不同的个人或小组就需求展分析员必须能够与不同的个人或小组就需求展开讨论。开讨论。v分析能力

27、分析能力 v优秀的需求分析员能够以不同的方式思考问题。优秀的需求分析员能够以不同的方式思考问题。2.4.2 需求分析员知识与技能举例:厦门某中心的调研举例:厦门某中心的调研 协调能力协调能力 需求获取过程中,对相关人员进行协调也是需求分析员必需求获取过程中,对相关人员进行协调也是需求分析员必备的一项能力。备的一项能力。 观察能力观察能力 观察力敏锐的需求分析员能够从不经意的闲谈中发现重要观察力敏锐的需求分析员能够从不经意的闲谈中发现重要的信息。的信息。 写作能力写作能力 需求开发提交的主要结果是书面的需求规格说明,用于在需求开发提交的主要结果是书面的需求规格说明,用于在客户、营销人员、管理人员

28、和技术人员之间传递信息。客户、营销人员、管理人员和技术人员之间传递信息。 组织信息能力组织信息能力 需求分析员需要处理获取和分析过程中收集到的大量杂乱需求分析员需要处理获取和分析过程中收集到的大量杂乱的信息。的信息。2.4.2 需求分析员知识与技能 人际交往能力人际交往能力 需求分析员应具备让彼此利益竞争的人们进行合作的能力。需求分析员应具备让彼此利益竞争的人们进行合作的能力。 建模能力建模能力 每个需求分析员都应该掌握从传统的流程图到结构化的每个需求分析员都应该掌握从传统的流程图到结构化的分析模型分析模型(数据流图、实体关系图等数据流图、实体关系图等),直至当今的统一,直至当今的统一建模语言

29、建模语言(UML)等多种分析工具。等多种分析工具。2.4.2 需求分析员知识与技能能力的培养环境:实际工程能力的培养环境:实际工程 2.4.3 需求分析员的工作 需求分析员是客户与开发人员交流的中间人,负责将客户对需求分析员是客户与开发人员交流的中间人,负责将客户对产品的初步想法转化为明确的需求说明,用来指导开发工作。产品的初步想法转化为明确的需求说明,用来指导开发工作。定义业务需求定义业务需求 需求分析员的第一项工作是帮助业务管理人、产品经理或销售经需求分析员的第一项工作是帮助业务管理人、产品经理或销售经理定义工程的业务需求某大公司理定义工程的业务需求某大公司SAP上线的原因。上线的原因。确

30、定工程涉众和用户类别确定工程涉众和用户类别 前景和范围文档可帮助需求分析员分辨出产品的重要用户群和其他涉前景和范围文档可帮助需求分析员分辨出产品的重要用户群和其他涉众。众。获取需求获取需求需求分析员可能要用到以下信息收集方法:交谈、需求讨论会、文档需求分析员可能要用到以下信息收集方法:交谈、需求讨论会、文档分析、调查、现场访问客户、业务流程分析、工作流程分析和任务分析、调查、现场访问客户、业务流程分析、工作流程分析和任务分析、同类产品分析、根据现有系统导出需求、回忆以往工程。分析、同类产品分析、根据现有系统导出需求、回忆以往工程。 2.4.3 需求分析员的工作v 分析需求分析需求 需求分析员还要对收集到的需求进

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论