一 什么是「软件」
-
软件(Software):一组对象或项目组成的一个「配置」,由程序、文档和数据等部分组成。
- 程序(Program):可被计算机硬件理解并执行的一组指令,提供期望的功能和性能;
- 数据(Data structure):程序能正常操纵信息的数据结构;
- 文档(Document):与程序开发、维护和使用有关的图文材料
二 「软件」的四大特征
-
复杂性
- 软件要解决的现实问题通常包含复杂的数据、状态、逻辑关系,导致了软件本身的复杂性
- 软件无法以「制造」的方式被生产,只能采用手工开发方式,这是一种人为、抽象化的智能活动(智力密集型),人类思维的不确定性导致了开发过程的复杂性。
-
不可见性
- 尚未完成的软件是不可见的,使得人们在沟通上面临极大的困难。
-
易变性
- 软件所应用的人群、法规、硬件设备、应用领域等因素汇集而成,这些因素皆会频繁快速的变化。
-
一致性
- 各子系统的接口必须协同一致,而随着时间和环境的演变,要维持这样的一致性通常十分的困难。
三 「软件危机」及其表现
软件危机(Software Crisis):计算机软件的开发和维护过程所遇到的一系列严重问题。
-
「软件危机的表现」
- 对软件开发成本和进度的估算很不准确,甚至严重拖期和超出预算;
- 无法满足用户需求,导致用户很不满意;
- 质量很不可靠,经常失效;
- 难以更改、调试和增强;
- 没有适当的文档;
- 软件成本比重上升;
- 软件开发生产率跟不上计算机应用迅速深入的趋势。
客观上:软件产品开发的复杂度和难度随软件规模呈指数级别增长
主观上:软件开发人员缺乏工程性的、系统性的方法论
由于主客观的种种原因,「软件工程」这个概念也随之提出……
四 软件工程
「软件工程」的定义有很多,这里只列出** I.Sommerville**的定义:「软件工程是用来开发、管理和维护软件产品的理论、方法和工具」
归结起来,「软件工程」是……
范围:
- 软件开发过程(设计、开发、运行、维护)
- 软件开发中遵循的原则和管理技术
- 软件开发中所采用的技术和工具
目标:
- 高质量
- 按时交付
- 控制成本
- 满足用户需求
软件开发方法学:
使用预先定义好的一组模型表示方法、良好的设计技术与原则、质量保证标准等方面来组织软件开发的过程;
-
分类:
- 结构化开发方法
- 面向对象开发方法
传统软件工程方法:结构方法
面向对象方法
软件工具与软件工程环境
工具:自动或半自动的软件支撑环境,辅助软件开发任务的完成,提高开发效率和软件质量、降低开发成本。
多个工具集成在一起,形成了软件工程开发环境CASE(Computer Aided Software Engineering),全面支持软件开发的全过程。
五 总结
软件不只是程序,还包含文档和数据等部分。随着软件规模的逐渐增大,一系列严重问题也随之被发现。为了开发出更高质量的软件,「软件工程」的概念也随之产生,软件工程提出了一系列软件开发的方法学,其中分为两种:一种是结构化的开发方法,一种是面向对象的开发方法。