软件开发流程

软件开发流程 

原文参考:

软件开发流程

软件开发流程(最后缩略语)

 

目录:

1. 产品需求定;

2. 结构化设计方法的基本思路

3. 架构设计/概要设计

4.详细设计

5. 需要分析&概要设计&详细设计

6. 瀑布模型

 

1. 产品需求定义

 

产品需求定义的目标是:“清楚地描述要做的产品是什么样的?不涉及具体实现方法。”,其定义过程如下图所示。

软件开发流程

软件开发流程

 

 此产品需求定义包括:软件+硬件。

 

 

 

2. 结构化设计方法的基本思路

 

    按照需求,将软件逐级细化,分解为不必再分解的的模块,每个模块完成一定的功能,为一个或多个父模块服务(即接受调用),也接受一个或多个子模块的服务(即调用子模块)。模块的概念,和编程语言中的子程序或函数是对应的。

 

 

 

3. 架构设计/概要设计

 

      架构设计或概要设计的目标是:“为系统需求或产品需求提供解决方案”。

 

      概要设计:把软件按照一定的原则分解为模块层次,赋予每个模块一定的任务,并确定模块间调用关系和接口。通常输出的为:“软件结构图”。

 

      在架构设计或概要设计,设计者会大致考虑并照顾模块的内部实现,但不过多纠缠于此。主要集中于:

 

      (1)划分模块

 

      (2)分配任务

 

      (3)定义调用关系

 

       模块间的接口与传参在这个阶段要定得十分细致明确,应编写严谨的数据字典,避免后续设计产生不解或误解。概要设计一般不是一次就能做到位,而是反复地进行结构调整。典型的调整是合并功能重复的模块,或者进一步分解出可以复用的模块。在概要设计阶段,应最大限度地提取可以重用的模块,建立合理的结构体系,节省后续环节的工作量。

 

       概要设计文档最重要的部分是:

 

       (1)分层数据流图

 

       (2)结构图

 

       (3)数据字典

 

       (4)相应的文字说明

 

       以概要设计文档为依据,各个模块的详细设计就可以并行展开了。

 

4.详细设计

 

      详细设计的目标是:“提供编码的依据(数据结构+流程)”。

 

      详细设计:依据概要设计阶段的分解,设计每个模块内的算法、流程等。通常采用“流程图”进行描述。

 

      在详细设计阶段,各个模块可以分给不同的人去并行设计。在详细设计阶段,设计者的工作对象是一个模块,根据概要设计赋予的局部任务和对外接口,设计并表达出模块的以下内容:

 

       (1)算法

 

       (2)流程

 

       (3)状态转换(状态机)

 

       注意:如果发现有结构调整(如分解出子模块等)的必要,必须返回到概要设计阶段,将调整反应到概要设计文档中,而不能就地解决,不打招呼。

 

       详细设计文档最重要的部分是模块的以下内容:

 

       (1)流程图

 

       (2)状态图

 

       (3)局部变量及相应的文字说明。

 

       一个模块一篇详细设计文档。

 

      概要设计文档相当于机械设计中的装配图,而详细设计文档相当于机械设计中的零件图。概要设计中较顶层的部分便是所谓的方案。方案文档的作用是在宏观的角度上保持设计的合理性。

 

       有的项目采用面向对象的分析、设计方法。可能在概要设计、详细设计的分工上疑问更多。其实,面向对象的分析、设计方法并没有强调结构化方法那样的阶段性,因此一般不引入概要、详细设计的概念。如果按照公司的文档体系,非要有这种分工的话,可以将包的划分、类及对象间的关系、类的对外属性、方法及协作设计看做概要设计;类属性、方法的内部实现看做详细设计。

 

 

 

5. 需要分析&概要设计&详细设计

 

   1)需求分析:产生软件功能规格说明书,需要确定用户对软件的需求,要作到明确、无歧义。不涉及具体实现方法。用户能看得明白,开发人员也可据此进行下面的工作(概要设计)。

 

 

   2)概要设计:产生软件概要设计说明书,说明系统模块划分、选择的技术路线等,整体说明软件的实现思路。并且需要指出关键技术难点等。 

 

 

   3)详细设计:产生软件详细设计说明书,对概要设计的进一步细化,一般由各部分的担当人员依据概要设计分别完成,然后在集成,是具体的实现细节。理论上要求可以照此编码。

 

6. 瀑布模型

 

瀑布模型如下图所示:

 软件开发流程

1)可靠性研究与计划:做还是不做

 

2)需求分析:都有什么功能

 

3)概要设计:共有多少子功能

 

4)详细设计:子功能怎么实现

 

5)编码:子功能实现了吗?

 

6)测试:功能完备吗?

 

7)部署:需要多少设备和软件的支持

 

8)维护:软件运动得正常吗?


  

Abbreviations

缩略语

Full spelling

英文全名

Chinese explanation

中文解释

SOW

Statement Of Work

工作任务书

AR

Allocated Requirements

分配需求

RTM

Requirement Trackeablity Matix

需求跟踪矩阵

PPL

Project Plan

项目计划

PTF

Process Tailoring Form

过程裁剪表

RMP

Risk Management Plan

风险管理计划

TSP

Test Strategy Plan

测试策略计划

WBS

Work Breakdown Structure

工作任务分解结构

TimeSheet

TimeSheet

时间表

MTS

Metrical Sheet

度量表

QAP

Quality Assurance Plan

质量保证计划

CMP

Configuration Management Plan

配置管理计划

SRS

Software Requirement Specification

软件需求规格说明书

STP/STC

System Test Plan/Case

系统测试计划/用例

HLD

High Level Design

概要设计

ITP/ITC

Integrate Test Plan/Case

集成测试计划/用例

LLD

Low Level Design

详细设计

UTP/UTC

Unit Test Plan/Case

单元测试计划/用例

VDD

Version  Description Document

版本说明书

SRS

Software Requirement Specification

软件需求规格说明书

STP/STC

System Test Plan/Case

系统测试计划/用例

HLD

High Level Design

概要设计

ITP/ITC

Integrate Test Plan/Case

集成测试计划/用例

LLD

Low Level Design

详细设计

UTP/UTC

Unit Test Plan/Case

单元测试计划/用例

VDD

Version  Description Document

版本说明书



其他参考资料:

 

大型公司开发软件的流程是怎样的?

https://www.zhihu.com/question/20003204

 

算法与数据结构:

http://lib.****.net/base/datastructure