
软体开发流程
软体开发流程即软体设计思路和方法的一般过程,包括对软体先进行需求分析,设计软体的功能和实现的算法和方法、软体的总体结构设计和模组设计、编码和调试、程式联调和测试以及编写、提交程式等一系列操作以满足客户的需求并且解决客户的问题,如果有更高需求,还需要对软体进行维护、升级处理,报废处理。
基本介绍
- 中文名:软体开发流程
- 外文名:Software development process
- 主体:软体
- 套用:软体设计
- 目的:满足客户的需求并且解决客户的问题
简介
周期和阶段
从管理的角度,即从业务和经济的角度来看,软体的生命周期包括四个主要阶段:
- 起始阶段(Inception)-- 有一个好的想法:具体构想出终于产品的构想和它的业务案例,确定项目的範围 。
- 细化阶段(Elaboration)--计画必要的活动和所需资源,具体确定功能并设计构架 。
- 构建阶段(Construction)-- 构建产品, 发展最初的构想、构架和计画,直到一个能够交付给用户的产品(完毕后的构想)完毕。
- 移交阶段(Transition)-- 将产品移交用户使用,包含:製造、交付、培训、支持、维护,直到用户惬意。
完毕这4个阶段称为一个开发周期,它产生的软体称作第一代(generation)。 除非产品的生命结束, 一个现有产品能够通过反覆下一个同样的起始、细化、构建和移交四阶段,各个阶段的侧重点与第一次不同,从而演进为下一代产品。 这个时期我们称之为演进(evolution)。最后伴随着产品经过几个周期的演进,新一代产品也不断被製造出来。比如,演进周期的启动可能由下面这几项触发:用户建议增强功能、用户环境的改变、重要技术的变更,以及应对竞争的需要。
实际中,周期之间会有轻微重叠:起始阶段和细化阶段可能会在上一个周期的移交阶段未结束时就开始了。
叠代
从技术的角度来 看,软体开发能够视为一连串的叠代过程,通过这些叠代被开发的软体得以增量演进。 每次叠代都以一个可运行的产品的公布而结束, 该产品可能是完整版本号的一个子集,但从project的或用户的角度来看是实用的。 每次公布都伴随一些支持性工件:版本号描写叙述、用户文档和计画等。
一次叠代包含下面活动: 计画、分析、设计、实施和测试。 依据叠代在开发周期中所处位置的不同,这些活动分别占不同的比例。
管理角度和技术角度之间是协调的, 并且各个阶段的结束还和各次叠代的结束保持同步。换句话说,每一个阶段能够分为一次或多次叠代过程。
差别
对于不同的项目而言,每一个阶段的侧重点,入口和出口準则,一个开发周期的各个工件,以及各次叠代的数目和长度都会不同。这主要取决于作为过程判别式的的四个主要项目特徵。依照影响程度降序排列,它们是:
- 业务环境
- 契约性工作,开发人员基于给定的客户规格说明仅仅为该客户开发软体。
- 猜测性开发或商业开发,开发人员开发软体以推向市场。
- 内部项目, 开发人员和客户在同一个机构中。
软体开发工作量的规模:
依照一些度量标準来确定,比方 Delivered Source Instructions,或功能点、人-月数,或者仅仅依照成本。
依照一些度量标準来确定,比方 Delivered Source Instructions,或功能点、人-月数,或者仅仅依照成本。
新颖程度:
对于软体开发组织,这个软体新颖程度怎样有多新,尤其是该软体是否为第二次或更后面的周期。这项差别包含了组织和过程的成熟度、资产、技术水平,当前的技状况,以及诸如组建并培训团队、获取工具及其它资源这种问题。
对于软体开发组织,这个软体新颖程度怎样有多新,尤其是该软体是否为第二次或更后面的周期。这项差别包含了组织和过程的成熟度、资产、技术水平,当前的技状况,以及诸如组建并培训团队、获取工具及其它资源这种问题。
套用类型,目标领域:
MIS,命令和控制系统, 嵌入式实时系统, 软体开发环境工具等等, 尤其时详细的套用领域会给开发提出特殊的约束条件:安全性、性能、国际化、记忆体限制等。
MIS,命令和控制系统, 嵌入式实时系统, 软体开发环境工具等等, 尤其时详细的套用领域会给开发提出特殊的约束条件:安全性、性能、国际化、记忆体限制等。
开发流程
需求分析
1.相关系统分析员向用户初步了解需求,然后用相关的工具软体列出要开发的系统的大功能模组,每个大功能模组有哪些小功能模组,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。

2.系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚列出系统大致的大功能模组,大功能模组有哪些小功能模组,并且还列出相关的界面和界面功能。
3.系统分析员向用户再次确认需求。
概要设计
首先,开发者需要对软体系统进行概要设计,即系统设计。概要设计需要对软体系统的设计进行考虑,包括系统的基本处理流程、系统的组织结构、模组划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软体的详细设计提供基础。
详细设计
在概要设计的基础上,开发者需要进行软体系统的详细设计。在详细设计中,描述实现具体模组所涉及到的主要算法、数据结构、类的层次结构及调用关係,需要说明软体系统各个层次中的每一个程式(每个模组或子程式)的设计考虑,以便进行编码和测试。应当保证软体的需求完全分配给整个软体。详细设计应当足够详细,能够根据详细设计报告进行编码。
编码
在软体编码阶段,开发者根据《软体系统详细设计报告》中对数据结构、算法分析和模组实现等方面的设计要求,开始具体的编写程式工作,分别实现各模组的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。在规範化的研发流程中,编码工作在整个项目流程里最多不会超过1/2,通常在1/3的时间,所谓磨刀不误砍柴功,设计过程完成的好,编码效率就会极大提高,编码时不同模组之间的进度协调和协作是最需要小心的,也许一个小模组的问题就可能影响了整体进度,让很多程式设计师因此被迫停下工作等待,这种问题在很多研发过程中都出现过。编码时的相互沟通和应急的解决手段都是相当重要的,对于程式设计师而言,bug永远存在,你必须永远面对这个问题!
测试
测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能。软体测试有很多种:按照测试执行方,可以分为内部测试和外部测试;按照测试範围,可以分为模组测试和整体联调;按照测试条件,可以分为正常操作情况测试和异常情况测试;按照测试的输入範围,可以分为全覆盖测试和抽样测试。以上都很好理解,不再解释。总之,测试同样是项目研发中一个相当重要的步骤,对于一个大型软体,3个月到1年的外部测试都是正常的,因为永远都会有不可预料的问题存在。完成测试后,完成验收并完成最后的一些帮助文档,整体项目才算告一段落,当然日后少不了升级,修补等等工作,只要不是想通过一锤子买卖骗钱,就要不停的跟蹤软体的运营状况并持续修补升级,直到这个软体被彻底淘汰为止。
软体交付
在软体测试证明软体达到要求后,软体开发者应向用户提交开发的目标安装程式、资料库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等双方契约约定的产物。
《用户安装手册》应详细介绍安装软体对运行环境的要求、安装软体的定义和内容、在客户端、伺服器端及中间件的具体安装步骤、安装后的系统配置。
《用户使用指南》应包括软体各项功能的使用流程、操作步骤、相应业务介绍、特殊提示和注意事项等方面的内容,在需要时还应举例说明。
验收
用户验收。
维护
根据用户需求的变化或环境的变化,对应用程式进行全部或部分的修改。
软体维护
维护是指在已完成对软体的研製(分析、设计、编码和测试)工作并交付使用以后,对软体产品所进行的一些软体工程的活动。即根据软体运行的情况,对软体进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软体问题报告、软体修改报告。
1、软体资料库管理
title

2、用户跟蹤培训
3、故障分析解决
软体升级
需求调整分析
软体功能拓展
最佳化系统
报废处理
软体不能适应业务发展
新软体项目立项
企业数据信息备份
举例解析
1 例如某家公司想找人订做一套人事管理软体,从某种渠道上得知某家软体开发公司提供这种服务,所以进行联繫。
2 软体开发公司会派专门的软体工程师到他们那里去了解我们要设计一个什幺的东西给用户用,然后回来做个方案给他们,其中方案的内容包括:开发出来的软体大概的界面是怎样?方便什幺人使用?什幺人可以使用什幺功能?方便到什幺程度?大概的硬体要求是怎样等?
3 用户看了方案后,确定他们就是要做一套这样的软体,开发方就开始开发这套软体。
4 开发方把开发出来的软体交给用户使用,其中在使用的过程中哪里使用不方便或哪里达不到要求,开发方会第一时间修改这些功能,直到用户要求的所有功能都能很完美的解决掉。
5 用户如果因为公司发展壮大的需要,需要将软体升级开发方会做功能拓展。