青理工软件工程期末复习总结修正版.docx
《青理工软件工程期末复习总结修正版.docx》由会员分享,可在线阅读,更多相关《青理工软件工程期末复习总结修正版.docx(10页珍藏版)》请在冰豆网上搜索。
青理工软件工程期末复习总结修正版
第一章软件工程学概述
1.软件危机是指在计算机软件开发和维护过程中所遇到的一系列严重问题。
2.软件工程是指导计算机软件开发和维护的一门学科。
3.软件工程方法学包含的3个要素:
方法、工具和过程。
4.软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成。
5.软件周期的八个阶段:
(1)问题定义
(2)可行性研究
(3)需求设计
(4)总体设计
(5)详细设计
(6)编码和单元测试
(7)综合测试
(8)软件维护
6.软件过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
7.软件的8个模型:
(1)瀑布模型
(2)快速原型模型
(3)增量模型
(4)螺旋模型
(5)喷泉模型
(6)Rational统一过程
(7)敏捷过程与极限编程
(8)微软过程
第二章可行性研究
8.可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
9.系统流程图是概括地描绘物理系统的传统工具。
10.数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
11.数据流图四个重点符号;P41页
数据流图的四种基本符号:
正方形(立方体):
表示数据的源点或终点。
圆角矩形(圆形):
代表变换数据的处理。
开口矩形(两条平行横线):
代表数据存储。
箭头:
表示数据流,即特定数据的流动方向。
12.数据流图的画法:
P44页
13.数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合
14.数据字典4类元素:
(1)数据流
(2)数据流分量(即数据元素)
(3)数据储存
(4)处理
15.投资回收期就是使累计的经济效益等于最初投资所需要的时间。
16.投资回收率:
P=F1/(1+j)+F2/(1+j)^2+...+Fn/(1+j)^n其中P是现在的投资额,Fi是第i年年底的效益,n是系统的使用寿命,j是投资回收率
17.成本/效益分析的方法:
P51页
第三章需求分析
18.需求分析遵循的准则:
(1)必须理解并描述问题的信息域,根据这条准则应该建立数据模型
(2)必须定义软件应完成的功能,这条准则要求建立功能模型。
(3)必须描述作为外部事件结果的软件行为,这条准则要求建立行为模型。
(4)必须对描述信息、功能和行为的模型进行分解,用层次的方式展示细节。
19.与用户沟通获取需求的方法:
(1)访谈。
访谈有两种基本形式:
正式的和非正式的访谈。
(2)面向数据流自顶向下求精。
结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。
(3)简易的应用规格说明技术
(4)快速建立软件模型
20.数据流图—功能模型
21.实体-联系图—数据模型
(1)一对一联系(1:
1)
(2)一对多关系(1:
N)
(3)多对多联系(N:
N)
也称为ER图
图的画法在P64页
22.状态转换图—行为模型
23.实体联系图的符号:
矩形框:
实体。
菱形框:
连接实体。
椭圆形或圆角矩形:
实体的属性。
第五章总体设计
24.总体设计过程通常由两个主要阶段组成:
(1)系统设计阶段,确定系统的具体实现方案;
(2)结构设计阶段,确定软件结构。
25.设计原理
(1)模块化
(2)抽象
(3)逐步求精
(4)信息隐藏和局部化
(5)模块独立
26.模块独立
(1)耦合定义:
耦合是对一个软件结构内不同模块之间互连程度的度量
(2)耦合的类型:
数据耦合、控制耦合、特征耦合、公共环境耦合、内容耦合
(3)耦合的设计原则:
尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。
27.内聚
(1)内聚定义:
内聚标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。
简单来说,理想内聚的模块只做一件事情。
(2)内聚类型:
低内聚:
(偶然内聚、逻辑内聚、时间内聚)中内聚:
(过程内聚、通信内聚)高内聚:
(顺序内聚、功能内聚)内聚的设计原则:
力争做到高内聚。
优劣评分:
功能10顺序9通信7过程5时间3逻辑1偶然0
28.变换流:
信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统,这种信息流就叫变换流。
29.事务流:
数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行,这类数据流就叫做事务流。
第六章详细设计
30.前两小结了解一下P117
31.过程设计的工具:
程序流程图、盒图、PAD图、判定表、判定树。
32.程序流程图又称程序框图,它是历史最悠久、使用最广泛的描述过程设计的方法,然而他也是用的最混乱的一种方法。
33.盒图(N-S)了解一下
34.判定表和判定树重点(P127)
35.环形复杂度定量度量程序的逻辑复杂度
36.计算环形复杂度方法:
(1)流图中线性无关的区域数等于环形复杂度。
(2)流图G的环形复杂度V(G)=E-N+2,其中E是流图中边的条数,N是节点数。
(3)流图G的环形复杂度V(G)=P+1,其中P是流图中判定节点的数目。
第七章实现
37.编码(了解)
38.软件测试的定义:
为了发现程序中的错误而执行程序的过程。
39.软件测试的方法:
黑盒测试(功能测试)和白盒测试(结构测试)。
40.软件测试步骤:
(1)模块测试
(2)子系统测试
(3)系统测试
(4)验收测试
(5)平行运行
41.白盒测试技术:
P162页重点看大题
42.白盒测试中的逻辑覆盖:
(1)语句覆盖:
选择足够多的测试结构,是被测试程序中每个语句至少执行一次。
(2)判定覆盖:
不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次。
(3)条件覆盖:
不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。
(4)判定/条件覆盖:
选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。
(5)条件组合覆盖:
选取足够多的测试数据,使得每个判定表达式中的条件的各种可能组合都至少出现一次。
(6)点覆盖:
如果连通图G的子图G’是连通的,而且包含G的所有节点,则称G’是G的点覆盖。
(7)边覆盖:
如果连通图G的子图G’’是连通的,而且包含G的所有边,则称G’’是G的边覆盖。
(8)路径覆盖:
选取足够多测试结构,使程序的每条可能路径都至少执行一次(如果图中有环,则要求每个环至少经过一次)。
43.黑盒测试技术包括:
(1)等价划分
(2)边界值分析
(3)错误推测
第八章维护
44.软件维护定义:
是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
45.软件交付使用后的4项活动:
(1)在任何大型程序的使用期间,用户必然会发现程序错误,并且把他们遇到的问题报告给维护人员。
把诊断和改正错误的过程称为改正性维护
(2)适应性维护,也就是为了和变化了的环境适当地配合而进行的修改软件的活动,是既必要又经常的维护活动。
(3)为了满足用户在使用过程中提出增加新功能或修改已有功能的建议或提出一般性的改进意见,需要进行完善性维护。
(4)当为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件时,出现了第四项维护活动,这项维护活动通常称为预防性维护
第九章面向对象的方法学
46.P218页9.4.2关联、聚集、泛化(继承)、依赖和细化(掌握)
47.关联表示两个类的对象之间存在某种语义上的联系
(1)普通关联
(2)关联的角色
(3)限定关联
(4)关联类
48.聚集也称为聚合,是关联的特例。
聚集表示类与类之间关系是整体与部分的关系。
(1)共享聚集
(2)组合聚合
49.UML中的泛化就是所说的继承关系,它是通用元素和具体元素之间的一种分类关系。
(1)普通泛化
(2)受限泛化
50.依赖和细化
(1)依赖关系
(2)细化关系
51.UML提供的用例图也是需求分析和建立功能模型的强有力的工具
52.补充:
UML又称统一建模语言或标准建模语言
53.用例图:
P224
54.用例图包含的模型元素:
系统、行为者、用例、用例之间的关系。
第十章面向对象分析
55.3个子模型:
(1)静态结构(对象模型)
(2)交互次序(动态模型)
(3)数据变换(功能模型)
56.5个层次
(1)主题层
(2)类与对象层
(3)结构层
(4)属性层
(5)服务层
57.面向对象方法开发绝大多数软件时,都首先建立对象模型,然后在建立另外两个子模型
58.对象模型通常有5个层次。
典型的工作步骤:
(1)确定对象类和关联(因为它们影响系统整体结构和解决问题的方法),对于大型复杂的问题还要进一步划分出若干个主题
(2)给类和关联增添属性,以进一步描述它们
(3)利用适当的继承关系进一步合并和组织类
(4)对类中操作的最后确定时间,则需等到建立了动态模型和功能模型之后,因为这两个子模型更准确地描述了对类中提供的服务的需求。
第十一章面向对象的设计
59.面向对象的设计模型逻辑上都由4大组成,对应目标系统的4个子系统:
(1)问题域子系统
(2)人机交互子系统
(3)任务管理子系统
(4)数据管理子系统
60.子系统之间的两种交互方式P268
(1)客户-供应商关系
(2)平等伙伴关系
第十三章软件项目管理
61.3种人员组织方式:
民主制程序员组、主程序员组、现代程序员组。
62.主程序员组人员:
主程序员、后备程序员、编程秘书。
其中主程序员负责体系结构设计和关键部分的详细设计,并且负责指导其他程序员完成详细设计和编码工作。
后备程序员主要工作是设计测试方案、分析测试结果及独立于设计过程的其他工作。
编程秘书负责完成与项目有关的全部事务性工作。
63.现代程序员组人员:
项目经理、技术组长、行政组长、若干程序员。
其中项目经理负责指导产品开发的整个过程。
技术组长负责小组的技术决策和开发管理。
行政组长负责人事、后勤、业绩考核等工作。