软件工程各生命周期阶段及阶段图表

797 阅读10分钟

一、问题定义

问题定义阶段主要是根据用户的需求来定义用户需要解决的问题,用户要实现哪些功能。

二、可行性研究

可行性研究阶段就是看是否有一种使其在最小的代价,尽可能短的时间内,利益最大化的情况下解决问题的方案。这个阶段的分析主要涉及以下几个图形工具。

系统流程图

系统流程图是描述系统物理模型的一种传统工具。它是表达数据在系统各部件之间流动的情况,而不是对数据加工处理的控制过程,它是物理数据流图而不是程序流程图。

image.png

数据流图

数据流图是表示信息流和数据从输入到输出的过程经历变化。

image.png

image.png

image.png

image.png

数据字典

数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。
例子:

image.png

image.png

image.png

三、需求分析

需求分析也称为软件需求分析、系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。

E-R图

E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界概念模型

它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。用“矩形框”表示实体型,矩形框内写明实体名称;用“椭圆图框”或圆角矩形表示实体的属性,并用“实心线段”将其与相应关系的“实体型”连接起来;

用”菱形框“表示实体型之间的联系成因,在菱形框内写明联系名,并用”实心线段“分别与有关实体型连接起来,同时在”实心线段“旁标上联系的类型(1:1,1:n或m:n)。

image.png

状态转换图

状态转换图,即STD图(State Transform Diagram),表示行为模型

STD通过描述系统的状态和引起系统状态转换的事件,来表示系统的行为,指出作为特定事件的结果将执行哪些动作(例如处理数据等)。STD描述系统对外部事件如何响应,如何动作。

STD图发生在软件工程需求分析阶段。状态模型是一种描述系统对内部或者外部事件响应的行为模型。它描述系统状态和事件,以及事件引发系统在状态间的转换。这种模型适用于描述实时系统

image.png

image.png

image.png

层次方框图

层次方框图: 用树形结构的一系列多层次的矩形框绘制数据的层次结构,树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表这个数据的子集,最底层的各个框代表组成这个数据的实际数据元素(不能再分割的元素)

image.png

用例图

用例图(英语:use case diagram)是用户与系统交互的最简表示形式,展现了用户和与他相关的用例之间的关系。通过用例图,人们可以获知系统不同种类的用户和用例。用例图也经常和其他图表配合使用。

image.png

IPO图

IPO是指结构化设计中变换型结构的输入(Input)、加工(Processing)、输出(Output)。IPO图是对每个模块进行详细设计的工具,它是输入加工输出(INPUT PROCESS OUTPUT)图的简称,它是由美国IBM公司发起并完善起来的一种工具。在系统的模块结构图形成过程中,产生了大量的模块,在进行详细设计时开发者应为每一个模块写一份说明。IPO图就是用来说明每个模块的输入、输出数据和数据加工的重要工具。

image.png

四、总体设计

需求分析阶段已经确定了系统要做什么的问题,而总体设计就是要弄明白怎么做的问题。

层次图

层次图(H图) 层次图用来描绘软件的层次结构。 很适于在自顶向下设计软件的过程中使用。用此图表示自顶向下分解所得系统的模块层次结构,H图又可称为模块层次图。H图中一个方形的方块代表一个模块,方块内可写出标识此模块的处理功能或模块名。

image.png

HIPO图

HIPO 图(Hierarchy plus Input-Process-Output,HIPO)是IBM 公司于20 世纪70 年代中期在层次结构图的基础上推出的一种描述系统结构和模块内部处理功能的工具。HIPO 图由层次结构图和IPO 图两部分构成,前者描述整个系统的设计结构以及各类模块之间的关系,后者描述某个特定模块内部的处理过程和输入/输出关系。

image.png

结构图

结构化设计(SD)是以结构化分析(SA)产生的数据流图为基础,将数据流图按一定的步骤映射成软件结构图(SC)。

image.png

类图

类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。它既用于应用程序的系统分类的一般概念建模,也用于详细建模,将模型转换成编程代码。类图也可用于数据建模。

image.png

image.png

image.png

image.png

image.png

image.png

image.png

对象图

描述的是参与交互的各个对象在交互过程中某一时刻的状态。对象图可以被看作是类图在某一时刻的实例。

image.png

状态图

是一种由状态、变迁、事件和活动组成的状态机,用来描述类的对象所有可能的状态以及时间发生时状态的转移条件。

image.png

image.png

活动图

是状态图的一种特殊情况,这些状态大都处于活动状态。本质是一种流程图,它描述了活动到活动的控制流。

交互图强调的是对象到对象的控制流,而活动图则强调的是从活动到活动的控制流。

活动图是一种表述过程基理、业务过程以及工作流的技术。它可以用来对业务过程、工作流建模,也可以对用例实现甚至是程序实现来建模。

image.png

顺序图

时序图(Sequence Diagram)也叫顺序图,是显示对象之间交互的图,这些对象是按时间顺序排列的。时序图中显示的是参与交互的对象及其对象之间消息交互的顺序。

时序图中包括的建模元素主要有:角色(Actor)、对象(Object)、生命线(Lifeline)、控制焦点(Focus of control)、消息(Message) 、自关联消息(Self-Message) 和 组合片段(Combined Fragment)。

image.png

image.png

协作图

协作图(Collaboration Diagram /Communication Diagram,也叫合作图、通信图)是另一种交互图(interaction diagram)。它强调的是对象之间的交互关系。表示了协作中各元素所处的位置。在一个协作中,描述了该协作中所有对象组成的网络结构以及相互发送消息的整体行为。协作图虽然也表明了消息的先后顺序,但是相比序列图而言,没有序列图清晰一目了然。
特点
协作图中没有生命线的概念,只是对象和对象,它们之间通过消息来相互连接协作。 协作图是一种交互图,强调的是发送和接收消息的对象之间的组织结构,使用协作图来说明系统的动态情况。 协作图主要描述协作对象间的交互和链接,显示对象、对象间的链接以及对象间如何发送消息。 协作图虽然也表明了消息的先后顺序,但是相比序列图而言,没有序列图清晰一目了然,必须通过序号表示出顺序。

image.png

image.png

构件图

构件图描述软件构件及构件之间的依赖关系,显示代码的静态结构。 构件是逻辑架构中定义的概念和功能(如类、对象及它们之间的关系)在物理架构中的实现。典型情况下,构件是开发环境中的实现文件。

image.png

image.png

image.png

image.png

image.png

部署图

部署图用来描述业务过程中的组织机构和资源。

部署图(Deployment Diagram)描述了一个系统运行时的硬件节点,以及在这些节点上运行的软件构件将在何处物理地运行和它们将如何彼此通信的静态视图。

部署图表示该软件系统是如何部署到硬件环境中的,显示了该系统不同的构件将在何处物理地运行,以及它们将如何彼此通信。系统的开发人员和部署人员可以很好地利用这种图去了解系统的物理运行情况。其实在一些情况下,比如,如果我么开发的软甲系统只需要运行在一台计算机上,并且这台计算机使用的是标准设备,不需要其他的辅助这杯,这个时候甚至不需要去为它画出系统的部署图。部署图只需要给那些复杂的物理运行情况进行建模,比如说分布式系统等。系统的部署人员可以根据部署图了解系统的部署情况。

image.png

五、详细设计

详细设计阶段就是在总体设计的基础上要确定怎样具体的详细的实现系统所要求的功能。

程序流程图

程序流程图是什么?程序流程图是流程图的其中一种分类,又称程序框图,指用特定图形符号加上对应的文字描述表示程序中所需要的各项操作或判断的图示,程序流程图除了说明程序的流程顺序外,着重于说明程序的逻辑性。

image.png

image.png

盒图

Nassi和Shneiderman提出了一种符合结构化程序设计原则的图形描述工具,称为盒图,又称为N-S图(以两个人的名字的第一个字母组成)。在N-S图中,全部算法写在一个大框图内,这个大框图由若干个小的基本框图构成,可以表示顺序、选择和循环三种基本控制结构。

image.png

PAD图

PAD图(Problem Analysis Diagram),由日本日立公司1973年发明以后,已得到一定程度的推广。它用二维树形结构的图来表示程序的控制流,将这种图翻译成程序代码比较容易。它既克服了传统的流程图不能清晰表现程序结构的缺点,又不像N-S图那样受到把全部程序约束在一个方框内的限制,这就是其优势所在。

image.png

六、编码和单元测试

编码和单元测试阶段主要是对详细设计阶段的详细描述给以具体的实现和模块的测试。

七、综合测试

编写测试用例

image.png

八、软件维护