软件工程期末复习

1、1968年北大西洋公约组织的计算机科学家在西德召开国际会议,首次提出软件工程这个名词

2、软件危机的主要表现
(1)对软件开发成本和进度的估计常常很不准确
(2)用户对已完成的软件系统不满意的现象经常发生
(3)软件产品的质量往往靠不住
(4)软件常常是不可维护的
(5)软件通常没有适当的文档资料
(6)软件成本在计算机系统总成本中所占的比例逐年上升
(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势

3、软件工程的7条基本原理
(1)用分阶段的生命周期计划严格管理
(2)坚持进行阶段评审
(3)实行严格的产品控制
(4)采用现代程序设计技术
(5)结果应能清楚地审查
(6)开发小组的人员应该少而精
(7)承认不断改进软件工程实践的必要性

4、软件工程三要素:方法、工具、过程

5、软件生命周期由软件定义、软件开发、运行维护组成。
软件定义:问题定义、可行性研究、需求分析
软件开发:总体设计、详细设计、编码和单元测试、综合测试

6、RUP采用用例分析来捕获需求,并由它们驱动设计和实现

7、RUP的9个核心工作流
(1)业务建模:深入了解使用目标系统的机构及其商业运作,评估目标系统对使用它的机构的影响
(2)需求:捕获客户的需求,并且使开发人员和用户达成对需求描述的共识
(3)分析与设计:把需求分析的结果转化成分析模型与设计模型
(4)实现:把设计模型转换成实现结果
(5)测试:检查各个子系统的交互与集成,验证所有需求是否都被正确地实现了,识别、确认缺陷并确保在软件部署之前消除缺陷
(6)部署:成功地生成目标系统的可运行版本,并把软件移交给最终用户
(7)配置与变更管理:跟踪并维护在软件开发过程中产生的所有制品的完整性和一致性
(8)项目管理:提供项目管理框架,为软件开发项目制定计划、人员配备、执行和监控等方面的实用准则,并为风险管理提供框架
(9)环境:向软件开发机构提供软件开发环境,包括过程管理和工具支持

8、敏捷过程
(1)个体和交互胜过过程和工具
(2)可以工作的软件胜过面面俱到的文档
(3)客户合作胜过合同谈判
(4)响应变化胜过遵循计划

9、可行性研究的目的不是解决问题,而是确定问题是否值得去解决
包括(1)技术可行性
(2)经济可行性
(3)操作可行性
10、系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程

11、正方形表示数据的源点或终点
圆角矩形代表变换数据的处理
开口矩形代表数据存储
箭头表示数据流
12、确定对系统的综合要求
(1)功能要求
(2)性能需求
(3)可靠性和可用性需求
(4)出错处理需求
(5)接口需求
(6)约束
(7)逆向需求
(8)将来可能提出的要求

13、数据对象是对软件必须理解的符合信息的抽象

14、属性定义了数据对象的性质

15、客观世界中的事物彼此间往往是有联系的

16、状态图既可以表示系统循环运行过程,也可以表示系统单程生命期
状态图中只能有一个初态,而终态可以有0至多个

17、软件需求的正确性
(1)一致性
(2)完整性
(3)现实性
(4)有效性

18、环形复杂度=边的条数-结点数+2

19、测试步骤
(1)模块测试:在设计得好的软件系统中,每个模块完成一个清晰定义的子功能,而且这个子功能和同级其他模块的功能之间没有相互依赖关系
(2)子系统测试:子系统测试是把经过单元测试的模块放在一起形成一个子系统来测试。
(3)系统测试:把经过测试的子系统装配成一个完整的系统来测试
(4)验收测试:验收测试把软件系统作为单一的实体进行测试,测试内容与系统测试基本类似,但是它在用户积极参与下进行的,而且可能主要使用实际数据进行测试
(5)平行运行:关系重大的软件产品在验收之后往往不立即投入生产性运行,而是要再经过一段平行运行时间的考验

20、封装性的条件
(1)有一个清晰的边界
(2)有确定的接口
(3)受保护的内部实现
(4)有确定的协议

21、耦合
数据耦合:交换的信息仅仅是数据
控制耦合:传递的信息中有控制信息
特征耦合:把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素
公共环境耦合:当两个或多个模块通过一个公共数据环境相互作用时
内容耦合:①一个模块访问另一个模块的内部数据
②一个模块不通过正常入口而转到另一个模块的内部
③两个模块有一部分程序代码重叠
④一个模块有多个入口
交互耦合:对象之间的耦合通过消息连接来实现
继承耦合:与交互耦合相反,应该是提高继承耦合程度
22、内聚
偶然内聚:如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的
逻辑内聚:如果一个模块完成的任务在逻辑上属于相同或相似的一类
时间内聚:如果一个模块包含的任务必须在同一段时间内执行
过程内聚:如果一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚
通信内聚:如果一个模块中所有元素都使用同一个输入数据和产生同一个输出数据
顺序内聚:如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行
功能内聚:如果模块内所有处理元素属于一个整体,完成一个单一的功能。功能内聚是最高程度的内聚
服务内聚:一个服务应该完成一个且仅一个功能

23、软件可靠性的定义:软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率
24、软件可用性:是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率

25、面向对象建模得到的模型包含系统的三要素:静态结构(对象模型)、交互次序(动态模型)、数据变换(功能模型)

26、可重用软件成分
①项目计划
②成本估计
③体系结构
④需求模型和规格说明
⑤设计
⑥源代码
⑦用户文档和技术文档
⑧用户界面
⑨数据
⑩测试用例

27、分析并发性:通过面向对象分析建立起来的动态模型,是分析并发性的主要依据

28、L=(a+4m+b)/6 a为最小规模的平均值 m为最可能的规模的平均值 b为最大规模的平均值

29、COCOMO2分级因素:
①项目先例性
②开发灵活性
③风险排除度
④项目组凝聚力
⑤过程成熟度

30、软件质量因素的定义
① 正确性:系统 满足规格说明和用户目标的程度,即,在预定环境下能正确地完成预期功能的程度
②健壮性:在硬件发生故障、输入的数据无效或操作错误等意外环境下,系统能做出适当响应的程度
③效率:为了完成预定的功能,系统需要的计算资源的多少
④完整性:对未经授权的人使用软件或数据的企图,系统能够控制的程度
⑤可用性:系统在完成预定应该完成的功能时令人满意的程度
⑥风险:按预定的成本和进度把系统开发出来,并且为用户所满意的概率
⑦可理解性:理解和使用该系统的容易程度
⑧可维修性:诊断和改正在运行现场发现的错误所需要的工作量大小
⑨灵活性:修改或改进正在运行现场发现的错误所需要的工作量的大小
⑩可测试性:软件容易测试的程度
可移植性:把程序从一种硬件配置和软件系统环境转移到另一种配置和环境时,需要的工作量多少
可再用性:在其他应用中该程序可以被再次使用的程度
互运行性:把该系统和另一个系统结合起来需要的工作量的多少

31、软件配置管理过程
①标识软件配置中的对象
②版本控制
③变化控制
④配置审计 :正式的技术复审:关注被修改后的配置对象的技术正确性、软件配置审计:通过评估配置对象的那些通常不在复审过程中考虑的特征
⑤状态报告

32、最初,建立模型的目的是为大型软件的招投标活动提供一种全面而客观的评审依据,发展到后来,此模型又同时被应用于许多软件机构内部的过程改进活动中

33、能力成熟度模型
1、初始级:处于1级成熟度。软件工程的特征是无序的,有时甚至是混乱的。
2、可重复级:处于2级成熟度。软件机构建立了基本的项目管理过程,可跟踪成本、进度、功能和质量。
3、已定义级:处于3级成熟度。软件机构已经定义了完整地软件过程,软件过程已经文档化和标准化
4、已管理级:处于4级成熟度。软件机构对软件过程和软件产品都建立了定量的质量目标,所有项目的重要的过程活动都是可度量的。
5、优化级:处于5级成熟度。软件机构集中精力持续不断地改进软件过程

34、软件配置项:
(1) 计算机程序(源代码和可执行程序)
(2) 描述计算机程序的文档(供技术人员或用户使用)
(3) 数据(程序内包含的或在程序外的)

35、软件质量保证措施:
①、技术复审的必要性
②、走查:参与者驱动法、文档驱动法
③、审查:综述、准备、审查、返工、跟踪
④、程序正确性证明

36、数据字典的内容
①数据流
②数据流分量(数据元素)
③数据存储
④处理

37、最佳实践
(1)迭代式开发
(2)管理需求:RUP采用用例分析来捕获需求,并由它们驱动设计和实现
(3)使用基于构件的体系结构
(4)可视化建模
(5)验证软件质量
(6)控制软件变更

38、估计错误总数的方法
(1)植入错误法 N=n/ns*Ns (Ns为植入的错误数,ns为发现的植入的错误,n为原有的错误)
(2)分别测试法 B=B2/bc *B1 (B2为测试员乙发现的错误, bc为两个测试员发现的相同的错误数,B1为测试员甲发现的错误数)

39、改委托
软件工程期末复习_第1张图片

40、软件质量
(1)软件需求是度量软件质量的基础,与需求不一致就是质量不高
(2)指定的开发标准定义了一组指导软件开发的准则,如果没有遵守这些准则,肯定会导致软件质量不高
(3)通常,没有一组显示描述的隐含需求

41、在传统方法学中,数据字典与数据流图一起用来构成系统的逻辑模型

42、状态图既可以表示系统循环运行过程,也可以表示系统单程生命期

你可能感兴趣的:(笔记,软件工程)