当前位置:文档之家› 软件工程基本概念

软件工程基本概念

第一章
1. “软件危机” 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。
2. 软件危机包含下述两方面的问题:
 (1)如何开发软件,以满足对软件日益增长的需求;
 (2)如何维护数量不断膨胀的已有软件。
3. “软件工程”的概念 在软件生产中采用工程化的方法,采用一系列科学的、现代化的方法技术来开发软件。这种工程化的思想贯穿到软件开发和维护的全过程。
4. 软件开发方法可分为两大类:
面向过程的开发方法 面向对象的开发方法
5. 结构化开发方法(传统软件工程方法)特点:快速,自然,方便。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。
6. 结构化开发方法的组成: 结构化程序设计方法 SP法
结构化设计方法 SD法 结构化分析方法 SA法
结构化分析(SA) 结构化设计(SD) 结构化程序设计(SP)
确定用户需求;获得需求规格说明书 需求说明转换为计算机中可实现的系统,完成系统的结构设计,包括数据结构和程序结构,最后得到软件设计说明书。 根据软件设计,选择程序设计语言,编码实现具有良好风格的软件系统。
?描述方法为DFD 图、数据词典及加工说明。 ?描述方式:模块图、流程图及PAD 图等。
7. 面向对象的开发方法以对象作为最基本的元素,是分析和解决问题的核心。
8. 面向对象方法的模型代表是喷泉模型
OOA面向对象的分析:强调的是对一个系统中的对象特征和行为的定义。建立系统的三类模型。 OOD面向对象的设计:与OOA密切配合顺序实现对现实世界的进一步建模 OOP面向对象的程序设计:是面向对象的技术中发展最快的,使用面向对象的程序设计语言,进行编码。
9.软件开发模型是描述软件开发过程中各种活动如何执行的模型。因此又称为软件过程模型。
10. 目前典型的软件开发模型有:
瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型、rational统一过程、敏捷过程与极限编程、微软过程等。
各模型的优缺点详见附录1,重点看瀑布模型。
第二章
1.可行性研究的目的:用最小的代价,在尽可能短的时间内确定问题是否能够解决。
可行性研究的实质:进行一次大大压缩简化了的系统分析和设计的过程。
2.可行性研究分为:技术可行性/经济可行性/操作可行性。
3. 从以下方面改进DFD图:
1、检查数据流的正确性
① 数据守恒
② 子图、父图的平衡
③ 文件使用是否合理。特别注意输

入/出文件的数
据流。
2、改进DFD图的易理解性
① 简化加工之间的联系(联系越少,独立性越强,
易理解性越好)。
② 改进分解的均匀性。
③ 适当命名(各成分名称无二义性,准确、具体)
第三章
1. 需求规格说明书的作用
项目开发合同/设计编程基础/系统测试指南/竣工验收依据
2.功能分解法存在的问题
1. 需要人工完成
2. 无法对描述的准确度进行验证。
3. 难以适应需求的变化。
3. SA方法的特点:由顶层向下逐层分解 图形方式描述
SA法的局限性:与数据库的衔接性差/人机交互方式不易表达/不适用于实时系统/书面模型(不能上机验证,不容易发现问题)
第五章
1.设计阶段主要任务是: 系统结构的设计/数据结构的设计/用户界面的设计/算法的设计
2. 总体设计的两个重要任务:划分出组成系统的物理元素;设计软件的结构,也就是确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系
3. 软件设计的目标 就是构造一个高内聚低耦合的软件模型。
4. 设计阶段的基本任务:决定软件系统的模块结构.
5. 模块化:就是将系统划分成若干模块,每个模块完成一个子功能,把这些模块集中起来组成一个整体,以满足所要求的整个系统的功能。
6. 采用模块化原理带来的好处:
? 模块化使软件结构清晰,易于设计,也易于阅读和理解;
? 模块化使软件容易测试和调试,有助于提高软件的可靠性;
? 模块化能够提高软件的可修改性;
? 模块化也有助于软件开发工程的组织管理。
7. 设计过程:由外向里
先确定模块的外部特征(概要设计)
再确定模块的内部特征(详细设计)
8.概念:
① 深度:表示软件结构中从顶层模块到最底层模块的层数;
② 宽度:表示控制的总分布;
③ 扇出数:指一个模块直接控制下属的模块个数;
④ 扇入数:指一个模块的直接上属模块个数。反映了模块的重用率.
9. 一个好的软件结构的形态准则是:顶部宽度小,中部宽度最大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较高的扇入数。
经验表明,一个设计得好的典型系统的平均扇出通常是3或4(扇出的上限通常是5~9)。
10.结构图中,直线反映模块间的调用关系。
11. 模块独立性准则:
模块独立性的含义是指开发具有功能专一,模块之间无过多相互作用的模块。又称为模块独立性准则。这种类型的模块可以并行开发,开发容易,能减少错误的影响,使模块容易组合、修改及测试。
12.尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。
高内聚、低耦合是我们进行

软件设计的一贯原则。
13.结构图描述了程序的模块结构,表示了一个系统的层次分解关系,反映了块间联系和块内联系等特征及控制信息的传递关系。
14. SD方法的设计步骤
? 1)从DFD图导出初始的模块结构图
? 2)按照SD方法的设计总则,改进模块结构图
15. SD方法设计软件系统的特点:
? 由问题的结构(数据流图)导出软件系统的模块结构图;
? 将系统先分解再组合,有效地控制系统复杂性;提出了软件系统质量评价标(块间联系和块内联系);
? 提出了一组设计技巧;图形描述直观明了;
SD方法设计软件系统的缺点:
? 对数据结构的设计未做考虑;
? 块间联系和块内联系无严格定义;
? 从需求阶段到设计阶段的图转换复杂
第六章
1. 详细设计的任务
确定每个模块所采用的算法;
确定每个模块所使用的数据结构;
确定每个模块的接口细节;
为每个模块设计出一组测试用例;
2. PDL的主要优点:
(1) 可以作为注释直接插在源程序中间。这样做能促使维护人员在修改程序代码的同时也相应地修改PDL注释,因此有助于保持文档和程序的一致性,提高了文档的质量。
(2) 可以使用普通的正文编辑程序或文字处理系统,很方便地完成PDL的书写和编辑工作。
(3) 已经有自动处理程序存在,而且可以自动由PDL生成程序代码。
? PDL的缺点:
不如图形工具形象直观,描述复杂的条件组合与动作间的对应关系时,不如判定表清晰简单。
3.狭义的结构设计,给出一个图形,判定是不是狭义的
4.绘制流图,从伪码导出,计算复杂度
第七章
1. (1) 测试是为了发现程序中的错误而执行程序的过程;
(2) 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;
(3) 成功的测试是发现了至今为止尚未发现的错误的测试。
2. 测试用例:由测试数据和预期结果构成的。
3.预测试:概要设计审查-详细设计审查-代码审查
测试:模块测试-整体测试-功能测试-系统测试-验收测试-安装测试
4. 逻辑覆盖,是以程序内在逻辑结构为基础的测试 ,是对一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试。
5. 根据覆盖目标的不同,逻辑覆盖又可分为:
语句覆盖/判定覆盖/条件覆盖/判定/条件覆盖/组合覆盖/路径覆盖
6.驱动模块更容易实现一些。
第八章
1. 软件维护通常包括4类活动:改正性维护、适应性维护、完善性维护、预防性维护。
2. 改正性维护:为了纠正在使用过程中暴露出来的程序错误而进行的维护活动。改正性维护的工作量大约占软件维护总工作量的17%-21%。
适应性维护:为了适应外部环境的变化而进行的维护活动。适应

性维护的工作量大约占软件维护总工作量的18%-25%。
完善性维护:为了根据用户需要改进原有软件而进行的维护活动。完善性维护的工作量大约占软件维护总工作量的50%-66%。比例最大。
预防性维护:为了改进软件将来的可维护性和可靠性而进行的维护活动。预防性维护的工作量大约占软件维护总工作量的4%。
第九-十二章
1. 面向对象的开发方法
核心:将面向对象思想应用于软件开发全过程,指导开发活动的系统方法.
最初,仅用面向对象的编程语言进行软件开发.
现在,面向对象的方法已经应用到了软件开发的各个环节.
分析->设计->编程->测试
附录1
1、瀑布模型的优点
可以强迫开发人员采用规范的方法;
严格规定了每个阶段必须提交的文档;
要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
2、瀑布模型的缺点
在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。
在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。
作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活性,对开发过程中很难发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护。
3、快速原型模型适用的场合
原型模型比瀑布模型更符合人们认识事物的过程和规律,是一种较实用的开发框架。
它适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。
4、增量模型的优点
能在较短时间内向用户提交可完成部分工作的产品。
逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
5、增量模型的缺点
在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计的便于按照这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,这就意味着需要更精心的设计。
6、螺旋模型的优点
对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标。
减少了过多测试或测试不足所带来的风险。
在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。
7、螺旋模型的缺点
使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高。
8、螺旋模型适用的场合
支持需求不明确、特别是大型软件系统的开发,并支持面向规格说

明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。


相关主题
文本预览
相关文档 最新文档