软件工程复习
题型
名词解释 20分
简答题 30分(5*6)
软件架构案例分析 50分
简答题知识点
P3 软件的定义
软件是指令的集合,通过执行这些指令可以满足预期的特性、功能和性能需求
数据结构,使得程序可以合理利用信息
软件描述信息,以硬拷贝和虚拟形式存在,用来描述程序的操作和使用。
P5 遗留软件
旧的系统、维护代价高且系统演化风险较高
P12 过程框架
定义了若干个框架活动,为实现完整的软件工程过程建立了基础
包括五个活动:沟通、策划、建模、构建、部署
P30 瀑布模型
软件工程经典生命周期,提出了一个系统的、顺序的软件开发方法,从用户需求的规格说明开始,通过策划、建模、构建和部署过程,最终提供完整的软件支持。
由于每个任务严格依赖于上一步骤,可能导致开发进度处于停滞状态
优点:
- 只需关注当前步骤
- 提供了检查点
- 提供了一个模板,各个步骤有一个共同的模板
缺点:
- 阶段划分固定,增加了工作量
- 只有结束后用户才能看到结果
- 无法适应用户的需求改变
- 早期的错误只有到开发后期才能发现
P32 增量过程模型
增量模型交付一系列称为增量版本,随着每个版本的交付,逐步为用户提供更多的功能
优点:
- 模块化
- 降低整个系统的风险
- 灵活性高,按优先级开发
缺点:
- 要求系统可以被划分
- 需要开放的架构,即新加入的部分对原来的主体是无侵入或少侵入的
- 容易变成边做边改,使软件开发失去控制
P46 用自己话描述什么是敏捷
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。
换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
P49 极限编程过程(用自己的语言描述敏捷性?)
敏捷开发的核心是迭***(iterative development)。敏捷一定是采用迭***的方式。迭***将一个大任务,分解成多次连续的开发,本质就是逐步改进。在每个迭代中使用增量开发。
策划,评估用户故事
设计,Keep It Simple
编码,结对编程
测试
P72 第七章用例图
P96 需求建模有哪些模型
- 场景模型
- 面向类的模型
- 基于行为和模式的模型
- 数据模型
- 面向流的模型
P132 从需求模型到设计模型
- 数据/类设计,将类模型转换为设计类的实现
- 体系结构设计,定义软件主要结构化元素之间的关系
- 接口设计,描述系统之间如何进行通信
- 构件级设计,软件构件的过程性描述
P134 指导良好设计演化的三个特征
- 设计应当实现所有包含在需求模型中的明确需求,而且必须满足利益相关者期望的所有隐含需求
- 对于那些些编码者和测试者以及后续的软件维护者而言,设计应当满足可读性、可理解性
- 设计应当提供软件的全貌,从实现的角度对数据域、功能域和行为域进行说明
P157 体系结构风格的简单分类
- 以数据为中心的体系结构
- 数据流体系结构
- 调用和返回体系结构
- 面向对象体系结构
- 层次体系结构
P180 设计基于类的构件有哪些原则
- 开闭原则,模块应该对外延有开放性
- 替换原则,子类可以替换他们的基类
- 依赖倒置原则,依赖于抽象而非具体实现
- 接口分离原则,多个客户专用接口比一个通用接口好
- 发布复用等价性原则,复用的粒度就是发布的粒度
- 共同封装原则,一同变更的类应该合在一起
- 共同复用原则,不能一起复用的类不能被分到一组
软件架构部分
需求分析
识别角色,用例图
类设计(一到两个)、UML类图
界面设计
接口函数
画顺序图
数据建模(3个表)