第2章_软件工程与需求工程
- 格式:ppt
- 大小:577.50 KB
- 文档页数:27
软件工程专业优质课软件需求工程软件工程专业优质课——软件需求工程软件需求工程是软件工程领域的一门重要课程,它主要关注软件项目中的需求分析、规划与管理。
通过系统地收集、分析和定义用户对软件系统的需求,软件需求工程可以帮助开发团队更好地理解用户需求,并将其转化为可执行的开发计划。
下面将从需求工程的基本概念、流程和关键技术等方面进行论述。
一、需求工程的基本概念软件需求工程是指在软件开发或系统维护过程中,对需求进行收集、分析、定义、验证与管理等一系列活动的过程。
它的目标是构建一个正确、完整、准确、一致和可追踪的需求规格说明,为软件开发提供基础。
需求工程的核心是要确保需求的正确性和完整性。
只有对用户需求进行准确的理解和把握,才能保证软件开发过程中的目标和结果与用户的期望保持一致。
因此,需求工程在整个软件开发过程中具有举足轻重的地位。
二、需求工程的流程需求工程的流程可以分为需求获取、需求分析、需求定义、需求验证和需求管理等五个阶段。
1. 需求获取阶段需求获取阶段主要通过面对面交流、问卷调查、访谈和文献分析等方式,与用户直接沟通以获取需求信息。
在这个阶段中,需求工程师需要充分了解用户的背景、目标和需求,明确项目的范围和目标,以确保需求的准确性和一致性。
2. 需求分析阶段需求分析阶段是对需求进行详细分析和整理的过程。
在这个阶段中,需求工程师会对需求进行分类、排序和整理,以便更好地理解和表达需求。
同时,需求工程师还需要识别需求之间的相互关联和依赖,并找出潜在的冲突和问题。
3. 需求定义阶段需求定义阶段是将需求转化为可执行的设计和规划的过程。
在这个阶段中,需求工程师需要将需求进行详细描述,并明确需求的优先级和可实现性。
同时,还需要与开发团队共同讨论和协商,确立一个合理的开发计划和时间表。
4. 需求验证阶段需求验证阶段是对需求的正确性和完整性进行验证的过程。
在这个阶段中,需求工程师会与用户进行沟通和协商,共同确认和验证需求的准确性和可行性。
第二章:软件过程目标:软件工程和软件过程模型的概念;了解3个一般的软件过程模型及何时使用它们;了解软件需求工程,软件开发,测试和进化中所涉及的基本过程活动;理解为什么软件过程要有效地组织以应对软件需求和设计上的变更;了解Rational统一过程是如何集成好的软件过程实践来产生一个可适应的软件过程。
所有的软件过程都必须具有4种对软件工程来说是基本的活动。
它们是:1.软件描述:必须定义软件的功能以及软件操作上的约束。
2.软件设计和实现:必须生产符合描述的软件。
3.软件有效性验证:软件必须得到有效性验证,即确保软件是客户所想要的。
4.软件进化:软件必须进化以满足不断变化的客户需要。
2.1软件过程模型一软件过程模型一般有1.瀑布模型:该模型将基本的过程活动,描述,开发,有效性验证和进化,看成是一些界限分明的独立的过程阶段,例如,需求描述阶段,软件设计阶段,实现阶段,测试阶段,等等。
2.增量式开发:该方法使得描述活动,开发活动和有效性验证活动交织在一起。
系统的开发是建立一系列的版本(增量),每个版本添加部分功能到先前的版本中。
3.面向复用的软件工程:该方法使得描述活动,开发活动和有效性验证活动交织在一起。
系统开发过程着重于集成这些组件到新系统中,而非从头开发。
2.1.1瀑布模型一瀑布模型中的主要阶段直接映射基本的开发活动:1.需求分析和定义2.系统和软件设计3.实现和单元测试4.集成和系统测试5.运行和维护二适合采用瀑布模型的时候瀑布模型是与其他工程过程模型相一致的,在它的每个阶段都要生成文档。
这使得过程是可见的,项目经理能够根据项目计划监控项目的过程。
它的主要问题在于它将项目生硬地分解成这些清晰的阶段。
关于需求的责任和义务一定要在过程的早期阶段清晰界定,而这又意味它对用户需求变更的响应较困难。
所以只有在对需求了解的好,而且在系统开发过程中不太可能发生重大改变的时候,适合采用瀑布模型。
瀑布模型的一个重要变形是形式化系统开发。
软件工程第2章-系统工程软件工程第2章-系统工程2.1 系统工程概述系统工程是一种系统性和综合性的工程方法,旨在设计、开发和维护复杂的软件系统。
系统工程的主要目标是满足用户需求,并确保系统的有效性、可靠性和可维护性。
2.1.1 系统工程定义系统工程是一个跨学科的领域,涉及到多个专业领域的知识和技术。
它集成了工程学、计算机科学、信息技术等多个学科的理论与实践,以解决大规模软件系统开发和维护过程中的各种问题。
2.1.2 系统工程过程系统工程的过程涵盖了软件系统的整个生命周期,包括需求分析、设计、开发、测试、部署和维护等阶段。
每个阶段都有特定的任务和活动,并且需要进行严格的管理和控制。
2.1.2.1 需求分析阶段需求分析阶段是系统工程的起点,通过与用户沟通和交流,收集和整理用户需求,并将其转化为系统的功能和性能要求。
2.1.2.2 设计阶段在设计阶段,系统工程师会根据需求分析阶段的成果,设计整个系统的结构和组件之间的关系。
这包括系统架构设计、模块设计和接口设计等。
2.1.2.3 开发阶段开发阶段是系统工程中最为关键的阶段,主要是根据设计阶段的成果,进行软件编码、集成和测试。
开发人员需要按照设计规范和编码标准进行开发工作,并保证代码的质量和可维护性。
2.1.2.4 测试阶段测试阶段是为了验证系统是否满足用户需求,并发现和修复潜在的缺陷和问题。
测试人员会执行各种测试活动,包括单元测试、集成测试和系统测试等。
2.1.2.5 部署阶段在部署阶段,系统工程师会将已经通过测试的系统部署到目标环境中,并进行安装、配置和调优等工作,确保系统能够正常运行。
2.1.2.6 维护阶段维护阶段是系统工程的最后一个阶段,主要是为了确保系统能够持续地运行和满足用户的需求。
维护人员会定期检查系统的性能和可靠性,并进行必要的修复和优化等工作。
2.2 系统工程的关键技术2.2.1 需求工程需求工程是系统工程中非常重要的一环,它主要涉及到需求获取、需求分析、需求验证和需求管理等方面的内容。
现代软件工程第二章软件需求分析在现代软件工程中,软件需求分析是软件开发过程中至关重要的一环。
它就像是建筑工程中的蓝图设计,为后续的软件开发工作指明了方向和目标。
如果在需求分析阶段出现偏差或错误,就可能导致整个软件开发项目的失败,浪费大量的时间、人力和资源。
那么,什么是软件需求分析呢?简单来说,软件需求分析就是要弄清楚用户到底需要一个什么样的软件,这个软件要具备哪些功能,能够解决哪些问题,以及用户在使用过程中会有哪些期望和要求。
在进行软件需求分析时,首先要与用户进行充分的沟通和交流。
用户可能是各种各样的人群,他们对于软件的需求和期望也各不相同。
有些用户可能对技术比较了解,能够清晰地表达自己的需求;而有些用户可能对技术一无所知,只能用一些比较模糊的语言来描述自己想要的东西。
这就需要需求分析人员具备良好的沟通技巧和理解能力,能够从用户的只言片语中捕捉到关键信息,并通过进一步的询问和引导,帮助用户明确自己的需求。
与用户沟通的方式也是多种多样的。
可以通过面对面的访谈、电话交流、问卷调查、邮件往来等方式获取用户的需求。
在沟通的过程中,要注意倾听用户的意见和想法,不要急于表达自己的观点和看法,以免影响用户的思路。
同时,要做好记录,将用户的需求和意见详细地记录下来,以便后续进行整理和分析。
获取到用户的需求之后,接下来就要对这些需求进行整理和分析。
这是一个非常复杂和繁琐的过程,需要需求分析人员具备较强的逻辑思维能力和分析能力。
要对用户的需求进行分类、归纳和总结,找出其中的共性和个性,明确哪些需求是核心需求,哪些需求是次要需求,哪些需求是可以暂时忽略的。
同时,还要对用户的需求进行可行性分析,判断这些需求是否能够在技术上实现,是否符合项目的预算和时间要求。
在整理和分析需求的过程中,可能会发现用户的需求存在一些矛盾和冲突的地方。
这就需要需求分析人员与用户进行进一步的沟通和协商,解决这些矛盾和冲突,达成一致的意见。
同时,还要对需求进行优先级排序,确定哪些需求需要优先实现,哪些需求可以放在后续的版本中进行开发。
第一章课后参考答案1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机?“软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。
这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。
“软件危机”包含两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求;(2)如何维护数量不断膨胀的已有软件。
它们有以下表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。
出现软件危机的原因(1)开发人员与客户认识之间的矛盾(2)开发人员能力与开发目标之间的矛盾(3)预估与实际工作量之间的矛盾(4)客户认识的提高与软件维护之间的矛盾(5)遗产系统与实施软件之间的矛盾2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。
一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。
3.什么是软件工程?它有哪些本质特征?怎么用软件工程消除软件危机?软件工程是知道计算机软件开发和维护的一门工程学科。
第二章软件工程复习题1.可行性研究的目的不是去开发一个软件项目,而是研究这个软件项目是否_____,____。
2.成本—效益分析首先是估算将要开发的系统的______,然后与可能的效益进行_____。
3.软件工程有两种效益,它们是______和_______。
4.成本-效益分析的目的是从______评价开发一个新的软件项目是否可行。
5._______就是使累计的经济效益等于最初的投资费用所需的时间。
项目的______是指在整个生存周期之内的累计经济效益(折合成现在值)与投资之差。
6.可行性研究的第一个具体步骤是_______。
7.可行性研究实质上进行一次简化、压缩了的_______。
8.研究开发资源的有效性是进行( )可行性研究的一方面。
A.技术B.经济C.社会D.操作9.在软件的可行性研究中,可以从不同的角度对软件进行研究,其中是从软件的功能可行性角度考虑的是( )。
A.经济可行性B.技术可行性C.操作可行性D.法律可行性10.技术可行性要解决( )。
A.存在侵权否B.成本—效益问题C.运行方式可行D.技术风险分析11.研究软硬件资源的有效性是进行( )研究的一方面。
A.技术可行性B.经济可行性C.社会可行性D.操作可行性12.在软件工程项目中,不随参与人数的增加而使软件的生产率增加的主要问题是( )。
A.工作阶段间的等待时间B.生产原型的复杂性C.参与人员所需的工作站数D.参与人员之间的通信困难。
13.制定软件计划的目的在于尽早对欲开发的软件进行合理估价,软件计划的任务是( )。
A. 组织与管理B.分析与估算C.设计与测试D.规划与调度14.对每个合理的方案分析员都应该准备( )资料。
A.系统流程B.组成系统的物理元素清单,成本-效益分析C.实现这个系统的进度计划D.以上全部正确15.原型化方法是一类动态定义需求的方法,下列叙述中,( )不具有原型化方法的特征。
A.提供严格定义的文档B.加强用户参与和决策C.简化项目管理D.加快需求的确定。
第1章概述(习题与参考答案)[判定题]1. 由于今天个人运算机不断进展壮大,人们再也不采纳软件团队的开发方式。
(×)2. 由于软件是产品,因此能够应用其他工程制品所用的技术进行生产。
(×)3. 购买大多数运算机系统所需的硬件比软件更昂贵。
(×)4. 大多数软件产品在其生命周期中不需要增强功能。
(×)5. 大多数软件系统是不容易转变的,除非它们在设计时考虑了转变。
(√)6. 一样来讲,软件只有在其行为与设计者的目标一致的情形下才能成功。
(×)[选择题]1. ()因素促使运算机系统愈来愈复杂。
(D)A. 运算机内存和存储容量上的庞大增加B. 外部输入/输出选项的加倍多样性C. 运算机体系结构方面的深刻转变D. 以上所有选项2. 下面的()再也不是现代软件工程师关注的问题。
(A)A. 什么缘故运算机硬件的本钱这么高?B. 什么缘故软件需要很长时刻才能完成?C. 什么缘故开发一个软件的本钱这么高?D. 什么缘故不能在产品发布前去除软件错误?3. 软件会慢慢退化而可不能磨损,其缘故在于()。
(C)A. 软件通常暴露在恶劣的环境下B. 软件错误通常发生在利用以后C. 不断的变更使组件接口之间引发错误D. 软件备件很难订购4. 大多数软件仍然是定制开发的,其缘故在于()。
(C)A. 软件组件重用是十分普遍的B. 可重用的组件太昂贵而无法利用C. 软件在不利用其他组件的情形下很容易构造出来D. 商业组件在很多应用领域中能够取得5. 下面的()说法是正确的。
(C)A. 软件危机在20世纪70年代末期全面暴发B. 当前先进的软件工程方式已经解决了软件危机的问题C. 软件危机是指在运算机软件的开发和保护进程中碰到的一系列严峻问题D. 软件危机是指在软件产品中存在一系列的质量问题6. 软件工程的大体目标是()。
(B)A. 排除软件固有的复杂性B. 开发高质量的软件C. 尽力发挥开发人员的制造性潜能D. 更好地保护正在利用的软件产品7. ()是将系统化的、标准的、可定量的方式应用于软件的开发、运行和保护的进程,它包括方式、工具和进程三个要素。