摘要:
软件过程(Software Process)建模是软件开发过程的重要步骤,软件和系统过程工程元模型(Software&System
Process Engineering Meta-Mode1,简称SPEM)是软件过程建模的规范,是OMG组织制定的对软件过程建模的行业标准,具有描述多种的软件开发过程的能力。
什么是SPEM
SPEM(软件开发过程元模型)是一个概念框架,它可以为建模,文档编制,呈现,管理,交换和制定开发方法和过程提供必要的概念。
如下是基于EA的软件开发过程元模型图:
![](images/3.jpg)
SPEM可以用来做什么
SPEM可以对工作过程进行建模,包括:角色,活动,工件,
人员:过程中的具体工作人员,例如:张三,李四,王五。
工作:过程中为了实现特定目的执行的行为,例如:需求、分析、架构设计、编码、测试。
工件:过程中或者过程结束的时候产生的工作对象实体,例如:需求说明书、测试计划、源代码,部署单元。
元模型可以清晰地表达过程有关的元素及其关系,对需要制定或者应用过程的人员提供必要的指示,在实际工作中,应该针对具体的工作和过程进行具体化
![](images/1.jpg)
什么是iProcess
通过以上介绍了解了SPEM,接下来我们来看一下iProcess
iProcess是以我为中心的过程设计的研发过程,软件过程主要由人员、工作、工件以时间的方式展开,形成过程。还涉及到工具,具体时间化的过程体现为工作计划。对于以上元素的类型化会形成比较通用的规范。也就是人员角色、文档模板、工作指南、过程指南。
![](images/2.jpg)
如何在EA中用SPEM定制iProcess
了解了SPEM和iProcess,那么我们看看如何用建模工具EA来实现建模
软件开发过程的三个工作流,核心工作流,管控工作流,支撑工作流
1.核心工作流
2.管控工作流
3.支撑工作流
下面是应用演示界面截图
![](images/4.jpg)
以下是对每个工作流过程详细图解
需求:角色-活动-工件
工作:
需求调研:通过用户访谈,需求调查表,产品对比分析对客户的需求进行调查,收集有关的素材。
需求分析:对获得的原始用户需求进行分析,以便给出需求的准确、详细的定义。
确定用户需求:对用户的需求进行定义,例如业务流程,业务规则,和用户就需求进行确认
确定软件需求:对软件需求进行定义,例如界面,外部系统接口,和用户就软件需求进行确认。
构建系统原型:通过虚拟或者工具构造一个系统的原始样品,用于和客户据此细化、确认需求。
技术支持:由开发团队对需求分析中的有关技术可行性,涉及实现方面的需求进行支援、确认。
验证系统原型:开发方和客户代表、用户代表就用户需求、系统需求和软件需求进行确认。
工件:
需求调查表:客户的原始需求的记录,涉及具体需求提出的,时间,人,具体要求,原因。
用户需求说明书:从客户和用户角度描述的对软件的初始性要求,属于高层需求,例如业务规则。
软件需求说明书:从用户和开发方协议的角度对软件进行精确描述,属于细节需求,例如
接口需求。
EA中用SPEM定义核心工作流中的需求过程
![](images/6.png)
需求-流程图
设计:角色-活动-工件
架构设计:架构师根据需求进行架构设计,对高风险的关键问题进行分析,并给出解决方案,并针对性能、可靠性、安全等常见的非功能需求(系统的质量属性)给出解决方案,架构设计文档中分别从概念、逻辑和物理三个层次描述架构的体系结构和行为过程。
概要设计:基于系统架构和数据架构,对系统采用分解策略,自顶向下逐步分解,把系统划分为子系统,子系统进一步划分为模块,并定义各级子系统和模块的接口,包括接口的通行形式和数据协议。
详细设计:对每个要开发的模块的内部结构和行为过程进行设计,映射到开发机制,一般开发人员能够清晰而高效的通过编程或者复用实现。
UI设计:因为产品的界面是用户确认需求和获得用户体验的关键,讲求的不单是可行,更是可用,所以由专业的UI设计员进行设计,并制作原型,由用户进行评价和确认。
实现:由开发人员基于详细设计,实现每个模块的结构和行为过程。在实现的时候,通过不断的运行测试来确认是否满足设计和需求。
![](images/7.png)
EA中用SPEM定义核心工作流中的设计过程
![](images/8.png)
设计-流程图
实现:角色-活动-工件
物理设计:架构师把系统划分为物理的组件,提炼其中可复用的组件,并定义这些组件的接口和依赖关系。
制定集成计划:集成员根据组件依赖关系和开发人员的分工和空间分布,制定能够支持并行开发和持续构建的集成计划。
编写程序:程序员按照确定自己要编写的组件,以及和周围的关系,建立引用环境,然后编写代码,编译并调试。
单元测试:程序员为组件编写测试程序,调用目标组件,运行并测试。
修复bug:开发人员根据单元测试结构,对程序中的代码bug进行修复,对设计bug进行重构。
集成:集成员对完成的组件进行集成,形成复合组件或者系统。
确认需求:需求员对集成计划从维护的角度确定是否满足可维护需求,对完成的程序,从界面和业务逻辑2个角度确认是否满足需求。
测试:测试员对集成的系统进行黑盒测试,测试是否能够正常运行,并满足了需求和设计定义。
![](images/9.png)
EA中用SPEM定义核心工作流中的实现过程
![](images/10.png)
实现-流程图
测试:角色-活动-工件
测试按照阶段分为:
单元测试:开发人员所做的面向程序单元的测试。
集成测试:集成人员所做的子系统有效集成的测试
系统测试:测试人员所做的完整系统的面向需求应用的测试
验收测试:客户方所作的验收系统的测试。
测试按照质量目标分为:
功能测试:测试系统功能的正确性,完整性和一致性。
性能测试:测试系统对于多用户并发,多任务执行,长事务执行,大数据量条件下用户请求的响应的及时性。
可靠性测试:测试系统的运行稳定性,故障的处理和恢复能力。
![](images/11.png)
EA中用SPEM定义核心工作流中的测试过程
![](images/12.png)
测试-流程图
部署:角色-活动-工件
部署工作的目标:
履行和客户的契约,确认客户接受产品。
把系统部署到应用环境中,系统能够被运行以实现业务目标。
使系统的用户具备操作软件的能力。
对外宣传产品的价值,使关注者更好的了解产品,让更多的人认识产品。
![](images/13.png)
EA中用SPEM定义核心工作流中的部署过程
![](images/14.png)
部署-流程图
项目管理:角色-活动-工件
![](images/15.png)
EA中用SPEM定义管控工作流中的项目管理
![](images/16.png)
项目管理流程图
质量管理:角色-活动-工件
![](images/17.png)
EA中用SPEM定义管控工作流中的质量管理
![](images/18.png)
质量管理-流程图
配置管理:角色-活动-工件
![](images/19.png)
EA中用SPEM定义支撑工作流中的配置管理
![](images/20.png)
配置管理-流程图
过程改进:角色-活动-工件
过程改进涉及到软件工程组织的工作方式、方法和环境的改进,尤其涉及到人员观念和工作习惯的改变,客观的说不应该是一个急进的过程,而是一个结合组织当前的过程问题,逐步改造的过程,所以过程改进模型应该提供一个具体的演进的路线图,而这个演进的路线图可以像CMMI那样分为多个级别,然后逐步改进
![](images/21.png)
EA中用SPEM定义支撑工作流中的过程改进
好了,根据以上介绍呢,相信大家对SPEM有了一些了解,在EA中还可以用SPEM对人员的能力进行建模,了解更多知识,可以参考如下的课程或者工具:
文章:能力模型
: 需求分析师
讲座:需求分析师的能力模型、培养与评测
课程:SysML和EA进行系统设计建模
工具:企业架构建模工具EA
|