软件开发流程与各时期产生的文档和UML图
软件开发流程
本部分内容来源于【百度百科】软件开发流程(有删改)
需求分析 -> 概要设计 -> 详细设计 -> 编码 -> 测试 -> 软件交互 -> 验收 -> 维护
需求分析
系统分析员向用户了解和分析需求,然后用相关的工具软件列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。
产生文档:需求说明文档 可能涉及的UML图:用例图
概要设计
首先,开发者需要对软件系统进行概要设计,即系统设计。概要设计需要对软件系统的设计进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。
概要设计是一个设计师根据用户交互过程和用户需求来形成交互框架和视觉框架的过程,其结果往往以反映交互控件布置、界面元素分组以及界面整体板式的页面框架图的形式来呈现。这是一个在用户研究和设计之间架起桥梁,使用户研究和设计无缝结合,将对用户目标与需求转换成具体界面设计解决方案的重要阶段。 [1]
概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。显然,概要设计建立的是目标系统的逻辑模型,与计算机无关。
详细设计
在概要设计的基础上,开发者需要进行软件系统的详细设计。在详细设计中,描述实现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试。应当保证软件的需求完全分配给整个软件。详细设计应当足够详细,能够根据详细设计报告进行编码。
编码
在软件编码阶段,开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。在规范化的研发流程中,编码工作在整个项目流程里最多不会超过1/2,通常在1/3的时间,所谓磨刀不误砍柴功,设计过程完成的好,编码效率就会极大提高,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度,让很多程序员因此被迫停下工作等待,这种问题在很多研发过程中都出现过。编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言,bug永远存在,你必须永远面对这个问题!
测试
软件交付
验收
维护
宏观上软件工程文档和UML图的关系
本部分内容来源于原文(有删改)
国家统一规定的13个文档的相关知识内容:
-
[产生阶段-文档阅读人员]文档名称:文档相关说明
-
[分析-开发]可行性研究报告:说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施的方案,说明并论证所选定实施方案的理由。
-
[分析-开发,管理] 项目开发计划:为软件项目实施方案制定出具体计划,应该包括各部分工作的负责人员、开发的进度、开发经费的预算、所需的硬件及软件资源等。项目开发计划应提供给管理部门,并作为开发阶段评审的参考。
-
[分析-开发,用户]软件需求说明书:也称软件规格说明书,其中对所开发软件的功能、性能、用户界面及运行环境等作出详细的说明。它是用户与开发人员双方对软件需求取得共同理解基础上达成的协议,也是实施开发工作的基础。
-
[分析-开发]数据要求说明书:该说明书应给出数据逻辑描述和数据采集的各项要求,为生成和维护系统数据文卷作好准备。
-
[设计-开发] 概要设计说明书:该说明书是概要设计阶段的工作成果,它应说明功能分配、模块划分、程序的总体结构、输入输出以及接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计奠定基础。
000000
-
[设计-开发] 详细设计说明书:着重描述每一模块是怎样实现的,包括实现算法、逻辑流程等。
-
[分析,设计-管理] 测试计划:为做好组装测试和确认测试,需为如何组织测试制定实施计划。计划应包括测试的内容、进度、条件、人员、测试用例的选取原则、测试结果允许的偏差范围等。
-
[分析,设计,编码-用户]用户手册:本手册详细描述软件的功能、性能和用户界面,使用户了解如何使用该软件。
-
[设计,编码-用户]操作手册:本手册为操作人员提供该软件各种运行情况的有关知识,特别是操作方法的具体细节。
-
[测试-管理]测试分析报告:测试工作完成以后,应提交测试计划执行情况的说明。对测试结果加以分析,并提出测试的结论意见。
-
[分析,设计,编码,测试-管理] 开发进度月报:该月报系软件人员按月向管理部门提交的项目进展情况报告。报告应包括进度计划与实际执行情况的比较、阶段成果、遇到的问题和解决的办法以及下个月的打算等。
-
[测试-管理] 项目开发总结报告:软件项目开发完成以后,应与项目实施计划对照,总结实际执行的情况,如进度、成果、资源利用、成本和投入的人力。此外还需对开发工作作出评价,总结出经验和教训。
-
[维护-用户]软件维护修改建议:此是为后期维护修改做记录报告用的.
上边讲述了,文档分类以及基本作用,下边我们看文档在软件生命周期的位置:
最后我们看看这些文档的宏观作用,即它们要完成的任务,用这张图展示一下:
对于上边的几个简单的字符,我给大家解释一下:
1,"什么",即回答此做什么,哪些需求需要被满足;
2,"何处"即回答从何处,即所开发的软件在什么环境中实现以及所需信息从哪里来;
3,"何时"即回答何时干,即所开发工作的时间如何安排;
4,"谁" 即某些开发(或维护)工作打算由"谁来干?"·
5,"如何"即某些需求是怎么实现的;
6,"为何"即为什么要进行那些软件开发或维护修改工作?
以上是软工文档的相关内容
下边我们看看UML图以文档的关系:
首先UML图和文档不是一一对应的,除了几个核心图,例如用例图,类图,其它图都是可以再任何文档中出现的.下边就按照开发流程简单说一下:
在需求分析阶段,主要是Use Case Diagram(用例图)来填充,是面向系统分析人员,需求人员甚至是用户;
在设计阶段,即概要设计和详细设计说明书中是UML图的主要载体,他们可以以UML图为主,比如类图,交互图,活动图,状态图,顺序图等,面向分析人员和编程人员;
而在其它文档中,就可以根基实际情况,实际需要,灵活应变,填充适当的UML图。