在《结构化开发方法》一课中,我们讲述了如何用结构化开发方法开发一个简单的项目案例,并重点讨论了在结构化分析和结构化设计阶段使用事件、数据流图模型、数据字典、ER模型、结构图模型完成项目的分析与设计的整个过程。
在结构化开发方法中,利用数据流图模型对系统进行层层分解,将一个大的系统分解为多个程序模块,数据流图中需要存储的信息通过ER图建立数据模型,其功能模型和数据模型是分离的,也就是说在结构化开发方法中,程序和数据是分离的。另外,程序的结构要遵循每个程序模块只有一个入口和一个出口,在程序模块内部只能采用顺序、选择、重复三种基本的控制结构。
当前主流的软件开发方法除了前面讨论的结构化开发方法外,还有面向对象开发方法。面向对象开发方法尽可能模拟人类习惯的思维方式来分析软件项目,按照现实世界的问题域来构建解决现实问题的系统。例如在《结构化开发方法》课程项目案例中,要求开发一款名片自动识别APP产品,按照人类认识一个新事务的思维方式,会把名片看作一个新的事务,名片有哪些属性(名称、职务、地址等)? 名片能做什么(交际、拓展人脉等)?就如同我们找一个新工作时,会考虑这个新工作有哪些属性(工资、工作时间、工作类型等)?这个新工作主要做什么(编写程序、销售产品等等)?
面向对象开发方法把系统看作是一起工作来完成某项任务的相互作用的事务集合,事务也称为对象。面向对象开发方法主要有面向对象分析、面向对象设计、面向对象编程三个阶段,分别对应软件开发生命周期的系统分析、系统设计、系统实施三个阶段。面向对象分析识别出系统中的所有对象以及对象之间的关系,在面向对象分析中主要使用的图形模型有用例图和类图;面向对象设计对已识别的对象进行细化,并定义出其全部属性和方法,在面向对象设计中主要使用的图形模型是类图、顺序图;面向对象编程使用具体的语言或环境来实现这些对象。
面向对象开发方法与结构化开发方法完全不同,在面向对象方法中,既没有程序和过程,也没有数据实体和文件,系统只是由对象组成。也可以这么说,面向对象开发方法中的对象是结构化开发方法中的实体、数据和程序模块的组合体,它具有属性和行为,同时可以对系统发出的消息进行响应。
面向对象开发方法采用的模型主要是UML建模语言,UML从系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、顺序图、协作图、构件图、部署图等九种图。这些图形模型从不同的侧面对系统进行描述。在实际分析和设计中,这九种图形模型不一定全部用到,常用的图形模型有用例图、类图、顺序图、部署图。