软件工程题型:单选(5分)判断(5分)简答题(12分)建模题(8分)
复习整理参考资料:《软件工程》王立福版本以及老师上课时候的PPT
适用范围:选择题/判断题/问答题
最后一道大题:参见《软件工程|一文复习完必考作图题》
其余部分就靠平时的掌握了,我把我复习到的重点整理下来,大家加油!
1、软件生命周期模型
软件生存周期:包括软件开发、运行和维护中有关的过程、活动和任务的框架,覆盖了从该系统的需求定义到系统的使用终止;
逐渐是瀑布模型,增量模型,演化模型,螺旋模型和
(每后一个模型都是在前一个模型的基础上精化得到的,解决前一个模型的缺陷问题)
(1)瀑布模型
将软件生存周期的各项活动规定为依固定顺序而连接的若干阶段工作,形如瀑布流水最终得到软件产品;
特点:完整清晰的需求,开发人员一开始就要理解这一应用;因此需求的不稳定将导致设计、编码、测试阶段都可能发生延期;很难真正的评估项目的状态,直到结束之前也不能完整的演示系统;
(2)增量模型
该模型指需求可以分组,形成一个一个的增量,并可形成一个结构,在此条件下对每一增量实施瀑布式开发;
特点:第一个可交付的版本的事件和成本较少,从而可以减少开发由增量表示的小系统所承担的风险,减少用户需求的变更;如果没有对用户的变更需求进行规划,那么产生的 初始增量可能会造成后来增量的不稳定;如果需求不像早起思考的稳定和完善,一些增量可能会重新开发重新发布;由于进度和配置的复杂性,可能会增大管理成本,超出组织的能力。
(3)演化模型
针对事先不完整定义的需求进行的开发:在用户提出待开发系统的核心需求的基础上,软件开发人员按照这一需求首先开发一个核心系统,并投入运行,以便用户能够有效地提出反馈,提出精化系统、增强系统能力的需求;
特点:弹性的过程模式,由一些小的开发步组成,每一步经历需求设计、分析、实现和验证,产生软件产品的一个增量,通过这些迭代最终完成软件产品的开发。
某些程度上减少开发的盲目性
仍然可以使用瀑布模型来管理每一演化的增量
不足在于,容易弱化需求分析阶段的工作
(4)螺旋模型
在瀑布模型和演化模型的基础上,加入两者忽略的风险分析所建立的一种软件开发模型。
特点:解决问题的基本步骤,标识问题:标识一些可选方案,选择一个最佳方案,遵循动作步骤,并实施后续工作;与演化模型和增量模型一样使用了瀑布模型作为一个嵌入的过程——即分析、设计、编码、实现和维护的过程,并且在框架和全局体系结构方面是等同的。
(5)喷泉模型
体现了软件创建所固有的迭代和无间隙的特征
表明软件活动需要多次重复,主要用于面向对象技术的软件开发。
2、模块内聚和耦合(考到过很多次)
@模块的独立性:每个模块完成一个相对独立的特定字功能
@模块设计的原则:高内聚低耦合
耦合:模块之间的相对独立性(即相互连接的紧密程度。)取决于各个模块之间接口的复杂程度、调用模块方程式以及哪些信息通过接口;
内聚:模块功能强度(即一个模块内部各个元素彼此结合的特定字功能
(图片来自CSDN)
比较容易混淆的——标记耦合和数据耦合
例题:如果一个模块调用下层模块时传递一个数据结构,则这种耦合属于( )。
A 简单耦合 B直接耦合
C 标记耦合 D控制耦合
答案【C】
3、类之间的关系结构:泛化、实现、关联(聚合、组合、依赖)(通常考定义,加举例子说明)
(1)泛化:一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
例如:老虎是动物的一种,即有老虎的特性也有动物的共性。比如:交通工具和火车;动物和牛的关系~~
(2)实现:一种类与接口的关系,表示类是接口所有特征和行为的实现.
(3)关联:一种拥有的关系,它使一个类知道另一个类的属性和方法;还分为聚合、组合、依赖的关系;
如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
(3.1)聚合:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
(3.2)组合:是整体与部分的关系,但部分不能离开整体而单独存在。
如公司和部门是整体和部分的关系,没有公司就不存在部门。
组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
(3.3)依赖:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.
各种关系的强弱顺序:
泛化=实现>组合>聚合>关联>依赖
(图片来自CSDN)
延伸——高内聚低耦合
高内聚,指的是一个方法的改变或者添加,影响的类实例越少越好。
低耦合, 指的是一个类的变化,影响其他模块越少越好。
4、软件测试
测试主要去看另外篇总结——《软件测试 主要考点》
白盒测试(结构测试)——路径测试技术
(1)路径覆盖(PX):执行所有可能穿过程序控制流程的路径。
(2)语句覆盖(PI):至少执行程序中所有语句一次,则达到100%语句覆盖率。
(3)分支覆盖(P2):至少执行程序中每一分支一次。
(4)条件覆盖和条件组合覆盖:每个判定中的所有可能的条件取值至少执行一次。
语句覆盖《分支覆盖《条件组合覆盖《......《路径覆盖
5、RUP统一软件开发过程
RUP(Rational Unified Process,统一软件开发过程,统一软件过程)是一个面向对象且基于网络的程序开发方法论。
6、能力成熟度模型CMM
再制造及传递某种合乎特定质量标准的产品时,必须配合适当的管理及技术作业程序,这些程序所组成的结构,称之为质量体系。
CMM的5级模型
(1)初始级:混乱随意,几乎没有定义软件过程,项目成功取决于个人的努力和智慧;
(2)可重复级:建立了基本项目管理过程,以实现对成本、进度和功能的跟踪;具有必要的过程素养,对类似的应用可重复以前项目成功的经验;
(3)已定义级:建立了管理活动和工程活动有关软件过程的文档,并对软件过程进行了标准化工作,建立了组织的一个标准的软件过程;所有项目的软件开发和维护,都使用一个被批准的组织标准过程的剪裁版本;
(4)可管理级:收集了软件过程和产品质量的详细测量,并能对软件过程和产品予以定量地理解和控制;
(5)持续优化级:来自过程和先进创新思想和技术的量化反馈,能够不断地进行过程改进;
CMM的成熟度等级是对过程能力的一个划分,过程能力表达了过程成熟的程度,等级越高其成熟度越强。
相关名词:
(1)关键过程域:每一等级是由一组关键过程域定义的,即关键过程域是指那些对提升等级具有关键作用的过程,即关键过程域是定义成熟度等级的主要构造块。
7、ISO9000系列标准
目前版本ISO 9000:2000由四个核心标准
(1)ISO 9000:质量管理体系—基本原则和术语
(2)ISO 9001:质量管理体系—要求
(3)ISO 9004:质量管理体系—业绩改进指南
(4)ISO 19011:质量和/或环境管理体系审核指南
(5)ISO 10012:测量控制系统
8、软件过程范型
(1)瀑布范型:以瀑布模型为基础而形成的软件项目生存周期过程;
(2)迭代范型:演化风范,以演化模型、增量模型和喷泉模型为基础而形成的软件项目生存周期过程;
(3)螺旋范型:以瀑布模型为基础而形成的软件项目生存周期过程;
(4)转换范型:基于待开发系统的形式化需求规约为基础,通过一系列转换,将需求规约转化为它的实现而形成的软件项目生存周期过程;
(5)第四代范型:围绕特定语言和工具,描述待开发系统的高层,并自动生成代码的软件项目生存周期过程。
其他没有提到的概念 名词,可以看题库复习的资料