软件体系结构的艺术-read.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件体系结构的艺术-read

软件体系结构介绍 软件开发的演变 1. 结构化程序设计方法(70年代) 提出了层次化、模块化的结构化程序设计思想,以解决大型程序开发问题; 2. 面向对象的程序设计模式(80年代出现,90年代初、中期应用达到高潮) 提出了封装、隐藏、抽象和继承等机制和思想,较好解决了信息隐藏、代码重用等问题; OO建模语言:将设计设计过程集成到管理环境中,软件工程师利用OO建模语言可以对问题和方案域建模; “软件体系结构”术语,开始在文献中出现和应用,但还没有规范和方法; 3. 面向对象技术扩充与发展(90年代中期以后) 基于接口的组件编程技术/分布式程序设计模型; 用例分析的设计技术出现和使用; 许多建模表示方法、建模语言出现,并向OO建模方向发展,典型的有: Grady Booch, OO AD(1994,发展自1991):提出一种面向设计和构造的方法;重点:迭代的软件开发方法和软件体系结构,很好支持工程密集型系统的表示; James Runbaugh及其合作者:OMT(对象建模技术),在工作复杂算法和数据结构的语境中应用 Ivar Jacobson,OOSE:A Use Case Driven Approach(1994),提出把OO技术应用于业务重建和工业化软件开发领域(被誉为用例之父),该方法能很好支持业务工程和需求分析表示; 这3人后来都加入了Rational公司,他们的方法逐步朝统一方向发展,形成UML(这3人因三剑客(the three Amigos) 。 ★ UML结合了许多方法学的建模概念和表示法,三剑客统一UML的目标是: 使用OO范型和概念对系统(不仅仅是软件)建模; 使概念上和可执行的制品相结合; 解决复杂的关键系统的可执行问题; 使人和机器都能使用该语言; ★ UML发展简史 1996.6 UML 0.9版(三剑客) 1996.10 UML 0.91版(三剑客) 1997.1,Rational成立UML伙伴组织,发布UML1.0版并提交OMG【以响应OMG OOAT Group:建立OO AD工具标准的请求建议(RFP),该建议的目的是希望统一定义OO技术语义和元模型】 1997. 11,OMG加入UML伙伴组织,共同发布UML1.1版本,并将其采纳为标准; 1998年后,UML1.2/1.3版本 4. UML后,软件体系结构为中心的观点被提升到方法学的层次, 并进一步完善了体系结构的概念 ★ 软件体系结构 是(软件开发)方法学和模型的综合; 是有助于控制软件开发复杂性的一个方法和技术的集合体; 是软件工程学的自然扩展; 提出了组件和连接器的观点; 并非与现有的软件设计方法完全不同,只是用附加的系统观点补充了它们 适合于较大型的企业/业务/信息/数据体系结构 可以在一个名为“体系结构描述”的文档中规定软件系统的体系结构 ★ 软件系统设计根据其组件和连接器的构成,实现一定的质量; 1.2软件工程基础 1. 概述 ★ 软件工程是软件开发技术和问题域的某种结合; ★ 在软件工程对具体技术、工具和方法的大量应用会带来问题,会使集成这些技术的系统复杂化,使质量成本难以控制; 较小系统――可以只集中或关注:功能的正确性和完整性; 较大系统――还需满足:可移植性、安全性、可靠性和可维护性; 利用现有的软件工程技术,方法和程序设计语言、工具,能解决一定程度复杂性问题,但为了 突破(问题复杂性带来的)障碍/建立较大的系统,还需更好的系统方法和工具。 两种常用的软件工程划分方法: 按技术路线或水平分层划分工作: 将系统分解为“UI或表示”、“中间层”和“数据层或后端”; 采用垂直分层划分:每个开发人员负责一组功能需求,并且从前到后地实现。 但是如果没有有效的体系结构,无论哪种工程专业划分也无助于产生高质量的系统 ★ 软件开发中的两个未圆满解决的问题 系统成本的有效性和质量的有效性 提高生产率,提高设计质量,有助于提高成本的有效性 质量的有效性有时对更安全和更有效完成业务目标更重要 解决的主要障碍:软件开发中固有的复杂性 有几个基本的软件工程技术,可帮助提高软件的质量和成本的有效性; 可重用资源(代码重用(组件重用)/通用程序设计语言/专用程序设计语言/建模语言和表示法 2. 专用程序设计语言 对具体问题,比通用程序设计语言好用, 如RDB:SQL; Web设计:ASP,JSP,PHP, HTML(显示表示), XML(数据表示), XSLT(数据转换) 3. 建模语言和表示法 作为提供软件设计质量的方法出现,提高设计软件能力和质量 ERD:软件工程师设计和交流表达数据的模型,已是一种很好的建模语言和表示法; 语言的形式化使不同人能够以精确的方式理解一个模型; UML是建模表示法的一个丰富

文档评论(0)

wangsux + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档