一 软件工程学概述
软件危机:在软件开发和维护中出现的一系列问题。
典型表现:
- 对软件开发的进度和成本的估计常常很不准确
- 用户对"已完成"的软件产品不满意
- 产品质量往往达不到要求
- 软件难维护
- 没有适当文档
- 软件成本在总成本所占的比例逐年上升
- 开发生产率不能满足需求
产生软件危机的原因:
- 客观 -缺乏可见性;规模大
- 主观 -软件开发人员的糊涂观念;没有理解客户需求;请示软件维护
消除软件危机的途径:
- 对软件的正确认识(软件是数据,程序和文档的集合);
- 充分吸取和借鉴欠人行之有效的原理经验技术和方法;研究更有效的技术和方法
软件工程概念:指导软件开发和维护的一门工程学科。
软件工程有哪些特性:
- 关注大型程序的构造;
- 软件工程的中心课题是控制复杂性;
- 软件经常变化;
- 开发软件的效率非常重要;
- 开发人员和谐合作是成功关键;软件必须有效的支持其用户
软件工程的基本原理:
- 用分阶段的生命周期计划严格管理;
- 坚持进行阶段评审
- 实行严格的产品控制
- 采用现代程序设计技术
- 结果应能清楚地审查
- 开发小组人员应该少而精
- 承认不断改进软件工程实践的必要性
软件生命周期:
- 软件定义:问题定义,可行性研究,需求分析
- 软件开发:总体设计,详细设计,编码,单元测试和综合测试
- 软件维护: 维护
各种开发模型以及其优缺点:
瀑布模型:
- 优点:强迫采用规范的技术方法;严格规定每个阶段提交文档;每个阶段结束前必须进行严格的技术审查和复审。
- 缺点:软件产品交付前 用户只能通过文档了解产品,可能导致不符合需求
快速原型模型:
- 优点:通常能满足用户的真实需求;加速软件开发过程,节约软件开发成本。
- 缺点:开发者常常需要实现的折中.
增量模型:
- 优点:能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能,从而使用户有较充裕的时间学习和适应产品。
- 缺点:软件工程师必须要有较高的技术水平;开发者和用户纠缠在一起
螺旋模型:
- 优点:有利于已有软件的重用;有助于把软件质量作为软件开发的一个重要目标;减少了过多或过少测试所带来的风险;软件维护和软件开发没有本质区别
- 缺点:要求软件开发人员具有丰富的风险评估知识和经验
喷泉模型:面向对象生命周期模型,充分体现了软件开发过程迭代和平滑过渡的特性