软工复习整理:
第一章 软件工程基础
1 名词解释
1.1 软件工程(P4)★★★
(1)将系统化的、规范化、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。
(2)在(1)中所述方法的研究
2 简答:
2.1 从1950s~2000s之间的特点(P18)
1950s:(P18)
1.科学计算
2.以机器为中心进行编程
3.像生产硬件一样生产软件
1960s:(P21)
1.业务应用
2.软件,硬件不同
3.用软件工艺的方式生产软件
1970s:(P25)
1.结构化方法
2.瀑布模型
3.强调规则,和纪律
奠定了软件工程的基础,是后续支撑
1980s:(P31)
1.追求生产力最大化
2.现代结构化方法/面向对象编程
3.重视过程的作用
1990s:(P36)
1.企业为中心
2.追求快速发展
3.Web应用出现
2000s:(P38)
1.大规模Web应用
2.面向大众web产品
3.追求快速开发,可变更性,用户价值和创新
第四章 项目启动
3 名词解释
3.1 质量属性(P54)
3.2 质量模型(P54)
4 软件项目管理活动有哪些?(过程组、具体活动)(13年选择)(P49)
5 如何管理团队?(P51)
5.1 在实验中采取了哪些办法?有哪些经验?★
1.建立团队章程
2.持续成功
3.和谐沟通
4.避免团队杀手
5.2 团队结构有三种★(P50)
1.主程序员团队
2.民主团队
3.开放团队
6 质量模型有哪些(P55)
- 质量:软件系统为满足显示的、隐式的要求而需要具备的要素
- 质量属性:质量这个概念太过宏观,无法进行管理,人为选用系统的某些质量要素进行量化处理,建立质量特征,这些特征就叫做质量属性。★
- 质量模型:为了根据质量属性,描述和评价系统的整体质量,人们从质量属性的定义的那个中选择某些特征集,这些特征集叫做质量模型。
7 质量保障有哪些措施?
7.1 结合实验进行说明
8 配置管理有哪些活动?★(P59)
1.标识配置项
2.版本管理
3.变更控制
4.配置审计
5.状态报告
6.软件发布管理
8.1 实验中是如何进行配置管理的?★
9 质量验证的方法有三种(P56)
10 项目的质量保障包括哪些活动?(P56)★★★
10.1 例:(2010)结合实验,说明一个项目的质量保障包括哪些活动?
对应P56页表格
1.需求开发
2.体系结构
3.详细设计
4.实现(构造)
5.测试
11 典型的评审过程有六个阶段(P56)
1.规划
2.总体部署
3.准备
4.审查会议
5.返工
6.跟踪
12 变更控制过程是怎样的(P61)
见P61页图
1.提请者
2.接收者
3.评估者
4.变更控制委员会
5.修改者
6.验证者
第五章 软件需求基础
13 名词解释
13.1 需求(P71)
1.用户为了解决问题或达到某些目标所需要的条件或者能力。
2.系统为了满足合同,标准,规范等所需要的条件或者能力。
3.对1,2,中的一个条件或者能力的一种文档化表述。
14 需求获取的三种方法(P69)
1.面谈
2.集体获取方法
3.头脑风暴
4.原型
15 区分需求的三个层次(71)★★★
1.业务
2.用户
3.系统行为
15.1 给出一个实例,给出其三个层次的例⼦
15.2 对给定的需求示例,判定其层次
15.2.1 例如课程实验/ATM/图书管理…
16 掌握需求的类型(P75)★★★
16.1 对给定的实例,给出其不同类型的需求例⼦★★★
1.项目需求
2.过程需求
3.系统需求
3.1 软件需求
3.1.1 功能需求
3.1.2 性能需求
3.1.3 质量属性
3.1.4 对外接口
3.1.5 约束
3.1.6 数据需求
3.2 硬件需求
3.3 其他需求
16.2 对给定的需求⽰例,判定其类型
16.2.1 例如课程实验/ATM/图书管理…
第六章 需求分析方法
17 为给定的描述
17.1 建立用例图(P95)
17.2 建立概念类图(P98)
17.3 建立系统顺序图(P105)
17.4 建立状态图(P160)
17.5 为下列描述建立用例模型(6分),要求明确给出建模过程(4分)。
18 简:需求分析的方法(P84)
1. 结构化方法
2. 面向对象方法
19 简:需求分析模型(P84,6种)
20 简:结构化分析方法(P84,2种)
21 简:面向对象方法(P84, 4种)
22 数据流图怎么画(P85)
23 实体关系图怎么画(P90)
24 用例描述怎么写(P96)
25 概念类图怎么画(P99)
26 顺序图怎么画(P104)
27 状态图怎么画(P106)
第七章
28 为什么需要需求规格说明?结合实验进⾏说明(P115)
任务和人之间,错综复杂,存在大量沟通与交流,所以需要文档充当桥梁作用。
29 对给定的需求⽰例,判定并修正其错误(P118)
29.1 对给定的需求规格说明⽚段,找出并修正其错误
30 对给定的需求⽰例,设计功能测试⽤例(P126)
30.1 结合测试⽅法
第八章 软件设计基础
31 名词解释
31.1 软件设计
32 软件设计的核⼼思想是什么?(P134)
1.分解(横向)
2.抽象(纵向)
33 软件⼯程设计有哪三个层次?各层的主要思想是什么?(P139)
1.高层设计(反映高层抽象)
2.中层设计(关注组成构件的模块划分。。。)
3.低层设计(深入模块和类的内部,eg:数据结构,算法。。。)
34 软件设计设计过程的四个主要活动(P140)
1.分析设计出发点
2.建立候选方案
3.生成最终方案
4.评价
35 软件设计的方法(P140)
1.结构话设计
2.面向对象设计
3.数据结构为中心设计
4.基于构建设计
5.形式化方法设计
36 常见的设计视角(P143)
第九、十章
37 体系结构的概念(P148)
1.部件
2.连接件
3.配置
38 体系结构的风格的优缺点★(P153)
1.主程序、子程序
2.面向对象
3.分层
4.MVC
39 体系结构设计的过程?(P160)
40 包的原则(P165)
41 体系结构构建之间接⼝的定义(P174)
42 体系结构开发集成测试⽤例(P175)
P175-P180
书中用例看一下
第十一章
43 名词解释
43.1 可⽤性
44 能够列出⾄少5个界⾯设计的注意事项,并加以解释(P184)
图11-2
1.易学性
2.易记性
3.效率
4.出错率
5.主观满意度
44.1 例⼦**违反了哪些条界⾯设计原则(P190)
1.简洁设计
2.一致性设计
3.低出错率设计
4.易记忆性设计
45 精神模型、差异性
46 导航、反馈、协作式设计
第十二章
47 详细设计的出发点(P197)
1.需求开发的结果
2.软件体系结构的结果
48 职责分配 (P203)★
49 协作(P206)★
50 控制风格(P208)★
51 给定分析类图、系统顺序图和设计因素描述
51.1 建⽴设计类图★(P204)
依赖<关联<聚合<组合<继承
51.2 或者详细顺序图★(P211)
52 协作的测试(P210)
52.1 MockObject
第十三章 模块化与信息隐藏
53 名词解释
53.1 解释耦合与内聚★(P219)
耦合:两个模块之间关系的复杂程度
内聚:一个模块内部的联系的紧密性
54 耦合与内聚★★★
54.1 对例⼦**,说明它们之间的耦合程度与内聚,给出理由★
55 六种耦合解释及例子(P219)
表13-1,其中例子好好看
56 七种内聚解释及其例子(P220)
表13-2,其中例子好好看
57 信息隐藏★
57.1 基本思想★(P222)
利用抽象的方法,抽象出每个类的关键细节,抽象出的是接口,隐藏的是实现
57.2 两种常⻅的信息隐藏决策(P224)
1.根据需求分配的职责
2.内部实现机制
57.3 对例⼦**,说明其信息隐藏程度好坏★
第十四章 面向对象下的模块化★★★★
58 Principlesfrom Modularization 模块化原则
58.1 《GlobalVariables Consider Harmful》 全局变量考虑有害
58.2 《To beExplicit》 要明确
58.3 《Do notRepeat》 不要重复
- 降低访问耦合(P230)
58.4 Programming toInterface (Design by Contract) 面向接口编程(抽象设计)(P230)
58.5 InterfaceSegregation Principle(ISP) 接口分离原则
58.6 The Law of Demeter 迪米特法则
- 降低继承耦合(P235)
58.7 LiskovSubstitution Principle (LSP) Liskov替换原则(里氏代换原则)
58.8 Favor CompositionOver Inheritance 使用组合代替继承
- 提高内聚(P238)
58.9 集中信息与行为
58.10 Single Responsibility Principle 单一职责原则
59 对给定的⽰例,发现其所违反的原则,并进⾏修正
第十五章 面向对象下的信息隐藏★★★★
60 信息隐藏的含义(P246)
1.封装类的职责,隐藏职责的实现
2.预计将会发生的变更,抽象它的接口,隐藏它的内部机制
61 封装(P247)
62 多态(P252)
63 OCP 开闭原则(P252)
64 DIP 依赖倒置原则(P253)
第十六章 详细设计的设计模式★★★★
65 如何实现可修改性、可扩展性、灵活性(P262)
66 策略模式(P265)
67 抽象⼯⼚模式(P270)
68 单件模式(P276)
69 迭代器模式(P227)
70 给定场景,应⽤设计模式并写出代码★★★
71 给出代码,要求⽤设计模式改写★★★
第十七、十八章
72 构造构造的活动(P283)
1.详细设计
2.编程
3.测试
4.调试
5.代码评审
6.集中与构建
7.构造管理
73 名词解释
73.1 重构(P289)
73.2 测试驱动开发(P291)
73.3 结对编程(P295)
74 给定代码段⽰例,对其进⾏改进或者 发现其中的问题
74.1 简洁性/可维护性
74.2 使⽤数据结构消减复杂判定
74.3 控制结构
74.4 变量使⽤
75 单元测试⽤例的设计(P313)
76 契约式设计代码设计(P308)
77 防御式编程代码设计(P310)
78 表驱动(P307)
第十九章
79 掌握黑盒测试和⿊盒测试的常用方法,并进⾏能够优缺点比较(P327,P329)
80 能解释并区别⽩盒测试三种不同的⽅法:语句覆盖、分⽀覆盖和路径覆盖(P329)
81 给出⼀个场景,判断应该使用哪种测试方法,如何去写(*)★★★
81.1 对给定的场景和要求的测试⽅法,设计测试用例
81.1.1 给出功能需求,则要求写功能测试用例
81.1.2 给出设计图,则要求写集成测试用例,Stub and Driver (P324)
81.1.3 给出⽅法的描述,则要求写单元测试用例,Mock Object(P323)
第⼆⼗、⼆⼗⼀章
82 如何理解软件维护的重要性?(P345)
83 开发可维护软件的⽅法(P348)
84 演化式⽣命周期模型★★(P352)
85 ⽤户⽂档、系统⽂档
86 逆向⼯程、再⼯程
第⼆⼗⼆、⼆⼗三章
87 软件⽣命周期模型★★★(P364)
88 Build-and-fix model 构建-修复模型(P366)
89 Waterfall model 瀑布模型(P367)
90 Iterative Models 迭代模型(P368)
90.1 Incremental model 增量模型
90.1.1 Incremental Delivery 增量交付
90.2 Evolutionary 演化模型(P370)
90.2.1 Evolutionary development
90.2.2 Prototyping 原型模型(P371)
90.2.3 Spiral Model 螺旋模型 (P372)
91 解释与⽐较不同过程模型(要求、特征描述、优点、缺点)★★★★
92 对给定的场景,判定适⽤的开发过程模型★★
93 软件⼯程知识体系的知识域(P381)
**其他**
94 什么是可用性设计★★
产品在特定使用环境下为特定用户用于特定用途时所具有的有效性(effectiveness)、效率(efficiency)和用户主观满意度(satisfaction)。其中:
有效性 -用户完成特定任务和达到特定目标时所具有的正确和完整程度;
效率 -用户完成任务的正确和完整程度与所使用资源(如时间)之间的比率;
满意度 -用户在使用产品过程中所感受到的主观满意和接受程度。
可用性设计就是在以用户为中心的宗旨下,进行产品(系统)的设计,以使产品满足功能需要、符合用户的行为习惯和df认知,同时能高效愉悦的完成任务和工作,达到预期的目的。