软件工程基础知识
耦合类型:
(1) 内容耦合:如果发生下列情形,两个模块之间就发生了内容耦合
1. 一个模块直接访问另一个模块的内部数据;
2. 一个模块不通过正常入口转到另一模块内部;
3.两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
4.一个模块有多个入口。
(2) 公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
(3) 外部耦合: 一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
(4) 控制耦合:如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
(5) 标记耦合:一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。
(6) 数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变量) 来交换输入、输出信息的。
(7) 非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。
内聚类型
内聚模式
概念:
偶然内聚 各个元素关系比较松散
逻辑内聚 各个元素逻辑上是有关系的,但实际功能来看是没有关系的
时间内聚 各个元素必须再同一时间内执行(比如系统初始化)
过程内聚 元素之间有顺序关系,调用前面元素之后,紧接着调用后面的
通信内聚 所有元素都操作统一数据集,或生成统一数据集
顺序内聚 元素都相关同一功能,前一元素的输出就是下一元素的输入。
功能内聚 所有元素共同完成一个功能
偶然内聚是由于内容都是不相关的,所以必然导致它与外界多个模块有关联,这也使得模块间的耦合度增加
软件维护
维护的分类
(1)改正性维护:
在软件交付使用后,因开发时测试的不彻底、不完全,必然会有部分隐藏的错误遗留到运行阶段。这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就叫做改正性维护 。
(2)适应性维护:
在使用过程中,外部环境(新的硬、软件配置)数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化 。
(3)完善性维护:
在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为满求了足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。
(4)预防性维护:
采用先进的软件采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试。
各类维护活动的根本目的是: 延长软件生存期
管道过滤器体系结构特点:
软件构建具有高内聚低耦合的特点
支持重用
提高性能
不支持批处理和并发操作
软件开发方法
敏捷方法
主要有极限编程,水晶法,并列争球法,自适应软件开发
极限编程:
12个最佳实践:计划游戏,小型发布,隐喻,简单设计,测试先行,重构,结队编程,集体代码所有制,持续集成,每周工作40个小时,现场客户,编码标准
软件配置管理
软件配置管理:
其目标是表示变更,控制变更,确保变更,确保变更正确的实现,报告有关变更
1)基线
基线是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分
更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果。 因此基线是一个检查点,在开发过程中,当采用的基线发生错误时,可以知道所处的位置,返回到最近和最恰当的基线上。
2)软件配置项
软件配置项(SCI)是软件工程中产生的信息项,它是配置管理的基本单位
3)版本控制
McCabe度量法
McCabe度量法是一种基于程序控制流的复杂性度量方法。
McCabe复杂性度量又称环路度量,其计算公式为:
V(g)=m-n+2
其中m和n分别代表图中的 边数 和 顶点数
6个用例,环路复杂度为4。
当模块的环路复杂度超过10时,要充分测试这个模块将会变得特别困难
软件活动图分析
1.求出到达各个状态的最早时间(按最大计):
这个过程是要从源点开始向汇点顺推
2.求出到达各个状态的最晚时间(按最小计):
这个过程是要从汇点开始向源点逆推
3.求出关键路径:
求出关键活动,则关键活动所在路径即为关键路径
做题技巧:找出日期最长的即为关键路径(因为最长的周期决定了工程周期)