软件工程前三章作业
第1章 绪论
1. 什么是软件危机?为什么会产生软件危机?
(1)软件危机是计算机软件开发和维护过程所遇到的一系列问题。表现为:
-
开发成本急剧上升。
-
质量很不可靠。
-
供不应求:软件开发率跟不上计算机应用迅速深入的趋势。
-
软件可维护性差——错误难以改正,新功能难以增加。
-
没有文档资料——给软件交流,系统的管理、维护造成困难。
(2)软件危机的原因:
-
软件维护费用急剧上升,直接威胁计算机应用的扩大。
修改程序困难,抽调大量人员,影响其他软件开发等。
越晚发现错误,改正的成本就越高(因此强调重视需求)。
-
软件生产技术进步缓慢,是加剧软件危机的重要原因。(软件开发理念和手段与客观实际存在的差异)
1)对软件本身的认识存在差异。
2)对软件 的服务对象认识不足。
3)对软件开发缺乏科学管理。
4)软件开发手段落后。
2. 何谓面向对象软件工程?简述它与传统软件工程的差别和联系。
(1)面向对象软件工程以面向对象程序设计为基础,其开发过程可包括以下阶段: OO分析与对象抽取→对象详细设计→面向对象的编码和测试
(2)它与传统软件工程的差别和联系。
-
传统软件工程方法适用于中小型软件产品开发;面向对象软件工程方法适用于大型软件产品开发。
-
传统方法中系统是过程的集合;面向对象方法中系统是交互对象的集合。
-
传统方法过程与数据实体交互;面向对象方法对象与人或其它对象交互。
-
传统方法中过程接受输入并产生输出;面向对象方法中对象发送与响应消息。
-
传统软件工程是以结构化程序设计为基础,而面向对象软件工程是以面向对象程序设计为基础。
-
与面向过程的软件工程的开发思想相比,面向对象开发方法不再是以功能划分为导向,而是以对象作为整个问题分析的中心,围绕对象展开系统的分析与设计工作。
-
传统软件工程开发过程包括需求分析、总体设计、详细设计、面向过程的编码和测试;面向对象软件工程开发过程包括需求分析与对象抽取、对象详细设计、面向对象的编码和测试。
第2章 软件生存周期与软件过程
1. 什么是软件生存周期?把生存周期划分为阶段的目的是什么?
(1)一个软件从开始立项起,到废弃不用止,统称为软件的生存周期。
(2)说法1:使得软件规模增长而大大增加的软件复杂性变得较易控制和管理。
说法2:
-
有利于软件工程开发工程的组织和管理;
-
降低了整个软件开发过程中的困难程度;
-
对每个阶段都可选用最优的管理方法——保证软件质量、提高生产效率。
6. 比较增量模型和螺旋模型的特点及异同。
(1)增量模型是瀑布模型的顺序特征与快速原型法的迭代特征相结合的产物。
(2)螺旋模型是一种迭代模型,每迭代一次,螺旋线就前进一周。
(3)增量模型每个增量都具有高内聚低耦合,高度的独立性。而螺旋模型它在结合瀑布模型与快速原型的基础上还增加了风险分析,在项目的所有阶段都考虑各类风险,从而能在风险变成问题之前降低它的风险。
10. 试比较RUP和XP的差异。
(1)RUP(Rational Unified Process),即统一过程,描述了软件开发中的各个环节应该做什么、怎么做、什么时候做以及为什么做,描述了一组以某种顺序完成的活动。
(2)RUP总结了6条最有效的软件开发经验,这些经验被称为“最佳实践”。分别为:迭代式开发,管理需求,使用基于构件的体系结构,可视化建模,验证软件质量,控制软件变更。
(3)RUP将软件开发分为四个阶段:初始、细化、构建、提交。
(4)极限编程(extreme programming,XP)是一种轻量级的、敏捷的软件开发方法。具有4个价值观、4个方面改善、12个核心实践。
-
4个价值观:交流、简单、反馈、勇气。
-
4个方面改善:加强交流、从简单做起、寻求反馈、勇于实事求是。
-
12个核心实践:完整团队、计划对策、测试、简单设计、结对编程、小软件版本、设计改进、持续集成、代码共有、编码标准、系统比喻和可持续性的速度。
11. 可行性分析下包含哪些内容?
经济可行性、技术可行性、操作可行性、法律可行性。
第3章 结构化分析和设计
12. 某事务系统具有下列功能:
(1)读入用户命令,并检查其有效性;
(2)按照命令的编号(1~4号)进行分类处理;
(3)1号命令计算产品工时,能根据用户给出的各种产品数量,计算出各工种的需要工时和缺额工时;
(4)2号命令计算材料消耗,根据产品的材料定额和用户给出的生产数量,计算各种教材的需求量;
(5)3号命令编制材料定货计划;
(6)4号命令计算产品成本。
试用结构化分析和设计方法画出该系统的数据流(DFD)图并据此导出系统的模块结构(SC)图。
DFD图

SC图

15. 选一种排序算法从小到大,分别用流程图、N-S图和PDL语言描述。



