软工记录
题型
选择题 2*10
判断题 2*5
填空题 1*10
简答题 4*4
名词解释 3*3
设计答题 35
chap1, 2
1、什么是软件?
软件=指令+数据+文档
(1)指令的集合(计算机程序),通过执行这些指令来满足预期的特征、功能和性能需求;
(2)数据结构,使得程序可以合理地利用信息;
(3)文档描述,用来描述程序操作和使用
2、什么是软件工程?
软件工程是将系统化的、规范的、可量化的方法应用于软件的开发 、 运行和维护,即将工程化方法应用于软件。
3、Hooker的一般原则有哪些?
存在价值
保持简洁
保持愿景
关注使用者
面向未来
计划复用
认真思考
4、软件工程的层次图包括哪几方面?
工具、方法、过程、质量关注点
5、软件工程通用框架活动有哪些?
沟通
策划
建模
构建
部署
6、软件工程通用过程模型有哪些?
瀑布模型
V模型
增量模型
原型模型
螺旋模型
协同模型
敏捷模型
RAD模型
喷泉模型
7、瀑布模型有什么特点?
- 瀑布模型的优点
通过设置里程碑,明确每阶段的任务与目标;
可为每阶段制定开发计划,进行成本预算,组织开发力量;
通过阶段评审,将开发过程纳入正确轨道;
强迫开发人员采用规范化的方法。
- 瀑布模型的缺点
缺乏灵活性,不能适应用户需求的改变;
开始阶段的小错误被逐级放大,可能导致软件产品报废;
返回上一级的开发需要十分高昂的代价;
随着软件规模和复杂性的增加,软件产品成功的机率大幅下降。
8、螺旋模型的优缺点有哪些?
优点
支持用户需求的动态变化 。 具有良好的可扩充性和可修改性 。 也支持软件系统的可维护性 , 每次维护过程只是沿螺旋模型继续多走一两个周期 。
原型易于用户和开发人员共同理解需求 ,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便。
螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险 。
支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。
缺点:
如果每次迭代的效率不高 , 致使迭代次数过多 , 将会增加成本并推迟提交时间 ;
使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高
9、软件危机与原因
落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象
客观:软件本身特点
逻辑部件
规模庞大
主观:不正确的开发方法
忽视需求分析
错误认为:软件开发=程序编写
轻视软件维护
10、软件生命周期
可行性研究与计划
需求分析和定义
软件设计
系统实现
测试阶段
运行维护
chap3、4
1、需求工程的任务有哪些?
需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统 “做什么” 的问题
2、需求模型的元素有哪些?
基于场景的元素
基于类的元素
行为元素
面向数据流元素
3、基于类的模型的元素包括哪些?
基于类的模型的元素包括类和对象、属性、操作、CRC模型、协作图和包。
4、CRC的中文含义是什么?
CRC的中文全称是 类-职责-协作者。它是一种简单有效、用于面向对象早期设计的团队协作工具。
C (Class): 类 - 模型的名称。
R (Responsibility): 职责 - 类所知道的信息(属性)和它能做的事情(操作)。
C (Collaborator): 协作者 - 为了完成某个职责,该类需要与之交互的其他类。
chap5,6,7
1、软件设计宣言的内容是什么?
良好的软件设计应该展示:
坚固:程序应该展示不含任何妨碍其功能的缺陷。
适用:程序应该符合开发的目标。
愉悦:使用程序的体验应是愉快的。
2、从技术角度,软件设计有哪几种设计?
构件级设计;接口设计;体系结构设计;数据/类设计
3、软件体系结构风格有哪几种?
以数据为中心的体系结构
数据流体系结构
调用和返回体系结构
面向对象体系结构
层次体系结构
4、体系结构设计的过程如何?
收集场景。
引出需求、约束和环境描述。
描述那些已经被选择用于解决场景和需求的体系结构风格/模式。
模块视图
过程视图
数据流视图
通过单独地考虑每个属性来评估质量属性。
针对特定的体系结构风格,确定质量属性对各种体系结构属性的敏感性。
使用第5步进行的敏感性分析鉴定候选体系结构
5、什么是构件?
构件是系统模块化的、可部署的和可替换的部件,该部件封装了实现并暴露一组接口。
6、构件的基本设计原则有哪些?
开闭原则(OCP)。“模块[构件]应该对外延具有开放性,对修改具有封闭性”。
Liskov 替换原则(LSP)。“子类可以替换它们的基类”。
依赖倒置原则(DIP)。“依赖于抽象,而非具体实现”。
接口分离原则(ISP)。“多个客户专用接口比一个通用接口要好”。
发布复用等价性原则(REP)。“复用的粒度就是发布的粒度”。
共同封装原则(CCP)。“一同变更的类应该合在一起”。
共同复用原则(CRP).。“不能一起复用的类不能被分到一组"。
chap8-9
1、软件测试策略有哪些?
单元测试、集成测试、确认测试、系统测试
我们首先以‘小的测试’开始,随后转向‘大的测试’
对于传统的软件,最初关注模块(构件),随后关注集成模块
对于面向对象软件,我们的关注点从单独模块“小的测试”(传统的观点)变化到一个包含属性和操作以及暗含沟通和协作的面向对象类。
2、集成测试有哪些?
自顶向下集成
自底向上集成
混合增量式测试
三明治测试
回归测试
冒烟测试
3、什么是白盒测试?白盒测试方法有哪些?
白盒测试:又称为“结构测试”或“逻辑驱动测试,测试人员需要了解程序的源代码,并根据代码的逻辑路径来设计测试用例,以确保程序中尽可能多的代码路径都被测试到。
白盒测试方法:基本路径测试法、控制结构测试、循环测试
4、什么是黑盒测试?黑盒测试方法有哪些?
黑盒测试:又称为“功能测试”或“数据驱动测试”,这是一种只关心软件功能的测试方法,完全不考虑其内部的代码结构和实现逻辑。测试人员站在最终用户的角度,只验证输入数据能否得到预期的输出结果。
黑河测试方法:等价类划分、边界值分析、对比测试、正交数组测试、基于模型的测试
1、什么是软件质量?
在一定程度上应用有效的软件过程,创造有用的产品,为生产者和使用者提供明显的价值。
2、什么是软件质量困境?
一方面,产品要足够好,不会立即被抛弃,比如在评估期;另一方面,又不是那么完美,不需要花费太长时间和太多成本。
3、敏捷宣言的内容是什么?
个人和这些人之间的交流胜过了开发过程和工具
可运行的软件胜过了宽泛的文档
客户合作胜过了合同谈判
对变更的良好响应胜过了按部就班地遵循计划
4、什么是敏捷开发?
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。
5、敏捷过程模型有哪几种?
极限编程XP
自适应软件开发ASD
动态系统开发DSDM
Scrum
Crystal
特征驱动开发 FDD
chap1, 2
1、什么是软件?
2、什么是软件工程?
3、Hooker的一般原则有哪些?
4、软件工程的层次图包括哪几方面?
5、软件工程通用框架活动有哪些?
6、软件工程通用过程模型有哪些?
7、瀑布模型有什么特点?
8、螺旋模型的优缺点有哪些?
chap3、4
1、需求工程的任务有哪些?
2、需求模型的元素有哪些?
3、基于类的模型的元素包括哪些?
4、CRC的中文含义是什么?
chap5,6,7
1、软件设计宣言的内容是什么?
2、从技术角度,软件设计有哪几种设计?
3、软件体系结构风格有哪几种?
4、体系结构设计的过程如何?
5、什么是构件?
6、构件的基本设计原则有哪些?
chap8-9
1、软件测试策略有哪些?
2、集成测试有哪些?
3、什么是白盒测试?白盒测试方法有哪些?
4、什么是黑盒测试?黑盒测试方法有哪些?
1、什么是软件质量?
2、什么是软件质量困境?
3、敏捷宣言的内容是什么?
4、什么是敏捷开发?
5、敏捷过程模型有哪几种?