开发者社区> 华章计算机> 正文

《实践者的研究方法》—— 第3章 软件工程 3.4 过程模式

简介:
+关注继续查看

本节书摘来自华章出版社《实践者的研究方法》一书中的第3章,第3.4节,作者罗杰 S. 普莱斯曼(Roger S. Pressman),更多章节内容可以访问云栖社区“华章计算机”公众号查看。


3.4 过程模式

每个软件团队在软件过程里都会遇到很多问题。针对这些问题,如果软件团队能够得到已有的经过验证的解决方案,将有助于他们快速地分析和解决问题。过程模式(process pattern)描述了软件工程工作中遇到的过程相关的问题,明确了问题环境并给出了针对该问题的一种或几种可证明的解决方案。通俗地讲,过程模式提供了一个模板[Amb98]——?一种在软件过程的背景下统一描述问题解决方案的方法。通过模式组合,软件团队可以解决问题并定义最符合项目需求的开发过程。

我们可以在不同抽象层次上定义模式。在某些情况下,模式可以描述一个与完整过程模型(例如原型开发)相关的问题(及其解决方案);在其他的情况下,模式可以描述一个与框架活动(如策划)或者框架活动中的一动作(如项目估算)相关的问题(及其解决方案)。

Ambler[Amb98]提出了下面的过程模式的描述模板:

模式名称。模式名称应能清楚地表述该模式在软件过程中的含义(例如技术评审)。

驱动力。模式的使用环境及主要问题,这些问题会显现在软件过程中并可能影响解决方案。

类型。定义模式类型。Ambler[Amb98]提出了三种类型:

1. 步骤模式(stage pattern)——定义了与过程的框架活动相关的问题。由于框架活动包括很多动作和工作任务,因此步骤模式包括与步骤(框架活动)有关的许多任务模式(见以下描述)。例如,建立沟通可能作为一个步骤模式,该步骤模式可能包括需求收集等任务模式。

2. 任务模式(task pattern)——定义了与软件工程动作或是工作任务相关、关系软件工程实践成败的问题(例如,需求收集是一个任务模式)。

3. 阶段模式(phase pattern)——定义在过程中发生的框架活动序列,即使这些活动流本质上是迭代的。例如,螺旋模型和原型开发就可能是两种阶段模式。

启动条件。它描述的是模式应用的前提条件。在应用模式之前需要明确:(1)在此之前,整个开发组织或是开发团队内已经有哪些活动?(2)过程的进入状态是什么?(3)已经有哪些软件工程信息或是项目信息?

例如,策划模式(阶段模式)需要的前提条件有:(1)客户和软件工程师已经建立了合作的交流机制;(2)已经成功完成一些客户沟通模式中特定的任务模式;(3)项目范围、基本业务需求和项目限制条件已经确定。

问题。描述模式将要解决的具体问题。

解决方案。描述如何成功实现模式。这部分主要讨论随着模式的启动,过程的初始状态(模式应用之前就已经存在)是如何发生改变的。解决方案也描述了随着模式的成功执行,模式启动之前所获得的软件工程信息和项目信息是如何变换的。

结果。描述模式成功执行之后的结果。模式完成时需要明确:(1)必须完成哪些开发组织或是开发团队相关的活动?(2)过程的结束状态是什么?(3)产生了哪些软件工程信息或是项目信息?

相关模式。以层次化或其他图的方式列举与该模式相关的其他过程模式。例如步骤模式沟通包括了一组任务模式:项目团队组织、合作指导原则定义、范围分解、需求收集、约束描述以及场景模式的创建等。

已知应用和实例。说明该模式可应用的具体实例。例如,沟通在每一个软件项目的开始都是必需的,建议在整个软件项目过程中采用,并规定在部署活动中必须进行。

过程模式提供了一种有效的机制,用以解决任何与软件过程相关的问题。模式使得软件工程组织能够从高层抽象开始(阶段模式)建立层次化的过程描述。高层抽象描述又进一步细化为一系列步骤模式以描述框架活动,然后每一个步骤模式又进一步逐层细化为更详细的任务模式。过程模式一旦建立起来,就可以进行复用以定义各种过程变体,即软件开发团队可以将模式作为过程模型的构建模块,定制特定的过程模型。

信息栏  过程模式实例

当利益相关者对工作成果有大致的想法,但对具体的软件需求还不确定时,下述简化的过程模式描述了可采用的方法。

模式名称。需求不清。

目的。该模式描述了一种构建模型(或是原型系统)的方法,使得利益相关者可以反复评估,以便识别和确定软件需求。

类型。阶段模式。

启动条件。在模式启动之前必须满足以下四个条件:(1)确定利益相关者;(2)已经建立起利益相关者和软件开发团队之间的沟通方式;(3)利益相关者确定了需要解决的主要问题;(4)对项目范围、基本业务需求和项目约束条件有了初步了解。

问题。需求模糊或者不存在,但都清楚地认识到项目存在问题,且该问题需要通过软件解决。利益相关者不确定他们想要什么,即他们无法详细描述软件需求。

解决方案。描述了原型开发过程,详见4.1.3节。

结果。开发了软件原型,识别了基本的需求(例如交互模式、计算特性、处理功能等),并获得了利益相关者的认可。随后,可能有两种结果:(1)原型系统可以通过一系列的增量开发,演化成为软件产品;(2)原型系统被抛弃,采用其他过程模式建立了产品软件。

相关模式。以下模式与该模式相关:客户沟通,迭代设计,迭代开发,客户评价,需求抽取。

已知应用和实例。当需求不确定时,推荐原型开发方法。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
技术一号位的方法论《个人篇》——人成长的本质以及如何构建个人成长路线图
不论你是职场新人还是35岁的职场“老人”,成长是每个职场人都绕不开的话题,同时也是贯穿每个人职业生涯的痛点。本文主要帮助读者建立起对个人成长的认知,然后在此认知的基础上让大家理解成长的本质,最终通过文章的引导,来帮助读者完成个人成长路线图的确定以及落地实践。
11023 0
谈谈架构师是何种生物
架构师也可以分为初级、中级、高级三档,江湖上真正高水平的软件架构师就更少了。 所以,大部分(超过九成的)码农干上许多年,还是做不了架构师,这是什么原因造成的呢? 什么是架构师? 写代码和做架构是两个不同的事情。什么是架构师,架构师要做什么事情,为什么 Java 的领域里,会更注重架构师? 很早很早之前,我对于架构的概念一点都不理解,依稀记得,架构( architecture)这个词,来自于建筑领域。
104 0
软件工程概论项目——典型用户场景分析
典型用户 姓名:李华 性别,年龄:男  23 资质:普通本科毕业1年,无工作 目的:找到一份普通的工作就心满意足了。 用户偏好:广撒网,四处投递简历,出现在各大招聘会 用户场景 李华找到本招聘网站,点击了一个招聘信息,打算投简历,提醒需要登录。
1120 0
7月10日到7月15日技术积累要点
总结过去一周技术积累要点:     Environment.NewLine(换行);     string.Concat()的时间复杂度低于+=;     单元测试的规则;     创建日志的规则(LoggerFactory.
680 0
《软件工程方法与实践》—— 3.3 传统的软件过程模型
在20世纪80年代之前,瀑布模型是最早也是应用最广泛的软件过程模型,现在它仍然是软件工程中应用得最广泛的过程模型。瀑布模型提供了软件开发的基本框架,其过程是接收上一项活动的工作结果作为输入,然后实施该项活动应完成的工作,并将该项活动的工作结果作为输出传给下一项活动。
1618 0
+关注
华章计算机
文章
问答
视频
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
代码大数据分析研究与实践
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载