软件工程 重点归纳由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“软件工程重点总结”。
程序:能够完成预定功能、并满足性能要求的可执行的指令序列。
软件:计算机程序以及开发、使用和维护程序所需要的所有文档,是包括程序、数据及其相关文档的完整集合。
软件=知识+程序+文档+数据
1、程序设计时期(1946~1956)软件=程序
开发方式:个体
主要特征:计算机硬件=计算机
用途少,规模小;不作为商品;
开发者=使用者:自己开发,自己使用。
2、程序系统时期(1956~1968)软件=程序+说明
开发方式:作坊式
主要特征:程序规模增大,多人分工合作。
软件作为商品,即程序设计者≠使用者;
程序开发和使用的文档资料已不可缺少。
3、软件工程时期(1968~现在)软件=程序+数据+文档
开发方式:工程化
主要特征:按工程管理的方法管理整个软件开发过程。
软件生产的进度、数量、质量、成本与社会对软件的需求量和希望要求甚远,开发成本和进度难以控制,指令难以保证,与硬件发展形成强烈反差。这就是所谓的“软件危机”。--现实与希望形成的巨大落差 产生软件危机的原因 ●客观原因:
软件是手工劳动,是智力产品----生产率低。
软件是逻辑实体,出错容易,纠错困难。
软件的复杂性使得仅靠人的智力难以驾驭。●主观原因
开发方式:认为开发软件就是写程序。
组织方式:作坊式的生产方式;开发无计划、开发过程无规范、开发过程难控制。
用户方面:对软件需求描述不精确。
开发人员方面:对用户需求的理解与用户本来愿望有差异,相互之间的信息交流不及时、不准确、有误解。
成本、进度和质量
软件工程三要素:过程、方法和工具
软件生存周期包括三个时期:
软件定义
问题定义、可行性研究、需求分析
• 需求规格说明书 • 初步用户手册 • 软件初步测试计划
软件开发 概要设计、详细设计、编码及模块测试、综合测试
软件使用和维护 改正性维护、适应性维护、完善性维护、预防性维护
软件过程模型--瀑布模型
软件过程模型—螺旋模型
数据字典的内容:
数据流
数据元素
数据存储
处理
数据结构的定义:描述数据结构的组成(1)定义式
数据结构名=数据项1+数据项2+……+数据项n 数据定义使用的符号: = 定义为
+ 和:连接两个分量 [ ] 选择:表示从中选择一项。{ } 重复:表示由0个或多个组成。
m{ }n 重复:表示至少出现m次,至多出现n次。
()可选:表示其中的内容可出现,也可不出现。
IPO(Input/proce/output)图是输入/处理/输出的简称,是由IBM公司发展完善起来的一种图形工具,能方便地描绘输入数据、数据的处理和输出数据之间的关系。
ER模型包括“实体”、“联系”和“属性”三个基本部分。
实体:是客观世界中存在的且可以相互区分的 物。如:职工、教师、产品等 联系:客观世界中事物间的联系。往往表示实体间发生的某种行为。属性:是实体或联系具有的性质,通常一个实体由若干个性质来刻画。
通常用“范式”(Normal Formas)定义消除数据的冗余的程度。
总体设计过程
一、系统体系结构设计
二、软件结构设计
三、数据库设计
四、制定测试计划
五、书写文档
六、审核和复审
软件设计原理
抽象——抽出事物的本质特征而暂不考虑它们的细节。
抽象和求精是一对互补的概念。求精则是帮助设计者逐步揭示出低层细节。这两个概念都有助于帮助设计者在设计演化过程中构造出完整的设计模型。
模块化
信息隐蔽(和局部化)——信息隐蔽是模块设计的基本原则,局部化是实现信息
隐蔽的重要方法。 模块独立
模块的独立程度的度量标准——内聚:衡量一个模块内部各个元素彼此结合的紧密程度;耦合:衡量不同模块彼此间互相依赖(连接)的紧密程度。
层次图:描述软件的层次结构(H图)。
层次图中每个矩形框代表一个模块,矩形框之间的连线表示模块调用关系。
层次图适合用来描绘软件的层次结构。HIPO图:层次图+IPO图
对H图的每个方框,都有一张IPO图与之对应,来描述方框所代表的模块的处理过程。并且对每个IPO图都对应H图中方框相同的标记和编号,便于追踪。
面向数据流的设计方法
概念
变换流分析设计 事物流分析设计 混合流分析设计 设计优化
PAD是问题分析图(Problem Analysis Diagram)
变换流:
事务流:
概要设计小结
一、任务
1、系统体系结构设计:确定系统的总体物理实现方案。
2、软件结构设计:确定模块和模块间的动态调用管理。
3、数据结构设计(或数据库设计):确定系统中数据的总体结构。(数据库:逻辑设计、物理设计、安全性设计)。
4、接口设计:外部接口、人机界面设计
二、设计原理
1、模块独立性原理:信息隐蔽、耦合、内聚
2、思维工具:抽象
3:启发式规则:改进软件结构,提高系统质量
三、设计工具: HIPO图、结构图
四、面向数据流的设计方法----结构化设计方法
1、从分析型的数据流图向软件结构的转换
2、从事务型的数据流图向软件结构的转换
详细设计工具分为图形、表格和语言三类。主要工具有: ■程序流程图 ■盒图(N-S图)■PAD图 ■判定表 ■判定树
■过程设计语言(PDL)
McCabe方法根据程序控制流的复杂程度来定量度量程序的复杂程度,这样度量出的结果称为程序的环行复杂度。
用户界面设计原则
1、置用户于控制之下。用户界面能够对用户的操作做出恰当的反应,并帮助用户完成需要的工作。
2、减少用户的记忆负担。系统应该“记住”有关的信息,通过默认项、快捷方式或界面视觉减少用户的记忆负担。
3、保持界面的一致性。用户应该以一致的方式展示和获取信息。问题:
●系统响应时间 ●用户帮助设施 ●错误信息处理 ●命令交互
界面设计包括:
●界面对话设计
●数据输入界面设计
●数据输出设计(屏幕显示设计)。
常用的界面设计元素有:
●问题描述语言
●数据表格
●图形与图标
●菜单
●对话框
●窗口
G.J.Myers关于软件测试的观点:
1、测试是为了发现程序中的错误而执行程序的过程。
2、好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。
3、成功的测试是发现了迄今为止尚未发现的错误的测试。
E.D.Dijkstra:程序测试能证明程序中的错误,是为了证明程序有错,而不是证明程序无错。必须记住:测试无法说明错误不存在,它只能表示软件错误已经出现。
软件测试准则
1、以用户需求为基准
2、严格执行测试计划
3、测试中的群集现象
2-8原理:80%的错误可能集中在20%的模块中。
4、程序逻辑覆盖程度
5、第三方独立进行测试
6、合理的输入和不合理的输入
7、预期输出结果
步骤:
1、模块测试
2、子系统测试
3、系统测试
4、验收测试
5、平行运行
确认测试包括:
●软件有效性测试——运用黑盒测试方法,验证软件是否满足需求规格说明书列出的需求。
●软件配置复审——保证软件配置的所有成分都齐全,质量符合要求,文档与程序一致,具有完成软件维护所必须的细节,并且已经编排好分类的目录。、●α和β测试
●验收测试。
白盒测试:按照程序内部逻辑测试程序。检查程序中的每条通路是否都能按照预定要求正常工作。这种测试完全了解程序的结构和处理过程。因此,白盒测试又称为结构测试或逻辑驱动测试。黑盒测试主要是为了发现一下几类错误: ●是否有不正确或遗漏了的功能;
●界面错误:输入能否正确地接受?能否输出正确的结果? ●是否有数据结构或外部信息(如数据文件)访问错误; ●性能上是否能够满足要求; ●是否有初始化或终止性错误。
软件工程的主要目的就是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。
软件维护——软件投入运行后,解决发生的各种故障,增强其功能,使之适应新的环境的活动。
1、改正性维护
2、适应性维护
3、完善性维护
4、预防性维护
维护工作量: M=p+k*exp(c-d)
P:生产性工作量:分析、评价、设计、修改和编码。K:经验系数
C:程序复杂性系数:文档少都会引起复杂程度增加。D:维护人员对软件的熟悉程度
维护过程
维护组织
维护报告
维护的事件流
保存维护记录
评价维护活动
为了确定软件维护的有效程度,确定软件产品的质量,同时确定维护活动的开销,详细记录维护中进行的工作及工作量。主要内容包括(18项)
程序标识 源程序语句数
机器指令条数 使用的程序设计语言 程序安装的日期
安装以来运行的次数 安装以来的失效次数 程序变动的层次和标识 每个改动耗费的人时数 程序改动的日期 程序变动增加的源语句数 维护人员名字
程序变动而删除的源语句数 维护要求表的标识
软件配置管理(SCM)
维护类型 维护开始时间和完成时间 累计用于维护的人时数
与完成的维护相联系的纯效益
软件维护和软件配置管理之间的区别是:维护是一组软件工程活动,它们发生于软件已交付用户并已投入运行之后;软件配置管理是一组跟踪和控制活动,它们开始于软件开发项目开始之时,结束于软件被淘汰之时。
软件配置管理的主要目标是使变更更容易地被适应,并减少当变化必须发生时所需花费的工作量。
对维护活动进行度量。内容包括:
(1)每次程序运行平均失效次数(2)用于每一类维护活动的总人时数
(3)平均每个程序、每种语言、每种维护类型所作的程序变动次数(4)维护过程中增加或删除一个源语句平均花费的人时数。(5)维护每种语言花费的人时数(6)一张维护要求表的平均周转时间(7)不同维护类型所占的百分比