0

软件开发流程

Posted by 鼎鼎 on 一 15, 2009 in 软件

最近比较闲,一直在向老大讨教整套软件开发的流程,虽然其中的各种概念都在平时的工作中经常提到,但一直没有一个系统的理解。自己一直做的工作虽然其中也有比较完善的设计,但是从总体的角度来看依然属于具体的范畴。在他手下做了一年多,之间的沟通也比较流畅了,当然是建立在比较认同他的思想的前提下。
先普及几个经常提到的概念:
1、概念完整性
2、角色定义:确定软件真正的使用者
3、需求定义:做什么
4、规格定义,也叫功能定义
5、软件是一个有机体,设计的目的是为了让这个有机体可以收放自如,其他的所有都是达到这个目的地手段。做软件和做别的任何事情都一样,要找准角色,站对角度,如果使用者这个角色定位不准,角度没站对,做出来东西八成得不到市场的认可。下面是总结的开发流程:
1、角色设计:这个角色必须是最终用户,它的特征以及使用该软件的习惯非常典型,具有很强的代表性。
2、需求定义:这个阶段是解决做什么的问题。角色设计出来后就要站在这个角色的位置上来定义需求,做什么的问题就会非常明确,这样需求就是由这个角色提出的而不会依赖于某个制定需求的人或者老板拍脑袋的主观产物。这部分是在讨论该为用户做什么的问题。
3、规格定义:也叫功能定义,关注的是怎么做的问题。这部分主要是站在软件设计者的角度来分析要通过什么手段来实现角色的需求。这个阶段最好用手绘来画出界面上需要的功能来和用户沟通或开会讨论,这样比起用专业软件画出界面来沟通的好处是不容易让用户偏离功能本身,而提出一些与功能无关的建议,从而偏离规格定义的意图。
4、总体设计阶段:需求和规格确定好之后进入设计阶段。总体设计首先要确定软件的大致架构,分析是否需要分层,需要分几层。在这个阶段基本上可以确定该项目大致可以分为几个小组来做,也就是常说的横向切割,比方说:该项目可分为UI层、领域层、存储层,那么基本上可以分出三个小组来做。总体架构师需要负责层与层之间的协调,这是通过接口来体现的,层与层之间的接口来保持各层之间的概念完整性,这个时候做总体的人的任务已经完成。如果项目不大那么可能项目的分割就到此为止,如果项目很大,那么下面各小组的负责人要继续分割,这个时候就是纵向分割,大体是根据功能来分。各小组长负责小组内部分部分的协调,通过接口来保持之间概念的完整性。接口定义的重担就落在小组长的肩膀上。当然如果小组长没有足够的经验来把握这个小总体,可能还需要总体的架构师来帮忙。
5、具体设计阶段:任务都分配好了,就进入各位工程师具体设计的阶段。自己的模块也不能乱写,最好要有设计,要想办法封装变化,否则软件倒是写好了满足了现在的需求但是对于变化都非常头疼,这样就是不成功的软件。这个阶段一般要画一下静态类图,好好设计一下。
6、编码阶段:设计做好了就要严格按照自己的类图来实现,有可能在实现的过程中发现设计的不合理要及时修改类图,然后再编码,尽量保持自己代码和设计图的一致性,这是个循环往复的过程,写代码的过程也是验证设计合理性的过程。编码完成的时刻才是设计图完成的时刻,否则可能会经常修改。

在整个设计过程中架构师、小组长、程序员各自维护各自的概念完整性,各司其职,架构师负责层与层之间的概念完整性,小组长负责层内部各模块之间的概念完整性,程序员负责自己模块的各个更小模块或者各类之间的概念完整性。

Copyright © 2012 鼎鼎 All rights reserved. Theme by Laptop Geek.