《软件建模与设计: UML、用例、模式和软件体系结构》一一1.8 软件建模和设计方法的发展

简介:

本节书摘来自华章计算机《软件建模与设计: UML、用例、模式和软件体系结构》一书中的第1章,第1.8节,作者:(美)Hassan Gomaa,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.8 软件建模和设计方法的发展

在20世纪60年代,软件程序经常是在几乎没有进行任何系统化的需求分析和设计的情况下开发出来的。图形化的表示法(主要是流程图)经常在编码之前的详细设计规划中作为文档工具或者设计工具使用。创建子程序的最初目的是通过在程序中不同的部分调用代码块使其能够得到共享。很快,人们意识到子程序可以作为一种构造模块化系统的手段,并将其用作一种项目管理工具。程序可以被划分为多个模块,其中每个模块可以由单个的程序员进行开发并实现为一个子程序或函数。
随着结构化编程在20世纪70年代早期的发展,自顶向下设计以及逐步精化的思想(Dahl 1972)成为主流的程序设计方法,其目的是提供系统化的结构化程序设计方法。Dijkstra在T.H.E.操作系统的设计过程中提出了最早的软件设计方法之一(Dijkstra 1968),该方法使用了层次化的体系结构。这是第一个用于并发系统(即操作系统)设计的设计方法。
在20世纪70年代中晚期,两种不同的软件设计策略占据了主导地位:面向数据流的设计和数据结构化设计。结构化设计中的面向数据流的设计方法(参见Budgen[2003]中的概览)是最早出现的几个完整、全面的设计方法之一。该方法的主要思想是通过考虑数据在系统中的流动可以更好地理解系统的功能。该方法提供了一种开发系统数据流图然后将其映射为结构图的系统化方法。结构化设计引入了耦合和内聚准则来评价设计质量,强调基于模块的功能分解以及模块接口的定义。基于数据流图开发的结构化设计中第一个部分则被细化和扩展成了一种全面的分析方法,即结构化分析(参见Budgen[2003]中的概览)。
另一种软件设计方法是数据结构化设计。该方法的观点是通过考虑数据结构获得对问题结构的充分理解。因此,该方法强调首先设计数据结构然后基于数据结构设计程序结构。使用这种策略的两种主要的设计方法是Jackson结构化方法(Jackson 1983)和Warnier/Orr方法。
在数据库领域中,逻辑数据和物理数据分离的思想是开发数据库管理系统的关键。有很多方法都强调数据库的逻辑设计,包括Chen引入的实体-关系建模。
Parnas(1972)关于信息隐藏的观点对软件设计做出了巨大的贡献。早期系统(甚至是那些已经考虑了模块化设计的系统)的一个主要问题来自于全局数据的广泛使用,这使得这些系统很容易出错且难以修改。信息隐藏为大量减少全局数据的使用提供了一种方法。
20世纪70年代后期MASCOT表示法以及此后的MASCOT设计方法的提出是对并发和实时系统设计的一个重要贡献。MASCOT在数据流方法基础上,对任务之间基于消息通信通道或者数据池(封装了共享数据结构的信息隐藏模块)的通信方式进行了形式化。任务只能通过调用通道或数据池提供的访问程序间接地访问通道或数据池中的数据。访问程序还可以对数据访问进行同步(通常使用信号量),从而使访问数据的任务无需关心任何同步问题。
软件设计方法在20世纪80年代逐渐成熟起来,同时出现了几种新的系统设计方法。Parnas在海军研究实验室(Naval Research Lab,NRL)工作期间探索了信息隐藏方法在大规模软件设计中的使用,由此导致了海军研究实验室软件成本降低方法(Naval Research Lab Software Cost Reduction Method)(Parnas,Clements,and Weiss 1984)。在并发和实时系统上应用结构化分析和结构化设计方法的工作导致了实时结构化分析和设计(Real-Time Structured Analysis and Design,RTSAD)方法(参见Gomaa[1993]概览)以及实时系统设计(Design Approach for Real-Time Systems,DARTS)方法(Gomaa 1984)的产生。
另一种在20世纪80年代早期出现的软件开发方法是Jackson系统设计(Jackson System Development,JSD)方法(Jackson 1983)。JSD方法将软件设计视为对现实世界的模拟,强调使用并发任务对问题域中的实体进行建模。该方法是较早倡导设计应该首先对现实进行建模的方法之一,在这一点上早于面向对象分析方法。系统被视为对现实世界的模拟,并被设计为一个并发任务的网络,其中每个现实世界实体使用并发任务进行建模。JSD方法同时还突破了当时已成为惯性思维的自顶向下的设计思想,对软件设计采用了一种中间向外的行为性建模方法。该方法是对象交互建模的先导,而对象交互建模则是现代面向对象开发的一个重要内容。

相关文章
|
2月前
|
机器学习/深度学习 人工智能 测试技术
【软件设计师备考 专题 】软件工程的未来:面向构件和统一建模语言(UML)
【软件设计师备考 专题 】软件工程的未来:面向构件和统一建模语言(UML)
73 0
|
4月前
|
测试技术 uml
UML面向对象建模题库
UML面向对象建模题库
41 0
|
5月前
|
设计模式 关系型数据库 程序员
UML中常用设计模式OCP、单例模式、简单工厂模式等模式讲解及C#中代码实现(附源码)
UML中常用设计模式OCP、单例模式、简单工厂模式等模式讲解及C#中代码实现(附源码)
44 0
|
10月前
|
uml
UML 总结 类图的构成: Rational Rose:描述软件
UML 总结 类图的构成: Rational Rose:描述软件
|
10月前
|
测试技术 uml 开发者
UML基础与应用之用例视图
UML基础与应用之用例视图
83 0
|
文件存储 uml
【UML建模】(8) UML建模之组件图
组件图是用来描述组件与组件之间关系的一种UML图,组件图在宏观层面上显示了构成系统某一特定方面的实现结构。它是一种结构型图表。
625 0
【UML建模】(8) UML建模之组件图
|
网络协议 uml
【UML建模】(7) UML建模之部署图
部署图是运行时进行处理的节点以及在节点上存在制品的配置的图。它阐述了在实际应用中软件和它的运行环境的关系,并且描述了软件部署在硬件上的具体方法。
407 0
【UML建模】(7) UML建模之部署图
|
测试技术 uml
【UML建模】(6) UML建模之状态机图
状态机图展示了一个对象如何根据当前状态对不同事件做出反应的动态行为。状态机图是一种行为图。
752 0
【UML建模】(6) UML建模之状态机图
|
测试技术 uml
【UML建模】(5) UML建模之活动图
活动图可以看成是面向对象版的流程图,它是一种行为型模型图,主要用于表达系统某个功能的流程。
281 0
【UML建模】(5) UML建模之活动图
|
数据建模 Java 项目管理
【UML建模】(X) UML建模之Enterprise Architect 15的使用
Enterprise Architect (后面简称EA)是一款优秀的UML建模软件。它兼容UML2.0中的所有图表。EA不同于普通的UML画图工具(如VISIO),它将支撑系统开发的全过程。在需求分析阶段,系统分析与设计阶段,系统开发与部署等方面有着强大的支持,同时加上对10种编程语言的正反向工程,项目管理,文档生成,数据建模等方面。
248 0
【UML建模】(X) UML建模之Enterprise Architect 15的使用