软件工程/工具/建模与CASE工具简介
计算机辅助软件工程 (CASE) 是将一组工具和方法科学地应用于软件系统,旨在产生高质量、无缺陷、可维护的软件产品。[1] 它也指信息系统开发方法,以及在软件开发过程中使用的自动化工具。[2]
术语“计算机辅助软件工程”(CASE)可以指用于系统软件(即计算机代码)自动开发的软件。CASE 功能包括分析、设计和编程。CASE 工具自动执行设计、文档化和以所需编程语言生成结构化计算机代码的方法。
CASE 软件支持软件过程活动,例如需求工程、设计、程序开发和测试。因此,CASE 工具包括设计编辑器、数据字典、编译器、调试器、系统构建工具等。
CASE 还指专门用于工程学科的方法,用于使用自动化工具开发信息系统。
CASE 主要用于开发高质量的软件,使其有效运行。
密歇根大学的 ISDOS 项目引起了人们对使用计算机系统来帮助分析师完成非常困难的需求分析和系统开发过程的整个概念的极大兴趣。丹尼尔·泰奇罗的几篇论文激励了一代人对自动化系统开发的潜力充满热情。他的 PSL/PSA 工具是一个 CASE 工具,尽管它早于该术语。他对元元模型力量的见解令人鼓舞,特别是对一位前学生哈桑·萨亚尼博士来说,他目前是马里兰大学大学学院的教授和项目主任。
另一个主要趋势是作为对 DBMS 目录的逻辑扩展而出现的。通过扩展所保存的元数据的范围,应用程序的属性可以保存在字典中,并在运行时使用。这个“活动字典”成为更现代的“模型驱动执行”(MDE)功能的前身。但是,活动字典没有提供任何元数据的图形表示。正是将字典保存分析师元数据(源于使用一组集成技术的应用)的概念与这种数据的图形表示联系起来,才产生了早期版本的 I-CASE。
CASE 术语最初由软件公司 Nastec Corporation of Southfield, Michigan 于 1982 年创造,他们的最初集成图形和文本编辑器 GraphiText 也成为第一个使用超链接交叉引用文档中文本字符串的微型计算机系统——今天网页链接的早期先驱。GraphiText 的后续产品 DesignAid 是第一个基于微处理器的工具,能够逻辑和语义地评估软件和系统设计图并构建数据字典。
在产品管理和咨询副总裁 Albert F. Case, Jr. 和产品管理总监 Vaughn Frick 的领导下,DesignAid 产品套件扩展到支持广泛的结构化分析和设计方法的分析,特别是 Ed Yourdon 和 Tom DeMarco、Chris Gane & Trish Sarson、Ward-Mellor (实时) SA/SD 和 Warnier-Orr (数据驱动)。
进入市场的下一家公司是来自马萨诸塞州剑桥的 Index Technology 的 Excelerator。虽然 DesignAid 在 Convergent Technologies 以及后来的 Burroughs Ngen 网络微型计算机上运行,但 Index 在 IBM PC/AT 平台上推出了 Excelerator。虽然在发布时以及随后几年,IBM 平台不支持网络或集中式数据库,就像 Convergent Technologies 或 Burroughs 机器那样,但 IBM 的魅力很大,Excelerator 因此声名鹊起。紧随 Excelerator 之后的是来自 Knowledgeware (James Martin、Fran Tarkenton 和 Don Addington)、德州仪器的 IEF 以及埃森哲的 FOUNDATION 工具集 (METHOD/1、DESIGN/1、INSTALL/1、FCP) 等公司的一系列产品。
CASE 工具在 1990 年代初达到顶峰。当时 IBM 提出了 AD/Cycle,它是由围绕 IBM 软件存储库联盟的软件供应商联盟,该存储库使用 IBM DB2 在大型机和 OS/2 上。
- 应用程序开发工具可以来自多个来源:来自 IBM、来自供应商以及来自客户自身。IBM 与 Bachman Information Systems、Index Technology Corporation 和 Knowledgeware, Inc. 达成了合作关系,其中来自这些供应商的精选产品将通过 IBM 互补营销计划进行销售,以提供帮助实现完整生命周期覆盖的产品。[3]
随着大型机业务的衰落,AD/Cycle 和大型 CASE 工具也随之消亡,为今天主流 CASE 工具打开了市场。1990 年代初 CASE 市场几乎所有领导者最终都被 Computer Associates 收购,包括 IEW、IEF、ADW、Cayenne 和 Learmonth & Burchett Management Systems (LBMS)。
Alfonso Fuggetta 将 CASE 分为 3 类:[4]
- 任务仅支持软件过程中的特定任务。
- 工作台仅支持一项或几项活动。
- 环境支持(大部分)软件过程。
工作台和环境通常构建为工具集合。因此,工具可以是独立产品,也可以是工作台和环境的组成部分。
CASE 工具是一类软件,可以自动执行各种生命周期阶段中涉及的许多活动。例如,在建立拟议应用程序的功能需求时,可以使用原型工具来开发应用程序屏幕的图形模型,以帮助最终用户直观地了解应用程序开发后的外观。随后,系统设计师可以使用自动设计工具将原型化的功能需求转换为详细的设计文档。然后,程序员可以使用自动代码生成器将设计文档转换为代码。如前所述,可以将自动化工具集合使用,也可以单独使用。例如,可以将原型工具用于定义应用程序需求,然后将这些需求传递给设计技术人员,他们以传统方式使用流程图和叙述性文档来将需求转换为详细的设计,而无需使用自动设计软件的帮助。[5]
现有的 CASE 工具可以沿着 4 个不同的维度分类
- 生命周期支持
- 集成维度
- 构建维度
- 基于知识的 CASE 维度[6]
让我们逐一了解这些维度的含义及其示例
- 基于生命周期的 CASE 工具
此维度根据 CASE 工具在信息系统生命周期中支持的活动进行分类。它们可以被分类为上层 CASE 工具或下层 CASE 工具。
- 上层 CASE 工具支持战略规划和概念级产品的构建,而忽略设计方面。它们支持传统的图表语言,例如 ER 图、数据流图、结构图、决策树、决策表等。
- 下层 CASE 工具专注于软件生命周期的后端活动,例如物理设计、调试、构建、测试、组件集成、维护、重构和逆向工程。
- 集成维度
人们提出了三个主要的 CASE 集成维度:[7]
- CASE 框架
- ICASE 工具
- 集成项目支持环境 (IPSE)
工作台将多个 CASE 工具集成到一个应用程序中,以支持特定的软件过程活动。因此,它们实现了
- 同质且一致的界面(演示集成)。
- 轻松调用工具和工具链(控制集成)。
- 访问以集中方式管理的通用数据集(数据集成)。
CASE 工作台可以进一步分类为以下 8 类:[4]
- 业务规划和建模
- 分析和设计
- 用户界面开发
- 编程
- 验证和确认
- 维护和逆向工程
- 配置管理
- 项目管理
环境是支持软件过程的 CASE 工具和工作台的集合。 CASE 环境根据集成的重点/基础进行分类[4]
- 工具包
- 以语言为中心
- 集成
- 第四代
- 以过程为中心
- 工具包
工具包是松散集成的产品集合,通过聚合不同的工具和工作台可以轻松扩展。通常,工具包提供的支持仅限于编程、配置管理和项目管理。工具包本身是扩展自基本操作系统工具集的环境,例如,Unix 程序员工作台和 VMS VAX 集。此外,工具包的松散集成要求用户通过显式调用或简单控制机制来激活工具。生成的 files 是非结构化的,并且可能以不同的格式存在,因此从不同的工具访问 file 可能需要显式 file 格式转换。但是,由于添加新组件的唯一约束是 files 的格式,因此工具包可以轻松且增量地扩展。[4]
- 以语言为中心
环境本身是用开发它的编程语言编写的,因此使用户能够重用、定制和扩展环境。以语言为中心的集成代码不同语言的问题。缺乏过程和数据集成也是一个问题。这些环境的优势包括良好水平的演示和控制集成。Interlisp、Smalltalk、Rational 和 KEE 是以语言为中心的示例环境。[4]
- 集成
这些环境通过提供统一、一致且连贯的工具和工作台界面来实现演示集成。数据集成是通过存储库概念实现的:它们有一个专门的数据库来管理在环境中生成和访问的所有信息。集成环境的例子包括 IBM AD/Cycle 和 DEC Cohesion。[4]
- 第四代
第四代环境是第一个集成环境。它们是一组支持开发特定类别的程序的工具和工作台:电子数据处理和面向业务的应用程序。一般来说,它们包括编程工具、简单的配置管理工具、文档处理工具,有时还包括一个代码生成器来生成更低级别语言的代码。Informix 4GL 和 Focus 属于此类。[4]
- 以过程为中心
此类别的环境专注于过程集成,并将其他集成维度作为起点。以过程为中心的 环境通过解释由专门工具创建的过程模型来运行。它们通常包括处理两个功能的工具
- 过程模型执行
- 过程模型生产
例子包括 East、Enterprise II、Process Wise、Process Weaver 和 Arcadia。[4]
软件工具可以支持软件开发生命周期的所有方面,因此,可以说,跨越整个范围使用工具可以被描述为 CASE;从项目管理软件到用于业务和功能分析、系统设计、代码存储、编译器、翻译工具、测试软件等的工具。
然而,最常被认为是 CASE 工具的工具是那些与分析和设计相关的工具,以及使用设计信息来创建软件产品部分(或全部)的工具。例如,将 CASE 应用于数据库软件产品,通常会涉及
- 对业务/现实世界过程和数据流进行建模
- 以实体-关系图的形式开发数据模型
- 开发过程和功能描述
常见的 CASE 风险和相关控制包括
- 标准化不足:如果产品没有使用标准化的代码结构和数据分类,则链接来自不同供应商的 CASE 工具(来自公司 X 的设计工具,来自公司 Y 的编程工具)可能很困难。 files 格式可以转换,但通常不经济。控制措施包括使用来自同一供应商的工具,或使用基于标准协议的工具并坚持经过证明的兼容性。此外,如果组织仅为开发过程的一部分获取工具,则他们应考虑从拥有全套产品的供应商那里获取这些工具,以确保将来添加更多工具时的兼容性。[5]
- 不切实际的期望:组织通常实施 CASE 技术以降低开发成本。实施 CASE 策略通常会涉及高昂的启动成本。通常,管理层必须愿意接受长期回报期。控制措施包括要求高级管理人员定义实施 CASE 技术的目的和策略。[5]
- 实施缓慢:实施 CASE 技术可能涉及从传统开发环境的重大转变。通常,组织不应首次在关键项目或有短期限的项目上使用 CASE 工具,因为培训过程很长。此外,组织应考虑在更小、更简单的项目上使用这些工具,并逐步实施这些工具,以允许更多培训时间。[5]
- 存储库控制薄弱:未能充分控制对 CASE 存储库的访问可能会导致安全漏洞或损坏存储在存储库中的工作文档、系统设计或代码模块。控制措施包括使用适当的访问、版本和备份控制来保护存储库。[5]
- ↑ Kuhn, D.L (1989). “选择和有效使用计算机辅助软件工程工具”。年度西屋计算机研讨会;1989 年 11 月 6-7 日;匹兹堡,宾夕法尼亚州(美国);能源部项目。
- ↑ P. Loucopoulos 和 V. Karakostas (1995)。系统需求工程。麦格劳-希尔。
- ↑ “AD/Cycle 策略和架构”,IBM 系统期刊,第 29 卷,第 2 期,1990 年;第 172 页。
- ↑ a b c d e f g h Alfonso Fuggetta (1993). "CASE 技术分类". 计算机. 26 (12): 25–38. doi:10.1109/2.247645. 检索于 2009-03-14.
{{cite journal}}
: 未知参数|month=
被忽略 (帮助) - ↑ a b c d e 软件开发技术. 在: FFIEC 信息库. 检索于 2008 年 10 月 26 日.
- ↑ 软件工程:工具、原理和技术,作者:Sangeeta Sabharwal,Umesh 出版社
- ↑ Evans R. Rock. Case 分析员工作台:详细产品评估. 第 1 卷,第 229–242 页,作者:
- CASE 工具索引 - 综合的 CASE 工具列表
- UML CASE 工具 - 综合的 UML CASE 工具列表. 主要提供选择 UML CASE 工具的资源,以及一些与 MDA CASE 工具相关的资源.