下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件体系结构,第一章软件体系结构导论,从软件危机谈起,软件成本在增加,开发进度难以控制,软件质量差,软件成本在增加。在20世纪50年代,软件成本占计算机系统总成本的10%-20%。到20世纪60年代中期,软件成本在计算机系统中所占的比例已经增加到50%左右。此外,这个数字还在不断增加。以下是美国空军计算机系统的一组数据:1955年,软件成本约占总成本的18%,1970年达到60%,1975年达到72%,1980年达到80%,1985年达到85%。由于软件是一种逻辑的、智力的产品,软件的开发需要建立一个与其他产品生产不同的巨大的逻辑系统。在软件开发过程中,各种意想不到的情况如用户需求的变化等层出
2、不穷,使得软件开发过程难以保证如期实施,给项目规划和演示带来很大困难。盲目增加软件开发人员的数量并不能相应地提高软件开发能力。相反,随着人员的增加,人员组织、协调、沟通、培训和管理等方面的问题将会更加严重。软件质量差即使软件项目能在预定日期完成,结果也不令人满意。从1965年到1970年,范登堡基地的火箭发射失败了很多次,大多数失败都是由于应用错误造成的。在“软件车间”中,由于缺乏工程思想的指导,程序员几乎总是习惯性地用自己的思想来代替用户对软件的需求。软件设计是随机的,许多功能只是程序员的“一厢情愿”,这是导致软件不尽人意的一个重要因素。软件维护困难,因为在软件设计和开发过程中,软件开发标准
3、没有得到严格遵循,没有完整的记录文档真实反映系统状态,给软件维护带来很大困难。特别是在使用软件的过程中,最初的开发人员可能因为各种原因离开了最初的开发组织,使得软件几乎不可维护。根据一些数据,行业为软件维护支付的成本占所有硬件和软件成本的40%-75%。软件危机的原因是用户需求不明确和缺乏正确的理论指导,软件的规模越来越大,软件的复杂性越来越高。在软件开发完成之前,用户不清楚软件的具体需求;用户对软件需求的描述不准确,可能存在遗漏、模糊甚至错误;在软件开发过程中,用户也提出了修改软件功能、界面和支持环境的要求;开发者对用户需求的理解不同于用户最初的愿望。缺乏正确的理论指导和强有力的方法工具支持
4、。由于软件不同于大多数其他工业产品,其开发过程是一个复杂的逻辑思维过程,其产品在很大程度上依赖于开发者的高智力投入。软件开发过程中对程序员技能和创造力的过度依赖加剧了软件产品的个性化,这也是软件危机发生的重要原因。随着软件应用范围的扩大,软件规模越来越大。大型软件项目需要人力来完成,而大多数管理者缺乏开发大型软件系统的经验,而大多数软件开发人员缺乏管理经验。各种人员之间的信息交流不及时、不准确,有时会导致误解。软件项目开发人员不能有效和独立地处理大规模软件的所有关系和分支,因此他们容易出现遗漏和错误。软件的复杂性越来越高,软件不仅在规模上迅速发展壮大,而且复杂性也在迅速增加。由于软件产品的特殊
5、性和人类智能的局限性,人们无法处理“复杂问题”。“复杂问题”的概念是相对的。一旦人们采用先进的组织形式、开发方法和工具来提高软件开发的效率和能力,新的、更大、更复杂的问题就会出现在人们面前。如何克服软件危机,人们面临的不仅仅是技术问题,还有管理问题。管理不善将不可避免地导致失败。为了提高软件开发的效率和软件产品的质量,必须采用工程开发方法和工业化生产技术。技术上,应采用基于复用的软件生产技术;在管理上,应采用多维工程管理模式。“建筑建筑”,前言建筑是指建筑或建筑的简称。结构:用木头建造房屋的原意延伸到结构框架:建筑的结构结:由绳子、线、皮条等组成的结。关键点;连接状态结构:住宅对组成整体的各部
6、分的配置和排列的功能要求:能够居住。对住房质量的要求:安全:它可以避免地震,台风,暴雨和其他自然灾害。建筑物内居住者的健康和舒适。审美:具有亲和力,体现社会文化。不同的房子功能相同,但结构不同,居住质量也不同。人类最早的生活方式:窝洞居、炎热或高海拔地区的窑洞居可以获得相对稳定的室内热环境,顶部的天窗不仅可以采光,还可以排烟。爱斯基摩冰屋的外观和内部布局是由干雪制成的。厚度为500的墙体可以提供更好的保温性能。当室外平均温度为30时,室内温度可保持在5以上。在土壤热惯性的帮助下,中国大陆气候的民居达到了冬暖夏凉的目的。利用太阳高度角的特性,只出现在北方。冬季,四合院建筑有效利用太阳能供暖,抵御
7、北风的侵袭,屋顶设计避免了夏季室内过热。中国四合院:面朝南的典范,湿热地区的中国民居,云南甘兰竹楼:防雨、防潮、隔热。地球环境是可持续的吗?玻璃和钢箱建筑遍布世界各地,空调的普及使人们不再关心建筑的冷暖,但高能耗也影响了环境。为什么要学习软件架构?我们能走多远决定思维方式,我们能走多远决定出路。系统的建立是为了满足组织的需要(包括功能和质量),质量要求决定了系统必须达到的特征,包括性能、可靠性、互操作性和生命周期。随着软件系统的日益复杂,涉众对软件的要求不再局限于功能的满足,而是更加注重质量。很少有人关注组织的角色(开发组织、客户等)。)在系统设计和系统成败方面。系统的质量特征受到软件体系结构
8、的限制,或者体系结构设计的选择受到要实现的质量特征的影响。本课程的目的是对软件体系结构的出现和演变做一个通俗的介绍,减少理解软件体系结构的神秘性,并为软件体系结构设计提供实用的指导。第1部分:软件体系结构的基础第2部分:体系结构的创建第3部分:体系结构的分析和评估课程形式理论课程、特殊课程、作业评估、出勤率、考试出勤率30%、考试出勤率70%软件体系结构的概念基于一定的设计原则,软件体系结构从不同的角度配置和安排系统的各个部分,形成系统的多重结构外部可见属性是指其他组件可以对组件做出的假设, 例如组件提供的服务、组件的性能特征、错误处理以及共享资源的使用。 为什么设计原则是建筑的一部分?许多人
9、不理解或不遵守走路的规则,导致他们的生活。许多人不遵守驾驶规则,导致严重的交通事故。软件体系结构的定义可以从以下六个方面来理解:体系结构应该基于一定的设计原则,否则很容易失败。一个系统可以由多个结构组成,没有一个可以等同于一个框架。每个软件系统都有自己的体系结构。软件架构决定了每个组件。只要一个组件的行为可以被观察到或者与其他组件区分开来,这种行为就是软件架构的内容。软件架构是抽象的,它不考虑实现、算法和数据表示的细节,而是关注“黑盒”组件的行为和交互,这是设计的第一步。其他观点:观点1软件体系结构是一个高层次的设计观点2软件体系结构是软件系统的整体结构观点3 IEEE定义:软件体系结构是一个
10、程序或系统的组件结构,组件之间的相互关系以及控制组件设计和演化的指导原则观点4佩里和Wo1f提出软件体系结构是具有一定形式的结构化元素,包括处理元素、数据元素和连接元素。处理元素负责处理数据,数据元素是经过处理的信息,连接元素组合并连接体系结构的不同部分。观点5玛丽肖和大卫加兰认为软件体系结构是软件设计过程中的一个层次,它超越了计算过程中的算法设计和数据结构设计。体系结构问题包括总体组织和全局控制、通信协议、同步、数据访问、为设计元素分配特定功能、设计元素的组织、规模和性能,以及在设计方案中进行选择。软件体系结构处理基于算法和数据结构的整个系统结构的设计和描述的一些问题,例如全局组织和全局控制
11、结构、关于通信、同步和数据访问的协议、设计组件的功能定义、物理分布和综合、设计方案的选择、评估和实现等。观点6 Kruchten指出软件体系结构有四个视角,它们从不同的方面描述系统:从概念的角度描述系统的主要组件及其关系;模块角度包括功能分解和层次结构;运行角度描述了系统的动态结构。代码观点描述了开发环境中各种代码和库函数的组织。这些角度形成了一个“4 1”透视模型。“4 1”模型从五个不同的角度描述软件体系结构,包括逻辑视角、过程视角、物理视角、开发视角和场景视角。每个视角只关心系统的一个方面,这五个视角可以反映系统软件架构的所有内容。图中显示了“4 1”型号。观点7海斯罗斯(Hayes R
12、oth)认为软件体系结构是一个抽象的系统规范,它主要包括功能组件和由组件行为描述的组件之间的互连、接口和关系。观点8巴里鲍姆提出软件体系结构包括系统组件、互连和约束的集合;系统需求规格的收集;一个基本的原则是用来解释这个组件,互连和约束可以满足系统的要求。观点9软件体系结构为软件系统提供了结构、行为和属性的高级抽象,它由组成系统的元素描述、这些元素的交互、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅规定了系统的组织结构和拓扑结构,还显示了系统需求和组成系统的元素之间的对应关系,并提供了一些设计决策的基本原则。设计只是系统功能需求分析的产物吗?功能需求设计系统的开发?不也!2009
13、年1月3日,广州火车站16万张车票同时出站,导致系统瘫痪。9/11是世贸大厦的倒塌。2007年1月18日,招商证券的客户发现该公司在进行网上交易时,该公司的网站无法登录。一些顾客求助于电话服务,奥运门票销售系统的失败,软件架构的出现?软件体系结构研究的问题,结构问题,系统的组织,哪些组件构成了全局控制结构通信,同步或访问协议将功能分配给不同的系统组件,设计元素的物理分布,可伸缩性,性能,主要内容包括描述系统元素b这些元素之间的交互c模式d约束系统组成。因此,在软件框架中,系统是由组件之间的交互来定义的。当前系统可以同时用作更高级设计的系统组件。软件设计的层次可以是许多不同的层次。在每一个层次上
14、,我们都会找到相应的组件以及由这些组件组成的较大组件的组合机制。二进制执行文件级位模式代码级编程语言原语和运算符;记录、数组、程序;架构层模块,软件架构的含义,架构是利益相关者沟通的一种手段。软件架构代表了系统的公共高级抽象。这样,系统的大多数(如果不是全部的话)相关人员可以将它作为建立相互理解的基础,形成统一的理解并相互交流。体系结构提供了一种通用的语言来表达各种关注和协商,然后可以合理地管理大型复杂系统。这对项目的最终质量和使用有很大影响。架构是早期设计决策的体现。软件架构定义了系统实现的约束。软件架构决定了开发和维护的组织结构。软件架构限制了系统的质量属性。通过研究软件架构,可以预测软件
15、的质量。软件架构使得推理和控制变化变得更加容易。软件架构一步一步地帮助原型设计。软件架构可以作为培训的基础。软件架构是一个可传递和可重用的模型。软件体系结构级别的重用意味着体系结构决策可以在具有相似需求的多个系统中受到影响,这比代码级别的重用更有益。软件体系结构的发展历史,“无体系结构”设计阶段,佩里和沃尔夫认为未来是研究软件体系结构的时代,软件体系结构的应用现状,软件体系结构描述语言体系结构描述构造和表示体系结构分析,设计和验证体系结构发现,演化和重用基于体系结构的软件开发方法体系结构框架在特定领域软件体系结构支持工具软件产品线体系结构建立一种评估软件体系结构的方法。我们的目标是在软件开发过
16、程中使用软件架构成为系统架构师和系统架构师。系统架构师负责设计系统的整体架构,考虑从需求到设计的每一个细节,把握整个项目,使设计的项目尽可能高效、易于开发、维护方便、升级简单。系统架构师是近年来在国内外发展迅速的一个职位。比尔盖茨(首席软件架构师);丁磊(总建筑师),系统架构师的职责l,领导和协调整个项目中的技术活动(分析、设计和实施等)。2)促进重大技术决策,并最终将其表达为软件体系结构的重要方面3)确定并记录系统的相关体系结构,包括系统需求、设计、实现和部署等的“视图”。4.确定设计元素的分组以及这些主要分组之间的接口。5.为技术决策提供规则,平衡各利益相关方的不同关注点,解决技术风险,并
17、确保相关决策得到有效沟通和实施。6.理解、评估和接收系统要求。7.评估并确认软件架构的实现。一个集团公司应该开发一个网络财务程序,使员工可以通过互联网进行工作。在设计财务程序的架构时,项目组有一个不同意见:张工程师认为应该采用客户/服务器(C/S)结构。各分行财务部应安装一个软件客户端,与财务部主机相连如果员工在国外出差,需要报销费用,也有必要安装该客户端。李工程师认为应采用浏览器/服务器(BS)结构,所有分行和出差员工都可以通过Windows操作系统内置的IE浏览器直接连接到总行财务部主机。体系结构受系统涉众的影响。利益相关者对构建软件系统感兴趣,包括合同中的客户、系统最终用户、开发人员、开发组织、系统维护人员等。他们的关注点是不同的,但是他们都需要系统为他们的关注点提供保证或优化。事情可以分为大矛盾和小矛盾。当开发一个系统时,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年重庆巫山县招聘社区专职工作人员笔试真题
- 企业合规应急预案(3篇)
- 医院接种疫苗应急预案(3篇)
- 人性秘密营销方案(3篇)
- 电子产品研发与代工生产合作协议二篇
- 2026年山西中考数学考试(真题)及答案
- 2026年山西省吕梁中小学教师招聘考试题库含答案
- 2026年新疆高考(政治)考试试题含答案
- 2026年青海高职单招(语文)考试题库及参考答案
- 2026年内蒙古乌海中小学教师招聘考试试卷含答案
- 无粘结预应力钢绞线施工方案及工艺方法
- 2026年高考(浙江卷)历史试题及答案
- 电商运营流程与管理制度
- 痰湿体质的中医护理
- 2023-2024学年北京市海淀区九年级(上)期末数学试卷(含解析)
- DIY甜品创业计划书
- 心内科导管室进修汇报
- 微结构眼镜镜片 微透镜阵列镜片
- 无菌操作技术培训课件
- 项目整改实施方案
- 供应商供货质量保障措施
评论
0/150
提交评论