`
liuwei1981
  • 浏览: 752593 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:156173
社区版块
存档分类
最新评论

让设计指导而不是操纵开发

阅读更多

设计文档与代码实现到底如何才能平衡,设计文档到底有多详细才可以进行代码级别的实现?

 

经历过比较正规的大型软件项目,也参与过开发过程简陋到极致的小型软件项目。对文档的要求是完全不同的。

 

小项目因为工期非常紧张,且客户要求也不多,最后只要有可以正常运行的软件系统即可。项目验收也就是一顿酒席罢了,能省则省,别说文档,甚至源代码都不做任何要求。最多要求有一个操作手册,也好给上级领导交差。

 

正规的大型项目则不同了。对文档要求极为严格,在完成系统的试运行后,进行系统项目的验收,就是主要把精力放在文档的处理上了。各类软件工程文档自不必说,还有各种的项目报告,客户独特要求的文档,移交项目内容清单等等,五花八门,种类繁多,在最后验收阶段,全员皆兵,参与到文档的编写修改洪流当中去了。

 

那么在软件项目开发正式开始前,文档的编写到底需要到什么程度,设计文档到底需要详细到什么程度呢。

 

首先需求文档必须有,也就是需求调研过程决不能跳过。正规的软件项目,需求文档必须完整且通过双方的确认,这是软件项目的基石。虽然总是说,客户的需求不会是一成不变的,需要适应变化,但是实际上项目工期、成本的压力,是绝不容许客户在软件项目开发周期内,随意的变更软件需求的。即使有,也得在需求说明的基础上,有限制的改动,前提是决不能变动了整体软件项目需求文档的基础内容。如果出现颠覆性的变化,只能看是前期需求分析人员的失误呢?还是客户在软件项目理解上出现了根本性的失误,再来决定最后项目的走向了。

 

需求文档也是最后项目验收的基准。在最后验收的时候,软件功能到底完成了没有,完成了多少,是否符合用户的业务需要,性能上是否符合要求,都是依据需求文档来的。一旦双方对软件的结果产生的分歧,最终都会以需求文档作为依据。

 

下来就该是设计文档了。设计文档的编写都是依据于需求文档的。很多时候需求分析以及编写人员,和系统设计以及文档编写人员不是一批人,当然如果是一批人是最好的。即使不是,在进行设计的时候,一定要对需求文档认真阅读,对客户的业务认真理解分析,保证得到正确的设计结果。

 

概要设计文档要保证软件子系统的划分、系统组织结构的划分、整体系统数据流、业务过程的设计的正确性,要以软件实现的角度对客户业务过程完整准确的实现。这点是非常重要的。

 

设计文档,先不讨论它的详细程度,更重要的是,好的设计应该是正确的,而不是精确的。

 

就拿我参与过的一个软件项目来说,当时直接参与到软件项目的开发过程中,对项目整体上还没有什么认识,只是简单的对自己负责开发的模块进行了分析理解,就开始编码,倒是也很顺利的完成了编码工作,也完全符合设计文档的要求。

 

但是就在一个基本业务功能子系统完成之后,在客户确认时候,去遭到了客户的否定。认为该业务功能中,数据处理的业务流程,完全不符合客户提出的需求。于是整个的开发完全终止了下来。

 

代码的实现是完全依照设计文档的,那么到底是设计过程出现问题,还是需求分析调研过程出了问题?

 

既然软件开发停止了,大家的精力都放在了系统功能需求设计和分析文档的阅读理解上,来看倒是是设计过程出现了失误,还是需求分析过程中对客户的业务理解就出现了偏差了。

 

一开始看,系统业务数据结构设计基本上没有什么问题,都是照着客户的业务表单来的。主要是业务功能的业务流程出现了问题,无法应用到用户日常业务的处理中。是这样的,用户的业务数据分为几大类,每天各个部门都需要将业务数据上报到上级单位,进行最后的审核与汇总。

 

但是就是这个上报的方式与时间点,出现了问题。在设计的时候,只是简单的将几类业务数据按照下级单位进行归类处理,统一每天进行上报。

 

但是实际上,这些业务数据上报时间点是不一致的。有的是每天上报一次,有的是每小时上报一次,有的是按照三班倒,每班上报一次。

 

这下就问题大了,不仅业务流程设置上需要调整,整体的业务数据结构也无法应对该业务需要,需要非常大的改动。

 

拿设计文档与需求文档来比较,基本上都对应的上,难道是需求分析过程出现了问题,当时没有深入研究,导致对这个业务点没有任何说明?需求文档的重点放在了业务数据内容与组成结构的描述上了。但是在业务功能说明之前,已经比较醒目的说明了各类业务数据上报时间点的不同了。但是设计的时候,完全忽略了这一点,简单粗暴的以一种方式来对待。

 

最终结果自然是设计的失误,只得重新进行数据库的设计,导致已经开发出的软件完全不符合要求,完全丢弃,重新进行开发。导致最后项目的开发周期超期了。

 

现在返回来看那份设计文档,不可谓不详细,不精确,已经详细到具体业务字段,业务流程实现设计,甚至页面的设计布局,但是这么精确的文档,最终导致了项目的返工和延期,就是因为它只是详细精确的,但却不是正确的。

 

设计满足实现即可,不必过于详细。

 

设计文档给予需求文档。客户的需求在整个软件开发过程中谁也保证不会发生变化,所以,需求的变化必然会导致设计的变化,最终导致代码实现的变化。

 

基于以上原因,我们要保证的是需求分析与设计的结果是正确的,就可以了。只要设计文档可以满足开发的要求,就可以进行开发了。最后开发的结果及时反馈客户,以客户的反馈为标杆,进行功能开发的完善变更。毕竟很现实的情况是,开发工期都很紧张,用户急于看到软件的实现结果,没有那么多的时间用来进行详细设计文档的编写,与客户的沟通互动更为重要。

 

如果设计文档非常详细,但是却和最终实现软件代码对不上,那还不如没有。

 

有个取巧的办法,在软件得到确认后,以软件的最终实现结果来完成详细设计文档的编写,这点是用来完成软件项目验收的,实际上对软件的开发实现没有什么大的帮助。

 

 

0
3
分享到:
评论

相关推荐

    【高清完整pdf】高效程序员的45个习惯 敏捷开发修炼之道

    11. 让设计指导而不是操纵开发 12. 合理地使用技术 13. 保持可以发布 14. 提早集成,频繁集成 15. 提早实现自动化部署 16. 使用演示获得频繁反馈 17. 使用短迭代,增量发布 18. 固定的价格就意味着背叛承诺 第5章 ...

    汽车智能制动系统操纵机构设计与分析.pdf

    汽车智能制动系统操纵机构设计与分析.pdf

    学生成绩管理系统 visualstudio开发工具

    经过分析如此情况,我们使用Microsoft公司的visualstudio开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统...

    BBS论坛管理系统 需求分析 详细设计 系统分析

    1可行性研究分析 ...我在教师的指导下实习过很多项目的开发,具备一定的系统分析与设计能力,熟悉数据库的设计与操纵;指导老师多年从事数据库的教学与研究工作,因而该系统的实现在技术上是可行的。

    Visual LISP应用程序开发指南——利用AP-API开发高效应用程序.pdf

    3.3 不是为了嵌套而嵌套 44 3.4 隐藏对话框 46 3.5 在对话框中显示幻灯片 47 3.6 获得字符串 49 3.7 获得整型数 52 3.8 获得实数 55 3.9 复选框和单选按钮 57 3.10 列表框和弹出式列表 60 第4章 用activex ...

    java程序设计实验指导代码

    相关内容见《java程序设计实验指导》 清华大学出版社出版 第1章 Java语言概述和开发环境 1.1 预备知识 1.2 实验1 JDK 5.0路径设置 1.3 实验2 在DOS环境下编译和运行Application和Applet程序 1.4 实验3 在JBuilder...

    Delphi5开发人员指南

    5.5.1 消息处理:不是无约定的 118 5.5.2 对Result域赋值 119 5.5.3 TApplication的OnMessage事件 119 5.6 发送自己的消息 120 5.6.1 Perform() 120 5.6.2 sendMessage()和PostMessage() 120 5.7 非标准的消息 121 ...

    数据库原理实验指导书

    4. 小型数据库应用系统开发,综合型实验,通过此实验掌握数据库开发的基本步骤,通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,进一步了解和掌握本书中所讲解的内容。 本指导书旨在给出一个...

    D5开发人员指南-07卷

    33.2.6 TDataModule操纵数据访问 组件的事件 1153 33.3 设计用户界面 1153 33.3.1 TMainForm:应用程序的主窗 体 1154 33.3.2 TCustomerForm:客户输入 1158 33.3.3 TPartsForm: 货物输入 1161 33.3.4 TSalesForm:...

    C#.NET开发者指南计算机专业毕业设计外文翻译-中英文对照.docx

    C#.NET Web开发指导的重点不是教你C#语言的核心内容,而是提供代码实例来帮助你使用.NET框架类库的功能。基础类库的.NET框架集合覆盖了大量API。尽管不可能在一本书中包含所有的特征,但是本书中包含了其中的关键...

    设计学生学籍管理系统

    如何运用Pb9.0设计学生学籍管理系统 海盐县澉浦中学 贺剑夫 内容提要 学生学籍管理工作是学校管理工作的重要组成部分,现在相当一部分学校...7、康博创作室 《PowerBuilder6.0使用及开发指南》 人民邮电出版社 1999年

    分布式驱动电动汽车操纵性改善控制策略设计.pdf

    #资源达人分享计划#

    WPF開發指南、说明

    Windows Presentation ...XAML/代码隐藏模型使设计人员和开发人员可使用诸如 Expression“Sparkle”这样的工具以及第三方专家工具(包括 ZAM 3D 和 Mobiform Aurora),相互协作来完成客户端应用程序的设计和开发。

    C++Builder_5开发人员指南

    声明:此书全文压缩后20多M,所以只能分成3份传 本书阐述中、高级开发主题,如创建客户/服务器数据库应用程序,...组件几乎可以是任何一个你在设计时要操纵的元素。从V C L类库现有的类派生出一个新类可创建组件。

    家庭理财信息管理系统.doc

    通过本次的工程开发,我提高了软件开发的能力,学习新的一门语言的编程技巧,提高工作设计思想,通过与指导老师交流,从中学习知识吸取经验,在技术和软件思想上同时得到锻炼和提高,从而使总体水平升到一个新的高度...

    html5 权威指南 最新版

    《HTML5 权威指南》是系统学习网页设计的权威参考图书。本书分为五部分:第一部分介绍学习本书的预备知识和HTML、CSS 和JavaScript 的最新进展;第二部分讨论HTML 元素,并详细说明了HTML5中新增和修改的元素;第三...

    C++Builder_5开发人员指南03

    本书包括五个部分: 第一部分“使用C + + B u i l d e r编程”,阐述如何创建一般的C + + B u i l d e r应用程序...组件几乎可以是任何一个你在设计时要操纵的元素。从V C L类库现有的类派生出一个新类可创建组件。

    java-ee电子商城系统课程设计.doc

    青 岛 工 学 院 Java EE开发与应用课程设计报告 电子商城系统 组长 xxxxxxx学号 xxxxxxxxxxxxx 组员 xxxxxxx 学号 xxxxxxxxxxxxxx 组员 xxxxxxx 学号 xxxxxxxxxxxxxx 指导教师 ________ xxxxxxxxx___________ 学 院 ...

    数据库应用系统设计报告-(2).doc

    《数据库应用系统》 课程设计报告 专业 计算机科学与技术 班级 (1)班 姓名 学号 指导老师 河海大学文天学院 2014年10月 1. 引言 通过学习第二章的全部内容,总结概括抽象数据库的关键技术。课程设计的目的就 是...

    关系数据库设计.doc

    在1985年,Codd 博士发布了12条规则,这些规则简明的定义出一个关系型数据库的理念,它们被作为所 有关系数据库系统的设计指导性方针。 1. 信息法则?关系数据库中的所有信息都用唯一的一种方式表示——表中的值。 2....

Global site tag (gtag.js) - Google Analytics