一:编写目的
本文档的编写旨在探寻规范的软件开发流程、加快软件开发速度、提高软件开发质量、降低项目综合成本。
IT界有一句格言:"You can do it right; you can do it fast; you can do it cheap. Pick two." 而我们要做的就是:提供优质服务、项目周期短、成本低廉
二:总体说明
项目从用户需求说明书的提出,到系统的第一个完整版本的交付使用经历了若干或复杂或简单的过程,但不管项目大小如何一般需要经历以下几个步骤:
1. 需求分析。
2. 撰写需求规格说明书
3. 总体设计
4. 详细设计
5. 编码实现
6. 测试、试运行、上线
7. 验收
8. 日常维护
9. (下一个版本的循环开发)
在以上各步骤中尤其重要的是系统分析和撰写需求规格说明书。当定义好《需求规格说明书》后需要用户签字确认,以此作为项目验收的依据,在中大型项目中尤其重要。
失败的项目原因很多但以下几点比较普遍:
(1)商务运作中为了拉住“单子”对客户的众多纷繁复杂的要求一味的妥协让步满口答应。项目开发计划、时间表等完全依照客户意见,不以具体项目的客观事实为依据,不做认真细致严格的项目复杂度、项目工作量的评估。
(2) 不做细致的用户需求分析导致项目后期的需求变更较大不能按期完成项目。
三:项目开发经历的各阶段
在项目开发的各阶段时间比例方面,中小项目一般控制在
1: 40% 设计
2: 40% 编码
3: 20% 总体设计/试运行
3.1 需求分析阶段
研究客户需求,从中找出需求中模糊不清的地方,反复讨论确认。在不断的确认中,包括需求的总体认知、需求边界定义、目前技术条件下的可实现需求、用户界面等。通过项目组内讨论、与客户(直接客户、间接客户)讨论等方式不断清晰客户真正的需求,从而撰写〈〈需求规格说明书〉〉,在取的客户认可后签字,以此做为项目开发的第一个里程碑。在项目验收时以此作为验收的主要依据
在系统分析阶段与客户的沟通方式可以通过(1)项目静态图、项目静态界面DEMO(2) 系统用例图(例如:rose软件的用例图) 等方式与客户沟通。
本阶段要完成的工作有:
1.撰写项目需求分析报告
本报告主要目的是项目分析人员提出需求的疑难不清问题,为与客户有效、准确沟通准备必要的材料。
2.画用例图
描述系统各个不同用户类型与本系统及其他系统等的交互过程。
3.建立项目静态界面DEMO
使得用户在项目初期就可以看到项目上线实施后的使用界面和使用方法等
4. 做必要的技术预研等。
3.2撰写需求规格说明书
需求规格说明书的撰写主要目的是把客户天马行空、纷繁复杂、凭想象等的理想需求中变成在一定时间段、一定技术条件下可实现的需求。不然项目会很难满足客户的理想需求,永远被客户的理想需求所限制,陷入一种非常被动的状态。
3.3总体设计
在完成项目需求规格说明书后,就进入项目总体设计的阶段。
在总体设计阶段需要完成的文档有:
1. 《项目总体设计---概要设计说明书》、
2. 《数据库设计报告》
3. 《项目总体开发时间表》
在此阶段应该建立项目的正式开发环境、项目测试环境、建立项目基本开发框架且导入项目管理配置工具中(例如:CVS、VSS等)等
在项目的以上阶段完成后,建议进行项目总体设计和总体开发准备情况的评审工作。在公司、集团专家组评审通过后本阶段结束,这算做项目的第二个里程碑。
在进行下一阶段前,目前项目组可以对SCCB(软件变更控制委员会)提交的资料有:
1:《需求规格说明书》
2:《项目总体设计概要说明书》
3:《项目界面设计说明书》(及界面DEMO)
4:《项目数据库设计说明书》等
5:《项目总体开发时间表》
3.4详细设计
在项目完成总体设计和搭建完毕开发环境后,就可以进行项目的详细设计。
在项目中建议详细设计由项目编写“后台”程序的资深人员编写。主要完成每个负责的业务模块从界面到业务实现到数据库连接操作的主要步骤和数据库的实现SQL。最好在条件允许的情况下编写模块单元测试程序,在整个模块编码阶段完成后进行程序单元测试工作。(“测试驱动”的开发理念)
详细设计目的是在不编写代码和少量代码的情况下,完成项目模块的模拟编程实现。
在详细设计阶段可以对项目某模块做准确的工作量统计,依此为依据整个项目比较准确的工作量就可以被统计出来。
3.5编码实现
(略)
3.6测试、试运行、上线
(略)