补充考点:
合适的模式,重构 改进(绿书后面的题目)

第一章 软件工程与软件设计

1.软件工程的定义是什么?

软件工程是将系统的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,以及对上述方法的研究。

2.软件工程由哪三个要素组成?

方法、工具和过程

3.软件工程原则

抽象、信息隐藏、模块化、局部化、一致性、完全性、可验证性

4.软件的生存周期模型

可行性研究->需求分析->概要设计->详细设计->软件构造->单元测试->集成测试->确认测试->使用与维护
这里V模型和瀑布模型都是一样的内容,只是排列方式是V型排列和阶梯排列。
image

5.软件生存周期的v模型

image

6.带反馈的瀑布模型

image

7.经典的软件开发模型:

瀑布模型——需求完全确定
渐进式开发模型——只能提供基本需求
变换模型——形式化开发方法为基础

8.快速原型模型

image

9.软件设计的六个要素

目标描述
设计约束
产品描述
设计原理
开发规则
使用描述

10.软件体系结构的定义

(2)软件体系结构是软件系统的基本组织,包含构件、构件之间、构件与环境之间的关系,以及相关的设计与演化原则

第二章 统一建模语言UML

为了解决不同人员之间的交流障碍,出现了统一建模语言UML

UML2.0加强了对模型驱动体系MDA的支持。MDA实现从UML到最终代码生成的自动化

结构视图和行为视图

1.UML2.0的视图模型

image

2.面向对象方法学

对象、类、继承、聚集、多态、消息

3.面向对象方法的优势

简化开发过程

支持软件复用

改善软件结构

第三章 软件设计基础

软件设计是一个逐步精细化的过程,需要灵活运用抽象、模块化、逐步求精。

1.软件设计主要针对需求分析过程中得到的软件需求规格说明,综合考虑各种因素,探求切实可行的软件解决方案并最终给出方案的逻辑表示。

2.软件设计的最终目的是什么?

获取能够满足软件需求的、明确的、可行的高质量的软件解决方案

3.软件工程的每一步都是对较高一级抽象的解作一次较具体化的描述。

过程抽象和数据抽象

软件体系结构体现了模块化的思想

4.解释内聚(模块内部)

内聚是前述信息隐藏和局部化的概念的自然扩展,它标志着一个模块内部各成分彼此结合的紧密程度。

5.解释耦合(模块之间)

耦合是对软件结构中模块间关联程度的一种度量。

追求:高内聚、低耦合

6.软件设计一般都可以被看做是迭代的过程

软件设计的迭代image

7.软件设计计划

(1)确定设计目标和验收准则
(2)明确目标软件系统应遵循的技术标准或规范
(3)重新审视项目风险管理计划
(4)制定本次设计过程的工作计划
(5)对设计过程的工作计划进行评审

8.解释扇入、扇出

扇入:能直接控制该模块的其他模块数
扇出:该模块直接控制的其他模块数

9.模块设计的目标是什么

确定模块的具体接口定义,并设计模块的内部结构。

10.过程算法设计是什么

对模块内部的工作和执行过程进行描述,给出有关处理的精确说明

11.数据模型设计包括哪些

包括数据结构设计、数据库设计、甚至数据文件设计

12.软件设计的质量

健壮性、可移植性、可复用性

13.体系结构风格

描述某一特定应用方式中系统组织方式的惯用模式,为设计人员的交流提供了公共的模型、符号和术语表示,促进了设计复用甚至最终代码复用。

14.体系结构模式

对设计模式的扩展,描述了软件系统基本的结构化组织方案,可以作为具体体系结构的模板。

15.软件的产品线

指一组具有公共的,可管理特征的的软件系统
软件产品线由:核心资产库和产品合集组成

16.软件设计规格说明

软件设计过程中的各个活动的结果最终应该文档化,形成正式的软件设计规格说明,作为软件设计的输出。

17.设计评审

目标:确保设计规格说明书能够实现所有软件需求。及早发现设计中的缺陷和错误并确保设计模型已经精化到合格的软件实现工程师能够造出符合软件设计者期望的目标软件系统。

第四章 面向对象的软件设计方法

1.什么是确定用例

确定参与者和场景的关键在于理解业务领域和初步需求描述文档

2.用例图

image

3.概念模型设计

标识关键概念

关键概念来源包括

业务需求的描述

业务领域中相关的规范、标准、术语定义

反映业务领域知识的既往经验

描述概念模型的UML类图主要由分析类组成。分析类指直接服务于用户功能性需求的概念层面的类。

4.分析类

边界类

控制类

实体类

5.顶层架构设计

顶层架构的主要目的是为后续的分析和设计活动建立一种结构和划分,以便开发人员在不同的开发阶段,以及同一开发阶段的不同开发人员,能够聚焦于系统的不同部分。

精炼:为后续分析和设计建立的一种结构和划分

用户界面结构可以由UML类图描述,屏幕和窗口用类进行

6.数据模型设计

****包括
数据结构设计、数据库设计、数据文件设计等多个方面。
****步骤
(1)确定设计模型中需要持久保存的类的对象及其属性,其中实体类是主要关注对象。

(2)确定持久存储的数据之间的组织方式。

(3)确定数据模型中的操作行为,例如数据完整性验证、数据读取、存储与更新、数据求和、求数据平均值。

(4)进一步优化持久数据操作的性能,例如使用数据索引、存储过程、触发器等方式。

7.设计精细化

(1)精华软件架构。

(2)调整软件构成的类。

(3)精化交互模型。

(4)精化类之间关系。

8.精化类的属性和操作

(1)public 对软件中所有类可见

(2)protected 本类及子类可见

(3)private 本类可见

9.部署设计模型

(1)最终开发完成软件包括哪些制品形式。

(2)软件运行环境存在哪些类型的物理节点。

(3)不同节点之间的链接和通信形式是什么。

(4)软件制品应该如何在物理节点上进行部署,即他们部署的映射关系。

第五章 面向数据流的软件设计方法

1.什么是数据流图

数据流图就是用来刻画数据流和转换信息的信息系统建模技术。

2.数据流图为什么要和数据字典配合使用?

数据流图的机制并不足以完整的描述软件需求,因为他没有描述数据流的内容。

3.实体关系图图形表示哪些内容?

数据对象用长方形表示,关系用菱形表示。
image

第六章 用户界面设计

1.用户界面设计三条“黄金规则”是什么

(1)使系统处于用户控制之中
(2)减少用户的记忆负担
(3)保持界面一致性

第七章 软件体系风格与设计模式

1.怎么理解软件设计模式?

是可解决一类软件问题并能重复使用的软件设计方案

2.软件体系风格和软件设计模式的区别

异:软件体系结构风格描述系统整体结构框架上的特点,粒度更大;而软件设计模式则更加面向具体问题,粒度小。

同:都是可重复使用的软件设计问题解决方案

3.常用的三种体系风格

管道/过滤器风格、层次风格、 客户/服务器风格

4.管道/过滤器风格的特征

系统与构件之间通过数据流松散耦合。

5.层次风格的特征

从向外提供服务的构件出发,沿着连接关系依次搜索构件和连接子,如果形成的拓扑结构是一个有向无圈图

6.层次结构的优缺点

优:结构清晰、可替换性好、便于控制复杂性
缺:效率低

7.客户/服务器风格的特征

从向外提供服务的构件出发,沿着连接关系依次搜索构件和连接子,如果形成的拓扑结构是一颗倒置的树。

第八章 基于分布构建的结构

1.EJB分布构件的系统结构

EJB分布构件框架由SUN公司主导制定,它基于Java语言,面向企业级的分布式系统开发。

EJB系统结构

2.

第九章 软件体系结构评估

1.评估的目的是什么?

为了在开发过程的早期,通过分析系统的质量需求是否在软件体系结构中得到体现,来识别软件体系结构设计中的潜在风险,预测系统质量属性,并辅助软件体系结构决策的制定。

2.早评估和迟评估分别是什么?

早评估适用于已经做出和正在考虑的软件体系结构。任何阶段都可以使用。
迟评估适用于已经明确并且实现已经完成的时候。

3.如何判断一个软件体系结构是适宜的

(1)系统的结果满足质量目标

(2)系统能够使用现有的资源来开发

4.评估的益处和代价

评估中的代价是人员开销。

5.软件体系结构评估方法

(1)ATAM方法
(2)SAAM方法
(3)ARID方法

第十章 软件设计进化

1.遗留系统包括哪些?

包括硬件、软件还包括业务过程和步骤

2.软件再工程的优点

(1)减少风险

(2)减少成本

3.什么是软件逆向工程

对程序进行分析,以便在比源代码更高的抽象层次上创建程序的某种表示过程。

4.什么是代码重构

5.什么是数据重构

6.什么是软件移植