一:出现
从上世纪60年代后期开始,出现了许多软件工程方法,其中最具影响的是结构化方法、面向对象方法、形式化方法。
二:软件工程基本原理
1. 用分阶段的生命周期计划严格管理
2. 坚持进行阶段评审
3. 实行严格的产品控制
4. 采纳现代程序设计技术
5. 结果应能清楚地审查
6. 开发组织的人员应少而精
7. 承认不断改进软件工程实践的必要性
三:软件工程知识体系
四:软件工程方法学
通常将软件开发全过程中使用的一整套技术方法的集合称为方法学(methedology),也称为范型(paradigm)。软件工程方法学包含3个要素:方法、工具和过程。
方法:完成软件开发的各项任务的技术方法,解决“怎样做”的问题,是软件工程学科的核心内容;
工具:为运用方法而提供的自动的或半自动的软件工程支撑环境;
过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
1、结构化方法
也称为生命周期方法学或结构化范型。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后采用结构化技术来完成每个阶段的任务。
(1)结构化方法的优点
每个阶段的任务相对独立且简单,便于不同人员分工协作,从而降低了整个软件开发工程的困难程度;每个阶段都采用科学的管理技术和良好的技术方法,而且在每个阶段结之前都从技术和管理两个角度进行严格的审查,合格之后才开始下一阶段的工作。不仅大大提高了软件开发的成功率,而且也提高了软件开发的生产率。
(2)结构化方法的缺点
由于结构化方法要么面向行为,要么面向数据,缺乏使两者有机结合的机制,对于软件规模较大,或者对软件的需求不明确或用户提出新要求时,使用结构化方法开发软件成功率较低。此外,采用这种方法开发的软件可重用程度低,造成软件很难维护,这是一个严重的弊端。
2、面向对象方法
面向对象方法是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。它把数据和行为看成同等重要。面向对象方法学是以面向对象技术为核心,利用类的继承等复用方式,通过逐步细化地建立对象模型,以及迭代和演化的步骤完成软件开发的模式。
概括地说,面向对象方法学具有下述4个要点。
(1)把对象(Object)作为融合了数据及在数据上的操作行为的统一的软件构件。
(2)把所有对象都划分成类(Class)。
(3)按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。
(4)对象彼此间只能通过发送消息互相联系。
采用了面向对象的技术,降低了软件产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作。面向对象方法特有的继承性,进一步提高了面向对象软件的可重用性。
在开发大型软件产品时,人们常常使用面向对象方法。把一个大型软件产品分解成一系列本质上相互独立的小产品来处理,这就不仅降低了开发的技术难度,而且也使得对开发工作的管理变得容易多了。
2、形式化方法
根据形式化的程度,可以将软件工程方法划分为非形式化、半形式化和形式化三种。形式化方法是一种基于形式化数学变换的软件开发方法,它可将系统的规格说明转换为可执行的程序。形式化方法有很多种,如有穷状态机、Petri网和Z语言等。
形式化方法的优点,形式化的规格说明可以用数学方法研究和验证。用数学语言能够解决规格说明的二义性问题,提高其精确性;数学提供了确认手段,使得证明和验证软件程序满足用户和系统的需求成为可能。
但是,由于大多数形式化的规格说明主要关注于系统的功能和数据,因此,对问题的时序、控制和行为等方面的需求很难表示。除此之外,只有极少数程序员具有应用形式化方法的背景,这就需要投入大量资金进行培训。
尽管使用形式化规格说明技术是进行软件产品开发时软件工程方法学的趋势,但是,目前形式化方法还没有在软件产业界广泛使用。 目前使用最广泛的软件工程方法学,仍然是结构化方法学和面向对象方法学。