软件开发方法-软件架构设计系列之三——软件开发方法
软件架构设计系列包括软件生命周期、软件开发模型、软件开发方法、基于架构的软件开发、软件架构设计等。本文为系列之三——软件开发方法。
软件开发方法
软件开发方法有很多种分类方法。从开发风范上,可分为自顶向下和自底向上的开发方法;从性质上,可分为形式化方法和非形式化方法;从使用范围上,可分为整体性方法和局部性方法。
我们主要讲的软件开发方法是更加具体的方法:结构化方法、面向对象方法、基于构件的软件开发方法、面向服务的开发方法、基于模型的软件开发方法。
结构化方法是一种自顶向下、逐步求精,以模块化为基点,信息隐蔽、模块独立为准则的软件开发方法。分解和抽象是人们控制问题复杂性的两种基本手段。结构化方法是由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。
结构化分析方法进行需求分析,其建立的模型的核心是数据字典,围绕这个核心,有三个层次的模型,分别是数据模型、功能模型和行为模型。用实体联系图(E-R 图)表示数据模型,用数据流图(DFD) 表示功能模型,用状态转换图(STD)表示行为模型。
结构化设计包括架构设计、接口设计、数据设计和过程设计等任务。它是一种面向数据流的设计方法,是以结构化分析阶段所产生的成果为基础,进一步自顶而下、逐步求精和模块化的过程。概要设计阶段的主要任务是设计软件的结构、确定系统的模块组成,以及每个模块之间的关系。它采用模块结构图(包括模块、调用、数据)来描述程序的结构,也可以使用层次图和 HIPO(层次图加输入/处理/输出图)。
面向对象方法是面向对象的,以对象为中心,把数据封装在对象内部成为对象的属性,把面向过程的函数转为对象的行为方法,把对象抽象成为类软件开发方法,用以描述和设计、开发软件系统。面向对象方法以客观世界中的对象为中心,其分析和设计思想符合人们的思维方式,容易被人们接受。在面向对象方法中,分析和设计的界限并不明显,它们采用相同的符号表示,分析阶段可以平滑的过渡到设计阶段。客观世界中对象与对象间的关系相对稳定,因此用面向对象方法分析和设计的结果也相对比较稳定。
面向对象分析的目标是开发一系列模型,这些模型描述计算机软件,当它工作时以满足客户的需求。对象技术的流行,演化出了数十种不同的 OOA 方法,每个方法都引入了一个产品或系统分析的过程、一组过程演化的模型及使软件工程师能够以一致的方式创建每个模型的符号体系。其中比较流行的方法包括 OMT、OOA等方法。但不管哪种方法,面向对象分析的主要步骤基本是类似的,即:① 发现角色/参与者,② 发现用例,③ 建立用例模型,④ 进行领域分析,⑤ 建立对象—关系模型,⑥ 建立对象—行为模型,⑦ 建立功能模型。
OOA/OOD方法:OOA 模型中包括主题、对象类、结构、属性和服务 5 个层次,需经过标识对象类、标识结构与关联(包括继承、聚合、组合、实例化等)、划分主题、定义属性、定义服务 5 个步骤来完成整个分析工作。
OMT方法:OMT 是对象建模技术的缩写,它主要用于分析、系统设计和对象设计。包括对象模型(静态的、结构化的系统的“数据”性质,通常采用类图)、动态模型(瞬时的、行为化的系统“控制”性质,通常使用状态图)和功能模型(表示变化的系统的“功能”性质,通常使用数据流图)。
结构化分析与面向对象分析方法之间的最大差别是:结构化分析方法把系统看作一个过程的集合体,包括人完成的和电脑完成的;而面向对象方法则把系统看成一个相互影响的对象集。结构化分析方法的特点是利用数据流图来帮助人们理解问题,对问题进行分析。
基于构件的软件开发简单来说就是使用可复用的构件来开发应用程序。基于构件的软件系统中的构件可以是商用构件,也可以是通过其它途径获得的构件(如自行开发)。基于构件的软件开发将软件开发的重点从程序编写转移到了基于已有构件的组装,以更快地构造系统,减轻用来支持和升级大型系统所需要的维护负担,从而降低软件开发的费用,提高软件的开发效率和质量。
构件指的是一个独立发布的功能部分,可以通过其他接口访问他的服务。
基于构件的软件开发可以实现分析、设计、类等多层次上的重用。在分析抽象层上,重用元素有子系统、类;在设计层上重用元素有系统体系结构、子系统体系结构、设计模式、框架、容器、构件、类库、模板、抽象类等。
软件重用的形式大体可分为垂直式重用和水平式重用。
水平式重用是重用不同应用领域中的软件元素,例如数据结构、排序算法、人机界面构件等。标准函数库是一种典型的原始的水平式重用机制。
垂直式重用是在一类具有较多公共性的应用领域之间重用软件构件。垂直式重用活动的主要关键点在于领域分析:根据应用领域的特征和相似性,预测软件构件的可重用性。
模型驱动开发(MDD Model-Driven Development):一种比较新的软件开发方法——面向模型的分析设计方法。提到MDD,就不得不提到MDA,MDA(Model Driven Architecture)模型驱动架构,它是由国际对象管理组织(OMG,Object Management Group)于2001年7月提出的基于MDD方法的模型驱动架构。所谓驱动架构,其实就是把模型和具体的技术分离,实现关键业务部分的可移植性、互操作性和可重用性。由于业务和代码的解耦软件开发方法,可以更好的适应两个层次上的扩展和自适应性。技术的迭代发展和业务的变化互无影响。
MDD驱动流程:
1、由实际业务场景得出初步的领域和限界上下文(module),以及上下文之间的关系;
2、分析上下文,划分实体和值对象;
3、关联聚合实体、值对象,从而得到聚合的范畴和聚合根;
4、从聚合根设计仓储(资源库),同时设计如何创建实体和值对象;
5、应用模型并在实践中不断重构模型。