结构化方法是一种传统的软件开发方法,这种方法强调的是自顶向下、逐步求精、模块化设计、结构化编码的思想与要点。结构化软件开发方法能够说是最先的软件开发方法,同时也是到现今开发应用中比较广泛、比较成熟的软件开发方法,由结构化方法所引入的工程与结构化的思想对于软件的设计、开发与编写都有很大的影响。编程
结构化方法中自顶向下的思想将程序的设计分层,将程序的功能分解,程序变成了一种逐步向下,从概况到详细的过程。而结构化方法中的模块化设计将程序所须要的各类功能分解,将一个系统划分为若干个模块,每个模块实现本身特定的功能,模块彼此之间相互独立,经过自顶向下的层次关系来进行上下层里的调用操做。架构
下图即为结构化方法分层、分模块的示例图。模块化
结构化方法按软件生命周期划分,有结构化分析(SA),结构化设计(SD),结构化实现(SP)。 函数
结构化分析的步骤以下:测试
①分析当前的状况,作出反映当前物理模型的DFD;优化
②推导出等价的逻辑模型的DFD;编码
③设计新的逻辑系统,生成数据字典和基元描述;设计
④创建人机接口,提出可供选择的目标系统物理模型的DFD;3d
⑤肯定各类方案的成本和风险等级,据此对各类方案进行分析;调试
⑥选择一种方案;
⑦创建完整的需求规约。
结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的原理与技术。它一般与结构化分析方法衔接起来使用,以数据流图为基础获得软件的模块结构。SD方法尤为适用于变换型结构和事务型结构的目标系统。在设计过程当中,它从整个程序的结构出发,利用模块结构图表述程序模块之间的关系。结构化设计的步骤以下:
①评审和细化数据流图;
②肯定数据流图的类型;
③把数据流图映射到软件模块结构,设计出模块结构的上层;
④基于数据流图逐步分解高层模块,设计中下层模块;
⑤对模块结构进行优化,获得更为合理的软件结构;
⑥描述模块接口。
其中上述步骤中所述的DFD即指的是数据流图,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,上图就是一个图书馆管理系统的数据流图模型。
总而言之,结构化方法的基本原则就是分解原则和模块化原则,分解原则是结构化方法中最基本的原则,它是一种先整体后局部的思想原则,在构造信息系统模型时,它采用自顶向下、分层解决的方法,使得程序的思路由归纳到具体,逐渐地变得明朗清晰。模块化原则将程序分为多个模块,而且使每一个模块尽可能只执行一个功能,每一个模块之间用过程语句或函数方式等调用其余的模块。
2.面向对象方法
对比与结构化的方法,面向对象的方法则不是将程序按照功能的不一样分解开来,而是按照不一样的对象来进行分解。
在面向对象的思想里,客观世界中的事物都是对象,对象之间存在必定的关系,而且复杂对象由简单对象构成,而具备相同属性和操做的对象属于一个类,对象是类的一个实例。另外,类与类之间能够有层次结构,即类能够有子类,其中,子类继承父类的所有属性和操做,并且子类有本身的属性和操做。就好比说,动物是一个大类,鸟是动物的一种,把鸟分红一个类的话,那么鸟类就是动物类的子类,而在鸟类中有麻雀,有鹦鹉,这些都是鸟类这个笼统的类的一些实例,他们就是鸟类这个类中的对象。其实从上面的这些示例中就能够看出,在面向对象的思想中,强调充分运用人在平常逻辑思惟中常常采用的思想方法与原则,所以,面向对象方法与人的平常思惟方法十分的类似,这使得用户与编程者、测试人员都能很容易地理解整个程序的架构和运做方式。
面向对象的方法分为面向对象的分析方法(OOA)和面向对象设计(OOD)。
在用OOA具体地分析一个事物时,大体上遵循以下五个基本步骤:
①肯定问题域;
②区分类和对象;
③区分总体对象以及组成部分,肯定类的关系以及结构;
④定义属性和服务;
⑤肯定附加的系统服务。
面向对象分析方法是立足于应用,用于刻画问题,以此得出程序的整体设计结构。
OOD的方法用于细化分析结果并补充实现相关,其大体上遵循以下五个基本步骤:
①改进和完善系统分析的结果;
②设计交互过程和用户接口;
③设计任务管理,以及子系统以及任务之间的协调方式;
④设计全局资源,肯定任务或子系统的资源分配;
⑤对象设计。
面向对象的原则中还存在封装性和多态性。封装是对抽象元素的划分过程抽象,由结构和行为组成,封装用来分离抽象的原始接口和它的执行。封装使数据和加工该数据的方法封装为一个总体,以实现独立性很强的模块,使得用户只能见到对象的外特性,而对象的内特性对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者没必要知晓行为实现的细节,只须用设计者提供的消息来访问该对象。而多态性则指的是对象根据所接收的消息而作出动做。同一消息为不一样的对象接受时可产生彻底不一样的行动,这种现象称为多态性。
3.优缺点比较
结构化的方法因为其自顶向下的特性,决定了这种程序是由表及里、由大到小、由归纳到具体的程序。这样一来,处理问题的过程变得由易到难,逐层解决问题,编程的思路更加清晰,从而下降了处理问题的难度。可是,在使用结构化的方法解决问题的时候,在获得问题本质性的描述以前,不断分解出的结论和须要处理的信息愈来愈多、愈来愈复杂。由于这种逐层解决的思想,它须要对问题有比较透彻的理解,要求设计者有大局观,可以透过问题的表象抓住问题的本质。所以,当软件项目较小、系统设计者能力足够高的时候,结构化方法能快速的找到最简洁、高效率的逻辑模型。可是对于复杂的问题,结构化方法的帮助有限,但它有助于使用面向分析方法的系统分析员确认系统最初的高阶模型。
面向对象方法与人类习惯的思惟方法一致,使得使用者和维护人员都容易理解,在软件维护中可维护性也较高,而且易于测试和调试,面向对象方法直接由问题入手,来进行系统的建模。面向对象软件的稳定性好,对软件的局部进行修改时,不会引发总体的变化,并且对局部修改容易实现;另外,面向对象软件的可重用性好,而且因为它是把大的问题分解成相互独立的小问题处理,下降了开发的技术难度。可是因为面向对象方法老是试图抽象出更公用的类,所以对系统分析员抽象事物和把握最初分析方向的要求很高,经常难以控制抽象 的对象,其掌握难度高于结构化分析方法。对于需求变化频繁的系统,获得一个高度可复用的面向对象软件系统设计是很困难的事情。
结构化方法与面向对象方法并非对立的,不论哪种设计方法,都有本身的优点,固然也会有本身的劣势,对于每一个问题,须要设计者透彻理解,才能正确地找到适合当前问题的方法。