从4月3号到5月7号机房收费系统合作版终于告一段落。从写文档到画UML图,到加设计模式对文档进行补充,然后是编码,测试发布。时间持续了一个月,遇到的问题很多,当然收获也很多。

由于之前已经做过几遍机房收费系统了对系统的功能已经很熟悉了,所以这次合作开发就省去了可行性分析、对系统功能的具体分析等工作,那么接下来就是写文档了。虽然之前个人版机房收费系统已经试着写过文档了,但那些文档基本上都是写给自己看,多点什么内容无关紧要,少点什么内容自己也察觉不出来,毕竟个人版的系统涉及到的所有人员只有自己一个人。但合作开发就不一样了,合作开发要求项目要文档来驱动,所有的东西都要体现在文档上,避免直接交流都要以文档来代替。一开始写文档时真不知道如何下手,该从哪去写,各个文档里都要具体写什么内容。怎么写才能体现出系统的设计思路及实现思路以方便小组成员开发的时候参考。

这次合作开发主要写了可行性分析、需求分析、概要设计、详细设计、数据库设计、测试计划、项目开发计划、用户操作手册几个文档。比较重要的是需求分析文档、概要设计文档、详细设计文档、数据库设计文档还有就是测试文档。

需求分析

需求分析,需求分析是系统设计的前提,一个系统设计的是不是合理,功能是不是完善主要看需求分析阶段的需求分析做的好不好。作为软件的设计者来说,需求分析文档是写给客户看的也是写给自己看的。写给客户看主要是看有没有把客户的所有需求考虑在内,体现在功能、界面设计上。客户看到需求文档并满意后开发人员才能开始开发系统。如果将来软件开发出来客户对软件有了变动,认为没有达到他的需求此时需求文档完全可以作为一份凭证,证明责任并不在我们开发人员身上。当然需求分析文档最主要的还是写给软件设计人员自己看的。对于一个系统来说在各个方面都有要求,比如数据的输入输出、界面设计及系统所涉及的各项功能等。对于一个软件设计师来说这些记在脑子里是没用的,因为软件设计师并不参与软件的实现过程,在软件的实现过程中编码人员需要这些数据,而作为软件设计者能为编程人员提供这些数据的一个平台只有通过文档来体现。所以需求分析文档的主要的内容可以概括为软件原型图(为用户提供一个软件开发参考)、用例图(向软件设计者、软件开发者提供系统功能模型)、数据输入、输出介绍(为软件设计者、编程人员提供数据参考)。

概要设计文档

概要设计文档主要是对系统的一个概要分析,是从整体上看系统的构成,如果把整个软件当做一本书来看,概要设计文档就应该和书的目录的作用差不多了,是对书内容的整体的描述。所以在概要设计文档里应该体现的内容应该包括系统架构(包图)、类图、接口设计、数据库表说明等。站在使用者的角度来看,当然概要设计文档是写给项目开发人员用的。概要设计体现出对软件的宏观把控,内容不多但却十分重要为软件详细指明方向。

详细设计文档

概要设计是对整个系统的整体描述,详细设计文档就是在概要设计的基础上对系统设计的具体实现和完善。详细设计文档对于分层实现和合作开发来说十分重要。软件实现人员(编程人员)首先要对系统有一个快速认识、了解,所以详细文档中系统的整体架构必不可少。有了对系统的整体认识,在软件具体实现上用到的最多的还是类,开发人员需要实现他们并去使用他们,所以详细设计文档中对类、类中每个方法的功能描述、属性的使用、参数的类型和使用等描述都是必不可少的。当然一个系统的实现不仅仅体现在单个类的实现上,还体现在多个类的协同上即类与类之间的调用。所以详细设计文档中第三个必不可少的内容就是时序图及其描述。时序图体现出在整个系统中或某个功能模块中类与类之间的联系及类与类之间的数据传递。把系统中的类看做节点有了时序图做向导才把这些离散的点连起来组成网,从而构成了整个系统。

数据库设计说明书

数据库设计说明书主要体现数据库的设计跟使用,所以数据库设计说明书中应详尽的描述数据库的概念结构设计、逻辑结构设计和物理结构设计,当然数据库名称、数据表结构、各表字段及详细说明、及视图的说明都必不可少。数据库是整个软件应用的根基,是软件设计的起点,它起着决定性的质变作用。站在数据库的建立者和使用者的角度来看,数据库设计说明书不仅要能够使数据库创建者能够完成一个完整的数据库设计,还要使数据库使用者能够在此说明书的指导下实现对数据库的使用。

测试计划文档

测试文档可千万不能小瞧,一个系统开发完成,成功与否要看测试效果如何,测试效果的体现还要根据测试计划文档来评价,它直接体现着开发人员所开发出的系统是否跟软件设计人员设计的系统之间的差距。所以测试文档中应该体现出对各模块功能测试的测试内容、测试方法、测试结果预测等。测试文档主要的使用对象是软件测试人员,是衡量一个系统是否成功的关键性文档,也为后期修改指明了方向。

合作开发文档的不足

这次合作写的文档明显有许多不足之处,问题主要体现在详细设计文档和测试计划文档内容不详细,有些关键的细节东西没有体现出来。这次开发我负责写文档、画图和U层,坤哥负责B层跟抽象工厂,静媛负责D层、接口跟数据库。U层的问题还少点,这可能跟由我负责有关。B层是出现问题最多的层,主要的问题是详细设计中体现的供代码实现的信息太少,比如说各个方法的功能及实现及所需要的参数的说明等。最突出的一个问题是从D层返回给B层的DataTable数据,如果这些数据直接返回给U层还好说直接返回就行,当这些数据在B层需要的时候由于DataTable不像实体那样对象名打点就能得到所需要的数据,所以对于坤哥来说DataTable就像一个密封的容器,明知道里边有数据但只能眼睁睁的看着却拿不到。D层跟数据库出的问题主要是在数据表的查询和字段的使用上。比如查询正在上机时,可以根据IsOnline字段来判断当前正在上机信息,由于信息没体现出来所以该字段没有用上基本上都是根据下机 时间、日期是否为空来判断的,虽然这么做能够实现功能但与预期的实现方式有差别。还有一个突出问题就是有些字段的值是固定可选择的,比如说IsOnline字段的可选择值为”是“或”否“,IsCheckout字段的可选择值为“是”或“否”,还有就是上机记录的备注信息“Comment”的可选择值是“正常下机”和“全部下机”,由于这样的数据没有在文档中将可选择的值全部体现出来,所以测试的时候导致了数据库中的值各种各样。

总结:

写文档最最重要的是要明确使用对象,几个文档的使用对象包括客户、设计人员自己、编程人员、后期维护人员,所有文档的建立要站在使用者的角度去考虑文档应该怎么写、写什么,所以写文档要牢牢把握为谁而写。其次文档还要明确的体现出设计思路及实现思路,要让编程人员按你的设计思路和实现思路去实现。所以衡量文档是否成功的标志是软件的实现是否跟设计人员的设计思路和实现思路完全吻合。

合作开发后谈如何写文档相关推荐

  1. 程序员都讨厌写文档?这4个工具让你事半功倍

    长按识别上方二维码,关注公众号:后端面试那些事 回复"报告",获取你的GitHub年度报告! 对于一般的程序员来说,花费数小时来创建代码或修改现有代码只是一天工作中的一部分,简而言 ...

  2. java开发文档怎么写_程序员该不该写技术文档,怎么写文档,易懂又能提升自己...

    最近公司项目的调用量突然涨了一大波,很多系统都纷纷扛不住了,于是需要对系统进行优化,系统优化的第一步,便是梳理业务! 在这个过程中,经常出现了这样一些情况,发现数据库的某些字段,没有注释,也没有一定的 ...

  3. 华为18级工程师三年心血终成趣谈网络协议文档(附大牛讲解)

    华为18级工程师三年心血终成趣谈网络协议文档(附大牛讲解) 程序员高级码农II 2020-09-25 07:23:00 前言 虽然在大学的时候大家都学过网络协议 ,但是肯定感觉网络协议的知识点非常多 ...

  4. 华为19级工程师三年心血终成趣谈网络协议文档(附清华大牛视频讲解和课件)

    前言 虽然在大学的时候大家都学过网络协议 ,但是肯定感觉网络协议的知识点非常多 ,非常复杂.学的时候就浑浑噩噩,真正到了实践中更是糊里糊涂,一旦工作中遇到了网络问题,除了会简单地 ping 几下 ,基 ...

  5. 为什么程序员都不写文档?

    ‍‍‍ ‍ [CSDN 编者按]对于程序员来说文档可能是他最大的软肋.一些被称之为高手的程序员,往往是文档方面的处理会偏弱.不管这个程序员是在大公司.还在小公司.不管程序是写文档的.还是不写文档的,大 ...

  6. .net编写抽奖的文档_使用开源文档工具docsify,用写博客的姿势写文档

    前提 ❝ 下面的简介摘抄自docsify的官网 https://docsify.js.org 中的简介 ❞ 「docsify」是一个神奇的文档网站生成器.他可以快速帮你生成文档网站.不同于GitBoo ...

  7. flowable 中文文档_滴滴实习收获 | 产品经理就是写文档和开会沟通的吗?

    本篇文章希望和大家分享我今年的2个思考:一是为什么需要产品经理,二是产品经理的工作核心逻辑是什么.内容会结合<俞军产品方法论>和我自己在滴滴国际化做产品实习的经历. 一.为什么需要产品经理 ...

  8. 比Word更优雅的记笔记/写文档/交报告方式

    比Word更优雅的记笔记/写文档/交报告方式 markdown+vscode->pdf 背景 最近在上的一门<信息系统开发工具>课老师要求实验以后都要交实验报告,但是和以往不同的是, ...

  9. 老油条用什么工具写文档?

    写代码,哪个程序员都不害怕. 写文档,哪个程序员都害怕! 为什么? 还不是因为 API 工具不好使,不便捷,同步麻烦,测试看不懂-- 最近调研了身边一些开发团队,发现他们列举的工具中,都出现过同一款工 ...

最新文章

  1. 青少年编程竞赛交流群周报(第038周)
  2. 如何从MP4视频文件中抽取MP3音频?
  3. 如何实施异构服务器的负载均衡及过载保护?
  4. Spring event 使用完全指南
  5. matlab的默认字体_matlab默认字体设置
  6. js 数据类型_js中检测数据类型的方法汇总
  7. SpringBoot出现Request method ‘GET‘ not supported
  8. logstash 获取多个kafka_logstash 配置详解
  9. c语言管理系统信息以文件保存,求大神给一份能用的c语言的学籍管理系统:且能进行文件保存...
  10. SQLSERVER EXCEPT运算符=ORACLE MINUS
  11. 那些我曾经犯过的低级编程错误
  12. new float查询长度 c++_C/C++经典面试题
  13. [Unity] AnimationEvent 因 Animator Controller 中 Transition 设置问题而不触发的快速解决办法:重新拖入 Animator 创建新 State
  14. 特斯拉正加快部署第三代Autopilot自动驾驶计算机
  15. java # 折叠_如何在Java中实现列表折叠
  16. Bootstrap学习(一):Bootstrap简介
  17. 加密能抓到吗?怎么抓_网络赌博被抓怎么处罚 网上参与赌博会坐牢吗
  18. cat 大众点评 mysql_大众点评-CAT监控平台
  19. excel公式和函数
  20. MFC Windows 程序设计[五]之绘制表格Accel

热门文章

  1. 2022-2028全球与中国模板系统(SOM)市场现状及未来发展趋势
  2. 自己的故事自己讲--富士康之旅
  3. 流量/流速单位动态换算
  4. flex4.5嵌入网页之WEB
  5. python 生信分析_用python做生物信息数据分析(2-pysam)
  6. Keil安装stm库文件方法及下载地址
  7. ASO优化之关键词该如何组词选词
  8. spring Aop实现日志
  9. 高通Qualcomm处理器的手机或设备进EDL 9008模式的办法
  10. TFRecord数据集制作