在20世纪60年代之前,当时开发的软件系统是比较小的,且相对简单。人们认为软件开发是依赖个人技巧和技术能力的。软件开发中崇尚个人技能,没有用什么方法开发,代码难以维护,问题比较多。
随后产生了多种开发方法:
(1)功能分解法(以系统需要提供的功能为中心来开发系统):
基本思想:先定义顶层功能,然后分解成子功能,同时定义功能之间的接口,一直分解到可给出明确的定义。
优点:模块化思想与模块化编程相结合,使得软件维护更加有效。
缺点:开始容易深入难,对需求变化的适应能力差。
(2)结构化方法(包括结构化需求分析,设计,编程和测试方法):
基本思想:结构化需求分析使用数据流图,加工说明和字典元素等构造系统的需求分析模型。
结构化设计在需求分析的基础上,针对给定的问题给出软件解决方案。
优点:比功能分解法更强调对问题域的分析。
缺点:实用的建模概念不能直接映射到问题域中的事物,对需求变化适应能力差等。
(3)信息建模方法:
基本思想:以实体的数据集合作为系统的构造块,即以数据结构为中心来开发软件。
优点:强调了数据的组织
缺点:对功能的处理很弱
面向对象方法是一种运用对象,类,继承,聚合,关联,消息和封装等概念和原则来构造软件系统的开发方法。
面向对象的基本原则主要有抽象,分类,封装,消息通信,多态性,行为分析和复杂性控制等。
面向对象方法优点:
(1)从认识论的角度可以看出,面向对象方法改变了开发软件的方式。
(2)面向对象语言使得从客观世界到计算机的语言鸿沟变窄。
(3)面向对象方法是分析与设计之间的鸿沟变窄。
(4)面向对象方法有助于软件的维护与复用。
(5)面向对象方法有助于提高软件的质量和生产率。