软件工程学概述
参考书籍:软件工程导论(第六版)张海藩 牟永敏编著,清华大学出版社
-
这里先明确几个定义:
软件(Software)是计算机系统中与硬件相互依存的另一部分,它是包括程序(Program) ,数据(Data)及其相关文档(Document)的完整集合。
Software = Program + Data + Document
-
程序是按事先设计的功能和性能要求执行的指令序列
-
数据是使程序能正常操纵信息的数据结构
-
文档是与程序开发,维护和使用有关的图文材料
-
-
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。几乎所有的软件都不同程度的存在着问题。概括来说,软件危机主要包含着如何开发和如何维护者两个问题。有着以下一些典型的表现:
- 对软件开发成本和进度的估计常常很不准确
- 用户对已完成的软件系统不满意
- 软件产品的质量往往靠不住
- 软件常常时不可维护的
- 没有适当的文档资料
- 软件成本在计算机系统中的占比在增高
- 软件的开发效率远不及计算机应用普及深入的趋势。
-
产生软件危机的原因一方面是与软件自身的特点有关,另一方面也和软件开发与维护的方法不正确有关。软件不同于硬件,它是不可见的,软件也不同于程序,它的规模十分庞大。这两个特点无疑增大了软件危机出现的概率。另一方面,开发过程中,还应该重视用户的需求和软件的所有配置(不仅仅是程序,还有文档等成份),不然很有可能造成后期维护成本的增加,甚至是重新开发。软件在不同阶段的时候,作出修改的代价是不同的。我们不仅仅要重视开发,还应该重视维护。
-
为了消除软件危机,我们必须先清楚的明白什么是软件,其次,对于如此规模庞大的工程,理应视为是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目,同时应该推广使用在实践中总结出来的开发软件系统的成功的技术和方法。
-
概述来说,软件工程是指导计算机软件开发和维护的一门工程学科,是从管理和技术两方面研究如何更好的开发和维护计算机软件的一门新兴学科。虽然有着不同的定义,但人们普遍认为有如下的本质特征:
- 软件工程关注于大型程序的构建
- 软件工程的中心课题是控制复杂度
- 软件经常变化
- 开发软件的效率非常重要
- 和谐地合作是开发软件的关键
- 软件必须有效的支持它是用户
- 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品
-
软件工程的基本原理:
- 用分阶段的声明周期计划严格管理
- 坚持进行阶段评审
- 实行严格的产品控制
- 采用现代程序设计技术
- 结果应能清楚地审查
- 开发小组的人员应该少而精
- 承认不断改进软件工程实践的必要性
-
通常把在软件声明周期全过程中使用的一套技术方法的集合称为方法学,也称为范型。软件工程方法学包括3各要素:方法、工具和过程。
- 传统方法学:也称为生命周期方法学或结构化范型。它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。这种方法学把软件生命周期的全过程依次分为若干个阶段,然后顺序地完成每个阶段的任务。
- 面向对象方法学:概括来说具有这样的4各要点:把对象作为融合了数据及数据上的操作行为的统一软件构件。把所有的对象都划分为类。按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。对象彼此之间只能通过发送消息互相联系。
-
概括来讲,软件声明周期由软件定义、软件开发和运行维护(也称为软件维护)三个时期组成。通常软件定义进一步划分为问题定义、可行性分析和需求分析。软件开发又分为总体设计、详细设计、单元测试和综合测试。软件维护没有进一步的划分,但是却包括着改正性维护、适应性维护、完善性维护和预防性维护。
-
软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。通常使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命周期划分成那些阶段及各个阶段的执行顺序,因此,也称为过程模型。实际从事开发工作时应该根据所承担的项目的特点来划分阶段。