软件工程简介
* 此篇博客为人民邮电出版社《软件测试技术大全》一书的阅读摘抄, 详情请阅读正版书籍
什么是软件工程
软件工程是每一位从事软件行业的人都需要了解的内容, 软件生产想要摆脱对个体的依赖, 则必须遵循一定的软件工程思想, 设法提高软件的生产率和软件质量
随着软件工程学科的发展, 人们对计算机软件的认识逐渐深入, 软件工作的范围不仅仅是局限在程序编写, 而是扩展到了整个软件生命周期, 如软件基本概念的形成丶需求分析丶设计丶 实现 丶 测试丶安装部署丶运行维护, 直到软件被更新和替换新的版本.
软件工程还包括很多技术性的管理工作, 例如过程管理, 产品管理, 资源管理和质量管理, 在这些方面也逐步地建立起了标准或规范
软件的生命周期
如果把软件看成是有生命的事物,那么软件的生命周期可以分成6个阶段,即
计划-需求分析-设计-编码-测试-运行维护 如图所示
各种软件工程思想, 软件开发模式都是基于这6个基本的阶段来设计的,
软件工程贯穿软件生命周期的各个阶段, 是一门专门研究工程化方法购进和维护有效的丶实用的和高质量软件的学科
软件工程的研究领域
软件工程研究的领域涉及软件的方方面面, 至少包括人员管理,项目管理,可行性分析,需求分析,系统设计,程序设计和编码,测试,质量管理和配置管理等,
每一个方面都有很多专家学者在研究,包括技术,工具,方法等,, 并且在实际应用总结出来很多的'最佳实践'',可以让很多软件企业参考和借鉴
软件工程的发展历史
软件工程化概念的提出
20时机60您带, "软件危机"就已经出现, 针对"软件危机", 人们提出了软件工程化的概念, 软件工程的概念首次出现在1968年的NATO(北大西洋公约组织)会议上
这一时期主要提出了著名的"瀑布模型", 而软件测试最晚瀑布模型中的一个独立阶段出现, 也受到了人们对广泛关注, 随后的软件开发主要以结构化的分析和设计,结构化的编码和测试为特征
"软件工厂"
20世纪70年代初,"软件工厂"的概念也出现了, 主要围绕软件过程和软件复用展开研究, 使软件工厂思想得到进一步的深化和提高
这一时期主要提出了"面向对象"的编程思想, 软件测试在这一阶段有了新的挑战, 尤其是单元测试方法的改变
软件过程的管理
软件不是一个人研发出来的, 而是一大帮人一起研发出来的, 因此需要沟通,协作, 因此需要大家遵循一定的流程和做事的方式, 这就是"软件过程"
著名的"瀑布模型"尝试从软件的过程角度解决"软件危机", 认为只要把软件生命周期按严格的阶段划分之后就能实现软件开发过程的工程化
分析 → 设计 → 编码 → 测试 → 维护
事实证明这种简单的阶段划分并不能完美的解决软件工程化的问题, 因此后来人们又陆续提出了快速原型法丶螺旋模型丶喷泉模型等对"瀑布式"生命周期模型进行补充
软件工程发展的新趋势
近年来,敏捷开发成为一颗软件工程耀眼的新星, 正在受到越来越多的人的注目, 敏捷模式强调"轻量级"的以人为中心的开发方式
软件工程的目的
人们经常讨论软件工程, 经常比较各种软件工程模型的优劣, 各种新的软件工程模型也层出不穷, 但是人们好像忘记了软件工程的目的是什么, 有些公司盲目的套用软件工程的模型, 结果导致项目的滞后, 甚至失败
软件工程的目的是提高软件的质量和生产率, 最终实现软件的工业化生产, 采用软件工程模型的目的是为了确保项目成功, 并且是每次都成功, 而一个项目的成败, 是由成本, 进度, 质量 三者共同决定的''
无论是哪一种软件工程模型, 都必须充分考虑这3个方面, 并且要考虑如何协调者3个方面, 使其搭配达到最佳的平衡点
- 成本: 主要考虑项目的开销, 包括人员成本, 工具成本, 设备成本, 错误成本等, 所谓错误成本是指软件生产过程中由于错误的产生导致的手绘,返工等成本, 某些软件还需要考虑到时长营销成本等
- 进度: 主要是通过时间上的控制, 如何在规定的时间范围内完成一个令顾客满意的软件产品, 是每个项目的首要挑战
- 质量: 主要考虑软件对顾客需求的满足程度, 一个低质量的软件, 即使生产成本很低,进度控制良好,顾客也很难接受,因此,质量是软件产品的生命线