软件的定义
软件=程序+数据+文档
程序:按事先设计的功能和性能需求执行的指令序列
数据:是程序正常操纵信息的数据结构
文档:与程序开发、维护和使用有关的图文材料
软件的特征
-
软件是开发的或者是工程化的,不是制造的
-
软件开发环境对产品影响大
-
软件开发时间和工作量难以估计
-
软件会多次修改
-
软件的开发进度几乎没有客观衡量标准
-
软件测试非常困难
-
软件不会磨损和老化(硬件会),但是会退化
-
软件维护易产生新的问题
-
软件生产知识简单的拷贝
软件的双重定义
一方面是一种产品
提供计算能力
产生、管理、获取、修改、显示或传输信息
另一方面时开发其他软件产品的工具
支持或直接提供系统所需功能
控制其他程序(入操作系统)
改善通信(如网络软件)
帮助开发其他软件(如软件开发工具)
等
软件危机
在计算机软件的开发和维护过程中所遇到的一系列严重问题
现状
软件成本日益增加
软件技术进步落后于需求增长
效率下降,质量下降
软硬件矛盾
不协调现象
客观原因:软件本身逻辑部件规模庞大
主观原因:
-
忽视需求分析
-
错误任务:软件开发=程序编写
-
轻视软件维护
软件工程定义
IEEE计算机协会定义
-
应用系统化的、学科化的、定量的方法,来开发、运行和维护软件,即将工程应用到软件
-
对(1)中各种方法的研究
软件工程三要素:方法、工具、过程
方法:完成软件工程项目的技术手段(结构化方法和面向对象方法)
过程:贯穿软件开发所有环节
支持软件工程的根基在于质量焦点(质量关注点)
软件工程发展
第一代软件工程——传统软件工程
第二代软件工程——对象工程
第三代软件工程——过程工程
第四代软件工程——构件工程
软件工程七个原则
确保软件产品质量和开发效率的原则最小集合
-
使用阶段性生命周期计划的管理
-
进行连续的验证
-
保证严格的产品控制
-
使用现代编程工具/工程实践
-
保持清晰的责任分配
-
用更好更少的人
-
保持过程改进