网络实验室

 找回密码
 注册账户
查看: 2848|回复: 0

团队管理 开发流程

[复制链接]
无心的棋子 发表于 2007-7-16 20:37:12 | 显示全部楼层 |阅读模式
按照正常情况,软件开发项目的流程大致可分为“需求”、“分析”、“程序编写”、“集成”、“测试”等阶段,整个开发团队也是按照这个流程组合而成的,所有工作方能顺序进行。这种最常见的模式被称为“瀑布式(Waterfall)”流程法,也就是前一个步骤完成后,再把结果导入下一个步骤,依此类推,直到得到最后结果。这种传统方法的特色是职责分明、各行其是,但同时也有缺点。因为这种单向流程模式缺少各部门间的沟通与反馈设计,也缺少弹性应变机制,一旦发生失误、需求临时改变或流程出现问题时,就会使整个流程大乱,轻则成员彼此指责,重则重起炉灶。这就是软件开发成功率只有24%的原因所在,结果导致人力资源浪费、成本膨胀及客户关系恶化。
既然传统的软件开发体制漏洞百出,那该如何改进呢?目前的软件开发方式,倾向于颠覆惯用的单向式流程,把瀑布的最终结果导回源头,成为一个循环的圆圈(Cycle),使整个流程具备反馈与检验机制。
一般软件开发过程通常分为以下几个阶段:
l       需求分析(RequirementAnalysis)
l       系统分析(SystemAnalysis)
l       系统设计(SystemDesign)
l       程序开发(Implementation)
l       集成及测试(Integrationand Testing)
这种具备往复Cycle能力的软件开发流程图如图3-1所示,并分段详细介绍如下。

图3-1  项目开发流程
重点整理
   软件开发项目流程早期常见的模式被称为“瀑布式(Waterfall)”,如今,循环的圆圈(Cycle),使整个流程具备反馈与检验机制,称为RUP(Rational Unified Process),翻译为“统一软件流程”。
3.2.1 需求分析(Requirement Analysis)
开发软件最怕的就是“做出来的东西,不是客户想要的”,轻者劳而无功,重者违约、毁坏信誉、吃上官司等。为了避免这种状况,软件开发第一阶段的重点是“需求分析”。
在进行需求分析之前,开发团队务必要对该项目的专业领域知识有所了解,也就是俗称的Domain knowledge。常见的状况是:开发团队不了解委托客户的专业领域知识,不了解其专有名词、作业流程,无法顺利沟通,而导致项目失败,这样的例子相当多。
例如:如果要涉足金融领域,则势必要了解金融领域中所惯用的专业名词,如“冲销”、“冲正”、“传票”等所代表的意义。要涉足家具领域,则其“仓管”、“点货”、“报单”等术语也需彻底了解。就算一开始不了解,也要在之后彻底弄清楚。若含糊带过、敷衍了事,很容易造成沟通不良等状况。因此,若要涉足专业领域,开发团队内最好有熟悉该领域的成员。
经过数次需求讨论会议后,开发团队应针对客户需求,举行提案会议并提出一份提案简报。这种提案简报应包含以下几点:
l       开发团队组织成员。
l       新系统与过去(旧系统或无软件)的比较。
l       采用本系统可改进的效益。
l       系统功能大纲,是否可满足客户需求。
l       大致的开发日程与估价。
这份幻灯片(讲解提案简报内容的幻灯片)与这种简报会议相当重要,说明白一点,客户的项目可能有很多竞标者,而这种提案简报将是客户对开发团队的第一印象。因此,不论是幻灯片的精彩程度,还是主讲人的表现,都是决定能否争取到这个项目的关键。
因此,这种幻灯片内容要丰富多彩,要能达到吸引人注意的效果,所以一开始不要直接放上系统架构、模块说明等硬邦邦的内容。可以举出实例,比较有无这种新系统的不同,以此突出新系统的价值与必要性。待客户接受新系统的必要性之后,再大致解说系统架构(不必太详细,在SA、SD文件中才需详细)与日程和估价即可。
如果你已通过这种提案会议与简报为你的团队争取到这个项目,恭喜你!我们可以开始进行下一步骤:系统分析。
重点整理
    软件开发第一阶段,“需求分析”最为重要。
    在需求分析之前,开发团队务必要对该项目的专业领域知识有所了解,也就是俗称的Domain knowledge。
3.2.2 系统分析(System Analysis)
系统分析是为了更清楚地描述客户所要的软件蓝图,通过编写系统分析文件(以下简称SA)和召开系统分析会议等步骤,将软件蓝图描绘得更清楚。
SA文件是作为开发团队与客户讨论之用的,因此必须包含以下几点:
l       前言
应包含背景介绍、开发动机、开发目标等纲要。
l       系统平台架构
应包含这种系统所使用的平台与其架构配置图(硬件、软件、操作系统、服务器、数据库等)。
l       系统软件架构
系统软件架构中,最主要的便是整体系统架构图,此图可用功能框图或网页架构图绘制,其目的在于让客户对系统有一个整体的认识,同时通过此架构图,也方便与客户讨论功能配置、模块增删等细节。绘制上,只要开发团队与客户均能接受,可以据此互相讨论即可。下面列举出常见的几种软件架构图,如图3-2-3-4所示。
图3-2  网上书店软件架构图
图3-3  校园门户网站架构图
图3-4  漫画租售网站架构图
l       软件模块说明
清楚软件架构后,便是对每一模块的细节进行说明。诸如这种模块的名称、数据表、公共程序、所提供的功能等,均需在此以表格方式详细列出。若表格列出不够完整,可以在下方补述。
这部分牵涉到客户需求与后续估价,因此列举得越详细越好,以下列举数例。
  【通讯录模块】
  功能名称
  
  数据库
  
  程序
  
  网页功能
  
  通讯录
  
  个人信息
  
  
通讯录管理AP
  
  查看信息
  
   
   
  人员权限管理AP
  
  修改信息
  
   
   
  版主管理AP
  
  删除信息
  
   
   
   
  查询通讯录
  
   
   
   
  信息检索
  
   
   
   
  管理功能
  





范例3-1  通讯录模块
  【功能说明】
通讯录提供会员在线通讯录,依用户权限不同,提供查看、修改、删除通讯录项目等功能,以条件表达式进行在线查询与全文检索,同时提供完备的管理功能。
  【讨论区】
  功能名称
  
  数据库
  
  公共程序
  
  网页功能
  
  讨论区
  
  讨论区
  
  讨论区访问AP
  
  添加讨论版
  
   
   
  人员权限管理AP
  
  删除讨论版
  
   
   
  文件管理AP
  
  修改讨论版
  
   
   
  版主管理AP
  
  添加主题
  
   
   
   
  删除主题
  
   
   
   
  修改主题
  
   
   
   
  添加留言
  
   
   
   
  删除留言
  
   
   
   
  修改留言
  
   
   
   
  表达式检索功能
  
   
   
   
  文件上传功能
  
   
   
   
  文件删除功能
  
   
   
   
  实用工具功能
  
   
   
   
  管理功能
  
范例3-2  讨论区模块
  【功能说明】
讨论区为会员提供各种事务讨论的空间,依使用者权限不同,提供添加、删除与修改讨论区;添加、删除与修改主题;添加、删除与修改留言等功能。除文字留言外,还可上传图片或文件以供分享,并提供条件式检索,还可自定义讨论区文章链接至个人的链接中,方便日后查阅,同时也提供完备的版主管理功能。
l       项目开发计划
在对整个软件模块都有共识后,即可讨论软件开发计划。这部分通常以甘特图表示。需列出开始日期与结束日期,每一项目所需时间以及每一个检查点或里程碑(Mile Stone),以下是几个开发计划范例。
二手教科书管理系统项目时间起于2005年10月8日,止于2006年1月15日,共计三个月。
  
时程(周)
  
工作项目
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  9
  
  10
  
  11
  
  12
  
  13
  
  14
  
  系统分析/设计
  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
  系统分析文件书写
  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
  开发平台安装
  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
  数据存档
  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
  网页/应用程序开发
  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
  系统测试
  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
  系统发表
  
   
   
   
   
   
   
   
   
   
   
   
   
   
   
范例3-3  二手书网站开发日程
班级入口网站第一期项目起于2004年4月12日,止于2004年5月24日,共计7周。
  
时程(周)
  
工作项目
  
  1
  
  2
  
  3
  
  4
  
  5
  
  6
  
  7
  
  8
  
  系统分析/设计
  
   
   
   
   
   
   
   
   
  开发平台安装
  
   
   
   
   
   
   
   
   
  应用程序开发
  
   
   
   
   
   
   
   
   
  网页开发
  
   
   
   
   
   
   
   
   
  系统测试
  
   
   
   
   
   
   
   
   
  程序封装
  
   
   
   
   
   
   
   
   
  文件制作
  
   
   
   
   
   
   
   
   
范例3-4  班级入口网站日程规划
要注意的是,如果项目要分期(第一期、第二期),甚至另有维护合约或保固合约等状况,则甘特图需延长或以数张甘特图表示。
l       交付项目
在此须详细列出项目完成时应交付给客户的产品清单,以表格列出以便于日后提交。也可指明项目应以何种形式提交(光盘、文件、原始文件或执行文件)。
在此须注意,交付项目应与估价相配合,例如:原始设计文件是否交付,若需要交付,其估价将大为不同。且此项目即为日后提交付款的依据,务必准确无误。
l       经费预估
经费的估计依项目难度、功能多少、自定义程度、美工设计、版型绘制、Logo制作等各有不同,不同地区、不同行业的软件开发费用也有不同,不可一概而论。在此仅指出几个要点:
依功能计价(可依软件模块功能一一计价,用于动态网站)。
依网页类型与数量计价(较常用于静态网站)。
美工通常另外计价(包括配色、版面、Logo、动画等)。
除执行文件外,客户如需软件源代码,则需另外计价。
如客户需要设计文件(SD),则需另外计价。
如有安装、维护、保固需求,则需另外计价。
如需协助数据输入(打字等),则需另外计价。
通常估价会在数次系统分析会议后,与客户协调出一个双方都能接受的价位,因此估价需有相当的经验与技巧才行。
因为SA文件是开发团队与客户的主要沟通文件,因此每次会议后变更的SA文件,均需明确加注版本号码(封面及每页的页首),并送交双方确认,以确保双方达成共识。
而最后定案的SA文件,需有三份备份文件,由客户、开发团队及公正第三者各执一份并盖章生效。通过这些交互验证程序,来确保双方共识无误与相互履行职责。
除了合约之外,SA文件便是双方最重要的公认文件,因此在编写、讨论、定稿等过程中切不可马虎和疏忽。
重点整理
   系统分析通过编写系统分析文件(以下简称SA)与召开系统分析会议等步骤,将软件蓝图描绘得更清楚。
3.2.3 系统设计(System Design)
在系统分析完成后,项目团队与客户之间,应该已经达成一定的共识。接下来要进行的便是依据系统分析中客户所提出的要求,开始设计项目细节,也就是创建系统设计文件。
要注意的是,系统设计文件通常是由Project Leader(项目领导人)编写的,用途为创建所有项目成员在程序开发时的共识,也即所有开发细节均需记录在系统设计文件中,以方便项目成员彼此间的工作分配、共用组件、模块编写等协调工作。
项目细节主要分两部分,第一部分是“工作流程”;第二部分为“数据库规划”。
工作流程主要是将SA文件中所提及的功能模块,依实际运行状况,绘制其流程图。以一般流程图绘制方式绘制即可,也可使用UML(UnifiedModeling Language)绘制。因为流程图是项目成员之间沟通的重要媒介,所以最重要的是:所有项目成员均要看得懂。
流程图通常以功能模块作为绘制时的区分,如功能模块之间有相互关系,也可绘制另一流程图表示,以下是几个流程图的示例,如图3-5~图3-8所示。
图3-5 二手书拍卖网站书籍订购流程图
图3-6  班级入口网站公告模块流程图

图3-7  漫画租借网站服务选择流程图
图3-8  二手书拍卖网站会员注册与登录流程图
系统设计的另一重要部分便是“数据库规划”。目前大部分的程序或网站,在运行时因存储数据之便,均需搭配数据库运行。而数据库的架构(称为Databaseschema),便是设计文件中最重要的部分。所有程序的编写、运行、日后维护也均需参考这部分,因此需细心编写规划。
规划数据库架构是一门专门的学问,在此仅提出几项原则以供参考。
l       在创建数据库架构前,必须针对系统内会运用到的所有数据库功能,进行完整的整理。并列出会使用到的字段和表格,确认字段关联性之后,再开始设计数据库架构。
l       所有数据表名称、字段名称等,需完全用英文和数字命名(最好统一均为大写或均为小写)。
l       每一数据表务必创建一个唯一(Unique)的序号(Serial)字段,用来正确无误地区分出每一条数据,通常这样的字段,我们会用自动增加功能(auto_increment)定义,使其可自动累计。
l       数据库规划需考虑到未来的扩增需求,例如电话号码目前以11位数字记载便已足够,但考虑到未来的需求(如增码、分机、速拨功能等),则通常应以15到20位才能满足未来扩增的需求。
因数据表名称、字段名称均以英文命名,因此每一表格、每一字段的定义与说明,便是SD文件中数据库规划所重点强调的部分,范例3-5列出了一标准的数据表。
X章Y节:公司部门表
  数据表代号:com_dept
  
  数据表定义:公司部门表
  
  操作方式:添加/删除/修改/查询
  
  权限:root
  
  使用的索引
  
  索引字段
  
  类型
  
  Primary Key
  
  serial
  
  int unsigned
  
  Unique Key
  
  id
  
  int unsigned
  
  字段代码
  
  字段名称
  
  NULL
  
  内部类型
  
  长度
  
  备注
  
  serial
  
  数据序号
  
  N
  
  int unsigned
  
  10
  
  自动产生序号
  
  id
  
  部门代码
  
  N
  
  int unsigned
  
  10
  
  0~1
  
  name
  
  部门名称
  
  N
  
  Varchar(30)
  
  30
  
  中文字符
  
  manager
  
  部门负责人
  
  N
  
  Varchar(20)
  
  20
  
  中文字符
  
  tel
  
  部门电话
  
  N
  
  Varchar(30)
  
  30
  
  0~1
  
  mobile
  
  部门手机
  
  Y
  
  Varchar(30)
  
  30
  
  0~1
  
  fax
  
  部门传真
  
  Y
  
  Varchar(30)
  
  30
  
  0~1
  
  addr
  
  部门地址
  
  Y
  
  varchar(300)
  
  300
  
  中文字符
  
  status
  
  公司状态
  
  Y
  
  varchar(30)
  
  30
  
   
  memo
  
  备注
  
  Y
  
  varchar(100)
  
  100
  
   







范例3-5  公司部门表
数据表设计的第一部分,便是说明这种表格的名称及其代表的意义。同时也需标示出可操作的权限(添加/删除/修改/查询等)与可执行这些操作的账号。
第二部分便是此数据库所使用到的索引及关联,需标出其索引的类型和字段的类型。如有必要,也可将关联到的目的表格字段标出。
第三部分便是每一个数据字段的说明,叙述如下:
l       字段代码:字段的实际名称(需完全用英文与数字命名,最好统一均为大写或均为小写)。
l       字段名称:用中文编写,字段的实际意义。
l       NULL:可否为NULL。Y表示可为NULL,N表示不可为NULL。
l       内部类型:这种字段的数据类型。
l       长度:数据字段长度。
l       备注:说明这种字段的特性,例如自动创建序号、允许输入的字符或代码所表示的意义等,均可在此列出。
以下是另一个数据表,如范例3-6所示。
  X章Y节:员工账号及数据表
  数据表代号:com_usr
  
  数据表定义:公司员工系统账号
  
  操作方式:添加/删除/修改/查询
  
  权限:root
  
  使用的索引
  
  索引字段
  
  类型
  
  Primary Key
  
  serial     
  
  int unsigned
  
  Unique Key
  
  id
  
  varchar(20)
  
  字段代码
  
  字段名称
  
  NULL
  
  内部类型
  
  长度
  
  备注
  
  serial
  
  数据序号
  
  N
  
  int unsigned
  
  10
  
  自动产生序号
  
  id
  
  用户账号
  
  N
  
  Varchar(20)
  
  20
  
  0~1,a~z,A~Z,_
  
  pwd
  
  用户密码
  
  N
  
  Varchar(20)
  
  20
  
  默认
  
  name
  
  用户姓名
  
  N
  
  Varchar(20)
  
  20
  
  中文字符
  
  comid
  
  所属公司代码
  
  N
  
  int unsigned
  
  10
  
  对应com.id
  
  com
  
  所属公司名称
  
  N
  
  Varchar(50)
  
  50
  
  中文字符
  
  orgid
  
  所属部门代码
  
  N
  
  int unsigned
  
  10
  
  对应com_dept.id
  
  org
  
  所属部门名称
  
  N
  
  Varchar(30)
  
  30
  
  中文字符
  
  title
  
  职称
  
  N
  
  Varchar(50)
  
  30
  
  中文字符
  
  sex
  
  性别
  
  N
  
  Varchar(50)
  
  2
  
  男、女
  
  bir
  
  生日
  
  Y
  
  Date
  
   
  0000-00-00
  
  tel
  
  市内电话
  
  Y
  
  Varchar(30)
  
  30
  
  0~1
  
  mobile1
  
  手机(第一组)
  
  N
  
  Varchar(30)
  
  30
  
  0~1
  
  mobile2
  
  手机(第二组)
  
  Y
  
  Varchar(30)
  
  30
  
  0~1
  
  addr
  
  居住地址
  
  Y
  
  Varchar(300)
  
  300
  
  中文地址
  
  email
  
  电子邮件
  
  Y
  
  Varchar(150)
  
  150
  
   
  status
  
  任职状况
  
  N
  
  Varchar(30)
  
  30
  
  在职、离职、休假
  
  memo
  
  备注
  
  Y
  
  Varchar(100)
  
  100
  
   







范例3-6  员工账号及数据表
如果要使用数据表中某个字段的使用代码,则势必要有另一张代码表提供对照。例如员工账号数据表中的orgid(部门代码),便需对应到com_dept(部门信息表)的id字段,这种信息也可在备注中说明。
SD文件中,除了“工作流程”与“数据表架构”外,也可补充其他有助于团队成员进一步了解项目架构的章节,例如:整体系统架构、模块说明、组件说明、公共函数库说明、使用手册等。
再一次强调,系统设计(SD)文件主要用作开发团队内部沟通与协调。因此,编写这种文件时,让开发团队内的成员都能了解是最重要的。
重点整理
   系统设计主要分两部分文件,第一部分是“工作流程”,也就是流程图;第二部分为“数据库规划”,要设计出数据表。
3.2.4 程序开发(Implementation)
在完成系统设计(System Design)文件后,项目成员便可依照SD文件中所述的各项目分别进行程序编写工作。一个合格的程序员,应具备在阅读SD文件中所述的流程与数据结构后便能够编写程序的能力。
在程序开发阶段,各项目成员依然需要有定期的项目会议,通过会议来协调程序或文件需要修改的部分,也可掌控成员间的进度。
在程序编写期间,有几点注意事项:
l       如在程序开发会议中,对文件(SA、SD及其他)有所修订,则在会议结束后,务必更新文件版本并清楚标明,并且确保项目成员均得知这种信息。
l       程序代码在每一模块完成后,均须进行单元测试与集成测试,不可等到所有程序都完成后,才在集成测试阶段进行测试。
l       程序代码必须由专人管理,并妥善整理各个版本。建议可采用CVS(ConcurrentVersions System)管理程序代码,务必确定各项目成员所使用或维护的程序为最新版本。
l       共用组件必须由专人管理,并妥善整理各个版本。建议共用组件应在程序编写初期便制作完成,并提供组件使用说明。除非必要,尽量不要在程序开发期间,变更共用组件的函数或定义,以免造成程序代码需大幅变更的后果。
l       需定期(每日一次为最低要求)异地备份程序代码,并注明该版程序的进度,以备不时之需。其他编写程序时应注意的相关事项,请参考该程序的相关参考书籍。
重点整理
  在完成系统设计(SystemDesign)文件后,项目成员便可依照SD文件中所述的各细节分别进行程序编写工作。
3.2.5 集成及测试(Integration and Testing)
其实,集成测试阶段与程序开发阶段是密不可分的。每一程序组件和每一功能模块在编写完成后,均需进行单元测试,以有利于问题提早发现并解决。万万不可待所有程序完成后再开始测试。
当所有程序编写完成后,通常需根据“测试计划”与“营运计划”进行一次完整的软件测试,一个完整的测试至少应包括以下几点:
l       正常流程运行测试
l       异常状况测试
l       压力测试
l       最大处理能力测试
l       调试能力测试
l       入侵测试
l       自动恢复机制测试
l       备份机制测试等
另外,如与其他系统相互连接,如金融系统、银行后端、信用卡后端等,也需进行完整的集成测试。
所有的测试开始之前,均需编写“测试计划”,并依测试计划准备相关测试数据与测试用软件,并详细记录测试过程与测试结果。
集成测试是相当重要的一个步骤,完善的集成测试可以确认系统的漏洞、缺失与其极限所在,可让系统正式启用后的缺陷减到最少。
重点整理
   每一程序组件和每一功能模块在编写完成后,均需进行单元测试。
   当所有程序编写完成后,通常需根据“测试计划”与“营运计划”进行一次完整的软件测试。
您需要登录后才可以回帖 登录 | 注册账户

本版积分规则

黑屋|存档|手机|网络实验室 本站服务器由美国合租以及IDCLayer国际数据提供!!!

GMT+8, 2024-4-29 10:07 , Processed in 0.188398 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表