﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-大鱼-随笔分类-软件工程</title><link>http://www.blogjava.net/luluyanglu/category/48795.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 31 Oct 2011 21:14:18 GMT</lastBuildDate><pubDate>Mon, 31 Oct 2011 21:14:18 GMT</pubDate><ttl>60</ttl><item><title>需求分析报告 V 需求说明书 V 需求规格说明书的区别</title><link>http://www.blogjava.net/luluyanglu/archive/2011/10/31/362410.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Mon, 31 Oct 2011 14:20:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2011/10/31/362410.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/362410.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2011/10/31/362410.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/362410.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/362410.html</trackback:ping><description><![CDATA[<br />需求分析报告：一般是对某个市场或者是客户群来讲的，类似于调研报告，重点是体现出产品要满足哪些功能，哪些是重点、热点。 <br /><br />需求说明书：是根据与现场实际客户进行沟通，把客户的需求进行整理，CMMI中有标准的模板，我就不细说了，重点是站在客户的角度讲产品功能。 <br /><br />需求规格说明书：是从业务规则讲起的，细一点偏向于软件的概要设计。是从开发、测试的角度去讲产品功能，里面要包含原型界面、业务接口、活动图等.<img src ="http://www.blogjava.net/luluyanglu/aggbug/362410.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2011-10-31 22:20 <a href="http://www.blogjava.net/luluyanglu/archive/2011/10/31/362410.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>排序算法java版，速度排行：冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序  </title><link>http://www.blogjava.net/luluyanglu/archive/2011/10/06/360090.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Thu, 06 Oct 2011 15:34:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2011/10/06/360090.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/360090.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2011/10/06/360090.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/360090.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/360090.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 先推荐一篇关于排序算法的文章：http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html本文思路部分来源于上篇文章，但测得的结果似乎不大相同，不知是因为java的缘故还是因为我算法的缘故，欢迎拍砖。复习排序，顺便比下各种算法的速度，榜单如下：1、冒泡排序2、简单选择排序3、直接插入排序4、折半插入排序...&nbsp;&nbsp;<a href='http://www.blogjava.net/luluyanglu/archive/2011/10/06/360090.html'>阅读全文</a><img src ="http://www.blogjava.net/luluyanglu/aggbug/360090.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2011-10-06 23:34 <a href="http://www.blogjava.net/luluyanglu/archive/2011/10/06/360090.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UML 继承、实现、依赖、关联、聚合、组合的联系与区别  </title><link>http://www.blogjava.net/luluyanglu/archive/2011/10/06/360086.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Thu, 06 Oct 2011 15:15:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2011/10/06/360086.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/360086.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2011/10/06/360086.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/360086.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/360086.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em">这是一堂关于UML基础知识的补习课；现在我们做项目时间都太紧了，基本上都没有做过真正的class级别的详细设计，更别提使用UML来实现规范建模了；本篇主要就以前自己一直感觉很迷糊的几种class之间的关系进行整理，让我们在真正用UML进行比如类图设计时能够更加清晰明了；以下就分别介绍这几种关系：</p>
<p style="text-indent: 2em">继承</p>
<p style="text-indent: 2em">指的是一个类（称为子类、子接口）继承另外的一个类（称为父类、父接口）的功能，并可以增加它自己的新功能的能力，继承是类与类或者接口与接口之间最常见的关系；在Java中此类关系通过关键字extends明确标识，在设计时一般没有争议性；</p>
<p style="text-indent: 2em"><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=53a99cf30100d8xi&amp;url=http://static4.photo.sina.com.cn/orignal/53a99cf3h6b4686e239f3&amp;690" rel="nofollow"><img border="0" alt="UML 继承、实现、依赖、关联、聚合、组合的联系与区别 - xiaotot - 享受编码" src="http://img.blog.163.com/photo/LtTOT_doqBQJLrHiAouIzw==/1757811229559527893.jpg" __1317913425901__="ev_4155641983" /></a></p>
<p style="text-indent: 2em"><wbr></p>
<p style="text-indent: 2em">实现</p>
<p style="text-indent: 2em">指的是一个class类实现interface接口（可以是多个）的功能；实现是类与接口之间最常见的关系；在Java中此类关系通过关键字implements明确标识，在设计时一般没有争议性；</p>
<p style="text-indent: 2em"><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=53a99cf30100d8xi&amp;url=http://static3.photo.sina.com.cn/orignal/53a99cf3h6b46893f0762&amp;690" rel="nofollow"><img border="0" alt="UML 继承、实现、依赖、关联、聚合、组合的联系与区别 - xiaotot - 享受编码" src="http://img.blog.163.com/photo/MpQvxhCOtFrb9ViwK8fvUg==/339458821914501732.jpg" __1317913425901__="ev_5866510548" /></a></p>
<p style="text-indent: 2em"><wbr></p>
<p style="text-indent: 2em">依赖</p>
<p style="text-indent: 2em">可以简单的理解，就是一个类A使用到了另一个类B，而这种使用关系是具有偶然性的、、临时性的、非常弱的，但是B类的变化会影响到A；比如某人要过河，需要借用一条船，此时人与船之间的关系就是依赖；表现在代码层面，为类B作为参数被类A在某个method方法中使用；</p>
<p style="text-indent: 2em"><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=53a99cf30100d8xi&amp;url=http://static5.photo.sina.com.cn/orignal/53a99cf3h6b468a4256b4&amp;690" rel="nofollow"><img border="0" alt="UML 继承、实现、依赖、关联、聚合、组合的联系与区别 - xiaotot - 享受编码" src="http://img.blog.163.com/photo/t4TzLaEOtM4DL0CL-s5B-A==/339458821914501733.jpg" __1317913425901__="ev_6711928952" /></a></p>
<p style="text-indent: 2em"><wbr></p>
<p style="text-indent: 2em">关联</p>
<p style="text-indent: 2em">他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系，比如我和我的朋友；这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的，一般是长期性的，而且双方的关系一般是平等的、关联可以是单向、双向的；表现在代码层面，为被关联类B以类属性的形式出现在关联类A中，也可能是关联类A引用了一个类型为被关联类B的全局变量；</p>
<p style="text-indent: 2em"><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=53a99cf30100d8xi&amp;url=http://static15.photo.sina.com.cn/orignal/53a99cf3h6b468c1c1cde&amp;690" rel="nofollow"><img border="0" alt="UML 继承、实现、依赖、关联、聚合、组合的联系与区别 - xiaotot - 享受编码" src="http://img.blog.163.com/photo/DUq8n7zoEedD__TreLl2sQ==/339458821914501734.jpg" __1317913425901__="ev_4906082611" /></a></p>
<p style="text-indent: 2em"><wbr></p>
<p style="text-indent: 2em"><wbr></p>
<p style="text-indent: 2em">聚合</p>
<p style="text-indent: 2em">聚合是关联关系的一种特例，他体现的是整体与部分、拥有的关系，即has-a的关系，此时整体与部分之间是可分离的，他们可以具有各自的生命周期，部分可以属于多个整体对象，也可以为多个整体对象共享；比如计算机与CPU、公司与员工的关系等；表现在代码层面，和关联关系是一致的，只能从语义级别来区分；</p>
<p style="text-indent: 2em"><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=53a99cf30100d8xi&amp;url=http://static12.photo.sina.com.cn/orignal/53a99cf3h6b468eaaa3db&amp;690" rel="nofollow"><img border="0" alt="UML 继承、实现、依赖、关联、聚合、组合的联系与区别 - xiaotot - 享受编码" src="http://img.blog.163.com/photo/w_PRcxfR4vIqzXNk5Av2NQ==/339458821914501735.jpg" __1317913425901__="ev_3604638093" /></a></p>
<p style="text-indent: 2em"><wbr></p>
<p style="text-indent: 2em">组合</p>
<p style="text-indent: 2em">组合也是关联关系的一种特例，他体现的是一种contains-a的关系，这种关系比聚合更强，也称为强聚合；他同样体现整体与部分间的关系，但此时整体与部分是不可分的，整体的生命周期结束也就意味着部分的生命周期结束；比如你和你的大脑；表现在代码层面，和关联关系是一致的，只能从语义级别来区分；</p>
<p style="text-indent: 2em"><a href="http://photo.blog.sina.com.cn/showpic.html#blogid=53a99cf30100d8xi&amp;url=http://static10.photo.sina.com.cn/orignal/53a99cf3h6b469023a269&amp;690" rel="nofollow"><img border="0" alt="UML 继承、实现、依赖、关联、聚合、组合的联系与区别 - xiaotot - 享受编码" src="http://img.blog.163.com/photo/nvZMBdt39hK6Bx_iSx1Txw==/339458821914501736.jpg" __1317913425901__="ev_9272367795" /></a></p>
<p style="text-indent: 2em"><wbr></p>
<p style="text-indent: 2em">对于继承、实现这两种关系没多少疑问，他们体现的是一种类与类、或者类与接口间的纵向关系；其他的四者关系则体现的是类与类、或者类与接口间的引用、横向关系，是比较难区分的，有很多事物间的关系要想准备定位是很难的，前面也提到，这几种关系都是语义级别的，所以从代码层面并不能完全区分各种关系；但总的来说，后几种关系所表现的强弱程度依次为：组合&gt;聚合&gt;关联&gt;依赖</p><img src ="http://www.blogjava.net/luluyanglu/aggbug/360086.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2011-10-06 23:15 <a href="http://www.blogjava.net/luluyanglu/archive/2011/10/06/360086.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>必须知道的业务系统简称  </title><link>http://www.blogjava.net/luluyanglu/archive/2011/10/06/360087.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Thu, 06 Oct 2011 15:15:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2011/10/06/360087.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/360087.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2011/10/06/360087.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/360087.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/360087.html</trackback:ping><description><![CDATA[<p>ERP ：Enterprise Resource Planning 企业资源计划</p>
<p>&nbsp;</p>
<p>CRP：Capacity Requirment Planning 能力需求计划</p>
<p>&nbsp;</p>
<p>MRP：Materials Requirement Planning 物料需求计划</p>
<p>&nbsp;</p>
<p>CRM：Customer Relationship Management 客户关系管理</p>
<p>&nbsp;</p>
<p>ERM：Enterprise Relationship Management 企业关系管理</p>
<p>&nbsp;</p>
<p>SCM：Supply Chain Management 供应链管理</p>
<p>&nbsp;</p>
<p>ESB：Enterprise Services Bus 企业服务总线</p><img src ="http://www.blogjava.net/luluyanglu/aggbug/360087.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2011-10-06 23:15 <a href="http://www.blogjava.net/luluyanglu/archive/2011/10/06/360087.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件开发文档基本知识</title><link>http://www.blogjava.net/luluyanglu/archive/2011/06/06/351825.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Mon, 06 Jun 2011 12:39:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2011/06/06/351825.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/351825.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2011/06/06/351825.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/351825.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/351825.html</trackback:ping><description><![CDATA[如今，软件开发越来越复杂，软件功能也越来越丰富。而几乎所有成熟的商业软件，都是靠一个开发团队齐心协力的血汗结晶。&#8220;罗马不是一天建成的！&#8221;，当我们震撼于 Microsoft Windows 的惊世巨著的同时，也道听途说了微软公司软件工程是如何的完善规范。的确，集数百名员工几年的共同努力之大成，软件项目管理的成败是控制开发成本的关键环节。这里面，少不了贯穿其中的重要步骤 ---- 软件文档。 
<p class="textbody-c2">软件文档可以分为开发文档和产品文档两大类。 
<p class="textbody-c2">开发文档包括：《功能要求》、《投标方案》、《需求分析》、《技术分析》、《系统分析》、《数据库文档》、《功能函数文档》、《界面文档》、《编译手册》、《 QA 文档》、《项目总结》等。 
<p class="textbody-c2">产品文档包括：《产品简介》、《产品演示》、《疑问解答》、《功能介绍》、 《技术白皮书》、《评测报告》、《安装手册》、《使用手册》、《维护手册》、 《用户报告》、《销售培训》等。 
<p class="textbody-c2">一、开发文档 
<p class="textbody-c2">1. 《功能要求》 -- 来源于客户要求和市场调查，是软件开发中最早期的一个环节。客户提出一个模糊的功能概念，或者要求解决一个实际问题，或者参照同类软件的一个功能。有软件经验的客户还会提供比较详细的技术规范书，把他们的要求全部列表书写在文档中，必要时加以图表解说。这份文档是需求分析的基础。 
<p class="textbody-c2">2. 《投标方案》 -- 根据用户的功能要求，经过与招标方沟通和确认，技术人员开始书写《投标方案》，方案书一般包括以下几个重要的章节： 
<p class="textbody-c2">前言 -- 项目背景、公司背景和业务、技术人员结构、公司的成功案例介绍等。 
<p class="textbody-c2">需求分析 -- 项目要求、软件结构、功能列表、功能描述、注意事项等。 
<p class="textbody-c2">技术方案 -- 总体要求和指导思想、技术解决方案、软件开发平台、网络结构体系等。 
<p class="textbody-c2">项目管理 -- 描述公司的软件开发流程、工程实施服务、组织和人员分工、开发进度控制、软件质量保证、项目验收和人员培训、软件资料文档等。 
<p class="textbody-c2">技术支持 -- 公司的技术支持和服务介绍、服务宗旨和目标、服务级别和响应时间、技术服务区域、技术服务期限、授权用户联系人等。 
<p class="textbody-c2">系统报价 -- 软、硬件平台报价列表、软件开发费用、系统维护费用等。 
<p class="textbody-c2">项目进度 -- 整个项目的进度计划，包括签署合同、项目启动、需求分析、系统分析、程序开发、测试维护、系统集成、用户验收、用户培训等步骤的时间规划。 
<p class="textbody-c2">3. 《需求分析》 -- 包括产品概述、主要概念、操作流程、功能列表和解说、注意事项、系统环境等。以《功能要求》为基础，进行详细的功能分析 ( 包括客户提出的要求和根据开发经验建议的功能 ) ，列出本产品是什么，有什么特殊的概念，包括那些功能分类，需要具备什么功能，该功能的操作如何，实现的时候该注意什么细节，客户有什么要求，系统运行环境的要求等。这里的功能描述跟以后的使用手册是一致的。</p>
<p class="textbody-c2">4. 《技术分析》 -- 包括技术选型、技术比较、开发人员、关键技术问题的解决、技术风险、技术升级方向、技术方案评价，竞争对手技术分析等。以《需求分析》为基础，进行详细的技术分析 ( 产品的性能和实现方法 ) ，列出本项目需要使用什么技术方案，为什么，有哪些技术问题要解决 ，估计开发期间会碰到什么困难，技术方案以后如何升级，对本项目的技术有什么评价等。</p>
<p class="textbody-c2">5. 《系统分析》 -- 包括功能实现、模块组成、功能流程图、函数接口、数据字典、软件开发需要考虑的各种问题等。以《需求分析》为基础，进行详细的系统分析 ( 产品的开发和实现方法 ) ，估计开发期间需要把什么问题说明白，程序员根据《系统分析》，开始在项目主管的带领下进行编码。</p>
<p class="textbody-c2">6. 《数据库文档》 -- 包括数据库名称、表名、字段名、字段类型、字段说明、备注、字段数值计算公式等。以《系统分析》为基础，进行详细的数据库设计。必要时可以用图表解说，特别是关系数据库。</p>
<p class="textbody-c2">7. 《功能函数文档》 -- 包括变量名、变量初植、功能，函数名，参数，如何调用、备注、注意事项等。以《系统分析》为基础，进行详细的说明，列出哪个功能涉及多少个函数，以便以后程序员修改、接手和扩展。 </p>
<p class="textbody-c2">8. 《界面文档》 -- 包括软件外观、界面素材、编辑工具、文件名、菜单、按钮和其它界面部件的要求，这里与软件完成后的运行界面是一致的。 </p>
<p class="textbody-c2">9. 《编译手册》 -- 包括服务器编译环境、操作系统、编译工具、 GNU 的 C++ 编译器版本信息、目录说明、程序生成、源程序文件列表、 Makefile 配置及其相关程序的对应关系列表。客户端的编译过程、编译结果、编译示例、编译环境、操作系统、编译工具、源文件列表和制作安装程序的过程。 </p>
<p class="textbody-c2">10. 《 QA 文档》 -- 包括产品简介、产品原理、产品功能列表、功能描述、功能流程、执行结果、数据库结构、测试要求等，提供给软件测试人员使用。 </p>
<p class="textbody-c2">11. 《项目总结》 -- 包括项目简介、项目参与人员和开发时间、项目风险管理过程、项目功能列表、项目结构特点、技术特点、对项目的升级建议、对以后的项目的建议、人员素质情况等。 </p>
<p class="textbody-c2">二、产品文档 </p>
<p class="textbody-c2">1. 《产品简介》 -- 包括公司背景、产品概念、适用范围、产品功能、功能特点、运行要求和公司联系地址。 </p>
<p class="textbody-c2">2. 《产品演示》 -- 包括公司简介、产品背景、产品描述、产品特点、产品作用、适用范围、使用分析、功能模块、解决问题、合作伙伴、成功案例等。一般用 Power 
<p class="textbody-c2">point 或者 VCD 录制软件实现。 </p>
<p class="textbody-c2">3. 《疑问解答》 -- 列出用户关心的问题和处理方法。用于解答软件的操作功能和解决用户的疑难问题。 </p>
<p class="textbody-c2">4. 《功能介绍》 -- 以《需求分析》为书写基础，包括软件介绍、软件结构、功能列表、功能描述和公司联系地址。 </p>
<p class="textbody-c2">5. 《技术白皮书》 -- 以《技术分析》为书写基础，包括功能实现、技术选型、关键技术问题的解决、技术方案特点、技术升级方向等。 </p>
<p class="textbody-c2">6. 《评测报告》 -- 第三方权威评测报告。包括评测目的、评测范围、评测环境、评测内容、实测数据、性能表现、结果分析和评测总结等。 </p>
<p class="textbody-c2">7. 《安装手册》 -- 包括系统环境、运行平台、产品安装过程、初始环境设置、安装记录等。 </p>
<p class="textbody-c2">8. 《使用手册》 -- 包括产品简介、功能列表、功能描述和解释、功能操作、客户服务和联系方式等。 </p>
<p class="textbody-c2">9. 《维护手册》 -- 包括产品简介、系统须知、初始环境设置、系统配置、数据管理和备份、技术问题解答和联系方式等。 </p>
<p class="textbody-c2">10. 《用户报告》 -- 包括产品简介、购买时间、使用目的、使用时间、使用地点、实施过程、出现问题和解决、产品总结和建议等。 </p>
<p class="textbody-c2">11. 《销售培训》 -- 包括项目简介、产品功能、产品特点、商业优势、系统运行环境、适用范围、目标客户等。</p><img src ="http://www.blogjava.net/luluyanglu/aggbug/351825.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2011-06-06 20:39 <a href="http://www.blogjava.net/luluyanglu/archive/2011/06/06/351825.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在项目开发过程中，应该按要求编写好十三种文档</title><link>http://www.blogjava.net/luluyanglu/archive/2011/06/06/351823.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Mon, 06 Jun 2011 12:09:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2011/06/06/351823.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/351823.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2011/06/06/351823.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/351823.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/351823.html</trackback:ping><description><![CDATA[在项目开发过程中，应该按要求编写好十三种文档，文档编制要求具有针对性、 <br />精确性、清晰性、完整性、灵活性、可追溯性。 <br /><br />　　&#9671; 可行性分析报告： <br />　　　　说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性，评述 <br />为了合理地达到开发目标可供选择的各种可能实施方案，说明并论证所选定实施方案 <br />的理由。 <br /><br />　　&#9671; 项目开发计划： <br />　　　 为软件项目实施方案制订出具体计划，应该包括各部分工作的负责人员、开 <br />发的进度、开发经费的预算、所需的硬件及软件资源等。 <br /><br />　　&#9671; 软件需求说明书（软件规格说明书）： <br />　　 对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。它是 <br />在用户与开发人员双方对软件需求取得共同理解并达成协议的条件下编写的，也是实 <br />施开发工作的基础。该说明书应给出数据逻辑和数据采集的各项要求，为生成和维护 <br />系统数据文件做好准备。 <br /><br />　　&#9671; 概要设计说明书： <br />　　　　该说明书是概要实际阶段的工作成果，它应说明功能分配、模块划分、程序 <br />的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等， <br />为详细设计提供基础。 <br /><br />　　&#9671; 详细设计说明书： <br />　　　　 着重描述每一模块是怎样实现的，包括实现算法、逻辑流程等。 <br /><br />　　&#9671; 用户操作手册： <br />　　　　 本手册详细描述软件的功能、性能和用户界面，使用户对如何使用该软件 <br />得到具体的了解,为操作人员提供该软件各种运行情况的有关知识，特别是操作方法 <br />的具体细节。 <br /><br />　　&#9671; 测试计划： <br />　　　　为做好集成测试和验收测试，需为如何组织测试制订实施计划。计划应包括 <br />测试的内容、进度、条件、人员、测试用例的选取原则、测试结果允许的偏差范围等。 <br /><br />　　&#9671; 测试分析报告： <br />　　　　 测试工作完成以后，应提交测试计划执行情况的说明，对测试结果加以分 <br />析，并提出测试的结论意见。 <br /><br />　　&#9671; 开发进度月报： <br />　　　　 该月报系软件人员按月向管理部门提交的项目进展情况报告，报告应包括 <br />进度计划与实际执行情况的比较、阶段成果、遇到的问题和解决的办法以及下个月 <br />的打算等。 <br /><br />　　&#9671; 项目开发总结报告： <br />　　　　 软件项目开发完成以后，应与项目实施计划对照，总结实际执行的情况， <br />如进度、成果、资源利用、成本和投入的人力，此外，还需对开发工作做出评价， <br />总结出经验和教训。 <br /><br />　　&#9671; 软件维护手册： <br />　　　　主要包括软件系统说明、程序模块说明、操作环境、支持软件的说明、维护 <br />过程的说明，便于软件的维护。 <br /><br />　　&#9671; 软件问题报告： <br />　　　　 指出软件问题的登记情况，如日期、发现人、状态、问题所属模块等，为 <br />软件修改提供准备文档。 <br /><br />　　&#9671; 软件修改报告： <br />　　　　 软件产品投入运行以后，发现了需对其进行修正、更改等问题，应将存在 <br />的问题、修改的考虑以及修改的影响作出详细的描述，提交审批。&nbsp;&nbsp; <br /><img src ="http://www.blogjava.net/luluyanglu/aggbug/351823.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2011-06-06 20:09 <a href="http://www.blogjava.net/luluyanglu/archive/2011/06/06/351823.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件开发管理十大工作任务</title><link>http://www.blogjava.net/luluyanglu/archive/2011/06/06/351824.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Mon, 06 Jun 2011 12:09:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2011/06/06/351824.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/351824.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2011/06/06/351824.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/351824.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/351824.html</trackback:ping><description><![CDATA[<div><strong>1.决定项目的启动（Project Initiation）--确定软件的目标</strong></div>
<div>使用项目管理的范围管理中判断项目启动的指南来帮助判断和决定某个软件开发的项目是否需要进行。简言之，在明确了要开发软件的战略目标之后，例如为满足某个客户的要求或赢得市场竞争的需要。对一个软件产品或系统的开发项目做出是否启动的决定，在软件开发展开之前先做到能够明确回答这些问题：</div>
<div><strong>。</strong>明确软件开发的战略远景（Vision）：从企业的市场战略来判定开发的合理性和必要性</div>
<div><strong>。</strong>明确软件开发的目的（Goals）：从市场需求或客户需求中明确软件所需要达到的功能和性能目标。</div>
<div><strong>。</strong>总结出所开发的软件必须能够完成的任务（Mission）或需要提供的服务（Objectives）.</div>
<div><strong>。</strong>总结出所开发软件所需要解决的用户的具体问题和困难（Problems to solve）.</div>
<div><wbr></wbr></div>
<div><strong>2.确定项目的范围（Define Project Scope）--确定软件的功能</strong></div>
<div>以软件开发的目标为基础，进行功能需求分析和总结，由此确定软件开发的具体工作：</div>
<div><strong>。</strong>明确开发项目的范围，需要的资源，整合的系统，外部因素依赖等。</div>
<div><strong>。</strong>总结出所开发的软件产品或系统的功能范围，并明确哪些功能是不在这个项目的范围之内。</div>
<div><strong>。</strong>进行软件的功能设计，总结出所开发的软件产品或系统所包括的具体功能，性能，使用界面，提供的服务等，</div>
<div><strong>。</strong>总结出项目的具体提交实物，即必须完成的具体软件程序，功能组件，系统，测试工具和各种有关文档。</div>
<div><strong>。</strong>对整个软件的范围，使用软件功能设计规范书进行总结。</div>
<div><strong>。</strong>在软件整体功能设计规范的基础上，由开发，测试，文件编辑等各个团队和专家制定开发和测试计划，包括软件的架构和系统设计，具体的编程执行计划，软件使用说明和各种文件的编辑计划，对软件进行可用性和验证的计划等。</div>
<div><wbr></wbr></div>
<div><strong>3.制定项目任务的重要性和优先顺序（Define Priorities）--确定项目功能的优先顺序</strong></div>
<div><strong>。</strong>在所有需要开发功能中，确定哪些是重要的，是必须要做的，哪些是次要的，是可以放弃的；同样，对软件的性能要求和其他要求，也做这样的审核与总结。</div>
<div><wbr></wbr></div>
<div><strong>4.确定具体的项目工作任务和工作单元（Define Work Tasks and Work Package）</strong></div>
<div><strong>。</strong>根据所需要开发的软件的各种功能和性能要求，确定工作任务，并采取从上到下，从总体到局部的工作任务分解，按照项目管理中的工作任务分解结构（WBS）的方法，将开发整个软件的各个组件和单元给筹划出来，设立一份完整的开发工作的工作单元清单。</div>
<div><wbr></wbr></div>
<div><strong>5.分配项目资源（Assign Resources）--分配具体进行软件开发的资源</strong></div>
<div><strong>。</strong>根据企业开发组织的结构和人员的配置，对完成每个工作单元所需要的人力资源进行分配和安排；这里应该包括进行功能设计的项目经理，进行开发和测试的工程师，进行文档撰写的文件编辑等。除此之外，对各种必需的设备，工具等资源，也做一个分配，应为它们涉及费用的开支。</div>
<div><wbr></wbr></div>
<div><strong>6.估算完成工作任务单元的时间（Estimate Work Package Time）</strong></div>
<div><strong>。</strong>采用开发组织的历史数据，数学计算等方法，对完成每个具体的设计，开发和测试的工作任务，进行时间估算。时间的估算应该先由执行具体工作的人员作最初的估算。</div>
<div><wbr></wbr></div>
<div><strong>7.制定项目时间表（Define Schedule）</strong></div>
<div><strong>。</strong>根据完成每个工作任务的时间估算，同时根据整个项目的时间表要求（例如在某个日期之前必须完成开发任务）和所具备的开发资源（人才，设备，技术等）对软件开发的各个任务进行时间表的初步排列。</div>
<div><strong>。</strong>计算出项目的关键路径（Critical Path）和宽松时间（Slack）。对软件开发项目的时间表进行优化排列和组合。例如安排同步进行的并列开发工作等。最后制定项目的时间表。</div>
<div><wbr></wbr></div>
<div><strong>8.计算并管理项目的费用（Cost Management）--进行开发的开支预算</strong></div>
<div><strong>。</strong>根据开发工作单元的时间估算和人力资源的分配进行费用的计算。</div>
<div><strong>。</strong>在项目进展的过程中对费用的花费进行必要的追踪，并对开支根据开支的具体需要和任何发生的变化进行调节。</div>
<div><wbr></wbr></div>
<div><strong>9.项目执行的管理（Execution Control）</strong></div>
<div>这是在项目执行阶段所需要做的工作。它们是在项目的具体执行阶段与开发编写程序并行的工作。它们包括了对好几个项目管理领域知识的运用。</div>
<div><strong>。质量管理测试：</strong>在功能和质量衡量的基础上，对开发出来的软件进行质量管理和控制，包括执行定期的（比如每天）质量检验和判定，并对如何纠错的决定。根据软件的具体性质和种类，从软件的功能（开发出来的软件是否具备计划的功能）和质量（某一阶段所开发出来的软件有多高的差错率，合格率，出错或瑕疵（Bug）数量和发现率）方面进行衡量。</div>
<div><strong>。追踪进度（Progress Tracking）：</strong>将软件开发的进展如开发的速度（完成多少功能组件）与项目的时间表进行对比来追踪进度。</div>
<div><strong>。项目状态通报（Status Report ）:</strong>根据所追踪的开发进度以及差错率，向全体项目参加者和赞助者（开发团队的成员，领导，客户等）进行定期（比如每周）的通报。</div>
<div><strong>。执行更改控制（Change Control）：</strong>采用符合自己企业文化和结构的更改控制管理制度和运作流程。对开发出来的软件进行定期的（比如每天）更改流程管理。更改控制管理是软件开发中用来控制所谓的&#8220;功能蔓延&#8221;，为保证产品能够及时发行而必须采取的关键手段。</div>
<div><strong>。执行风险管理（Risk Management）：</strong>对开发过程中发生的各种风险因素（如人员离队，技术不成熟，其他依赖因素延迟等）采取及时的协调和补救措施。</div>
<div><strong>。执行发行管理：</strong>进行软件发行前的管理工作，如进行发行前的纠错决定，管理软件建造流程（Build Process），对发行版本进行最后的质量检查等。</div>
<div><wbr></wbr></div>
<div><strong>10.项目的结束和收尾（Project Closure）</strong></div>
<div><strong>。</strong>进行软件发行的结果工作，如系统调试，用户培训，开发团队的项目总结等。</div>
<div><wbr></wbr></div>
<div><wbr></wbr></div>
<div></div>
<div><span><img class="blogimg" src="http://hiphotos.baidu.com/xunan_best/pic/item/ba06cffb8e924d25034f56ae.jpg" border="0" small="0"  alt="" /><br /></span><wbr></wbr></div>
<div></div>
<div><wbr></wbr></div>
<div></div>
<div>
<p><span><img class="blogimg" src="http://hiphotos.baidu.com/xunan_best/pic/item/0fd62dec2693856662d09fa8.jpg" border="0" small="0"  alt="" /><br /></span></p>
<p><wbr></wbr></p></div>
<div><span><img class="blogimg" src="http://hiphotos.baidu.com/xunan_best/pic/item/144f761f79888d22f624e4a9.jpg" border="0" small="0"  alt="" /><br /></span></div><br /><img src ="http://www.blogjava.net/luluyanglu/aggbug/351824.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2011-06-06 20:09 <a href="http://www.blogjava.net/luluyanglu/archive/2011/06/06/351824.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>可行性研究报告编写规范 </title><link>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351756.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Sat, 04 Jun 2011 15:08:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351756.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/351756.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351756.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/351756.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/351756.html</trackback:ping><description><![CDATA[[B]<strong>[B]1引言&nbsp;1 <br />1.1编写目的&nbsp;1 <br />1.2背景&nbsp;1 <br />1.3定义&nbsp;1 <br />1.4参考资料&nbsp;1 <br />2可行性研究的前提&nbsp;2 <br />2.1要求&nbsp;2 <br />2.2目标&nbsp;2 <br />2.3条件、假定和限制&nbsp;3 <br />2.4进行可行性研究的方法&nbsp;3 <br />2.5评价尺度&nbsp;3 <br />3对现有系统的分析&nbsp;3 <br />3.1处理流程和数据流程&nbsp;4 <br />3.2工作负荷&nbsp;4 <br />3.3费用开支&nbsp;4 <br />3.4人员&nbsp;4 <br />3.5设备&nbsp;4 <br />3.6局限性&nbsp;4 <br />4所建议的系统&nbsp;4 <br />4.1对所建议系统的说明&nbsp;5 <br />4.2处理流程和数据流程&nbsp;5 <br />4.3改进之处&nbsp;5 <br />4.4影响&nbsp;5 <br />4.4.1对设备的影响&nbsp;5 <br />4.4.2对软件的影响&nbsp;5 <br />4.4.3对用户单位机构的影响&nbsp;5 <br />4.4.4对系统运行过程的影响&nbsp;6 <br />4.4.5对开发的影响&nbsp;6 <br />4.4.6对地点和设施的影响&nbsp;6 <br />4.4.7对经费开支的影响&nbsp;6 <br />4.5局限性&nbsp;6 <br />4.6技术条件方面的可行性&nbsp;7 <br />5可选择的其他系统方案&nbsp;7 <br />5.1可选择的系统方案1&nbsp;7 <br />5.2可选择的系统方案2&nbsp;7 <br />6投资及效益分析&nbsp;7 <br />6.1支出&nbsp;7 <br />6.1.1基本建设投资&nbsp;8 <br />6.1.2其他一次性支出&nbsp;8 <br />6.1.3非一次性支出&nbsp;8 <br />6.2收益&nbsp;9 <br />6.2.1一次性收益&nbsp;9 <br />6.2.2非一次性收益&nbsp;9 <br />6.2.3不可定量的收益&nbsp;9 <br />6.3收益／投资比&nbsp;10 <br />6.4投资回收周期&nbsp;10 <br />6.5敏感性分析&nbsp;10 <br />7社会因素方面的可行性&nbsp;10 <br />7.1法律方面的可行性&nbsp;10 <br />7.2使用方面的可行性&nbsp;10 <br />8结论&nbsp;11 <br /><br />GB8567&#8212;&#8212;88 <br />可行性研究报告 <br />1引言 <br />1.1编写目的 <br />说明编写本可行性研究报告的目的，指出预期的读者。 <br />1.2背景 <br />说明： <br />A.&nbsp;所建议开发的软件系统的名称； <br />B.&nbsp;本项目的任务提出者、开发者、用户及实现该软件的计算中心或计算机网络； <br />C.&nbsp;该软件系统同其他系统或其他机构的基本的相互来往关系。 <br />1.3定义 <br />列出本文件中用到的专门术语的定义和外文首字母组词的原词组。 <br />1.4参考资料 <br />列出用得着的参考资料，如： <br />1.&nbsp;本项目的经核准的计划任务书或合同、上级机关的批文； <br />2.&nbsp;属于本项目的其他已发表的文件； <br />3.&nbsp;本文件中各处引用的文件、资料，包括所需用到的软件开发标准。 <br />列出这些文件资料的标题、文件编号、发表日期和出版单位，说明能够得到这些文件资料的来源。 <br />2可行性研究的前提 <br />说明对所建议的开发项目进行可行性研究的前提，如要求、目标、假定、限制等。 <br />2.1要求 <br />说明对所建议开发的软件的基本要求，如： <br />A.&nbsp;功能； <br />B.&nbsp;性能； <br />C.&nbsp;输出如报告、文件或数据，对每项输出要说明其特征，如用途、产生频度、接口以及分发对象； <br />D.&nbsp;输入说明系统的输入，包括数据的来源、类型、数量、数据的组织以及提供的频度； <br />E.&nbsp;处理流程和数据流程用图表的方式表示出最基本的数据流程和处理流程，并辅之以叙述； <br />F.&nbsp;在安全与保密方面的要求； <br />G.&nbsp;同本系统相连接的其他系统； <br />H.&nbsp;完成期限。 <br />2.2目标 <br />说明所建议系统的主要开发目标，如： <br />A.&nbsp;人力与设备费用的减少； <br />B.&nbsp;处理速度的提高； <br />C.&nbsp;控制精度或生产能力的提高； <br />D.&nbsp;管理信息服务的改进； <br />E.&nbsp;自动决策系统的改进； <br />F.&nbsp;人员利用率的改进。 <br />2.3条件、假定和限制 <br />说明对这项开发中给出的条件、假定和所受到的限制，如： <br />a．&nbsp;所建议系统的运行寿命的最小值； <br />b．&nbsp;进行系统方案选择比较的时间； <br />c．&nbsp;经费、投资方面的来源和限制； <br />d．&nbsp;法律和政策方面的限制； <br />e．&nbsp;硬件、软件、运行环境和开发环境方面的条件和限制； <br />f．&nbsp;可利用的信息和资源； <br />g．&nbsp;系统投入使用的最晚时间。 <br />2.4进行可行性研究的方法 <br />说明这项可行性研究将是如何进行的，所建议的系统将是如何评价的。摘要说明所使用的基本方法 和策略，如调查、加权、确定模型、建立基准点或仿真等。 <br />2.5评价尺度 <br />说明对系统进行评价时所使用的主要尺度，如费用的多少、各项功能的优先次序、开发时间的长短 及使用中的难易程度。 <br />3对现有系统的分析 <br />这里的现有系统是指当前实际使用的系统，这个系统可能是计算机系统，也可能是一个机械系统甚 至是一个人工系统。 <br />分析现有系统的目的是为了进一步阐明建议中的开发新系统或修改现有系统的必要性。 <br />3.1处理流程和数据流程 <br />说明现有系统的基本的处理流程和数据流程。此流程可用图表即流程图的形式表示，并加以叙述。 <br />3.2工作负荷 <br />列出现有系统所承担的工作及工作量。 <br />3.3费用开支 <br />列出由于运行现有系统所引起的费用开支，如人力、设备、空间、支持性服务、材料等项开支以及开 支总额。 <br />3.4人员 <br />列出为了现有系统的运行和维护所需要的人员的专业技术类别和数量。 <br />3.5设备 <br />列出现有系统所使用的各种设备。 <br />3.6局限性 <br />列出本系统的主要的局限性，例如处理时间赶不上需要，响应不及时，数据存储能力不足，处理功能 不够等。并且要说明，为什么对现有系统的改进性维护已经不能解决问题。 <br />4所建议的系统 <br />本章将用来说明所建议系统的目标和要求将如何被满足。 <br />4.1对所建议系统的说明 <br />概括地说明所建议系统，并说明在第2章中列出的那些要求将如何得到满足，说明所使用的基本方法及理论根据。 <br />4.2处理流程和数据流程 <br />给出所建议系统的处理流程和数据流程。 <br />4.3改进之处 <br />按2.2条中列出的目标，逐项说明所建议系统相对于现存系统具有的改进。 <br />4.4影响 <br />说明在建立所建议系统时，预期将带来的影响，包括： <br />4.4.1对设备的影响 <br />说明新提出的设备要求及对现存系统中尚可使用的设备须作出的修改。 <br />4.4.2对软件的影响 <br />说明为了使现存的应用软件和支持软件能够同所建议系统相适应。而需要对这些软件所进行的修改和补充。 <br />4.4.3对用户单位机构的影响 <br />说明为了建立和运行所建议系统，对用户单位机构、人员的数量和技术水平等方面的全部要求。 <br />4.4.4对系统运行过程的影响 <br />说明所建议系统对运行过程的影响，如： <br />a．&nbsp;用户的操作规程； <br />b．&nbsp;运行中心的操作规程； <br />c．&nbsp;运行中心与用户之间的关系； <br />d．&nbsp;源数据的处理； <br />e．&nbsp;数据进入系统的过程； <br />f．&nbsp;对数据保存的要求，对数据存储、恢复的处理； <br />g．&nbsp;输出报告的处理过程、存储媒体和调度方法； <br />h．&nbsp;系统失效的后果及恢复的处理办法。 <br />4.4.5对开发的影响 <br />说明对开发的影响，如： <br />a.&nbsp;为了支持所建议系统的开发，用户需进行的工作； <br />b.&nbsp;为了建立一个数据库所要求的数据资源； <br />c.&nbsp;为了开发和测验所建议系统而需要的计算机资源； <br />d.&nbsp;所涉及的保密与安全问题。 <br />4.4.6对地点和设施的影响 <br />说明对建筑物改造的要求及对环境设施的要求。 <br />4.4.7对经费开支的影响 <br />扼要说明为了所建议系统的开发，设计和维持运行而需要的各项经费开支。 <br />4.5局限性 <br />说明所建议系统尚存在的局限性以及这些问题未能消除的原因。 <br />4.6技术条件方面的可行性 <br />本节应说明技术条件方面的可行性，如： <br />a．&nbsp;在当前的限制条件下，该系统的功能目标能否达到； <br />b．&nbsp;利用现有的技术，该系统的功能能否实现； <br />c．&nbsp;对开发人员的数量和质量的要求并说明这些要求能否满足； <br />d．&nbsp;在规定的期限内，本系统的开发能否完成。 <br />5可选择的其他系统方案 <br />扼要说明曾考虑过的每一种可选择的系统方案，包括需开发的和可从国内国外直接购买的，如果没有供选择的系统方案可考虑，则说明这一点。 <br />5.1可选择的系统方案1 <br />参照第4章的提纲，说明可选择的系统方案1，并说明它未被选中的理由。 <br />5.2可选择的系统方案2 <br />按类似5.1条的方式说明第2个乃至第n个可选择的系统方案。 <br />...... <br />6投资及效益分析 <br />6.1支出 <br />对于所选择的方案，说明所需的费用。如果已有一个现存系统，则包括该系统继续运行期间所需的费用。 <br />6.1.1基本建设投资 <br />包括采购、开发和安装下列各项所需的费用，如： <br />a.&nbsp;房屋和设施； <br />b.&nbsp;ADP设备； <br />c.&nbsp;数据通讯设备； <br />d.&nbsp;环境保护设备； <br />e.&nbsp;安全与保密设备； <br />f.&nbsp;ADP操作系统的和应用的软件； <br />g.&nbsp;数据库管理软件。 <br />6.1.2其他一次性支出 <br />包括下列各项所需的费用，如： <br />a．&nbsp;研究（需求的研究和设计的研究）； <br />b．&nbsp;开发计划与测量基准的研究； <br />c．&nbsp;数据库的建立； <br />d．&nbsp;ADP软件的转换； <br />e．&nbsp;检查费用和技术管理性费用； <br />f．&nbsp;培训费、旅差费以及开发安装人员所需要的一次性支出； <br />g．&nbsp;人员的退休及调动费用等。 <br />6.1.3非一次性支出 <br />列出在该系统生命期内按月或按季或按年支出的用于运行和维护的费用，包括： <br />a．&nbsp;设备的租金和维护费用； <br />b．&nbsp;软件的租金和维护费用； <br />c．&nbsp;数据通讯方面的租金和维护费用； <br />d．&nbsp;人员的工资、奖金； <br />e．&nbsp;房屋、空间的使用开支； <br />f．&nbsp;公用设施方面的开支； <br />g．&nbsp;保密安全方面的开支； <br />h．&nbsp;其他经常性的支出等。 <br />6.2收益 <br />对于所选择的方案，说明能够带来的收益，这里所说的收益，表现为开支费用的减少或避免、差错的减少、灵活性的增加、动作速度的提高和管理计划方面的改进等，包括； <br />6.2.1一次性收益 <br />说明能够用人民币数目表示的一次性收益，可按数据处理、用户、管理和支持等项分类叙述，如： <br />a．&nbsp;开支的缩减包括改进了的系统的运行所引起的开支缩减，如资源要求的减少，运行效率的改进，数据进入、存贮和恢复技术的改进，系统性能的可监控，软件的转换和优化，数据压缩技术的采用，处理的集中化／分布化等； <br />b．&nbsp;价值的增升包括由于一个应用系统的使用价值的增升所引起的收益，如资源利用的改进，管理和运行效率的改进以及出错率的减少等； <br />c．&nbsp;其他如从多余设备出售回收的收入等。 <br />6.2.2非一次性收益 <br />说明在整个系统生命期内由于运行所建议系统而导致的按月的、按年的能用人民币数目表示的收益，包括开支的减少和避免。 <br />6.2.3不可定量的收益 <br />逐项列出无法直接用人民币表示的收益，如服务的改进，由操作失误引起的风险的减少，信息掌握情况的改进，组织机构给外界形象的改善等。有些不可捉摸的收益只能大概估计或进行极值估计（按最好和最差情况估计）。 <br />6.3收益／投资比 <br />求出整个系统生命期的收益／投资比值。 <br />6.4投资回收周期 <br />求出收益的累计数开始超过支出的累计数的时间。 <br />6.5敏感性分析 <br />所谓敏感性分析是指一些关键性因素如系统生命期长度、系统的工作负荷量、工作负荷的类型与这些不同类型之间的合理搭配、处理速度要求、设备和软件的配置等变化时，对开支和收益的影响最灵敏的范围的估计。在敏感性分析的基础上做出的选择当然会比单一选择的结果要好一些。 <br />7社会因素方面的可行性 <br />本章用来说明对社会因素方面的可行性分析的结果，包括： <br />7.1法律方面的可行性 <br />法律方面的可行性问题很多，如合同责任、侵犯专利权、侵犯版权等方面的陷井，软件人员通常是不熟悉的，有可能陷入，务必要注意研究。 <br />7.2使用方面的可行性 <br />例如从用户单位的行政管理、工作制度等方面来看，是否能够使用该软件系统；从用户单位的工作人员的素质来看，是否能满足使用该软件系统的要求等等，都是要考虑的。 <br />8结论 <br />在进行可行性研究报告的编制时，必须有一个研究的结论。结论可以是： <br />a．&nbsp;可以立即开始进行； <br />b．&nbsp;需要推迟到某些条件（例如资金、人力、设备等）落实之后才能开始进行； <br />c．&nbsp;需要对开发目标进行某些修改之后才能开始进行； <br />d．&nbsp;不能进行或不必进行（例如因技术不成熟、经济上不合算等）。</strong><img src ="http://www.blogjava.net/luluyanglu/aggbug/351756.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2011-06-04 23:08 <a href="http://www.blogjava.net/luluyanglu/archive/2011/06/04/351756.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>详细设计文档规范 </title><link>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351755.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Sat, 04 Jun 2011 15:04:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351755.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/351755.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351755.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/351755.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/351755.html</trackback:ping><description><![CDATA[<div id="cnblogs_post_body">
<p>1．引言 <br />1.1编写目的 <br />【阐明编写详细设计说明书的目的，指明读者对象。】 </p>
<p>1.2项目背景 <br />【应包括项目的来源和主管部门等。】 <br />1.3定义 <br />【列出文档中所用到的专门术语的定义和缩写词的原文。】 <br />1.4参考资料 <br />【列出有关资料的作者、标题、编号、发表日期、出版单位或资料来源，可包括： <br />a. 项目的计划任务书、合同或批文； <br />b. 项目开发计划； <br />c. 需求规格说明书； <br />d. 概要设计说明书； <br />e. 测试计划（初稿）； <br />f. 用户操作手册（初稿）； <br />g. 文档中所引用的其他资料、软件开发标准或规范。】 <br />2．总体设计 <br />2.1需求概述 <br />2.2软件结构 <br />【如给出软件系统的结构图。】 <br />3．程序描述 <br />【逐个模块给出以下的说明：】 <br />3.1功能 <br />3.2性能 <br />3.3输入项目 <br />3.4输出项目 <br />3.5算法 <br />【模块所选用的算法。】 <br />3.6程序逻辑 <br />【详细描述模块实现的算法，可采用： <br />a. 标准流程图； <br />b. PDL语言； <br />c. N－S图； <br />d. PAD； <br />e. 判定表等描述算法的图表。】 <br />3.7接口 <br />3.8存储分配 <br />3.9限制条件 <br />3.10测试要点 </p></div><script type="text/javascript">
if ($ != jQuery) {
	$ = jQuery.noConflict();
}
var isLogined = false;
var cb_blogId = 9679;
var cb_entryId = 133067;
var cb_blogApp = "QuitGame";
var cb_blogUserGuid = "be95310b-63cf-dd11-9e4d-001cf0cd104b";
var cb_entryCreatedDate = '2005/4/7 12:25:00';
</script><img src ="http://www.blogjava.net/luluyanglu/aggbug/351755.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2011-06-04 23:04 <a href="http://www.blogjava.net/luluyanglu/archive/2011/06/04/351755.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>概要设计和详细设计的区别与联系 </title><link>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351754.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Sat, 04 Jun 2011 14:58:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351754.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/351754.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/351754.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/351754.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp;软件设计采用自顶向下、逐次功能展开的设计方法，首先完成总体设计，然后完成各有机组成部分的设计。 </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 根据工作性质和内容的不同，软件设计分为概要设计和详细设计。概要设计实现软件的总体设计、模块划分、用户界面设计、数据库设计等等；详细设计则根据概要设计所做的模块划分，实现各模块的算法设计，实现用户界面设计、数据结构设计的细化，等等。</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 概要设计是详细设计的基础，必须在详细设计之前完成，概要设计经复查确认后才可以开始详细设计。概要设计，必须完成概要设计文档，包括系统的总体设计文档、以及各个模块的概要设计文档。每个模块的设计文档都应该独立成册。</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 详细设计必须遵循概要设计来进行。详细设计方案的更改，不得影响到概要设计方案；如果需要更改概要设计，必须经过项目经理的同意。详细设计，应该完成详细设计文档，主要是模块的详细设计方案说明。和概要设计一样，每个模块的详细设计文档都应该独立成册。</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 概要设计里面的数据库设计应该重点在描述数据关系上，说明数据的来龙去脉，在这里应该结合我们的一下结果数据，说明这些结果数据的源点，我们这样设计的目的和原因。详细设计里的数据库设计就应该是一份完善的数据结构文档，就是一个包括类型、命名、精度、字段说明、表说明等内容的数据字典。</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 概要设计里的功能应该是重点在功能描述，对需求的解释和整合，整体划分功能模块，并对各功能模块进行详细的图文描述，应该让读者大致了解系统作完后大体的结构和操作模式。详细设计则是重点在描述系统的实现方式，各模块详细说明实现功能所需的类及具体的方法函数，包括涉及到的sql语句等。</p>
<p style="text-indent: 2em"><a href="http://blog.csdn.net/skyly84/archive/2009/06/02/4236569.aspx"><font color="#2145dd">http://blog.csdn.net/skyly84/archive/2009/06/02/4236569.aspx</font></a> </p>
<p style="text-indent: 2em"><strong>概要设计与详细设计的区别</strong> </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 概要设计就是设计软件的结构，包括组成模块，模块的层次结构，模块的调用关系，每个模块的功能等等。同时，还要设计该项目的应用系统的总体数据结构和数据库结构，即应用系统要存储什么数据，这些数据是什么样的结构，它们之间有什么关系。 </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 详细设计阶段就是为每个模块完成的功能进行具体的描述，要把功能描述转变为精确的、结构化的过程描述。</p>
<p style="text-indent: 2em"><font color="#ff0000">&nbsp;&nbsp;&nbsp; 概要设计阶段通常得到软件结构图</font> </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 详细设计阶段常用的描述方式有：流程图、N-S图、PAD图、伪代码等</p>
<p style="text-indent: 2em">概要设计和详细设计</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 在软件设计中，大家经常问到的一个问题是：概要设计应该怎样一个概要法，详细设计应该怎样一个详细法？ </p>
<p style="text-indent: 2em">这个问题在公司内部经常有人问。现在陈述一下。 </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 我们公司的研发流程是瀑布型的，这个模型中的分析、设计阶段是基于经典的结构化方法。 </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; <font color="#0000ff">结构化设计方法的基本思路是：按照问题域，将软件逐级细化，分解为不必再分解的的模块，每个模块完成一定的功能，为一个或多个父模块服务（即接受调用），也接受一个或多个子模块的服务（即调用子模块）。模块的概念，和编程语言中的子程序或函数是对应的。</font></p>
<p style="text-indent: 2em">&nbsp;</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 这样一来，设计可以明显地划分成两个阶段： </p>
<p style="text-indent: 2em"><font color="#0000ff">&nbsp;&nbsp;&nbsp; 概要（结构）设计阶段：把软件按照一定的原则分解为模块层次，赋予每个模块一定的任务，并确定模块间调用关系和接口。</font> </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 详细设计阶段：依据概要设计阶段的分解，设计每个模块内的算法、流程等。</p>
<p style="text-indent: 2em">概要设计阶段：</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;&nbsp; 在这个阶段，设计者会大致考虑并照顾模块的内部实现，但不过多纠缠于此。<font color="#0000ff">主要集中于划分模块、分配任务、定义调用关系。模块间的接口与传参在这个阶段要定得 十分细致明确，应编写严谨的数据字典，避免后续设计产生不解或误解。</font><font color="#ff0000">概要设计一般不是一次就能做到位，而是反复地进行结构调整。</font>典型的调整是合并功能重复的模块，或者进一步分解出可以复用的模块。在概要设计阶段，应最大限度地提取可以重用的模块，建立合理的结构体系，节省后续环节的工作量。 </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;<font color="#0000ff"> 概要设计文档最重要的部分是分层数据流图、结构图、数据字典以及相应的文字说明等。</font>以概要设计文档为依据，各个模块的详细设计就可以并行展开了。</p>
<p style="text-indent: 2em">详细设计阶段:</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 在这个阶段，各个模块可以分给不同的人去并行设计。在详细设计阶段，设计者的工作对象是一个模块，根据概要设计赋予的局部任务和对外接口，设计并表达出模块的算法、流程、状态转换等内容。这里要注意，如果发现有结构调整（如分解出子模块等）的必要，必须返回到概要设计阶段，将调整反应到概要设计文档中，而不 能就地解决，不打招呼。详细设计文档最重要的部分是模块的流程图、状态图、局部变量及相应的文字说明等。一个模块一篇详细设计文档。</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 概要设计文档相当于机械设计中的装配图，而详细设计文档相当于机械设计中的零件图。文档的编排、装订方式也可以参考机械图纸的方法。 </p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 我们公司对模块的认识和传统定义有所不同，认为是较大的软件功能单元才可以称作模块。这种认识使大家对概要设计和详细设计的分工产生了混乱的理解，降低了文档的可用性，应该予以纠正。 </p>
<p style="text-indent: 2em">&nbsp;&nbsp;<font color="#0000ff">&nbsp; 概要设计中较顶层的部分便是所谓的方案。方案文档的作用是在宏观的角度上保持设计的合理性。</font></p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 有的项目采用面向对象的分析、设计方法。可能在概要设计、详细设计的分工上疑问更多。其实，面向对象的分析、设计方法并没有强调结构化方法那样的阶段性，因此一般不引入概要、详细设计的概念。如果按照公司的文档体系，非要有这种分工的话，<font color="#0000ff">可以将包的划分、类及对象间的关系、类的对外属性、方法及协作设计看做 概要设计；类属性、方法的内部实现看做详细设计。</font></p>
<p style="text-indent: 2em">&nbsp;&nbsp; 1.需求分析--产生软件功能规格说明书,需要确定用户对软件的需求,要作到明确、无歧义。不涉及具体实现方法。用户能看得明白，开发人员也可据此进行下面的工作（概要设计）。 </p>
<p style="text-indent: 2em">&nbsp;&nbsp; 2.概要设计--产生软件概要设计说明书，说明系统模块划分、选择的技术路线等，整体说明软件的实现思路。并且需要指出关键技术难点等。&nbsp;&nbsp; </p>
<p style="text-indent: 2em">&nbsp;&nbsp; 3.详细设计--产生软件详细设计说明书，对概要设计的进一步细化，一般由各部分的担当人员依据概要设计分别完成，然后在集成，是具体的实现细节。理论上要求可以照此编码。</p>
<p style="text-indent: 2em">概要设计和详细设计的区别与联系</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 软件设计采用自顶向下、逐次功能展开的设计方法，首先完成总体设计，然后完成各有机组成部分的设计。</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 根据工作性质和内容的不同，软件设计分为概要设计和详细设计。概要设计实现软件的总体设计、模块划分、用户界面设计、数据库设计等等；详细设计则根据概要设计所做的模块划分，实现各模块的算法设计，实现用户界面设计、数据结构设计的细化，等等。</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 概要设计是详细设计的基础，必须在详细设计之前完成，概要设计经复查确认后才可以开始详细设计。概要设计，必须完成概要设计文档，包括系统的总体设计文档、以及各个模块的概要设计文档。每个模块的设计文档都应该独立成册。</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 详细设计必须遵循概要设计来进行。详细设计方案的更改，不得影响到概要设计方案；如果需要更改概要设计，必须经过项目经理的同意。详细设计，应该完成详细设计文档，主要是模块的详细设计方案说明。和概要设计一样，每个模块的详细设计文档都应该独立成册。</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 概要设计里面的数据库设计应该重点在描述数据关系上，说明数据的来龙去脉，在这里应该结合我们的一下结果数据，说明这些结果数据的源点，我们这样设计的目的和原因。详细设计里的数据库设计就应该是一份完善的数据结构文档，就是一个包括类型、命名、精度、字段说明、表说明等内容的数据字典。</p>
<p style="text-indent: 2em">&nbsp;&nbsp; 概要设计里的功能应该是重点在功能描述，对需求的解释和整合，整体划分功能模块，并对各功能模块进行详细的图文描述，应该让读者大致了解系统作完后大体的结构和操作模式。详细设计则是重点在描述系统的实现方式，各模块详细说明实现功能所需的类及具体的方法函数，包括涉及到的sql语句等。</p>
<p style="text-indent: 2em">概要设计，详细设计之间的关系是什么？</p>
<p style="text-indent: 2em">Q:</p>
<p style="text-indent: 2em">我的看法：</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp;<font color="#ff0000"> 概要设计只说明系统有多少个模块，各模块之间的接口和个模块本身的功能</font></p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 详细设计说明某个具体模块如何实现，粒度应该比程序略高一些</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 但是问题来了，各个模块之间是有层次关系的，也有先后逻辑关系。这就说明，在概要设计中，还必须考虑模块的实现细节，否则，你怎么知道这个模块下面要划分子模块？你怎么知道各子模块的调用顺序？</p>
<p style="text-indent: 2em">&nbsp;&nbsp;&nbsp; 这就说明，概要设计和详细设计是重叠进行的，而软件工程书上说的确是顺序进行的，不知道是不是我的理解有问题。</p>
<p style="text-indent: 2em">举个例子，例如排序程序，如果设计2个模块：</p>
<p style="text-indent: 2em">一个主模块用于排序子模块用于交换2个变量，主模块调用子模块，但是子模块是怎么设计出来的呢？肯定是你先想到了用冒泡等排序方式的时候需要交换数据，这已经考虑了主模块足够多的细节，似乎属于"详细设计"了，但是目前进行的是概要设计，这就产生了我所说的重叠的情况。</p>
<p style="text-indent: 2em">A:</p>
<p style="text-indent: 2em">看看上面的帖子，有意思的居多。</p>
<p style="text-indent: 2em">上面也有朋友说到用建筑的例子来比喻。</p>
<p style="text-indent: 2em"><font color="#0000ff">软件的概要设计，主要是建立软件系统的整体架构，</font>也就是我们在盖房子时候，需要先将房子的整个架子构建起来。</p>
<p style="text-indent: 2em">软件的详细设计，主要是将软件系统的各个部分的具体设计方法、逻辑、功能采用文字方式进行表述。这样在实现过程中，Coding人员原则上严格按此进行代码实现即可。</p>
<p style="text-indent: 2em">这样的一个最为简单的例证：我们可以将代码交付第三方来做。验证与跟踪采取设计来。</p>
<p style="text-indent: 2em">我看上面还有一个朋友说：快速做代码。这个本身没有值得批评之处。但只要想一下，你写的代码没有任何设计思想、文档留下的情况，一旦你离开，如何维护？重新设计吗？还是花费几倍人力去研究你写的几千/万，甚至几十万行代码？如果是这样的，你没错，关键是你们老板太对了，钱算什么。</p>
<p style="text-indent: 2em">另外的一个问题是：中国人如此聪明，但中国为什么没有出现巨型软件产品呢？个人英雄主义依然很严重，老板的短视利益行为大行其道。</p><img src ="http://www.blogjava.net/luluyanglu/aggbug/351754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2011-06-04 22:58 <a href="http://www.blogjava.net/luluyanglu/archive/2011/06/04/351754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>详细设计文档-国标</title><link>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351753.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Sat, 04 Jun 2011 14:39:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351753.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/351753.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351753.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/351753.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/351753.html</trackback:ping><description><![CDATA[以下是国标：<br />有的已经不合适时代的发展了，拟定设计一套比较符合当前工作需要的格式。<br />但暂时没有空。<br />
<hr style="width: 100%; height: 2px" />
<br />
<h1 style="margin: 17pt 0cm 16.5pt"><a><span><font face="Times New Roman" color="#5e8296">1</font></span></a><span>引言</span></h1>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">1.1</font></span></a><span>编写目的</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>说明编写这份详细设计说明书的目的，指出预期的读者。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">1.2</font></span></a><span>背景</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>说明：</span></p>
<p style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt"><span><font face="Times New Roman">a．<span style="font: 7pt Times New Roman"> </span></font></span><span>待开发软件系统的名称；</span></p>
<p style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt"><span><font face="Times New Roman">b．<span style="font: 7pt Times New Roman"> </span></font></span><span>本项目的任务提出者、开发者、用户和运行该程序系统的计算中心。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">1.3</font></span></a><span>定义</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>列出本文件中用到专门术语的定义和外文首字母组词的原词组。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">1.4</font></span></a><span>参考资料</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>列出有关的参考资料，如：</span></p>
<p style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt"><span><font face="Times New Roman">a．<span style="font: 7pt Times New Roman"> </span></font></span><span>本项目的经核准的计划任务书或合同、上级机关的批文；</span></p>
<p style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt"><span><font face="Times New Roman">b．<span style="font: 7pt Times New Roman"> </span></font></span><span>属于本项目的其他已发表的文件；</span></p>
<p style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt"><span><font face="Times New Roman">c．<span style="font: 7pt Times New Roman"> </span></font></span><span>本文件中各处引用到的文件资料，包括所要用到的软件开发标准。列出这些文件的标题、文件编号、发表日期和出版单位，说明能够取得这些文件的来源。</span></p>
<h1 style="margin: 17pt 0cm 16.5pt"><a><span><font face="Times New Roman" color="#5e8296">2</font></span></a><span>程序系统的结构</span></h1>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>用一系列图表列出本程序系统内的每个程序（包括每个模块和子程序）的名称、标识符和它们之间</span><font face="Times New Roman"> </font><span>的层次结构关系。</span></p>
<h1 style="margin: 17pt 0cm 16.5pt"><a><span><font face="Times New Roman" color="#5e8296">3</font></span></a><span>程序</span><span><font face="Times New Roman">1</font></span><span>（标识符）设计说明</span></h1>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>从本章开始，逐个地给出各个层次中的每个程序的设计考虑。以下给出的提纲是针对一般情况的。对于一个具体的模块，尤其是层次比较低的模块或子程序，其很多条目的内容往往与它所隶属的上一层</span><font face="Times New Roman"> </font><span>模块的对应条目的内容相同，在这种情况下，只要简单地说明这一点即可。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">3.1</font></span></a><span>程序描述</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>给出对该程序的简要描述，主要说明安排设计本程序的目的意义，并且，还要说明本程序的特点（如</span><font face="Times New Roman"> </font><span>是常驻内存还是非常驻？是否子程序？是可重人的还是不可重人的？有无覆盖要求？是顺序处理还是并发处理等）。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">3.2</font></span></a><span>功能</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>说明该程序应具有的功能，可采用</span><span><font face="Times New Roman">IPO</font></span><span>图（即输入一处理一输出图）的形式。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">3.3</font></span></a><span>性能</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>说明对该程序的全部性能要求，包括对精度、灵活性和时间特性的要求。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">3.4</font></span></a><span>输人项</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>给出对每一个输入项的特性，包括名称、标识、数据的类型和格式、数据值的有效范围、输入的方式。数量和频度、输入媒体、输入数据的来源和安全保密条件等等。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">3.5</font></span></a><span>输出项</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>给出对每一个输出项的特性，包括名称、标识、数据的类型和格式，数据值的有效范围，输出的形式、数量和频度，输出媒体、对输出图形及符号的说明、安全保密条件等等。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">3.6</font></span></a><span>算法</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>详细说明本程序所选用的算法，具体的计算公式和计算步骤。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">3.7</font></span></a><span>流程逻辑</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>用图表（例如流程图、判定表等）辅以必要的说明来表示本程序的逻辑流程。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">3.8</font></span></a><span>接口</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>用图的形式说明本程序所隶属的上一层模块及隶属于本程序的下一层模块、子程序，说明参数赋值和调用方式，说明与本程序相直接关联的数据结构（数据库、数据文卷）。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">3.9</font></span></a><span>存储分配</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>根据需要，说明本程序的存储分配。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">3.10</font></span></a><span>注释设计</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>说明准备在本程序中安排的注释，如：</span></p>
<p style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt"><span><font face="Times New Roman">a．<span style="font: 7pt Times New Roman"> </span></font></span><span>加在模块首部的注释；</span></p>
<p style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt"><span><font face="Times New Roman">b．<span style="font: 7pt Times New Roman"> </span></font></span><span>加在各分枝点处的注释；</span></p>
<p style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt"><span><font face="Times New Roman">c．<span style="font: 7pt Times New Roman"> </span></font></span><span>对各变量的功能、范围、缺省条件等所加的注释；</span></p>
<p style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt"><span><font face="Times New Roman">d．<span style="font: 7pt Times New Roman"> </span></font></span><span>对使用的逻辑所加的注释等等。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">3.11</font></span></a><span>限制条件</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>说明本程序运行中所受到的限制条件。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">3.12</font></span></a><span>测试计划</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>说明对本程序进行单体测试的计划，包括对测试的技术要求、输入数据、预期结果、进度安排、人员职责、设备条件驱动程序及桩模块等的规定。</span></p>
<h2 style="margin: 13pt 0cm"><a><span><font color="#5e8296">3.13</font></span></a><span>尚未解决的问题</span></h2>
<p style="margin: 0cm 0cm 0pt; text-indent: 21pt"><span>说明在本程序的设计中尚未解决而设计者认为在软件完成之前应解决的问题。</span></p>
<h1 style="margin: 17pt 0cm 16.5pt"><a><span><font face="Times New Roman" color="#5e8296">4</font></span></a><span>程序</span><span><font face="Times New Roman">2</font></span><span>（标识符）设计说明</span></h1>
<p style="margin: 0cm 0cm 0pt"><span>用类似</span><span><font face="Times New Roman">F</font></span><span>．</span><span><font face="Times New Roman">3</font></span><span>的方式，说明第</span><span><font face="Times New Roman">2</font></span><span>个程序乃至第</span><span><font face="Times New Roman">N</font></span><span>个程序的设计考虑。</span></p><img src ="http://www.blogjava.net/luluyanglu/aggbug/351753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2011-06-04 22:39 <a href="http://www.blogjava.net/luluyanglu/archive/2011/06/04/351753.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>详细设计文档的模版</title><link>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351752.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Sat, 04 Jun 2011 14:37:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351752.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/351752.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351752.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/351752.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/351752.html</trackback:ping><description><![CDATA[<p><font size="3">文档编号：[文档编号]</font></p>
<p><font size="3">[项目名称]<br />详细设计说明书</font></p>
<p><font size="3">版本号：[版本号]<br />受控编号：[受控编号]</font></p>
<p><br /><font size="3">编写部门：[编写部门]<br />编写人：[编写人]<br />审核人：[审核人]<br />审核日期：2005年3月10日</font></p>
<p><font size="3">批准人：[批准人]<br />日期：2005年3月10日</font></p>
<p><br /><font size="3">目 录<br />1．引言&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.. 1<br />编写目的<br />背景<br />定义<br />参考资料<br />2．程序系统结构&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.. 1<br />3．元素索引表&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.. 1<br />4．程序设计&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.. 1<br />元素名<br />元素名<br />==================请使用本模板者自己补充此目录==================</font></p>
<p><font size="3">1．引言<br />1.1) 编写目的<br />[在此说明编写这份概要设计说明书的目的，指出预期的读者。]</font></p>
<p><br /><font size="3">1.2) 背景<br />[系统名称]<br />[项目提出者、开发者、用户、运行地点]</font></p>
<p><br /><font size="3">1.3) 定义<br />[术语和缩写说明]<br />1.4) 参考资料<br />[本项目的计划任务书或合同、上级机关批文]<br />[本项目已发布文档]<br />[本文引用的其它文档资料（包括各种开发标准）]</font></p>
<p><br /><font size="3">2．程序系统结构<br />[用一系统图表列出模块内名元素的名称、标识及相互间的层次结构关系]</font></p>
<p><br /><font size="3">3．元素索引表<br />[元素索引（元素名，及其详细说明部分在本文中的起止页码）</font></p>
<p><br /><font size="3">4．程序设计<br />4.1) [元素名(与索引表中对应)]<br />a) 程序描述<br />[元素的目的/意义/常驻内存/可重入/并发/覆盖要求等等]</font></p>
<p><br /><font size="3">b) 功能<br />[该元素应具有的功能(可用IPO图)]</font></p>
<p><br /><font size="3">c) 性能<br />[对元素性能的要求(精度/灵活性/时间特性等)]</font></p>
<p><br /><font size="3">d) 输入项<br />[每一输入项的特性(名称/标识/类型/取值范围/输入方式/来源/安全等)]</font></p>
<p><br /><font size="3">e) 输出项<br />[每一输出项的特性(名称/标识/类型/取值范围/输入方式/来源/安全等)]</font></p>
<p><br /><font size="3">f) 算法<br />[元素使用的算法,具体计算公式及计算步骤]</font></p>
<p><br /><font size="3">g) 流程逻辑<br />[元素的完整流程图(必须有完整的说明)]</font></p>
<p><br /><font size="3">h) 接口<br />[用图形方式说明本元素在系统中的定位及赋值/参数/数据等信息</font></p>
<p><br /><font size="3">i) 存储分配<br />[若有需要,说明元素的存储分配方式]</font></p>
<p><br /><font size="3">j) 注释设计<br />[元素首部的注释内容]<br />[各节点的注释(变量功能/变量范围/缺省条件等)]<br />[为所使用的逻辑加的注释内容]</font></p>
<p><br /><font size="3">k) 限制条件<br />[本元素正常运行所必需的条件(如,必需有某文件)]</font></p>
<p><br /><font size="3">l) 测试计划<br />[本元素的详细测试计划(人员/环境/标准/反馈机制/评价方式/目标等)</font></p>
<p><br /><font size="3">m) 尚未解决的问题<br />[元素设计中尚未解决需系统完成前必需解决的问题]</font></p>
<p><br /><font size="3">4.2) [元素名(与索引表中对应)]<br />&#8230;&#8230;内容与格式同 4.1 <br />&#8230;&#8230;同上，直至所有元素描述完毕</font></p><img src ="http://www.blogjava.net/luluyanglu/aggbug/351752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2011-06-04 22:37 <a href="http://www.blogjava.net/luluyanglu/archive/2011/06/04/351752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何写详细设计文档</title><link>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351751.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Sat, 04 Jun 2011 14:32:00 GMT</pubDate><guid>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351751.html</guid><wfw:comment>http://www.blogjava.net/luluyanglu/comments/351751.html</wfw:comment><comments>http://www.blogjava.net/luluyanglu/archive/2011/06/04/351751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/luluyanglu/comments/commentRss/351751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/luluyanglu/services/trackbacks/351751.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 7.5pt; text-indent: 21pt; line-height: 150%" align="left"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">在大多数软件项目中，要末不作详细设计，要么开发完成后再补详细设计文档，质量也不容乐观，文档与系统往往不能同步，使详细设计文档完全流于形式，对工作没有起到实际的帮助。</span></p>
<p style="margin: 0cm 0cm 7.5pt; text-indent: 21pt; line-height: 150%" align="left"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">那到底应不应该写详细设计文档呢，怎么使详细设计文档起到他应有的作用呢，下面就让我们来认识一下详细设计及写详细设计文档的好处和问题。</span></p>
<p style="margin: 0cm 0cm 0pt 30pt; text-indent: -18pt; line-height: 150%; text-align: left" align="left"><span style="font-size: 10pt; line-height: 150%; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">什么是详细设计</span></strong></p>
<p style="text-indent: 21pt; line-height: 150%" align="left"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">详细设计是相对概要设计而言的，是瀑布开发流程的一个重要环节，在概要设计的高层设计的基础上，从逻辑上实现了每一模块的功能，是编码阶段的主要参考资料，是从高层到低层、逐步精化思想的具体实现。</span></p>
<p style="text-indent: 21pt; line-height: 150%" align="left"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">详细设计文档的内容包括各个模块的算法设计，</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体">接口设计，</span> <span style="font-size: 12pt; line-height: 150%; font-family: 宋体">数据结构设计，交互设计等。必须写清楚各个模块</span><span style="font-size: 12pt; line-height: 150%; font-family: Arial">/</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">接口</span><span style="font-size: 12pt; line-height: 150%; font-family: Arial">/</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">公共对象的定义，列明各个模块程序的</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">各种执行条件与期望的运行效果，还要正确处理各种可能的异常。 </span><strong></strong></p>
<p style="margin: 0cm 0cm 0pt 30pt; text-indent: -18pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 12pt; font-family: 宋体">为什么要作详细设计</span></strong></p>
<p style="margin: 0cm 0cm 7.5pt; text-indent: 21pt; line-height: 150%" align="left"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">在开发过程中，由需求及设计不正确、不完整所导致的问题是项目进度拖延、失败的一个主要因素，而软件系统的一个重要特性就是需求和设计的不断构建和改进，在写详细设计文档过程中，</span><strong>&nbsp;</strong><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">详细设计实际上是对系统的一次逻辑构建，可以有效验证需求的完整性及正确性。</span></p>
<p style="margin: 0cm 0cm 7.5pt; text-indent: 21pt; line-height: 150%" align="left"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">如果不写详细设计文档，一般就从概设直接进入编码阶段，这时开发人员所能参考的资料就是需求规格说明书及页面原型、数据库设计等，不能直接进行开发，需要进行信息的沟通，把页面原型不能体现的设计讲清楚，这样既容易遗忘，也容易发生问题，详细设计文档可以作为需求人员、总体设计人员与开发人员的沟通工具，把静态页面无法体现的设计体现出来，包含整体设计对模块设计的规范，体现对设计上的一些决策，例如选用的算法，对一些关键问题的设计考虑等等，使开发人员能快速进入开发，提高沟通效率，减少沟通问题。</span></p>
<p style="margin: 0cm 0cm 7.5pt; line-height: 150%" align="left"><span style="line-height: 150%; font-family: Arial"><br /></span><span style="font-size: 12pt; line-height: 150%; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">对于系统功能的调整，后期的维护，详设文档提供了模块设计上的考虑、决策，包括模块与整体设计的关系、模块所引用的数据库设计、重要操作的处理流程、重要的业务规则实现设计等等信息，提供了对模块设计的概述性信息，阐明了模块设计上的决策，配合代码注释，可以相对轻松读懂原有设计。</span></p>
<p style="margin: 0cm 0cm 0pt 30pt; text-indent: -18pt; line-height: 150%; text-align: left" align="left"><span style="font-size: 10pt; line-height: 150%; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">存在的问题</span></strong></p>
<p style="margin: 0cm 0cm 7.5pt; text-indent: 24pt; line-height: 150%" align="left"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">要由专门的人写，是比较麻烦的，也是很需要时间的，会对进度造成压力，也容易形成工作瓶颈，使设计人员负担过重，而开发人员无事可作。对于现在一般的以数据库为中心的管理系统而言，这个工作始终是要作的，区别只不过是不是形成专门文档，形成文档可能会多花一两周时间，但相对于规避的风险和问题来说，也是值得的，另外由于现在高级语言的流行，所以更详细的设计应该直接体现在代码的设计上，而文档则只体现设计上的一些决策，协调整体设计与模块设计的关系，把页面原型所不能体现的设计情况文档化，所以所花费的时间是有限的。</span></p>
<p style="margin: 0cm 0cm 7.5pt; text-indent: 24pt; line-height: 150%" align="left"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">设计内容容易过细，但设计阶段是不能考虑特别清楚地，时间也不允许。</span><span style="font-size: 12pt; line-height: 150%; font-family: Arial">&nbsp;<br />&nbsp;</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">对于这个问题，一个对策是上边所提到的，文档只体现设计上的决策，页面原型所不能反映的信息，详细设计只体现总体设计对模块设计的一些考虑，例如对功能的数据库设计等等，而具体的实现实现，则到代码中再去实现，相关的设计也仅体现在代码中。</span><span style="font-size: 12pt; line-height: 150%; font-family: Arial">&nbsp;<br />&nbsp;&nbsp;&nbsp; &nbsp;</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">需求、设计需要不断的被更新、构建，则设计文档需要不断的重新调整，文档的维护需要跟上，否则文档和系统的同步就很难得到保障了，且造成多余的工作量。文档的内容易流于形势，质量糟糕，不能成为开发人员的参考手册，一是要建立起相关制度，如有修改，先改文档，后作开发，从工作流程上切实保障文档与系统的同步，二是要规范文档质量，对文档该写什么，不该写什么，标准是什么，粒度是什么，语法应该如何组织，有明确的标准和考虑，同时，建立审计文档评审、审核制度，充分保障系统的使用。</span></p>
<p style="margin: 0cm 0cm 7.5pt; text-indent: 24pt; line-height: 150%" align="left">&nbsp;</p>
<p style="margin: 0cm 0cm 0pt 30pt; text-indent: -18pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 12pt; font-family: 宋体">应该如何写详细设计文档</span></strong></p>
<p style="margin: 0cm 0cm 7.5pt; text-indent: 24pt; line-height: 150%" align="left"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">下面讨论如何写出一个符合要求、实用的详细设计文档。</span></p>
<p style="margin: 0cm 0cm 7.5pt; text-indent: 24pt; line-height: 150%" align="left"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">首先是文档的内容，根据项目和团队的不同，详细设计文档的内容也有所不同，一般说来，粒度不宜过细，不能代替开发人员的设计和思考，但要把有关设计的决策考虑进去，包括与其他模块、整体设计的关系、操作的处理流程，对业务规则的设计考虑等，有一个标准为，凡是页面原型、需求规格说明书所不能反映的设计决策，而开发人员又需要了解的，都要写入文档。</span></p>
<p style="margin: 0cm 0cm 7.5pt; line-height: 150%" align="left"><span style="font-size: 12pt; line-height: 150%; font-family: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">其次是文档所面向的读者，主要为模块开发人员、后期维护人员，模块开发人员通过详细设计文档和页面原型来了解所开发的功能，后期维护人员通过实际系统、模块代码、详细设计文档来了解一个功能。</span></p>
<p style="margin: 0cm 0cm 7.5pt; line-height: 150%" align="left"><span style="font-size: 12pt; line-height: 150%; font-family: Arial">&nbsp;&nbsp; </span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">再有就是谁来写文档，因为文档主要考虑的是设计上的决策，所以写文档的人应该为负责、参加设计的技术经理、资深程序员，根据团队情况和项目规模、复杂度的不同，也有所不同。</span></p>
<p style="margin: 0cm 0cm 7.5pt; line-height: 150%" align="left"><span style="font-size: 12pt; line-height: 150%; font-family: Arial">&nbsp;&nbsp; </span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">还需要保证文档的可读性、准确性、一致性，要建立严格的文档模板及标准，保证文档的可读性及准确性，同时建立审核及设计评审制度，来保障设计及文档的质量，另外在工作流程中要强调，要先设计、先写文档，再进行开发。</span></p>
<p style="margin: 0cm 0cm 7.5pt; text-indent: 24pt; line-height: 150%" align="left">&nbsp;</p><img src ="http://www.blogjava.net/luluyanglu/aggbug/351751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/luluyanglu/" target="_blank">大鱼</a> 2011-06-04 22:32 <a href="http://www.blogjava.net/luluyanglu/archive/2011/06/04/351751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>