软件工程 - 3、项目开发
来源:互联网 发布:cms文章管理系统 编辑:程序博客网 时间:2024/06/02 17:14
项目开发阶段,几乎项目组所有成员都开始参与进来。而项目立项、维护这两个生命周期不属于项目开发的范畴,这里跳过它们。下面的描述不针对某种软件开发方法,只是从流程、和输入输出的工作产品入手讲述。
一、需求开发与管理
需求开发主要包括以下步骤:
1、需求获取
事实上,很多用户无法提供完整准确的需求,所以需求分析师需要通过各种方法或途径去了解用户的需求,比如:访谈、调查、观察、界面原型、参考文档、参考行业标准等,并最终形成《产品解决方案》。事实上,对于小型项目,可直接采用原型来获取需求,不需要形成《产品解决方案》。
2、需求分析
需求分析的目的是明确需求中各个元素之间的关系,以便于进行下一步的软件系统设计。根据我们前面提到过的软件开发方法,需求分析常用的方法如下:
(1)结构化分析方法:通过数据流图来描述软件的功能以进行分析;
(2)信息建模方法:使用ER图来表达实体间的关系,不过这种方法只是从数据的角度来建立对现实世界的模型。它是面向对象分析方法的原型,而面向对象在它的基础之上,结合了封装、类结构、继承等面向对象的概念;
(3)面向对象分析方法:通过用例图来表述实体在系统中的真实场景以进行分析;
3、需求定义
为了便于后续需求的管理,这里按粒度、级别对需求进行唯一标识以定义,最终形成《软件需求规格说明书》
需求管理主要包括以下步骤:
1、需求确认
这时的《软件需求规格说明书》并没有得到用户的确认,只是初稿,所以这时需要组织用户参加评审以确认需求,最终一定要用户签字/盖章,或发确认函,以免出尔反尔。
2、需求变更
随着用户对软件的使用、软件应用的外部环境的变化、或者是需求分析师的分析错误或不彻底,都可能带来用户需求的变更。
如果用户提出需求变更的话,这时需要提交《需要变更申请单》,项目组接到这样的申请时不要盲目响应,而是应该先进行评估。
如果工作量太大的话,需要重新走立项申请的流程;
如果工作量可接受,则接着走相应的变更管理流程,需求的变更进而会带动系统设计、编码、测试等的变更,这时一定要做好配置管理,控制版本和基线。
3、需求跟踪
在需求确认阶段中,《软件需求规格说明书》评审通过时,项目经理就应该建立《需求跟踪矩阵》来管理需求。
有了《需求跟踪矩阵》,从正向可以跟踪需求变更对下游产品的影响;从反向可以根据软件产品回溯分析需求是否得到满足。
二、系统设计
1、概要设计
概要设计就是建立软件的体系结构,根据《软件需求规格说明书》,从子系统到模块到功能点,逐层定义。
在概要设计中我们主要设计如下内容:
(1)总体架构设计,包括:实现方式、网络拓朴、总体流程、系统堆栈结构等;
(2)接口设计,包括:系统内与系统外、系统内部等;
(3)界面总体设计,包括:整体界面原型、风格、样式等;
(4)数据结构设计,这时只是数据库的逻辑结构设计,关于数据库这块的详细流程,见《软件工程 – 5、数据库设计与开发》;
(5)系统的错误处理、安全、部署等;
生成《概要设计说明书》、《数据库设计说明书》初稿,继而进行概要设计技术评审。评审通过,则可进入详细设计阶段。
同时,编码的进行还需要参考公司的编码规范进行,如果之前没有编码规范,可在此阶段,一并制定,如:《数据字典规范》、《XX编码规范》等。
2、详细设计
概要设计关注体系结构,详细设计则是从每一个功能、接口、界面、流程入手,深浅不一,可详细到伪代码级,也可粗到接口的定义层,粗细层度由功能模块在系统中所占的权重、难易等因素决定。
每个功能点的设计应该包括如下内容:
(1)功能描述;
(2)功能界面;
(3)功能中涉及到的接口,及输入输出参数说明;
(4)处理流程;
(5)算法、性能等;
生成《详细设计说明书》,细化的《数据库设计说明书》,此时已包括数据库的物理结构设计,继而进行详细设计技术评审。评审通过,则进入编码阶段。
三、编码
1、编码
很多人的理解就是,本生命周期中,只要对照设计文档,并将其翻译成相应的程序代码即可,事实上这只是其中的一个环节。如果采用面向对象编程,此阶段可以考虑以往代码的复用;
2、单元测试
完成编码后,同时要完成每个功能模块代码的单元测试,并生成《单元测试报告》,单元测试应该包括如下内容:
(1)源代码编译通过;
(2)各种脚本运行正常,包括:JS、VBS、SQL等;
(3)功能模块中接口的参数输入、输出正确;
(4)数据库中处理和产生的数据正确;
(5)边界值及异常处理是否得当;
(6)检查代码实现有没有满足设计文档中的要求;
如果有条件的话,此过程可使用相关测试工具、或者开发人员交叉测试。
3、代码走查
代码走查的目的主要在于:
(1)检查代码的规范性;
(2)核心业务代码的准确性及严谨性;
(3)新增业务、让步发行、或问题较多的功能点代码进行校验;
最好是由开发人员交叉走查,一来便于发现BUG,二来便于分享相互的技术,取长补短,三来加深对业务逻辑的理解,现在风行的极限编程大概也是从这里获得的灵感。
4、制作用户文档
最后制作一下《用户安装手册》、《用户操作手册》,说明软件的安装配置及如何使用。
四、测试
事实上,测试的工作并不是从这里才开始,而是在项目策划阶段,就已经开始了,关于测试的详细流程见《软件工程 – 4、测试》。
五、产品发布与实施
产品发布的主要工作在配置管理,就是从配置库中给软件产品打上版本号,这样就有了我们常说的RELEASE版。
产品实施,事实上也是项目,只不过是实施类项目,它的主要流程如下:
(1)立项;
(2)计划,主要工作就是制定《项目实施计划》;
(3)实施,主要包括:准备、安装调试、客户培训、产品上线、验收等;
(4)结项。
当然,根据软件产品的规模、性质不同,有时并不需要走项目实施流程。
转载 :http://blog.csdn.net/seusoftware/article/details/4745467
- 软件工程 - 3、项目开发
- 软件工程 - 3、项目开发
- 项目开发计划-软件工程
- web项目开发---软件工程
- 软件工程--谈项目开发
- ISO软件工程模板(2)项目开发计划
- 软件工程及软件项目开发流程
- 【软件工程】——项目开发计划
- 【软件工程】机房文档--项目开发计划
- 软件工程(3)项目一总结
- 软件工程之— 项目开发文档(项目开发计划)
- 软件工程之— 项目开发文档(模块开发说明)
- 软件工程开发
- 软件工程之— 项目开发文档(可行性研究报告的编写)
- 软件工程之— 项目开发文档(数据要求说明书)
- 软件工程之— 项目开发文档(需求说明书)
- 软件工程之— 项目开发文档(用户手册概要)
- 软件工程之— 项目开发文档(概要设计说明书)
- viterbi算法linux下C++实现
- 未经处理的异常:0xC0000005:读取/写入位置冲突——从去掉字符串所有空格说起
- 表变量与临时表的优缺点?
- oracle 行转列
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- 软件工程 - 3、项目开发
- SEO工作时都会用哪些辅助工具
- 第三章
- 仿网易彩票思路
- Adaboost 算法的原理与推导
- 项目过程分析
- FreeBSD nginx php
- 第五章 树和二叉树
- C# ListView实例:文件图标显示