福州大学14年软件工程复习材料归纳1-8章 联系客服

发布时间 : 星期二 文章福州大学14年软件工程复习材料归纳1-8章更新完毕开始阅读c20d146c650e52ea551898c5

第一章 软件和软件工程

1. 定义软件:(1).指令的集合,通过执行这些指令可以满足预期的特征、功能和性能需求 (2).

数据结构,使得程序可以合理利用信息 (3).软件描述信息,它以硬拷贝和虚拟形式存在,用来描述程序操作和使用

2. 软硬件不同的特性:(1).软件是设计开发的,而不是传统意义上生产制造的 (2).软件不会

磨损 (3).虽然整个工业向着基于构建的构造模式发展,然而大多数软件仍是根据实际的顾客定制的

3. 软件应用领域:系统软件,应用软件,工程、科学软件,嵌入式软件,产品线软件,

Web应用软件,人工智能软件

4. 遗留软件原因:在几十年前开发,它们不断被修改以满足上也需要和计算平台的变化。

这类系统的繁衍使得大型机构十分头疼,因为它们的维护代价高昂且系统演化风险较高。 5. 遗留软件演化原因:(1).软件需要进行适应性调整,从而可以满足新的计算环境或者技

术需求 (2).软件必须升级以满足新的商业需求 (3).软件必须扩展使之具有与更多新的系统和数据库互操作能力 (4).软件构架必须进行改建使之能适应多样化的网络环境

6. 软件工程定义:(1).将系统化的、规范的、可量化的方法应用于软件的开发、运行和维

护,即将工程的方法应用于软件 (2).在(1)中所述方法的研究

7. 软件过程是一种层次化的技术。根基:质量关注点;框架:过程;解决方法:方法;支

持:工具

8. 软件过程框架活动:工作产品构建时所执行的一系列活动动作任务的集合:1.沟通 2.

策划3.建模 4.构建 5.部署(可迭代应用)

9. 利益相关者:可在项目成功中分享利益的人,包括业务经理、最终用户、软件工程师、

支持人员等

10. 软件工程实践的精髓:理解问题(沟通和分析),计划解决方案(建模和软件设计),实

施计划(代码生成),检查结果(测试和质量保证)。

11. 软件工程整体时间原则:存在价值,保持简洁,保持愿景,关注使用者,面向未来,计

划复用,认真思考

第二章 软件过程

1. 过程模式:描述了软件工程工作中遇到的过程相关的问题、明确了问题环境并给出了针

对该问题的一种或集中可证明的解决方案。即提供了一个模板 2. 几种惯用过程模型:

a) 瀑布模型:经典生命周期,提出一种系统的顺序的软件开发方法,从用户需求规格

说明开始,通过计划、建模、构建和部署的过程,最终提供一个完整的软件并提供持续的技术支持(以及V模型)

缺点:1.实际项目很少遵守瀑布模型提出的顺序 2.客户难以描述清楚需求 3.发布等待时间长

b) 增量过程模型:随着时间的推移,增量模型在每个阶段运用线性序列。每个线性序

列以一种演化过程流声场增量类似的方法生产出一个软件的可交付增量。

优点:人员需求少,规避技术风险等

c) 演化过程模型:随着时间推移演化,是迭代的过程模型

i. 原型开发:开始于沟通,与利益相关者会晤,定义软件整体目标,明确抑制需

求,迅速策划一个原型开发迭代并进行建模(快速设计)。之后由利益相关者反馈后细化需求不断调整。 优点:快速产生可执行的程序 缺点:1.利益相关者未察觉到软件粗糙往往陷入失败 2.使用这种手段使得不完美的选择成为系统组成部分 避免:所有利益相关者必须承认原型是为定义需求服务的,实际的软件系统是以质量为第一目标开发的 ii. 螺旋模型:结合了原型的迭代性质和瀑布模型的系统性和可控性特点,具有快

速开发越来越完善软件版本的潜力。 适用:开发大型系统和软件的理想方法。

优点:降低风险,能在风险变为问题之前化解风险 去欸但:以来大量的风险评估专家来保证成功

d) 协同开发模型:允许软件团队表述任何模型中的迭代和并发元素

适用:所有类型的软件开发,提供精确的项目当前状态图。

3. UML统一建模语言,包含了大量用于面向对象系统建模和开发的符号。 4. 统一过程:

a) 起始阶段:客户沟通和策划活动

b) 细化阶段:沟通和通用过程模型的建模活动 c) 构建阶段:与通用软件过程中的郭建活动相同 d) 转换阶段:包括通用构建活动的后期阶段以及通用部署活动的第一部分。软件提交

给最终用户进行Beta测试。

e) 生产阶段:与通用过程的部署活动一致

第三章 敏捷开发

1. 敏捷:鼓励能使沟通更便利的团队结构和协作态度,强调可运行软件的快速交付而不那

么看重中间产品。

2. 极限编程(XP)五个要素:沟通、简明、反馈、鼓励和尊重 3. 极限编程过程:策划,设计,编码,测试

4. 工业极限编程(IXP) 六个新实践:准备评估、项目社区、项目承租、测试驱动管理、回

顾、持续学习

5. 对XP的批评意见:需求易变,矛盾的客户需求,需求的非正规表示,正规设计的缺乏 6. 其他敏捷模型

a) 自适应软件开发ASD:思考->协作->学习(循环)->发布 b) Scrum:需求、分析、设计、演化、交付

c) 动态系统开发、Crystal、特征驱动开发、精益软件开发、敏捷建模、敏捷统一过程

第四章 理解需求

1. 需求工程:致力于不断理解需求的大量任务和技术。从软件过程的角度来看,需求工程

是一个软件工程动作,开始于沟通活动并持续到建模活动。必须适应于过程、项目、产品和人员工作的需要

2. 质量功能部署:将客户要求转换成软件技术需求的质量管理技术。

a) 正常需求:实现了这些需求将满足客户 b) 期望需求:隐含在产品或系统中

c) 令人兴奋的需求:实现这些特点会使用户特别满意

3. 四种不同的交互模式:编程模式、测试模式、检测模式、故障检查模式(用例图) 4. 需求模型的元素:

a) 基于场景的元素:从用户的视角描述系统(活动图) b) 基于类的元素:一个参与者与系统交互时所操作的一组对象,被分成具有相似属性

和共同行为的事物集合(类图) c) 行为元素:基于计算机系统的行为能够对所选择的设计和所采用的实现方法产生深

远的影响(状态图) d) 面向数据流的元素:信息在基于计算机的系统中流动时会被转换,系统接收多种形

式的输入,用函数转换后,生成多种形式的输出

第五章 需求建模:场景、信息与类分析

1. 需求模型必须实现三个主要目标:1.描述客户需要什么 2.为软件设计奠定基础 3.定义

在软件完成后可以被确认的一组需求

2. 域分析:可以被看作是软件过程的一个普适性活动 3. 需求建模的方法:

a) 考虑数据和处理的需求建模方法被称作结构化分析,处理将数据作为独立实体加以

转换。数据对象建模定义了对象的属性和关系

b) 面向对象的分析,关注与定义类和影响客户需求的类之间的协作方式 c) 行为元素描述了外部事件如何改变系统或主流在系统里的类的状态

d) 面向流的元素表示信息转换的系统描述了数据对象在流过各种系统功能时是如何

转换的

4. 数据对象:只封装数据,没有操作数据的引用,定义了一个符合的数据项 5. 面向对象:包含了数据属性和数据方法 6. 基于类的建模

a) 识别分析类:对第一次出现的名词加下划线,第一次出现的动词采用斜体,带有下

划线的每个名词或词组可以确定为类,之后输入到一个表中标注出同义词

潜在类应满足的特征:保留信息,所需服务,多个属性,公共属性,公共操作,必要需求(应全部满足) b) 描述属性,定义操作:类图 c) 类-职责-协作者建模(CRC):(写法:上:类名;左:职责(类相关的属性于操作);

右:协作者(完成职责所需要的信息))

提供了方法可以识别和组织与系统或产品需求相关的类。P103 d) 关联和依赖、分析包

7. 需求模型为系统级表示层和软件设计之间的间隔构造了桥梁

第六章 需求建模:流程、行为和模式

1. 面向流程建模,数据流图DFD:使用分层的方式表示

a) 第0层DFD将软件或系统描述为一个泡泡,标记主要的输入和输出,通过吧选定

的处理、数据对象和数据存储分离为下一层表示而开始精华过程 b) 当从一个层转到另一层时要保持信息流连续性,一次精化一个泡泡,将叙述中的名

词与动词分离开来。 c) 名词是外部实体(方框),数据或控制对象(箭头)、数据存储(双横线),动词是

处理泡泡

2. 状态图p115 顺序图P119 120

第七章 设计概念

1. 软件工程中的设计:P127三角形

a) 构建及设计:构造元素->软件构件 b) 接口设计:系统与使用成员之间通信 c) 体系结构设计:基于系统 主要元素 d) 数据/类设计:类模型 数据结构

2. 质量属性FURPS:功能性、易用性、可靠性、性能、可支持性 3. 设计概念:

a) 抽象:1.过程抽象是指具有明确和有限功能的指令序列 2.数据抽象是描述数据对象

的冠名数据集合 b) 体系结构:程序构建的结构或组织、这些构建交互的形式以及这些构建所用的数据

的结构,也可以概括为表示主要的系统元素及其交互 包括属性:结构特性,外部功能特性,相关系统族 c) 模式:描述了在某个特定场景与可能影响模式应用和使用方式的影响力中解决某个

特定的设计问题的设计结构

d) 关注点分离:表明任何复杂问题如果被分解为可独立解决或优化的若干块,该复杂

问题能够更容易地被处理

e) 模块化:软件被划分成独立命名的、可处理的构件

i. 随着模块数量增加,集成模块的工作量也在增加,的确存在一个模块数量M

可以带来最小的开发成本,但是缺乏成熟的技术来精确地预测M

f) 信息隐蔽:模块应该规定并设计成为在模块中包含的信息不被不需要这些信息的其

他模块访问

g) 功能独立:关注点分离、模块化、抽象和信息隐蔽的直接产物

i. 通过开发具有专一功能和避免与其他模块过多交互的模块以实现功能独立 ii. 具有有效模块化的软件更容易开发,独立模块更容易维护和测试,模块复用成

为可能 iii. 通过内聚性和耦合性进行评估:内聚性显示模块相关功能的强度,耦合性显示

了模块间的相互依赖性 iv. 耦合性依赖于模块之间的借口复杂性、引用或进入模块所在的点以及什么数据

通过接口进行传递

h) 求精:是一个细化过程,抽象和精华是互补的概念,精华有助于在设计过程中揭示

底层细节

i) j) k) l)

方面:方面是一个横切关注点的表示

重构:重新组织的技术,可以简化构建的设计而无需改变其功能或行为 面向对象:OO

设计类:通过提供设计细节精化分析类,设计细节促成类的实现;实现支持业务解决方案的软件基础设施 i. 用户接口类:定义人机交互所必须的抽象 ii. 业务域类:早期定义的分析类的精化 iii. 持久类:表示将在软件执行之外持续存在的数据存储(数据库) iv. 系统类:实现软件管理和控制功能,使系统能够运行 v. 四个特征:完整性与充分性,原始性,高内聚性,低耦合性 m) 设计模型 P139

第八章 体系结构设计

1. 体系结构设计:表示了建立计算机系统所需的数据结构和程序构件

2. 软件体系结构:系统的一个或者多个结构,包括软件构件、构件的外部可见属性以及它

们之间的相互关系。

a) 对设计在满足既定需求方面的有效性进行分析

b) 再设计变更相对容易的阶段,考虑体系结构可能的选择方案 c) 降低与软件构造相关的风险

3. 体系结构AD:记录体系机构的产品集合,使用多视图表示,每个视图是从一组利益相

关者关注点的角度观察的整个系统的一种表示 4. 体系结构风格:1.完成系统需要的某种功能的一组构件 2.能使构件间实现通信合作协调

的连接键 3.定义构件如何集成为系统的约束 4.语义模型,能使设计者通过分析系统组成成分的已知属性来理解系统的整体性质 a) 以数据为中心的体系结构:数据存储驻留在这种体系结构的中心,其他构件会经常

访问该数据存储,并对数据增删改查(黑板机制)P151

b) 数据流体系结构:管道-过滤模式拥有一组称为过滤器的构建,通过管道连接,管道

将数据从一个构件传送到下一个构件。若退化成单线的变换,则称为批序列。 c) 调用和返回体系结构:主程序/子程序体系结构;远程过程调用体系结构 d) 面向对象体系结构 e) 层次体系结构

5. 系统环境表示:用体系结构环境图ACD对软件与其外围实体的交互方式进行 6. 使用数据流进行体系结构映射:

a) 评审基本系统模型

b) 评审和精化软件的数据流图

c) 确定DFD是否含有变换流或事务流特征

d) 通过确定输入和输出流的边界,分离出变换中心 e) 完成第一级分解 f) 完成第二级分解

g) 实用提高软件质量的设计启发式方法,精化第一次迭代得到的体系结构