重点软件工程课件下半年 上传版本有习题有答案.docx
- 文档编号:2891647
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:43
- 大小:567.83KB
重点软件工程课件下半年 上传版本有习题有答案.docx
《重点软件工程课件下半年 上传版本有习题有答案.docx》由会员分享,可在线阅读,更多相关《重点软件工程课件下半年 上传版本有习题有答案.docx(43页珍藏版)》请在冰豆网上搜索。
重点软件工程课件下半年上传版本有习题有答案
一.什么是软件?
1.满足用户功能需求和性能的指令或计算机程序集合;
2.处理信息的数据结构;
3.描述程序功能以及程序如何操作和使用所要求的文档;
以上三部分的组合构成了软件
二.软件危机及软件工程?
软件危机是指在计算机软件的开发和维护过程中所遇到的一序列严重问题,在20世纪60年代末全面爆发,1968年,北大西洋公约组织提出使用工程的概念、原理、技术和方法来开发与维护软件,即以工程化的方式组织软件的开发。
产生软件危机的原因可归结为两个重要的方面:
软件生产本身存在的复杂性;软件开发所使用的方法和技术。
注意:
我们只能尽力减少软件危机的危害,不可能彻底消除软件危机,犹如人类的感冒,永远不可能彻底消除!
三.有哪些流行的软件工程方法学及其要素?
1.使用最广泛的软件工程方法学是面向结构化方法学和面向对象的方法学(上世纪70-90年代,流行面向结构化方法学,上世纪90年代到现在,流行面向对象方法学)。
2.要素:
方法、工具和过程。
四.什么是软件生存周期?
有哪些活动?
4.1软件生存周期
一个软件从提出开发要求开始到软件废弃不用的整个过程。
4.2开发活动
问题定义、可行性分析和项目开发计划、需求分析和定义、软件设计(先后细分为:
概要设计和详细设计)、编码、测试和运行维护
4.2.1问题定义—--“要解决的问题是什么?
”
通过对客户的访问调查,系统分析员扼要地写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。
参与人:
用户、系统分析员、项目负责人
4.2.2可行性分析和项目开发计划—--“有行得通的解决方案吗?
”
用户、项目负责人和系统分析师搞清楚系统要解决的问题是什么?
以及从技术、经济、时间等方面论证项目开发可行性。
4.2.3需求分析和定义—--“系统必须做什么?
”
用户、项目负责人和系统分析师确定系统必须做什么?
但不关心具体怎么做?
要确定系统的功能、性能、数据、界面等要求,从而确定系统的逻辑模型,同时制定后期测试计划。
1.需求分析的任务
(1)确定软件系统的综合要求
●界面要求
●功能要求
●性能要求
●安全性、保密性、可靠性要求
●系统运行要求
●异常处理要求
●将来可能提出的要求
(2)分析系统的数据要求:
数据元素、数据元素之间的逻辑关系、数据量和峰值等。
常用的数据描述手段是实体-关系模型。
(3)导出系统的逻辑模型:
结构化分析方法中使用数据流图;面向对象分析方法中使用类模型(类图)
(4)修正项目开发计划:
在明确了用户的真正需求后,可以更准确地估算软件的成本和进度,从而修正项目开发计划
(5)如果必要,可开发一个原型系统来获取用户真正的需求。
2.需求的分类
(1)功能需求:
所开发的软件必须具备什么样的功能。
(2)非功能需求:
指产品必须具备的属性或品质,如可靠性、性能、相应时间、容错性和扩展性等。
(3)设计约束:
也称为限制条件、补充规约,这通常是对解决方案的一些约束说明。
3.需求分析方法
需求分析方法由对软件的数据域和功能域的系统分析过程及其表示方法组成,定义了表示系统逻辑视图和物理视图的方式。
很多需求分析方法都是数据驱动的,即这些方法提供了一种表示数据域的机制,开发人员根据这种表示,确定软件功能及其他特性,最终建立一个待开发软件系统的抽象模型,即目标系统的逻辑模型。
数据域具有三种属性:
数据流、数据内容和数据结构。
目前所有的需求分析方法都具有如下共性:
(1)支持数据域分析的机制
(2)功能表示的方法
(3)接口的定义
(4)问题分解的机制以及对抽象的支持
(5)逻辑视图和物理视图
(6)系统抽象模型
4.需求工程
(1)需求开发:
包括需求捕获、需求分析、编写规格说明书和需求验证四个阶段。
(2)需求管理:
包括定义需求基线、处理需求变更和需求跟踪等方面的工作。
4.2.4概要设计—---“概括地说,应该怎样做?
”
系统分析师和软件设计师在需求定义的基础上,把各功能需求转换成需要的体系结构,即划分模块、模块的层次、模块之间的调用关系以及各模块的功能,同时设计应用系统的总体数据结构和数据库结构。
特例:
进销存管理系统可分为进、销、存三个模块。
4.2.5详细设计—---“具体怎么样做?
”(算法设计)
软件设计师和程序员对概要设计阶段得出的各功能模块进行详细描述成精确的、结构化的过程描述,即各个功能模块具体怎么实现,用相应的工具把模块的控制结构表示出来,但还未进行编码。
4.2.6编码—--代码实现
由程序员把详细设计阶段得出的各模块控制结构(图形)转变成计算机能识别的指令代码。
4.2.7测试
由另一部门(单位)的软件设计师或系统分析师花费最少的人力物力找出程序最多、最大的错误(bug)--“高产测试”,再高产的测试工作也只能发现大约80%的软件问题,不可能100%的发现。
4.2.8运行维护
由用户和维护人员进行的软件生存周期中时间最长的阶段。
4.3各活动阶段主要文档
4.3.1可行性分析和项目开发计划
●可性行研究报告
●项目开发计划
4.3.2需求分析中的文档
●需求规格说明书
●初步用户使用手册
●确认测试的测试计划
●修改完善的软件开发计划
●系统测试计划文档
4.3.3概要设计阶段文档
●概要设计说明书
●数据库说明书
●用户手册
●修订的测试计划(测试的策略、方法、步骤)
4.4.4详细设计阶段
●详细设计说明书
4.4.5编码
●程序清单
4.4.5测试
●完善的测试计划书
●软件测试报告
4.4.6系统测试阶段
●系统测试报告
2005年下半年
●应该在 (7)阶段制定系统测试计划。
(7)A.需求分析B.概要设计C.详细设计D.系统测试
●(29)详细描述软件的功能、性能和用户界面,以使用户了解如何使用软件。
(29)A.概要设计说明书B.详细设计说明书C.用户手册D.用户需求说明书
五.有哪些主要生存期模型?
瀑布模型、原型开发模型(快速原型模型、演化模型、增量模型)、螺旋模型、喷泉模型、基于知识的模型和变化模型。
5.1瀑布模型(传统的软件周期模型)
瀑布模型严格遵循软件生命周期各阶段的固定顺序:
计划、分析、设计、编程、测试和维护,上一阶段完成后才能进入到下一阶段,整个模型就像一个飞流直下的瀑布,如下图所示。
图5.1瀑布模型
优点:
以文档作为驱动,强迫开发人员采用规范的方法,严格规定了各阶段必须提交的文档;要求每一阶段结束后,都要进行严格的评审。
与它最相适应的开发方法是结构化方法。
(需求明确)
缺点:
不适应用户需求的改动。
2004年下半年:
●软件开发中的瀑布模型典型的刻画了软件生存周期的阶段划分,与其最相适应的软件开发方法是(9)。
(9)A.构件化方法 B.结构化方法 C.面向对象方法 D.快速原型法
5.2原型模型
5.2.1快速原型模型
快速原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。
主要用于需求分析阶段。
不追求也不可能要求对需求的严格定义,而是采用了动态定义需求的方法,所以不能定义完善的文档。
特征:
简化项目管理、尽快建立初步需求、加强用户参与和决策。
具有广泛技能水平的原型化人员是原型实施的重要保证。
原型化人员应该是具有经验与才干、训练有素的专业人员。
衡量原型化人员能力的重要标准是他是否能够从用户的模糊描述中快速获取需求。
5.2.2演化模型
在快速原型模型中,原型的用途是获知用户的真正需求,一旦需求确定了,原型即被抛弃。
而演化模型应用于整个软件开发过程,是从初始模型逐步演化为最终软件产品的渐进过程。
也就是说,快速原型模型是一种“抛弃式”的原型化方法,而演化模型则是一种“渐进式”的原型化方法。
5.2.3增量模型(渐增式)
增量模型主要用于设计阶段,把软件产品划分为一系列的增量构件,分别进行设计、编程、集成和测试。
新的增量构件不得破坏已经开发出来的产品。
其示意图如图4-2所示。
图5.2增量模型
5.2.4原型模型小结
从下面的有关原型化方法的叙述中,选择出正确的叙述:
(1)快速原型方法是一种企图克服传统软件周期模型缺点的开发方法。
(2)在用户的数据资源没有得到很好地组织和管理的时候,应该使用原型化方法。
(3)在用户没有明确地肯定其需求的时候,应该使用原型化方法。
(4)在用户不希望把自己的时间花在软件开发过程中的时候,应该使用原型化方法。
(5)使用原型化方法时应该使用第三代编程语言。
(6)原型化加强了开发过程中用户的参与和决策。
(7)原型化方法大致可分为三类:
抛弃式、演化式和递增式。
(8)原型化方法大致可分为演化式和递增式。
(9)采用原型化方法时,软件的开发成本较高。
(10)采用原型化方法时,关键的因素是建立原形的速度,而不是原形运行的效率。
5.3螺旋模型
螺旋模型综合了瀑布模型和原型模型中的演化模型的优点,还增加了风险分析。
螺旋线第一圈的开始点可能是一个概念项目。
从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直转到软件生命期结束。
图5.3螺旋模型
5.4喷泉模型
喷泉模型主要用于描述面向对象的开发过程。
喷泉一词体现了面向对象开发过程的迭代和无间隙特征。
迭代指的是开发活动常常需要重复多次,在不断的迭代中逐渐完善软件系统,无间歇性指在开发活动之间不存在明显的边界,允许各开发活动交叉、迭代地进行。
图5.4喷泉模型
5.5迭代软件开发技术
Rational统一开发流程RUP(RationalUnifiedProcess)是一个通用的软件流程框架,它是一个以架构为中心、用例驱动的迭代化软件开发流程。
RUP是从几千个软件项目的实践经验中总结出来的,对于实际的项目具有很强的指导意义,是软件开发行业事实上的行业标准。
在RUP中,我们把软件开发生命周期划分为四个阶段,每个阶段的结束标志就是一个主要的里程碑(如下图所示)。
图5.5RUP
这四个阶段主要是为了达到以下阶段性的目标里程碑:
先启(Inception):
确定项目开发的目标和范围
精化(Elaboration):
确定系统架构和明确需求
构建(Construction):
实现剩余的系统功能(产品集成)
产品化(Transition):
完成软件的产品化工作,将系统移交给客户
2005年下半年:
●在开发一个系统时,如果用户对系统的目标是不很清楚,难以定义需求,这时最好使用 (6) 。
(6)A.原型法B.瀑布模型C.V-模型D.螺旋模型
V模型只是将瀑布模型中的测试部分做了细化,其最大特点(可能也是最大的缺点)就是“线性执行
2006年上半年:
●渐增式开发方法有利于(4)。
●软件工程模型建议用一定的流程将各个环节连接起来,并可用规范的方式操作全过程,如同工厂的生产线。
常见的软件工程模型有:
渐增式模型
(4)A.获取软件需求 B.快速开发软件 C.大型团队开发 D.商业软件开发
2006年下半年:
●常见的软件开发模型有瀑布模型、演化模型、螺旋模型、喷泉模型等。
其中(5)模型适用于需求明确或很少变更的项目,(6)主要用来描述面向对象的软件开发过程。
(5)A.瀑布模型B.演化模型C.螺旋模型D.喷泉模型
(6)A.瀑布模型B.演化模型C.螺旋模型D.喷泉模型
●统一过程(UP)的基本特征是“用例驱动,以架构为中心的和受控的迭代式增量开发”。
UP将一个周期的开发
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 重点软件工程课件下半年 上传版本有习题有答案 重点 软件工程 课件 下半年 上传 版本 习题 答案