• 代码基础质量实践模块设计


    摘要:把复杂的问题分解为单独的模块后,称为模块化设计。即,在设计较复杂的程序时,一般采用自顶向下的方法,将问题划分为几个部分,各个部分再进行细化,直到分解为较好解决问题为止。 一、模块化优点:提升团队的开发效益 (1)控制了程序设计的复杂性。 (2)提高了代码的重用性。 (3)易于维护和功能扩充。 (4)有利于团队开发。

     

                   在一些小型的项目当中,由于项目的关系简单,规模较小,所以有时候负责完成项目的往往是一个人或者几个人。这个时候对于模块的概念和应用显得很少,因为项目规模较小的原因,模块划分的重要性难以体现。但是,在一些大型项目中,就必须充分考虑到模块划分,因为参与项目的人数往往有很多人,同时人员变动很大。如果不充分进行模块划分的话,那么就会造成很严重的问题。这就相当于在乡下盖房子,可以自己几个人承包下来,也不需要设计图纸,只要有石匠、木匠就可以搞定。但是在城市中建设一栋高层大楼的话,就必须要有设计师来进行设计,还得有各个部门来配合才行。如果还是和乡下盖房子一样的话,那么就会引起很严重的后果。

                  把复杂的问题分解为单独的模块后,称为模块化设计。即,在设计较复杂的程序时,一般采用自顶向下的方法,将问题划分为几个部分,各个部分再进行细化,直到分解为较好解决问题为止。

           一、模块化优点:提升团队的开发效益

               (1)控制了程序设计的复杂性。

               (2)提高了代码的重用性。

               (3)易于维护和功能扩充。

               (4)有利于团队开发,使多人合作开发的分工更加明确,容易控制。

               (5)系统运行可方便地选择不同的流程。

               (6)可基于模块化设计优秀的遗留系统,方便的组装开发新的相似系统,甚至一个全新的系统。

          二、模块化的宗旨是效益,模块化设计的主要原则:

               1.相对独立性:模块完成独立的功能,与其他模块的联系应该尽可能得简单,各个模块具有相对的独立性。可以对模块单独进行设计、编码、调试、修改和存储,便于由不同的团队进行开发。

               2.互换性:模块接口标准化,容易实现模块间的互换,利于快速演进,从而使模块满足更大数量的不同产品的需要。

               3.模块的规模要适当:模块的规模不能太大,也不能太小。

               4.分解模块时要注意层次:在进行多层次任务分解时,要注意对问题进行抽象化。初期,可以只考虑大的模块,在中期,再逐步进行细化。  

               5.通用性,有利于实现横系列、纵系列产品间的模块的通用,实现跨系列产品间的模块的通用。

           三、模块划分方法

    很多人都参与过一些项目的设计,在很多项目设计过程中对于模块划分大多都是基于功能进行划分。这样划分有一个好处,由于在一个项目的设计过程中,有着诸多的需求。而很多需求都可以进行归类,根据功能需求分类的方法进行模块的划分。可以让需求在归类上得到明确的划分,而且通过功能需求进行软件的模块划分使得功能分解,任务分配等方面都有较好的分解。

    ² 按任务需求进行模块划分的主要步骤如下:

    (1)     分析系统的需求,得出需求列表;

    (2)     对需求进行归类,并划分出优先级;

    (3)     根据需求对系统进行模块分析,抽取出核心模块;

    (4)     将核心模块进行细化扩展,逐层得到各个子模块,完成模块划分。

    按照任务需求进行模块划分是一种基于面向过程的划分方法,利用面向过程的思想进行系统设计的好处是能够清晰的了解系统的开发流程。对于任务的分工、管理,系统功能接口的制定在面向过程的思想中都能够得到良好的体现。

    在很多情况下,在划分任务需求的时候,有些需求和很多个模块均有联系,这个时候,通过需求来确定模块的划分就不能够降低模块之间的耦合了。而且有些模块划分出来里面涉及的数据类型多种多样,显然这个时候根据系统所抽象出来的数据模型来进行模块划分更加有利。

    在系统进行模块划分之前,往往都会有一个数据模型的抽象过程,根据系统的特性抽象出能够代表系统的数据模型。根据数据模型来进行模块划分,可以充分降低系统之间的数据耦合度。按照数据模型进行模块的划分,降低每个模块所包含的数据复杂程度,简化数据接口设计。同时,对于数据的封装可以起到良好的作用,提高了系统的封闭性。

    抽象数据模型的模块划分方案是一种基于面向对象的思想进行的。这种思想的特点就是不以系统的需求作为模块的划分方法,而是以抽象出系统的数据对象模型的思想对模块进行划分。而利用这种思想进行模块划分的主要好处能够接近人的思维方式对问题进行划分,提高系统的可理解性,可以从较高层次上对系统进行把握!

    ² 按照数据模型进行模块划分的主要步骤如下:

    (1)     根据系统框架抽象出系统的核心数据模型;

    (2)     根据核心数据模型将系统功能细化,并将数据模型与视图等剥离,细化数据的流向;

    (3)     依据数据的流向制定模块和接口,完成模块划分。

    ² 另外,根据问题分解来模块化编程可采用以下步骤进行:

      ①   分析问题,明确需要解决的任务;

      ②   对任务进行逐步分解和细化,分成若干个子任务,每个子任务只完成部分完整功能;

      ③   确定模块之间的调用关系;

      ④   优化模块之间的调用关系;

      ⑤   在“主程序”中进行调用实现。

                     模块化程序设计的基本思想是自顶向下、逐步分解、分而治之,即将一个较大的程序按照功能分割成一些小模块,各模块相对独立、功能单一、结构清晰、接口简单。

                    在进行模块划分的时候,有很多情况下不能够清晰的把握每个模块的具体内容。往往会出于对需求归类或者数据统一的角度上对模块进行设计。这种设计理念是对的,但是如果只是单纯的从这几个方面来进行模块设计的话,那么也会导致在模块划分上出现另外一些情况。比如说设计的某一个模块,虽然数据接口统一,但是内部实现的功能非常多,单一模块的规模过大,包含的内容过多。这样设计模块会导致什么问题出现呢?

                    如果一个模块包含的内容过多,会导致程序实现难度增加,数据处理流程变得复杂,程序维护性降低,出错范围不易确定等情况的出现。同时,由于模块实现的功能丰富,则必然会导致接口也变得繁多,那么与其他模块之间的独立性就得不到保证。而且,一个模块包含太多的内容也会给人一种一团乱糟糟的感觉,严重影响对程序的理解。

                    在设计模块的时候,需要遵循每个模块功能单一、接口简单、结构精简的原则。对每个模块的设计确保该模块的规模不要太大,接口尽量的单一简化。这样的话,虽然可能会导致模块的数量上比较多,但是能够确保模块的独立性,而且不会影响系统的整体的框架结构。关于模块内部的具体实现和接口设计将在下一部分进行讲解。

    下例供大家讨论:
     
     

     

  • 相关阅读:
    第一次MVC记录
    Treeview绑定以及添加多选功能
    BindingSource的使用
    WPF实现环(圆)形进度条
    WPF实现环(圆)形菜单
    WPF实现音乐字幕动画
    WPF加载高德地图
    WPF实现Android(3D)菜单翻转动画
    WPF实现头像裁剪
    WPF PointAnimationUsingKeyFrames 动画
  • 原文地址:https://www.cnblogs.com/gongxianjin/p/16420456.html
Copyright © 2020-2023  润新知