zoukankan      html  css  js  c++  java
  • 怎样写具体设计文档

    怎样写具体设计文档是一个非常头疼的话题,简单的说是需求文档的升华,也能够说是开发者开发程序的根据,当然根据具体设计文档的粒度进行。好的具体设计文档是需求人员和开发者之间的桥梁,只是眼下好多程序开发都是先开发后,然后为了应付审核,公司制度,文档规范,开发完毕后兴许补上该文档。假设这种方式,具体设计文档的的作用就忽略了。

     

    在大多数软件项目中,要末不作具体设计,要么开发完毕后再补具体设计文档,质量也不容乐观,文档与系统往往不能同步,使具体设计文档全然流于形式,对工作没有起到实际的帮助。

    那究竟应不应该写具体设计文档呢,怎么使具体设计文档起到他应有的作用呢,以下就让我们来认识一下具体设计及写具体设计文档的优点和问题。

    ·            概念

    具体设计是相对概要设计而言的,是瀑布开发流程的一个重要环节,在概要设计的高层设计的基础上,从逻辑上实现了每一模块的功能,是编码阶段的主要參考资料,是从高层到低层、逐步精化思想的具体实现。

    具体设计文档的内容包含各个模块的算法设计, 接口设计, 数据结构设计,交互设计等。必须写清楚各个模块/接口/公共对象的定义,列明各个模块程序的各种执行条件与期望的执行效果,还要正确处理各种可能的异常。

    ·       目的

    在开发过程中,由需求及设计不对、不完整所导致的问题是项目进度迟延、失败的一个主要因素,而软件系统的一个重要特性就是需求和设计的不断构建和改进,在写具体设计文档过程中, 具体设计实际上是对系统的一次逻辑构建,能够有效验证需求的完整性及正确性。

    假设不写具体设计文档,一般就从概设直接进入编码阶段,这时开发者所能參考的资料就是需求规格说明书及页面原型、数据库设计等,不能直接进行开发,须要进行信息的沟通,把页面原型不能体现的设计讲清楚,这样既easy遗忘,也easy发生故障,具体设计文档能够作为需求人员、总体设计人员与开发者的沟通工具,把静态页面无法体现的设计体现出来,包括总体设计对模块设计的规范,体现对设计上的一些决策,比如选用的算法,对一些关键问题的设计考虑等等,使开发者能高速进入开发,提高沟通效率,降低沟通问题。


           对于系统功能的调整,后期的维护,详设文档提供了模块设计上的考虑、决策,包含模块与总体设计的关系、模块所引用的数据库设计、重要操作的处理流程、重要的业务规则实现设计等等信息,提供了对模块设计的概述性信息,阐明了模块设计上的决策,配合代码凝视,能够相对轻松读懂原有设计。

    ·             问题

    要由专门的人写,是比較麻烦的,也是非常须要时间的,会对进度造成压力,也easy形成工作瓶颈,使设计人员负担过重,而开发者无事可作。对于如今一般的以数据库为中心的管理系统而言,这个工作始终是要作的,差别仅仅只是是不是形成专门文档,形成文档可能会多花一两周时间,但相对于规避的风险和问题来说,也是值得的,另外因为如今高级语言的流行,所以更具体的设计应该直接体如今代码的设计上,而文档则仅仅体现设计上的一些决策,协调总体设计与模块设计的关系,把页面原型所不能体现的设计情况文档化,所以所花费的时间是有限的。

    设计内容easy过细,但设计阶段是不能考虑特别清楚地,时间也不同意。 
     
    对于这个问题,一个对策是上边所提到的,文档仅仅体现设计上的决策,页面原型所不能反映的信息,具体设计仅仅体现整体设计对模块设计的一些考虑,比如对功能的数据库设计等等,而具体的实现实现,则到代码中再去实现,相关的设计也仅体如今代码中。 
         
    需求、设计须要不断的被更新、构建,则设计文档须要不断的又一次调整,文档的维护须要跟上,否则文档和系统的同步就非常难得到保障了,且造成多余的工作量。文档的内easy流于形势,质量糟糕,不能成为开发者的參考手冊,一是要建立起相关制度,如有改动,先改文档,后作开发,从工作流程上切实保障文档与系统的同步,二是要规范文档质量,对文档该写什么,不该写什么,标准是什么,粒度是什么,语法应该怎样组织,有明白的标准和考虑,同一时候,建立审计文档评审、审核制度,充分保障系统的使用。

     

    ·           步骤

    以下讨论怎样写出一个符合要求、有用的具体设计文档。

    首先是文档的内容,依据项目和团队的不同,具体设计文档的内容也有所不同,一般说来,粒度不宜过细,不能取代开发者的设计和思考,但要把有关设计的决策考虑进去,包含与其它模块、总体设计的关系、操作的处理流程,对业务规则的设计考虑等,有一个标准为,凡是页面原型、需求规格说明书所不能反映的设计决策,而开发者又须要了解的,都要写入文档。

           其次是文档所面向的读者,主要为模块开发者、后期维护人员,模块开发者通过具体设计文档和页面原型来了解所开发的功能,后期维护人员通过实际系统、模块代码、具体设计文档来了解一个功能。

       再有就是谁来写文档,由于文档主要考虑的是设计上的决策,所以写文档的人应该为负责、參加设计的技术经理、资深程序猿,依据团队情况和项目规模、复杂度的不同,也有所不同。

       还须要保证文档的可读性、准确性、一致性,要建立严格的文档模板及标准,保证文档的可读性及准确性,同一时候建立审核及设计评审制度,来保障设计及文档的质量,另外在工作流程中要强调,要先设计、先写文档,再进行开发。

  • 相关阅读:
    ExcelManager基于.Net的Excel读写管理类库(二)
    ExcelManager基于.Net的Excel读写管理类库(一)
    NHibernate初探!
    也谈软件工程!
    本人初学WCF ,请教一个问题
    初来咋到,今天终于在这里建起了一个家!
    c#中委托和直接函数调用用什么区别,好处和目的在哪?
    CreateThread, AfxBeginThread,_beginthread, _beginthreadex的区别
    C++线程同步
    C++中using的作用
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4366919.html
Copyright © 2011-2022 走看看