软件工程概论
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件开发新方法——过程模式
总体说明:
目前 ,软件开发的复杂性不断提高 ,过程模式为减少软件开发过程中的复杂性提供了一个很好的工具 ,为给定的任务提供了一个结构化的方法。文中首先阐明了过程、模式 ,以及过程模式的定义 ,接着描述了过程模式的 3 种类型 :任务过程模式 ,步骤过程模式 ,阶段过程模式。过程模式是实践验证的软件开发方法 ,软件开发机构可用它来提高软件的质量、可维护性和可扩展性。
软件开发的复杂性已经达到了一个空前的高度 ,为了使软件以更快的时间占据市场 ,使系统更加灵活耐用 ,需要采用能够减少现在软件开发固有复杂性的工具。过程模式就是这个领域内的一个很好的工具。在软件体系结构领域 ,人们比较熟悉的是设计模式。设计模式为一般的复用问题提供了一个适用的解决办法 ,而过程模式在开发过程中为如何有效地执行离散的任务提供了指导 ,也就是说 ,过程模式为一个给定的任务提供了一个结构化的方法。
在需要用设计模式和分析模式提出解决方案的领域和问题中 ,在处理相同类型问题的情况时有发生 ,不仅如此 ,在那些软件专业人员用以解决机构内重复发生的问题的策略中 ,处理相同类型问题的情况也屡见不鲜。这些策略都可以用过程模式描述。过程模式描述了一系列用来开发面向对象软件的通用技术、行为以及各种与/ 或任务。它们是一些可以复用的积木 ,软件开发机构可以利用它们来开发满足确切需求的可裁剪的软件过程。
详细介绍
1.过程模式的定义
所谓“过程”,它被定义为一系列行为。在这些行为中,有 1 个或多个输入并产生 1 个或多个输出。给出“模式”的定义要稍微困难一些。正如 Alexander 1 在定义模式时暗示的那样 ,尽管模式的主要特性的具体细节表现不同 ,但其主要特性总是不断发生。尽管每一个建筑都是独一无二的 ,但是 Alexander 1 还是向我们展示
了每个建筑都可以按照一系列通用模式来建造。换句话说 ,模式就是对常见问题的通用解决方案 ,而专门的解决方案则由此而来。
Alexander 1 认为 :模式的重复与部件的重复相比较 ,两者是截然不同的。事实上 ,因为模式是相同的 , 所以各个部分的不同是唯一的。
Coplien 2 将“过程模式”定义为 : 过程就是在组织内部的行为模式。
本文将“过程模式”定义为一系列用来开发面向对象软件的通用技术、行为与/ 或各种任务。过程模式的一个重要特性在于 ,它只描述了一个软件开发人员应该做什么 ,而没有确切地说明应该做哪些细节。当过程模式能够被有组织地应用在一起时 ,它们就可以被用来为软件开发机构生成软件过程。因为过程模式并没有指定如何完成一个给定的工作 ,它们能够成为可复用的积木。软件开发人员可以据此来定制一个满足软件开发机构的特定需求的软件过程。
与过程模式相关的还有组织模式 ,这种模式用来描述通用的管理技术或者组织结构。实际上 ,过程模式和组织模式是协同工作的。
2过程模式的分类
过程模式的一个重要特性就是对于软件开发的所有方面都可以开发过程模式。Alexander 1 认为 ,模式可以在各种层次上存在。
过程模式有 3 种类型 ,按规模递增顺序依次为
: a) 任务过程模式。这类过程模式描述了执行特定任务的详细步骤 ,例如技术复审过程模式和首次复用过程模式。
b)步骤过程模式。这类过程模式描述了单个项目步骤中经常反复出现的做法,项目步骤是过程模式更高层的形式 ,通常由多个任务过程模式组成。软件过程中每个项目步骤都必须提交步骤过程模式。
c) 阶段过程模式。这类过程模式描述了在单个项目阶段中各个步骤过程模式之间的交互 ,例如初始阶段和交付阶段。构造阶段作为一个阶段过程模式 , 是 2 个或
多个步骤过程模式的集合。无论是结构化开发还是面向对象开发 ,项目阶段都被依次完成。许多被反复执行的步骤过程模式组成了阶段过程模式 ,而这些阶段过程模式又顺序地被执行。
下面分别为这 3 类过程模式提供了一个例子。这些例子都来自面向对象软件过程 ( OO SP) 的过程模式语言。OO SP 是一个由阶段过程模式、步骤过程模式和任务过程模式组成的生命周期。
3.任务过程模式---技术复审
对在开发阶段创造的可交付使用的产品进行确认,以确保其能满足用户群体的需要及其机构的质量标准。
过程模式高级的管理技术能确保开发团队开发出满足用户群体需要的高质量的可交付使用的产品。对于所创建的可交付使用的产品以及如何使他们的工作适用于整个软件开发工程 ,开发团队和复审者应该有一个较好的沟通理解。在复审期间 ,每个开发团队成员和复审者应该学习新的技术 ,包括可交付使用产品的使用技术、复审时应用的管理技术以及复审期间提高可交付使用产品质量而使用的开发技术。
3 . 1 推动力
有以下几个实用的推动力激发了技术复审过程模式的产生 : a) 在开发过程中产生的可交付使用的产品 ( 模型、原型、文档、源代码等) ,帮助详细说明了那些发布给用户群体的软件和相关产品 ,这样 ,软件开发人员就可确认每个可交付使用的产品在使用前质量足够好。b) 在开发生命周期中检测到缺陷越迟 ,则修正这些缺陷的花费就像滚雪球一样越滚越大 ,所以 ,软件开发人员要尽可能早地检测到缺陷 ,尽早修正这些缺陷 , 当然花费也少。 c) 因为一个人很难检测自己的工作 ,那么就需要“第二组眼睛”来检测一个可交付使用的产品。 d) 在工作上人们进行交流的方法之一就是让同一开发团队的程序员互相检测其可交付使用的产品。
3 . 2 前提条件
技术复审的前提条件是 : a) 有 1 个或多个可交付使用的产品。 b) 这些产品已
经准备好了被复审。 c) 开发团队准备好了复审这些产品。
3 . 3 解决方案图 1 显示了技术复审 ( 模型复审、文档复审、原型复审、需求复审和代码检查是紧随着技术复审过程模式的所有指定过程) 的 6 个基本步骤 :开发团队为检测进入构造阶段的途径有从初始阶段进入或从操作维护阶段进入两种。在创建阶段可能开始之前肯定会遇到以下情况 : a) 应提供和更新关键的项目管理文件 ( 项目计划、估价、进度表、风险评估等) 。 b) 定义项目的底部结构 ,至少是项目底部结构的大部分 ,这样 ,工具、过程和标准就可以被软件开发团队利用。图 2 编程步骤过程模式 c) 对程序员的软件的高层次要求以及计划表应该被代替。
4 步骤过程模式———编程
确切地讲 ,软件开发的一个重要方面是源代码的 3 任务过程模式———技术复审对在开发阶段创造的可交付使用的产品进行确实际开发。有经验的开发者知道 ,有很多事情需要去设计而不是简单地坐在计算机前面输入源代码。编程步骤过程模式描述了设计中反复执行的任务及行为。
4 . 1 推动力编程的推动力是 : a) 程序员开发软件以满足用户群的需要。 b) 源代码反映了可交付产品包含的信息 ,同时 , 当程序员获得对领域的详细的理解 ( 通常比建模者更加详细) 时 ,促进这些可交付产品产生变化。 c) 许多机构希望开发的软件具有及时性和高效性 ,同时还具有可维护性和可扩展性 ,这样便于以后进行及时和有效的修改。
4 . 2 前提条件在开始编码以前肯定会遇到以下几种情况 : a) 程序员的设计模型要代替其想要编写的源代码。 b) 在初试化阶段定义底部结构步骤的期间 ,替换程序员的项目底部结构 ,并进行定义。这个底部结构包括了程序员用到的开发和支持工具以及程序员需要遵守的标准和指导方针。 c) 程序员必须有能力做这项工作。
4 . 3 解决方案图 2 描述了编程步骤过程模式 ,图中显示了与简单地编写源代码相比需要做更多的工作 :理解模型 ,找出可复用的部分以减轻工作压力 ,证明要编写的内容 , 编写代码 ,检查和改进 ,测试和修正 ,最后打包。在开始编写代码以