软件工程知识点总结
Updated:
- 1. 一、常见问题
- 1.1. 二、概念总结
- 1.1.1. 1. 好的软件的重要属性
- 1.1.2. 2. 两种软件产品
- 1.1.3. 3. 软件过程的四项基本活动
- 1.1.4. 4. 软件过程的三种过程模型,以及如何使用它们
- 1.1.5. 5. 瀑布模型中的主要阶段及映射的基本开发活动
- 1.1.6. 6. 增量开发中,面向复用过程的中间阶段是?
- 1.1.7. 7. 需求工程过程的四个主要阶段
- 1.1.8. 8. 信息系统设计过程中的四个活动
- 1.1.9. 9. 测试阶段
- 1.1.10. 10. 增量式开发过程的好处
- 1.1.11. 11. 统一软件开发过程
- 1.1.12. 12. 描述Rational统一过程中的四个阶段
- 1.1.13. 13. 什么是需求
- 1.1.14. 14. 功能需求和非功能需求
- 1.1.15. 15. 需求文档结构
- 1.1.16. 16. UML的5种类型
- 1.1.17. 17. 模型驱动体系结构
- 1.1.18. 18. 测试过程的目标
- 1.1.19. 19. 软件系统的三个测试阶段
- 1.1.20. 20. 开发过程中测试的三个粒度级别
一、常见问题
1. 常见软件失败原因
- 不断增长的需求
- 期望值太低
2.软件是什么?
计算机程序和相关文档。软件产品可以为特定的客户开发,也可以为一般的市场开发。
3.好的软件的特性是什么?
好的软件应该向用户交付所需的功能和性能,应维护(可维护性),可靠的(可靠的)和可用性(可用的)。
4.什么是软件工程?
软件工程是一个工程学科(训练学科),关心的是软件生产的各个方面。
5.什么是基本的软件工程活动?
软件规范(软件描述),软件开发(软件设计和实现),软件验证(软件有效性验证)和软件进化(软件进化)。
6. 软件工程和计算机科学有什么区别?
计算机科学侧重于理论和基础;软件工程关注开发和交付有用软件的实用性。
7. 软件工程和系统工程的区别是什么?
系统工程涉及计算机系统开发的各个方面,包括硬件、软件和过程工程。软件工程是更一般的一部分(一般的)过程。
8. 软件工程面临的主要挑战是什么?
应对日益多样性(多样性),要求减少交货时间和发展中值得信赖的软件。
9. 软件工程的成本是什么?
大约60%的软件成本是开发成本,40%是测试成本。自定义(定做)软件,进化成本往往超过(超过)开发成本。
10. 什么是最好的软件工程技术和方法?
而所有软件项目必须专业(专业地)管理和开发,不同的技术适合不同类型的系统。例如,游戏应该总是使用一系列的开发(原型)原型而(然而)安全关键控制系统需要一个完整的和可分析的规范发展。因此,你不能说一种方法比另一种好。
11. web对软件工程有什么不同?
网络导致了软件服务的可用性和开发高度分布式的可能性(分布式的)服务的系统。基于web的系统开发在编程语言和软件重用方面取得了重要进展。
二、概念总结
1. 好的软件的重要属性
- 可维护性
- 可靠性和安全性
- 高效性
- 可接受性
2. 两种软件产品
- 通用产品
- 定制化产品
3. 软件过程的四项基本活动
- 软件描述
- 软件开发
- 软件有效性验证
- 软件进化
4. 软件过程的三种过程模型,以及如何使用它们
- 瀑布模型
计划驱动的模型。规范和开发的不同阶段。 - 增量开发式模型
规范、开发和验证是交错的。可以是计划驱动的,也可以是敏捷的。 - 面向复用的软件工程
这个系统收集现有的组件,灵活的计划驱动5. 瀑布模型中的主要阶段及映射的基本开发活动
- 需求分析和定义
- 系统和软件测试
- 实现和单元测试
- 集成和系统测试
运行和可维护
6. 增量开发中,面向复用过程的中间阶段是?
- 组件分析
- 需求修改
- 系统设计和重用
- 开发与整合
7. 需求工程过程的四个主要阶段
- 可行性研究
- 需求导出和分析
- 需求描述
- 需求有效性验证
8. 信息系统设计过程中的四个活动
- 架构设计
- 接口设计
- 组件设计
- 数据库设计
9. 测试阶段
- 开发和组件测试
- 个人独立组件测试
- 组件可能是功能或这些实体的对象或连贯的分组
- 系统测试
- 测试系统作为一个整体。紧急特性的测试尤其重要。
- 验收测试
- 测试与客户数据检查以满足顾客的需求
10. 增量式开发过程的好处
- 顾客价值可以与每个增量交付系统功能是可用的。
- 早期增量作为原型帮助引出后期增量
- 降低整体项目的风险
- 优先级最高的系统服务倾向接收最高测试
11. 统一软件开发过程
- 从动态视角而言,展现了产品开发的各个阶段
- 从静态视角而言,展现了过程活动
- 从实践视角而言,给予了更好的实践
12. 描述Rational统一过程中的四个阶段
- 开始
创建系统的商业案列 - 计划
开发可理解的问题域和系统结构 - 建造
系统设计,编程和测试 - 转变
在操作环境下使用系统
13. 什么是需求
- 用户需求
- 为客户撰写自然语言语句加上系统提供的服务及其操作约束的图表
- 系统需求
- 列出系统功能、服务和操作约束的详细描述的结构化文档。定义应该执行的内容,因此可以是客户和承包商之间合同的一部分。
14. 功能需求和非功能需求
软件系统需求常常分为功能需求和非功能需求
- 功能需求 包括对系统应该提供的服务、如何对特殊输入做出反应,以及系统在特定条件下行为的描述。在某些情况下,功能需求可能还需明确声明系统不应该做什么。
- 非功能需求 对系统提供的服务或功能给出的约束。包括时间约束、开发过程的约束和所受到的标准的约束。非功能需求经常适用于整个系统而不是个别的系统功能或服务。
15. 需求文档结构
Preface(绪言),
Introduction(引言),
Glossary(术语),
User requirements definition(用户需求定义),
System architecture (系统体系结构),
System requirements specification(系统需求描述),
System models(系统模型),
System evolution (系统进化),
Appendices(附录),
Index(索引)。
16. UML的5种类型
- 活动图:它显示流程或数据处理中所涉及的活动。
- 用例图:它显示了系统与其环境之间的相互作用。
- 时序图:它显示了参与者和系统之间以及系统组件之间的交互
- 类图:它显示了系统中的对象类以及这些类之间的关联。
状态图:起于圆圈,终于包裹圆圈,内外部响应
UML是一种支持软件设计和记录软件设计的语言,而不是编程语言,UML的设计者关心的不是语言的语义细节,而是她的表达能力。为了建立一个UML可执行的子集,模型类型的数量已经被剧减为3个主要的模型类型。
1. Domain models 领域模型
2. Class models 类模型
3. State models 状态模型
17. 模型驱动体系结构
模型驱动体系结构是一种以模型为中心进行软件设计和实现的方法,它使用UML模型的子集来描述系统。MDA方法认为应该产生3种类型的抽象系统模型:
- A computation independent model 计算机独立模型(CIM)
- A platform independent model平台独立模型(PIM)
- Platform specific models平台特定模型(PSM)
18. 测试过程的目标
- 有效性测试
- 向开发人员和系统客户演示软件满足其要求
- 成功的测试表明系统按预期运行。
- 缺陷测试
- 发现软件中的错误或缺陷,发现其行为不正确或不符合其规范
- 成功的测试是使系统执行不正确从而暴露系统中的缺陷的测试。
19. 软件系统的三个测试阶段
- 开发测试:在开发过程中对系统进行测试以发现bug和缺陷。
- 发布测试: 在系统发布给用户之前,单独的测试团队测试系统的完整版本。
- 用户测试 : 其中系统的用户或潜在用户在自己的环境中测试系统。
20. 开发过程中测试的三个粒度级别
- 单元测试:其中测试单个程序单元或对象类。单元测试应该集中于测试对象或方法的功能。
- 组件测试:其中集成几个单独的单元以创建复合组件。组件测试应该关注于测试组件接口。
- 系统测试:其中将系统中的一些或全部组件集成,并将系统作为一个整体进行测试。系统测试应该关注于测试组件交互。