软件工程导论总结笔记
程序员文章站
2022-03-08 17:12:32
...
一、软件工程学概述
1.1 软件危机
1.1.1 定义:
计算机软件的开发和维护过程中所遇到的一系列严重问题。
1.1.2 表现:
1. 对软件开发成本和进度的估计常常很不准确
2. 用户对完成的软件系统不满意的现象经常发生
3. 软件产品的质量往往靠不住
4. 软件常常是不可维护的
5. 软件通常没有适当的文档资料
6. 软件成本在计算机系统总成本中所占的比例逐年上升
7. 软件开发生产率提高的速度跟不上计算机应用的发展趋势
1.1.3 原因:
1. 软件本身特点造成
2. 软件开发与维护的方法不正确
表现:
1. 忽视软件需求分析
2. 认为软件开发就是写程序使之运行
3. 轻视软件维护
1.1.4
- 在软件开发的不同阶段进行修改需要付出的代价很不相同
1.1.5 解决途径:
1. 消除“软件就是程序”的错误观念
2. 认识到软件是一种组织良好、管理严密、协同配合的工程项目
3. 推广使用在实践中总结出来的开发软件的成功技术和方法,并研究探索更有效的技术和方法
4. 开发和使用更好的软件工具
5. 良好的组织管理措施
1.1.6 为解决出现的学科
1. 软件工程学
应用 工程的方法和技术,研究 软件开发和维护的 方法、工具和管理。
2. 程序设计方法学
应用 数学的方法, 研究 程序的性质 以及程序设计理论和方法。
1.2 软件工程
1.2.1 定义:
1. 把系统的、规范的、可度量的 途径 应用于 软件开发、运行和维护过程
2. 研究1提到的途径
1.2.2 本质特性:
1. 软件工程 关注于 大型程序的构造
2. 中心课题是 控制复杂性
3. 软件经常变化
4. 开发软件的效率非常重要
5. 和谐地合作是软件开发的关键
6. 软件必须有效的支持它的用户
7. 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的创造产品
1.2.3 基本原理:
1. 用分阶段的生命周期计划严格管理
2. 坚持进行阶段评审
3. 实行严格的产品控制
4. 采用现代程序设计技术
5. 结果能清楚地审查
6. 开发小组的人员应该少而精
7. 承认不断改进软件工程实践的重要性
1.2.4 软件工程方法学:
- 软件生命周期全过程中使用的一整套技术方法的集合
- 传统方法学(生命周期方法学、结构化范型)
结构化分析、结构化设计、结构化实现
JACKSON方法、WARNIER方法
严格按阶段顺序执行(自顶向下顺序完成)
- 面向对象方法学
把数据和对数据的操作紧密结合起来的方法,模拟人类认识世界解决问题的方法和过程。
封装、继承、多态
对象object + 分类class + 继承 + 通过消息通讯
1.3 软件生命周期
1.3.1 定义:
软件从提出到最终被淘汰的存在期
1.3.2 组成:
- 3个时期、8个阶段
1. 软件定义
问题定义、可行性研究、需求分析
2. 软件开发
总体设计、详细设计、编码和单元测试、综合测试
3. 运行维护
运行维护
1.4 软件过程
1.4.0 定义:
为了 获得高质量软件,所需要完成的 一系列任务的框架,规定了 完成各项任务的步骤。
- 软件过程(ISO9000):使用资源将输入(软件需求)转化为输出(软件产品)的活动所构成的系统。
1.4.1 瀑布模型
1.4.2 快速原型模型
1.4.3 增量模型
1.4.4 螺旋模型
1.4.5 喷泉模型
1.4.6 Rational 统一过程
- RUP软件开发经验(“最佳实践”)
1. 迭代式开发
2. 管理需求
3. 使用基于构件的体系结构
4. 可视化建模
5. 贯穿于开发过程的软件质量验证
6. 控制软件变更
1.4.7 敏捷过程与极限编程
- 敏捷过程
具有高效、快速响应变化的开发过程
个体和交互胜过过程和工具
可以工作的软件胜过面面俱到的文档
客户合作胜过合同谈判
响应变化胜过遵循计划
- 极限编程
敏捷过程最著名的一种,把好的开发实践运用到极致,多应用于需求模糊的场合。
1.4.8 微软过程
- 微软过程准则
- 微软软件生命周期
规划、设计、开发、稳定、发布(阶段)
1.5 问题定义报告
- 软件项目标题
- 软件目标
- 软件用户对象
- 软件规模