代码改变世界

软件工程之开发流程小总结

2010-02-24 15:07  Virus-BeautyCode  阅读(10137)  评论(3编辑  收藏  举报

 

  观看本文的讨论的开发流程的时候,有两点需要注意:

  1.   首先,流程不是狭义的流程,也就是说不是单只写代码这个过程,包括了软件工程整个流程。
  2.   其次,我所讲的这个流程不见得正确,准确的说是肯定不能适用于全部软件开发项目,也就是说不是银弹,其实说起来连大部分都涵盖不了,顶多就是一部分吧。

  

  可行性分析

  这个一般都是做战略的专家来做的,他们更加有市场的前瞻性,俗话说就是看的更远一些,搞市场分析、调研,看看我们的想法到底是否可行,可行性有多大,可能会遇到的问题,我们的优势在哪里,可以利用的资源有哪些,需要引进那些资源,有多少对手,他们都进行到了什么程度等等。

  这个阶段的文档成果是:可行性分析报告等

  需求分析

  这个已经开始具体操作,经过可行性分析,我们有机会,可以进入这个领域。这时候,需要领域专家参与进来,架构师也要参与进来,还有就是需求分析的专业人士,和最少一名文档员,用来记录开发讨论的结果并形成文档。

  工作就是分解项目的需求,到底要做些什么,要实现什么功能,就是功能的范围和功能的细节,主要还是业务方面的梳理。

  这个阶段的文档成果是:需求分析说明书等

  概要设计

  经过前面的需求分析,形成了需求分析说明书。这个阶段应该是业务建模,形成业务用例,进一步形成业务用例。这个阶段是分解需求,可以使用数据库建模工具,或者是UML建模工具来辅助一下。

  这个阶段的文档成果是:概要设计说明书、业务用例文档等

  详细设计

  有了概要设计,有了模型,可以定义出数据库模型,甚至是可以定义数据库的字段,然后可以让高级程序员来辅助架构师进行架构设计,普通程序员先写实现的技术用例。或者让他们先看看业务用例,熟悉一下业务流程和项目的目标。

  这个阶段的文档成果是:概要设计说明书、技术用例文档等

  具体开发

  这个阶段就是具体的代码编写了,考验程序员的基本功的时候到了。

      关于开发的分工的话,我趋向于分层来分工,这样有以下几个好处:

 

  •       不用每个人从数据访问写到界面表现,可以集中精力,精益求精,便于后期优化
  •       中间层可拔插,可替换,可以优化,增加可扩展性
  •       可以享受ORM带来的一些好处
  •       增加可测试性,做得好,甚至可以测试外包
  •   这个阶段的文档成果是:接口文档,关键算法文档等

 

  可能会有人说,怎么没有测试呢?其实测试时贯穿整个流程的,在需求分析的时候,可以让他们熟悉业务,出来需求之后,他们就可以编写一些手动测试的测试用例,后面产品出来就可以测试了。开发人员的开发的时候,他们就要进行自动化测试的准备。

  还有就是一定要形成文档,每个阶段都会有开会,开会大家都有讨论,都需要有结论,有纸质的文档进行保存,可以买录音笔,先录下来,然后整理成文档,因为每个阶段都是后面阶段的基础,如果基础出了问题,后面都会是有问题的,所以后面备查。