系统架构设计师教程(txt+pdf+epub+mobi电子书下载)


发布时间:2020-06-25 00:24:03

点击下载

作者:全国计算机专业技术资格考试办公室

出版社:清华大学出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

系统架构设计师教程

系统架构设计师教程试读:

版权信息书名:系统架构设计师教程作者:全国计算机专业技术资格考试办公室排版:aw出版社:清华大学出版社出版时间:2009-06-01ISBN:9787302197089本书由清华大学出版社授权北京当当科文电子商务有限公司制作与发行。— · 版权所有 侵权必究 · —序 言

软件产业是信息产业的核心之一,是经济社会发展的基础性、先导性和战略性产业,在推进信息化与工业化融合、促进发展方式转变和产业结构升级、维护国家安全等方面有着重要作用。党中央、国务院高度重视软件产业发展,先后出台了18号文件、47号文件等一系列政策措施,营造了良好的发展环境。近年来,我国软件产业进入快速发展期。2007年销售收入达到5834亿元,出口102.4亿美元,软件从业人数达148万人。全国共认定软件企业超过1.8万家,登记备案软件产品超过5万个。软件技术创新取得突破,国产操作系统、数据库、中间件等基础软件相继推出并得到了较好的应用。软件与信息服务外包蓬勃发展,软件正版化工作顺利推进。

随着软件产业的快速发展,软件人才需求日益迫切。为适应产业发展需求、规范软件专业人员技术资格,20余年前全国计算机软件考试创办,率先执行了以考代评政策。近年来,考试作了很多积极的探索,进行了一系列改革,考试名称、考试内容、专业类别、职业岗位也作了相应的变化。目前,考试名称已调整为计算机技术与软件专业技术资格(水平)考试,涉及5个专业类别、3个级别层次共27个职业岗位,采取水平考试的形式,执行资格考试政策,并扩展到高级资格,取得了良好效果。20余年来,累计报考人数近200万,影响力不断扩大。程序员、软件设计师、系统分析师、网络工程师、数据库系统工程师的考试标准已与日本相应考试级别实现互认,程序员和软件设计师的考试标准与韩国实现互认。通过考试,一大批软件人才脱颖而出,为加快培育软件人才队伍、推动软件产业健康发展起到了重要作用。

最近,工业和信息化部电子教育与考试中心组织了一批具有较高理论水平和丰富实践经验的专家编写了这套全国计算机技术与软件专业技术资格(水平)考试教材和辅导用书。按照考试大纲的要求,教材和辅导用书全面介绍相关知识与技术,帮助考生学习备考,将为软件考试的规范和完善起到积极作用。

我相信,通过社会各界共同努力,全国计算机技术与软件专业技术资格(水平)考试将更加规范、科学,培养出更多专业技术人才,为加快发展信息产业、推动信息化与工业化融合做出积极贡献。工业和信息化部副部长 前 言

全国计算机技术与软件专业技术资格(水平)考试是国家级“以考代评”的考试,其目的是科学、公正地对全国计算机与软件专业技术人员进行专业资格认定和专业技术水平测试。实施二十年来在社会上产生了很大的影响,对我国软件产业的形成和发展做出了重要的贡献。为适应我国计算机信息技术发展的需求,国家人事部和信息产业部决定将考试的级别拓展到计算机信息技术行业的各个方面,以满足社会上对各类计算机信息技术人才的需要。

系统架构设计师是近年来在国内外迅速成长并发展良好的一个职业,它对系统开发和信息化建设的重要性及给IT业所带来的影响不言而喻。在我国,虽然目前该职业在工作内容、工作职责以及工作边界等方面还存在一定的模糊性和不确定性,但它确实是时代发展的需要,并正在实践中不断完善和成熟。

工业和信息化部电子第五研究所受全国计算机专业技术资格考试办公室委托,承担了编写《系统架构设计师教程》的任务,并组织孔学东、杨春晖、李瑜、孙伟等有关专家对本书的框架结构进行了认真研讨,确定与中山大学联合组织本教程的编著工作。本书主要为希望在系统架构领域获得专业水平资格的读者提供必要的信息,还可作为从事或准备从事系统架构设计工作的专业人员的参考书。在考试大纲中,要求考生掌握的知识面很广,每个章节的内容都能构成相关领域基础的一门课程,因此本教程编写的难度很高。考虑到参加该项高级考试的人员已有一定的基础,所以本书只对考试大纲中所涉及到的知识领域的要点加以阐述,限于篇幅不能详细地展开,请读者谅解。

本书编委会主任孔学东,副主任余阳,成员为母春民、杨春晖、孙伟、潘茂林、李瑜。主编杨春晖,副主编孙伟,编写人员包括孔学东、潘茂林、余阳、朱淑华等,编写小组按照《系统架构设计师考试大纲》的要求开展了为期一年的艰苦编著工作,最后由孙伟、杨春晖统稿。编写过程中李瑜、潘勇、杨培亮、刘杰等专家提出了许多宝贵意见,陈平、黄晓坤、冯炳文、范华平、罗雯、唐良俊、刘瑛、杜鹏懿、李晓辉等同志协助做了大量的资料收集、编辑和校对工作,在此深表感谢。

在本书的编写过程中,参考了许多相关的书籍、资料和互联网发布的信息,编者在此对这些参考文献的作者表示感谢。同时感谢清华大学出版社在本书出版过程中所给予的支持和帮助。

因水平有限,书中难免存在错漏和不妥之处,望读者指正,以利改进和提高。编 者2008年于广州第1章 绪论

随着技术的进步,信息系统的规模越来越大,复杂程度越来越高,系统的结构显得越来越重要。对于大规模的复杂系统来说,对总体的系统结构设计比起对计算的算法和数据结构的选择已经变得更重要,在这种情况下,人们认识到系统架构的重要性,设计并确定系统整体结构的质量成为了重要的议题。系统架构对于系统开发时所涉及到的成熟产品与相关的组织整合问题具有非常重要的作用,而系统架构师正是解决这些问题的专家。系统架构作为集成技术框架规范了开发和实现系统所必需的技术层面的互动,作为开发内容框架影响了开发组织和个人的互动,因此,技术和组织因素也是系统架构要讨论的主要话题。在系统开发项目中,系统架构师是项目的总设计师,是生产企业新产品、新技术体系的构建者,是目前系统开发中急需的高层次技术人才。

系统架构师是近几年来在国内外迅速成长并发展良好的一个职业,它对系统开发和信息化建设的重要性及给IT业所带来的影响是不言而喻的。在我国,虽然系统架构师的职业在工作内容、工作职责以及工作边界等方面还存在一定的模糊性和不确定性,但它确实是时代发展的需要,并正在实践中不断完善和成熟。1.1 系统架构的概念及其发展历史1.1.1 系统架构的概念

架构是一个古老的研究领域。在现实中,很多人认为架构就是一个有关建造一个物理结构的学科。但是,在设计一个信息系统架构时,计划(规划)的概念把架构和建设分割开来。

古代的文明对架构的发展有三个主要的贡献。一是多个建筑结构的完美结合。例如在用于装饰和建筑元素中的横梁、拱扇和柱子间的结合。第二个是建筑装饰形式和模式的广泛普及,这当中许多已经成为东西方宝贵文化遗产的一部分,许多还在被用于今天的建筑当中。第三就是有序规划的概念,规划是架构的基石,也就是这三个贡献中最重要的。现代信息系统的“架构”要素亦继承了这三个要素,即构件、模式和规划。

现代信息系统的“架构”本质上存在两个层次:一个是概念的层次,一个是物理的层次。而概念层次则包含了艺术、科学、方法和建设风格。物理的层次是指在一系列的架构工作之后而产生的物理结构及其相互作用的结果。

在实际工作中,为了有效地管理公司和运营业务,首先必须定义和建立一系列清晰的、实用的信息及其处理流程。这就是在一个企业中的企业总体业务架构观念,所谓软件架构必须支持这一观念。

目前,软件架构已经成为软件工程领域的研究热点。作为大型软件系统与软件产品线开发中的关键技术之一,已发展为软件工程领域的一个独立学科分支。由于所属的专业领域、学术研究和实践内容的不同,研究人员对软件架构有不同的理解和定义。这里,定义如下:

软件系统架构是关于软件系统的结构、行为和属性的高级抽象。在描述阶段,其对象是直接构成系统的抽象组件以及各个组件之间的连接规则,特别是相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体类或者对象。软件系统架构不仅指定了软件系统的组织结构和拓扑结构,而且显示了系统需求和构成组件之间的对应关系,包括设计决策的基本方法和基本原理。1.1.2 简要的发展历史

企业软件架构(Enterprise Software Architecture),也叫做企业架构,是应用全面的和严格的方法描述一个针对信息系统、流程处理、个人和组织当前和/或未来行为的抽象结构集合,所以它们与组织的核心目标和战略方向结合,尽管一般来说与信息技术高度相关,但也与商业流程优化密切相关,因此也涉及商业模式、功能管理和过程架构。

企业软件架构的雏形来自企业建模的理论和思想。在20世纪80年代早期,除了学术界,很少有人对企业流程再造或企业建模的思想感兴趣,而且使用的理论和模型通常被限于某个信息系统的设计和开发。

到20世纪80年代中期,还在IBM工作的John Zachman首先引入“信息系统架构框架”的概念。Zachman被公认为是企业架构领域的开拓者,他认为使用一个逻辑的企业构造蓝图(即一个架构)来定义和控制企业系统和其组件的集成是非常有用的。为此,Zachman提出从信息、流程、网络、人员、时间和基本原理等6个视角来分析企业,并提供了与这些视角相对应的6个模型,包括语义、概念、逻辑、物理、组件和功能模型。

当时,Zachman并没有使用“企业架构”的概念。1996年美国的Clinger-Cohen法案(以前被称作信息技术管理改革法案)导致了术语“IT架构”的产生。这部法案的主旨是,美国政府指导下属联邦政府机构通过建立综合方法来管理信息技术的引入、使用和处置等。Clinger-Cohen法案要求政府机构的(Chief Information Officer, CIO)要负责开发、维护和帮助一个合理的和集成的IT架构(IT Architecture, ITA)的实施,当时的术语ITA,现在被解释为IT企业架构。

因此,企业软件架构的最早应用是在一些美国的政府机构,美国政府对企业架构应用的推动也发挥了十分重要的作用。自从Zachman框架引入后,首先是美国国家技术标准研究所在1989年发布NIST框架,从此联邦政府内出现了许多框架,其他联邦实体也发布了企业架构框架,包括国防部和财政部等。

1999年9月,美国联邦CIO委员会出版了联邦企业架构框架,它的意图是为联邦机构提供一个架构的公共结构,以利于这些联邦机构间的公共业务流程、技术引入、信息流和系统投资的协调等。

联邦企业架构框架定义了一个IT企业架构作为战略信息资产库,它定义了业务、运营业务所必须的业务信息,支持业务运行的必要的IT技术,响应业务变革实施新技术所必须的变革流程等要素。

随后,美国的管理和预算办公室(OMB)发布的OMB Circular A-130,要求机构记录和提交他们的初始的企业架构到OMB,并对架构发生的重大变革进行更新。这给了OMB一个责任,即帮助推动政府机构内和政府机构间的企业架构的开发,并支持通过使用IT来改进政府运营能力。

2002年2月,OMB建立了一个联邦企业架构程序管理办公室来开发FEA,它的作用是,在联邦机构程序内和跨机构程序间,通过跨部门的分析来找到重复的投资,找到相互的差距,有助于在联邦政府范围内的协作、互操作和交互作用。

企业软件架构的理念很快就得到咨询公司和研究机构认可,被Gartner收购的META Group是最早对企业软件架构进行分析和研究的主要咨询公司。2000年,META Group发布《企业体系机构桌面参考》,提供了一个经验证的实施企业软件架构的方法论,意图成功地构建业务战略和技术实施之间的桥梁。在咨询和研究机构带动下,IBM、微软、HIP、EDS等IT厂商也纷纷把目光集聚到了企业软件架构,希望能够从企业这个视角来定位其产品和服务。

随后,政府、应用企业、咨询和研究机构、厂商广泛参与,企业架构标准化的工作越来越重要,也产生了一些研究团体和标准框架。目前,业界最有名的企业架构框架是TOGAF(The Open Group Architecture Framework, Open Group架构框架),TOGAF是一个行业标准的架构框架,它可以被任何希望开发一个信息系统架构的组织在组织内免费使用。

从20世纪90年代中期开始,TOGAF已经被一些世界领先的IT客户和厂商开发和持续演进。与TOGAF类似的架构包括联邦政府企业架构框架、联邦政府企业架构指南、财政部企业架构框架、Spewak的企业架构规划、Zachman框架、OMG的MOD等。

企业软件架构实施的主体是企业,企业的需求才是软件架构发展的引擎。而企业软件的需求来源广泛,企业信息化需要支持市场需求、环境要求、经营需要、技术发展、用户要求以及法律需求,涉及企业的各个业务领域,而几乎所有领域都能够和信息技术相结合构成企业信息化项目。

软件架构的研究已发展为软件工程领域的一个独立学科分支,研究主要包括软件架构描述语言、软件架构的描述与表示、软件架构的分析与验证、基于架构的软件维护与演化、软件架构的可靠性等方面。1.2 系统架构师的定义与职业素质

通常从组织上划分,架构师分为以下几大类:业务架构师(Business Architect)、主题领域架构师(Domain Architect)、技术架构师(Technology Architect)、项目架构师(J2EE架构师、.NET架构师等)以及我们本书所阐述的系统架构师(System Architecture)。1.2.1 系统架构师的定义

系统架构师是系统或产品线的设计责任人,是一个负责理解和管理并最终确认和评估非功能性系统需求(如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等),给出开发规范,搭建系统实现的核心构架,对整个软件架构、关键构件、接口进行总体设计并澄清关键技术细节的高级技术人员。

系统架构师主要着眼于系统的“技术实现”,同时还要考虑系统的“组织协调”。因此,系统架构师是特定的开发平台、语言、工具的大师,对常见应用场景能及时给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估该开发团队实现特定的功能需求目标的资源代价。可以说,系统架构师是信息系统开发和演进的全方位技术与管理人才。1.2.2 系统架构师技术素质

系统架构师通常负责公司系统的架构设计与持续改进,承担从业务向技术系统转换的桥梁作用;协助项目经理制定项目计划和控制项目进度;需要承担技术管理工作,如负责组织技术研究和攻关,负责组织和管理技术培训工作,管理技术支撑团队并给项目、产品开发实施团队提供技术保障。因此一个好的系统架构师的技术素质十分重要,通常系统架构师需要具有系统思维的能力,还必须具备以下技术素质:

● 具备丰富的一线大中型开发项目的总体规划、方案设计及技术队伍管理经验。

● 具备软件行业工作经验,熟悉业务领域的技术应用和发展。

● 具有项目管理理论基础,并在应用系统开发平台和项目管理上有实践经验。

● 对相关的技术标准有深刻的认识,对软件工程标准规范有良好的把握。

● 具备C/S或B/S体系结构或特定领域软件产品开发及架构和设计的经验。

● 具有面向对象分析(object-Oriented Analysis, OOA)、设计(Object-Oriented Design, OOD)、开发(Object-Oriented Programming, OOP)能力,精通UML和XML等,熟练使用Rational Rose、PowerDesigner等CASE工具进行设计开发。

● 对相关编程技术(如PHP/.Net/JAVA)及整个解决方案有深刻的理解及熟练的应用,并且精通架构和设计模式(如WebService/J2EE),并在此基础上设计产品框架。

● 精通大型数据库如Oracle、Sql Server、MySQL等的开发。

● 对计算机系统、网络和安全、应用系统架构等有全面的认识。

● 良好的团队意识和协作精神,有较强的内外沟通能力。1.2.3 系统架构师管理素质

系统架构师管理素质是必须强调的。它包括远见、诚信、果断的领导素质。系统架构师是一个高效工作团队的建造者。作为核心的高层技术管理人员,架构师必须尽可能使所有团队人员的想法保持一致,为一个项目制订一个清晰的、强制性的、有远见的目标作为整个团队的动力,从而为达到整体目标所作的权衡提供基础。作为技术的领导者,系统架构师必须提供特定的方法和模型作为理想的技术解决方案;并排除各种非系统相关因素的影响。作为一个技术管理者,系统架构师在需要做出决定时,必须避免犹豫,必须具备及时解决技术问题的紧迫感和自信心。1.2.4 系统架构师与其他团队角色的协调

关于系统架构师的定位,在很多资料中都没有明确的表述,这里可以参照系统开发中的主要角色的给出描述。

根据全国计算机技术与软件专业技术资格(水平)考试的安排,其中作为高级工程师级别的职位有项目管理师、系统分析师和系统架构师(这里的系统架构主要是指软件系统的架构)。考试大纲对这三个职位的要求和职责定义如下。(1)项目管理师:掌握信息系统项目管理的知识体系,具备管理大型、复杂信息系统项目和多项目的经验和能力;能根据需求组织制定可行的项目管理计划;能够组织项目实施,对项目的人员、资金、设备、进度和质量等进行管理,并能根据实际情况及时做出调整,系统地监督项目实施过程的绩效,保证项目在一定的约束条件下到达既定的项目目标;能分析和评估项目管理计划和成果;能在项目管理进展的早期发现问题,并有预防问题的措施;能协调项目所涉及的相关人员。即项目管理师的主要职责是负责整个项目的实施和控制,协调各种资源(包括组织内部资源和客户资源)。(2)系统分析师:熟悉应用领域的业务,能分析用户的需求和约束条件,写出信息系统需求规格说明书,制订项目开发计划,协调项目开发与运行所涉及的各类人员;能指导制订企业的战略数据规划,组织开发项目;能评估和选用适宜的开发方法和工具;能按照标准规范编写系统分析、设计文档;能对开发过程进行质量控制与进度控制;能具体指导项目开发。即系统分析师的主要职责是获取并分析用户的需求,形成规范化的文档,指导整个项目的开发,需要与客户不断的交流,熟悉应用领域的业务。(3)系统架构师:能够根据用户需求,结合用户应用领域的实际情况,设计正确、合理的软件构架,维护系统构件及其接口,并确保系统构架具有良好的性能;能够对项目进行系统构架级的描述、分析、设计与评估;能够按照相关标准编写相应的设计文档;具有扎实的理论功底、广博的知识面,能够与系统分析师、项目管理师相互协作、配合工作。即系统架构师的职责更加强调整体的、宏观的系统设计,重点在架构级别上。重点要对架构进行描述、分析和评估。图1-1 系统架构师的定位

图1-1的上图反映了传统的系统开发:通过对用户的需求分析,组织必要的资源和设施,选择设计合适的架构,然后由项目经理统筹安排组织实施(包括人、财和物),这是一个反复互动,逐步契合的过程。

由上面所述可以看出,在传统的系统开发中,系统开发进度及统筹的管理主要由项目经理来完成,需求分析及技术实现主要由系统分析员或设计员来完成。由于项目经理、系统分析员或者程序员从各自职位角度出发产生冲突的制约,不可能很好地给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术,或者说最终难以确认和评估技术对需求实现产生的影响。所以我们把系统架构设计师定位在图1-1的下图中两个椭圆相交的部分,他负责整个系统的战略策划和技术实现。图1-1的上图说明架构设计先行和系统架构师、系统分析师、项目管理师三者的相互关系与作用。1.系统构架师与项目经理的关系及区别

软件项目经理是指对项目控制/管理,关注项目本身的进度、质量、分配、调动、协调,管理好人、财、物等资源的负责人。对于软件项目经理来讲,职责包括项目计划、进度跟踪/监控、质量保证、配置/发布/版本/变更管理、人员绩效评估等方面。优秀的项目经理需要的素质,并不仅在于会使用几种软件或是了解若干抽象的方法论原则,更重要的在于从大量项目实践中获得的宝贵经验,以及交流、协调、激励的能力,甚至还应具备某种个性魅力或领袖气质(charisma)。一般来讲,技术人员重技术而倾向于忽视“人”的因素,而这正是项目经理管理活动的一个主要方面。项目经理还必须能够应付开发过程中大量的偶发事件和杂务。

在一个项目中,推动项目技术发展的是系统构架师。在技术方面,项目经理(项目管理师)配合系统构架师并提供各个方面的支持,其主要职责是与内外部沟通和管理资源(包括人),系统构架师则要负责提出系统的总体构架,并给出开发指导。2.系统构架师与系统分析师的关系及区别

系统分析师(system analyst)是在系统开发中进行业务需求分析、系统需求分析、可行性分析、业务建模和指导项目开发的人。其工作特点是与行业专家、用户沟通,及时与项目经理(项目管理师)、软件架构师协商,分析项目具备的特点、成本、风险等,考虑实现的模型。系统分析师所面临的往往是有许多不确定性的事件,需要对这些不确定的事件进行分析、总结,使之得出一个相对可靠的确定性结论或实施方案模型。一般意义上讲,系统分析师的水平将影响系统开发的质量,甚至成败。在一个完善的系统开发队伍中,一般应有项目管理师、软件架构师、系统分析师、软件设计师、测试工程师、数据库工程师、程序员和质量保证人员等不同的职位,还需要有业务专家和其他辅助人员。对于大型企业或项目,如果一人承担多个角色,往往容易发生顾此失彼的现象。

系统分析师对业务系统进行分析、建模,他的任务、目标是明确的。系统架构师协同系统分析师的工作,建议系统分析师按什么标准,什么工具,什么模式,什么技术去思考系统。同时,系统架构师应该对系统分析师所提出的问题,碰到的难题及时地提出解决的方法。1.3 系统架构师知识结构

软件系统架构师综合的知识能力结构包括9个方面,即:(1)战略规划能力。(2)业务流程建模能力。(3)信息数据架构能力。(4)技术架构选择和实现能力。(5)应用系统架构的解决和实现能力。(6)基础IT知识及基础设施、资源调配的能力。(7)信息安全技术支持与管理保障能力。(8)IT审计、治理与基本需求分析、获取能力。(9)面向软件系统可靠性与系统生命周期的质量保障服务能力。

作为系统架构师,必须成为所在开发团队的技术路线引导者;具有很强的系统思维的能力;需要从大量互相冲突的系统方法和工具中区分出哪些是有效的,哪些是无效的。架构师应当是一个成熟的、丰富的、有经验的、有良好教育的、学习快捷、善沟通和决策能力强的人。丰富是指他必须具有业务领域方面的工作知识,知识来源于经验或者教育。他必须广泛了解各种技术并精通一种特定技术,至少了解计算机通用技术以便确定哪种技术最优,或组织团队开展技术评估。优秀的架构师能考虑并评估所有可用来解决问题的总体技术方案。需要良好的书面和口头沟通技巧,一般通过可视化模型和小组讨论来沟通指导团队确保开发人员按照架构建造系统。

因此,系统架构师知识维度可以总结为“多层次+多方面”。所谓多层次,意味着系统架构师必须在体系结构、计算机软硬件与网络基础知识、信息化基础知识、信息安全与可靠性基础知识等基本功的层面上受过良好的教育和快捷的学习能力;还须在系统架构设计方法、设计模式、设计流程以及各种模型等方面有丰富的经验,广泛了解各种构件产品和技术并精通一种特定领域的架构设计;进一步,还须在系统架构设计实践层面,有自己的认识和理解,同时具有很强的表述能力;所谓多方面,意味着系统架构师在每个知识层面上必须具有技术、管理、心理和艺术等多方面的知识和能力。这和系统架构师的多角色特点是相关的。本书也正是从这个角度来介绍系统架构的知识体系,即从系统构件、模式和规划三个方面的技术基础、原理和方法的角度编写而成的关于软件架构师的基本知识结构和水平的教材。1.4 从开发人员到架构师

软件架构师一般都是具备计算机科学或软件工程的知识,由程序员做起,然后再慢慢成长为架构师的。在国内,很多大学目前还没有设立软件架构的学位课程,随着IT业界对设计和架构的兴趣日渐高涨,在学校课程中增加部分相关内容已不能满足产业发展的需要。一方面,大学要加强软件架构学课程的建设,另一方面,软件架构师的成长还应该有一个实践的教育过程,并不是简单地通过学校的理论学习或者通过某软件公司的认证就能成为合格的软件架构师。除了在学校学习信息系统综合知识外,软件架构师的大部分知识和经验将来自实际开发工作。根据软件架构师的任职条件,一名合格的软件架构师的成长应该经历8年以上的软件项目开发实际工作经验。一般需要经历程序员、软件设计师等阶段,然后再逐步成长为软件架构师。

当然,并不是每一位程序员经过8年后都可以成长为软件架构师。一个软件工程师在充分掌握了软件架构师工作所必需的基本理论和技能后,如何得到和利用机会、如何利用所掌握的技能进行应用系统的合理架构、如何不断的抽象和总结自己的架构模式、如何深入行业总结规律,成为能够胜任分析、架构为一体的精英人才,这是机遇、努力和天赋的综合结果。

就目前来看,国内软件架构师的培养途径主要有两种方式:一种是大学(软件学院)教育方式,另一种是个人自我培养然后再进行相应的培训和认证。但是,不管哪种方式都有其不足之处。

软件学院的培养方式能够系统的学习软件架构师必需的知识体系,但是,软件架构师不是简单的通过理论学习就能够培养出来的,软件学院的学生可能缺乏必要的设计、开发经验和相关的领域知识。尽管软件学院也强调给予学生实践的机会,但毕竟这种机会是有限的。即使有充分的机会,也没有足够的时间在实践中获得广泛的检验和验证。也包含一些管理因素,如有关“三分之一的师资来自企业”的规定,在部分软件学院中也没有得到真正落实,导致传授给学生的还是一些纯理论知识。

自我培养方式的主要对象是具有一定年限的软件开发和设计人员,如Microsoft、IBM、Sun等公司的软件架构师认证对学员的基础并没有具体的要求,只要交纳规定的费用,然后进行几天的集中培训,通过考试就发给学员证书,甚至不需要考试就直接发放证书。这些开发人员在自我培养的过程中不一定能够系统的学习软件架构师的理论知识,他们只具有一定的开发和设计经验,仅仅经过几天的培训,是不太可能培养出合格的软件架构师的。而且,作为某个厂商的培训和认证,其最终目的是培育自己的市场,培养一批忠诚的用户或产品的代言人,而不是为中国培养软件架构师。

在国外,软件架构师的培养与认证具有严格的过程,明确规定了教育目标、认证的要求和学习课程等方面的内容。下面,介绍三个组织的软件架构师的认证情况。1.UC Irvine

在UC Irvine的软件架构师认证计划中,为了拿到软件架构师C级认证,学员必须完成11个单元的必修课程和至少4个单元的选修课程。这些课程如下:

● 必修课程:软件系统建模和分析概论(2个单元)、系统分析基础(3个单元)、用户需求的分析和文档化(3个单元)、软件架构项目(3个单元)。

● 选修课程:信息系统项目管理(2个单元)、系统性能建模(2.5个单元)、管理业务改进项目(2.5个单元)。

UC Irvine的软件架构师认证要求学员具有业务系统建模,决定用户需求,评价业务过程的能力,掌握项目管理技术,能设计完善的、具有最佳可适应性和可扩展性的架构。该认证程序以一门实践课程结束,在实践课程中,学员从头开始,设计一个大规模软件解决方案的架构。2.CMU/SEI

SEI在软件架构师方面的认证包括三个职位,分别是软件架构师、ATAM评估师和ATAM主任评估师。这些认证都需要学习两年的课程。其中软件架构师需要学习的课程有:软件架构原理与实践、软件架构文档化、软件架构设计与分析和软件产品线。3.iCMG

iCMG对软件架构师的认证强调7个层次的课程学习。

软件架构师作为软件的总设计师,其水平和能力直接决定了软件系统的总体性能,对软件架构师的认证是十分重要和紧迫的。全国计算机技术与软件专业技术资格(水平)考试设立系统架构设计师级别的认证考试,是解决软件架构师认证问题的重要途径。第2章 计算机与网络基础知识

计算机系统由硬件和软件两部分组成。计算机系统中的软件通常分为系统软件和应用软件两大类。

系统软件支持应用软件的运行,为用户开发应用软件提供平台,用户可以使用它,但不能随意修改它。常用的系统软件有操作系统、语言处理程序、连接程序、诊断程序和数据库管理系统等。

应用软件是指计算机用户利用计算机的软、硬件资源为某一专门的应用目的而开发的软件。例如:科学计算、工程设计、数据处理、事务处理、过程控制等方面的程序,以及文字处理、表格处理、辅助设计(CAD)和实时处理等软件。2.1 操作系统基础知识

操作系统(Operating System, OS)是计算机系统的核心系统软件,其他软件是建立在操作系统基础上的,并在操作系统的统一管理和支持下运行。操作系统与计算机系统软/硬件的关系如图2-1所示。图2-1 操作系统与计算机系统软/硬件的关系2.1.1 操作系统的原理、类型和结构1.操作系统定义

计算机系统的硬件资源包括中央处理机(CPU)、存储器(主存与外存)和输入/输出设备等物理设备。计算机系统的软件资源是以文件形式保存在存储器上的程序和数据等信息。操作系统既有效地组织和管理系统中的各种软、硬件资源,合理地组织计算机系统的工作流程,又控制程序的执行,并且为用户使用计算机提供了一个良好的环境和友好的接口,从而使用户能充分利用计算机资源,提高系统的效率。

操作系统的作用如下。(1)通过资源管理,提高计算机系统的效率。(2)改善人机界面,向用户提供友好的工作环境。2.操作系统分类

操作系统按功能不同可分为:单用户操作系统和批处理操作系统;分时操作系统和实时操作系统;网络操作系统和分布式操作系统;以及嵌入式操作系统。3.操作系统的特征

操作系统的4个特征是并发性(concurrency)、共享性(sharing)、虚拟性(virtual)和不确定性(non-determinacy)。4.操作系统的功能

操作系统的五大管理功能是进程管理、文件管理、存储管理、设备管理和作业管理。2.1.2 处理机与进程管理

进程(process)是资源分配和独立运行的基本单位。研究操作系统的进程,实质上是研究系统中诸进程之间的并发特性以及进程之间的相互制约性。1.进程的定义及其分类

进程是程序的一次执行,该程序可以和其他程序并发执行。进程通常由程序、数据及进程控制块(Process Control Block, PCB)组成。PCB描述了进程的基本情况,是进程存在的唯一标志。

程序和进程的区别为程序是静态的指令序列,进程是为执行该程序的线程而保留的资源集。

进程依性质不同可分为:系统进程和用户进程;父进程和子进程。2.进程的状态转换与控制

进程一般有2种基本状态:就绪、运行和阻塞。如图2-2(a)所示为进程基本状态及其转换,也称三态模型。图2-2 进程基本状态及其转换

进程的五态模型引入了新建态和终止态,如图2-2(b)所示。具有挂起状态的进程状态及其转换,如图2-3所示。图2-3 进程状态及其转换

进程控制是指对系统中所有进程从创建到消亡的全过程实施有效的控制。这意味着不仅要控制正在运行的进程,而且还要能创建新的进程,撤销已完成的进程。对进程进行控制的机构是由操作系统内核实现的,大多数操作系统的内核包含支撑功能和资源管理功能。进程控制是通过进程控制原语实现的,进程控制原语主要有创建原语、撤销原语、挂起原语、激活原语、阻塞原语和唤醒原语。3.进程互斥与同步以及P,V操作

1)进程间的同步

异步环境下的一组并发进程之间互发消息、相互合作、互相等待,使得各进程按一定的速度执行的过程称为进程同步,也即同步是使在异步环境下的各进程按一定的顺序和速度执行。

2)进程间的互斥

一组并发进程中的一个或多个程序段,因共享某一公有资源而使得它们必须以一个不允许交叉的顺序执行。也即,互斥要保证临界资源在某一时刻只被一个进程访问。

3)临界资源

系统中有些资源可以供多个进程同时使用,有些资源一次只能供一个进程使用,称为临界资源(Critical Resource, CR),如打印机、公共变量和表格等。

4)临界区管理原则

临界区(Critical Section, CS)是进程中对临界资源实施操作的那段程序。互斥临界区管理的原则是有空即进、无空则等、有限等待、让权等待。

5)信号量机制

1965年,荷兰学者Dijkstra提出的信号量机制是一种卓有成效的进程同步与互斥的工具。

6)整型信号量与PV操作

信号量是一个整型变量,根据控制对象的不同赋不同的值。信号量分为两类。

● 公用信号量:实现进程间的互斥,初值=1或资源的数目。

● 私用信号量:实现进程间的同步,初值=0或某个正整数。

信号量S的物理意义是:S≥0表示某资源的可用数,S<0其绝对值表示阻塞队列中等待该资源的进程数。

PV操作是实现进程同步与互斥的常用方法。PV操作是低级通信原语,在执行期间不可分割。其中,P操作表示申请一个资源,V操作表示释放一个资源。

P操作定义:S:=S-1,若S≥0,则执行P操作的进程继续执行;否则若S<0,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。

P操作可用如下过程表示:

V操作定义:S:=S+1,若S>0,则执行V操作的进程继续执行;否则若S≤0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续执行。

V操作可用如下过程表示:

7)利用PV操作实现进程的互斥

令信号量mutex的初值为“1”,当进入临界区时执行P操作,退出临界区时执行V操作。则进入临界区的代码段如下:

临界区

8)利用PV操作实现进程的同步

进程的同步是由于进程间合作引起的相互制约的问题,要实现进程的同步可用一个信号量与消息联系起来。当信号量的值为0时表示希望的消息未产生,当信号量的值为非0时表示希望的消息已经存在。假定用信号量S表示某条消息,进程可以通过调用P操作测试消息是否到达,调用v操作通知消息已准备好。

同步问题的经典例子是生产者—消费者问题。相应的程序段形式如下:

●生产者

Loop

生产一产品next;

P(Bufempty);

Next产品存缓冲区;

V(Buffull);

endloop

●消费者

Loop

P(Buffull);

V(Bufempty);

从缓冲区中取产品;

使用产品;

endloop

其中,信号量Bufempty和Buffull分别表示缓冲区中的空单元数和非空单元数,它们的初值分别是1和0。4.进程通信与管程

1)进程通信

通信(communication)是指进程间的信息交换。根据通信内容可分为控制信息的交换和数据的交换。控制信息的交换称为低级通信,进程的同步与互斥是通过信号量来实现通信的,属于低级信息。数据的交换称为高级通信。高级通信的类型有共享存储系统和消息传递系统和管道通信。高级通信的方式有直接通信和间接通信。

2)管程

汉森(Brinsh Hansen)和霍尔(Hoare)提出了另一种同步机制——管程。

管程是由一些共享数据、一组能为并发进程执行的作用在共享数据上的操作的集合、初始代码以及存取权组成的,也即共享数据及在其上操作的一组过程就构成了管程。进程可以在任何需要资源的时候调用管程,且在任一时刻最多只有一个进程能够真正地进入管程,其他的只能等待。管程提供了一种可以允许多进程安全有效地共享抽象数据类型的机制。

每一个管程都有一个名字,形式如下:5.进程调度与死锁

1)进程调度

进程调度即处理器调度(又称上下文转换),它的主要功能是确定把处理器在什么时候分配给哪一个进程。在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度。

2)调度方式与算法

调度方式:调度方式是指当有更高优先级的进程到来时如何分配CPU。调度方式分为可剥夺和不可剥夺两种。

调度算法:常用的有先来先服务、时间片轮转(round robin)、优先级调度和多级反馈调度算法。

3)死锁

死锁是指两个以上的进程互相都因请求对方已经占有的资源,无限期地等待并无法继续运行下去的现象。

死锁是系统的一种出错状态,它浪费系统资源,还会导致整个系统崩溃,所以应该尽量预防和避免死锁。

4)死锁产生的原因及条件

产生死锁的原因是资源竞争及进程推进顺序非法。产生死锁的4个必要条件是互斥条件、请求保持条件、不可剥夺条件和环路条件。

解决死锁的策略:死锁的处理策略主要有4种:鸵鸟策略(即不理睬策略)、预防策略(破坏死锁的4个必要条件之一)、避免策略(精心地分配资源,动态地回避死锁)、检测与解除死锁(一旦发生死锁,系统不但能检测出,还能解除)。6.线程

线程是进程中的一个实体,是被系统独立分配和调度的基本单位。在引入了线程的操作系统中,通常一个进程都有若干个线程。线程只拥有一些运行中必不可少的资源,它可与同属一个进程的其他线程共享进程所拥有的全部资源。线程具有许多传统进程所具有的特性,称为轻型进程(Light-Weight Process);称传统进程为重型进程(Heavy-Weight Process)。线程可创建另一个线程,同一个进程中的多个线程可并发执行。线程也具有就绪、运行、阻塞三种基本状态。2.1.3 存储管理

存储器是计算机系统的关键性资源,是存放各种信息的主要场所。存储器的发展方向是高速、大容量和小体积。存储管理的主要任务是如何提高主存的利用率、扩充主存以及对主存信息实现有效保护。存储管理的对象是主存储器(简称主存或内存)。1.存储管理的概念

存储组织的功能是在存储技术和CPU寻址技术许可的范围内组织合理的存储结构,使得各层次的存储器都处于均衡的繁忙状态,其依据是访问速度匹配、容量要求和价格等。一般存储器的结构有“寄存器—主存—外存”和“寄存器—缓存—主存—外存”两种,如图2-4所示。图2-4 存储器的层次结构

逻辑地址:用户程序经编译后,每个目标模块以0为基地址进行的顺序编址,它不是主存中的真实地址,是相对基地址而言的。逻辑地址又称为相对地址、程序地址或虚拟地址。

物理地址:主存中各存储单元的地址,从统一的基地址进行的顺序编址,是主存中的真实地址,可以寻址并实际存在。物理地址又称为绝对地址。

存储空间:简单说来,逻辑地址空间(简称地址空间)是逻辑地址的集合,物理地址空间(简称存储空间)是物理地址的集合。2.地址重定位

程序的逻辑地址被转换成主存的物理地址的过程称为地址重定位。地址重定位有两种方式:静态重定位(在程序执行之前进行地址重定位,即装入内存时重定位)和动态重定位(在程序执行期间,在每次存储访问之前进行地址重定位)。3.存储管理的功能

存储管理的功能有主存储器的分配和回收、提高主存储器的利用率、存储保护、主存扩充。4.存储管理的方式

存储管理的方式有分区存储管理、分页存储管理、分段存储管理、段页式存储管理和虚拟存储管理。2.1.4 设备管理

在计算机系统中,输入/输出(I/O)设备、辅存设备及终端设备等都称为外部设备,它们是计算机系统与外界交互的工具,具体负责计算机与外部的输入输出工作。

设备管理的任务是保证在多道程序环境下,当多个进程竞争使用设备时,按一定策略分配和管理各种设备,控制设备的各种操作,完成输入/输出设备与主存之间的数据交换。

设备管理的目标是提高设备的利用率,为用户提供方便统一的界面。

设备管理的主要功能是动态地掌握并记录设备的状态、设备分配和释放、缓冲区管理、实现物理输入/输出设备的操作、提供设备使用的用户接口、设备的访问和控制、输入/输出缓冲和调度。1.设备的分类

按设备的使用特性分为存储设备、输入/输出设备、终端设备和脱机设备。

从资源分配角度分为独占设备、共享设备和虚拟设备。

按设备的从属关系分为系统设备和用户设备。

按数据组织方式分为块设备(Block Device)和字符设备(Character Device)

按数据传输速率分为低速设备、中速设备、高速设备。

按输入/输出对象分为人机通信设备、机机通信设备。

按是否可交互分为非交互设备、交互设备。2.设备管理的主要技术

● 中断技术

● DMA技术(Direct Memory Access, DMA)

● 缓冲技术

● 虚设备与SPOOLING(simultaneous peripheral operations online,外围设备联机)技术3.设备管理软件

● 中断处理程序

● 设备驱动程序

● 与设备无关的系统软件

● 用户层I/O软件4.数据传输控制方式

设备管理的主要任务之一是控制设备和内存或CPU之间的数据传送,常用的数据传送控制方式如下。

● 程序控制方式

● 中断方式

● 直接存储访问方式

● 通道方式5.磁盘调度算法

磁盘是可供多个进程共享的设备。磁盘调度是使各进程对磁盘的平均访问时间最小。常用的调度算法有先来先服务(first-come first-served, FCFS)、最短寻道时间优先(Shortest Seek Time First, SSTF)、扫描算法(SCAN)。2.1.5 文件管理

文件(File)是具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合。文件名的格式和长度因系统而异,操作系统根据文件名对其进行控制和管理。

文件管理系统是操作系统中对文件进行统一管理的一组软件和相关数据(即被管理的文件)的集合,简称文件系统。

文件系统的功能按名存取、统一用户接口、并发访问和控制、安全性控制、优化性能以及差错恢复。1.文件的类型

按文件性质和用途可分为系统文件、库文件和用户文件。

按文件的安全属性可分为只读文件、读写文件、可执行文件和不保护文件。

按文件的组织形式可分为普通文件、目录文件、设备文件(特殊文件)。

按信息保存期限可分为临时文件、档案文件和永久文件。

按信息流向可分为输入文件、输出文件、输入/输出文件。2.文件的结构和组织

文件的结构是指文件的组织形式。从用户角度看到的文件组织形式称为文件的逻辑结构,从实现角度看到的文件在存储设备上的存放方式,称为文件的物理结构。

文件的逻辑结构有结构的记录文件和无结构的字符流文件。

文件的物理结构有连续结构、链接结构、索引结构、多个物理块的索引表。3.文件访问方法

文件的访问方法是指读写文件存储设备上的一个物理块的方法。常用的访问方法有顺序访问和随机访问。顺序访问是指对文件中的信息按顺序依次读写的方式;随机访问是指对文件中的信息可以按任意的次序随机地读写文件中的信息。4.文件存储设备管理

文件是存储在文件存储设备上的,文件存储设备具有大容量、被多用户共享、多次被占用和释放的特点,因此,文件系统必须对文件存储设备上的空闲空间进行组织和管理,包括对空闲空间的组织、分配与回收等。常用的空闲空间管理方法有位图法、索引法和链接法。5.文件控制块和文件目录

文件控制块是系统为每个文件设置的用于描述和控制文件的数据结构,它是文件存在的唯一标志,简称为(File Control Block, FCB)。FCB一般包含基本信息、位置信息、存取控制信息和使用信息。

文件目录是文件控制块的有序集合。常见的文件目录结构有一级目录结构、二级目录结构和多级目录结构。6.文件的使用

工作目录也称当前目录。每个用户都有自己的工作目录,任一目录节点都可以被设置为工作目录,文件系统允许用户随时改变自己的工作目录。

文件系统提供了一组专门用于目录和文件管理的命令。如目录管理命令:建立目录、显示工作目录、改变目录、删除目录;文件控制命令:建立文件、删除文件、打开文件、关闭文件、改文件名、改变文件属性;文件存取命令:读写文件、显示文件内容、复制文件等。

文件的共享是指不同的用户使用同一文件,它是不同用户完成同一任务的必须的功能。

文件的安全是指文件的保密和保护,即限制非法用户使用和破坏文件。文件的安全管理措施常常在系统级、用户级、目录级和文件级上实施。2.1.6 作业管理1.作业管理和作业控制

作业是系统为完成一个用户的计算任务(或一次事务处理)所做的工作总和。它由程序、数据和作业说明书三部分组成。作业管理程序是操作系统中用来控制作业进入、执行和撤销的一组程序。

用户作业可以采用脱机和联机两种控制方式控制作业运行。作业控制块JCB是记录与该作业有关的各种信息的登记表。JCB是作业存在的唯一标志,包括用户名、作业名、状态标志等信息。在输入井中,通常将作业控制块排成一个或多个队列,称为作业后备队列,也就是说作业后备队列是由若干个JCB组成的。2.作业状态及转换

作业的4种状态为提交、后备、执行和完成。作业的状态及其转换如图2-5所示。图2-5 作业的状态及其转换3.作业调度及其常用调度算法

作业调度是完成从后备状态到执行状态的转变及从执行状态到完成状态的转变。常用的作业调度算法有先来先服务、短作业优先、响应比高优先、优先级调度算法和均衡调度算法。在一个以批量处理为主的系统中,通常用平均周转时间或平均带权周转时间来衡量作业调度算法的性能。4.用户界面

用户界面是计算机中实现用户与计算机通信的软、硬件的总称。用户界面也称用户接口或人机界面。

用户界面的硬件部分包括用户向计算机输入数据或命令的输入装置及由计算机输出供用户观察或处理的输出装置。目前常用的输入/输出装置有键盘、鼠标、显示器和打印机等。用户界面的软件部分包括用户与计算机相互通信的协议、约定、操纵命令及其处理软件。常用的人机通信方法有命令语言、菜单选项、图符驱动、表格填充、视窗操作及直接操纵等。2.1.7 网络操作系统1.网络操作系统

网络操作系统(Network Operating System, NOS)是使网络中各计算机能方便而有效地共享网络资源,为网络用户提供所需的各种服务的软件和有关规则的集合。通常的操作系统具有处理机管理、存储器管理、设备管理及文件管理,而网络操作系统除了具有上述的功能外,还具有提供高效、可靠的网络通信能力和提供多种网络服务的功能。2.网络操作系统的特征

网络操作系统的特征包括硬件独立性、多用户支持、支持网络实用程序及其管理功能、多种客户端支持、提供目录服务以及支持多种增值服务等。3.网络操作系统的分类

网络操作系统分为集中模式、客户机/服务器模式和对等模式(peer-to-peer)。

现代操作系统已把网络功能包含到操作系统的内核中,作为操作系统核心功能的一个组成部分,并由此决定了不同网络的应用领域及方向。目前最流行的网络操作系统主要有NetWare系列、Windows系列、UNIX和Linux及相应的服务软件。2.1.8 常见操作系统简介1.Unix系统

UNIX操作系统是由美国贝尔实验室发明的一种多用户、多任务的分时操作系统。现已广泛运行于中型机和小型机等各种环境,用于大型信息系统的关键业务处理,如数据库和Internet主机。UNIX结构如图2-6所示。UNIX最内层硬件提供基本服务,内核提供全部应用程序所需的各种服务。图2-6 UNIX系统结构

目前,UNIX通常与服务硬件产品集成在一起,具有代表性的有IBM公司的AIXUNIX、SUN公司的SolarisUNIX和HP公司的HPUNIX等。2.Windows家族

Microsoft公司的Windows操作系统家族产品有Windows95、Windows98、Windows ME、Windows 2000 Professional、Windows XP、Windows Server 2003和Windows Vista等。

Windows Server 2003是继Windows XP后Microsoft发布的又一个产品,它在Windows 2000 Server的基础上增加了许多新功能,包括配置流程向导、远程桌面连接、Internet信息服务(IIS6.0)、简单的邮件服务器(POP3)、流式媒体服务器(Windows Media Services, WMS)、系统关闭事件跟踪等功能。3.Linux系统

1991年,芬兰赫尔辛基大学的学生Linus Torvalds利用互联网,发布了他在i386个人计算机上开发的Linux操作系统内核的源代码,创建了具有全部UNIX特征的Linux操作系统。Linux是一个支持多用户、多任务、多进程、实时性较好的、功能强大而稳定的操作系统,也是目前运行硬件平台最广泛的操作系统。Linux是以互联网和开放源码为基础的,许多系统软件的设计专家们都利用互联网对它进行了改进和提高。近年来,Linux得到了包括IBM、COMPAQ、HP、Oracle、Sybase、Informix在内的许多著名软硬件公司的支持,目前Linux已全面进入应用领域。

RedHatLinux是目前世界上使用最多的Linux操作系统家庭成员,它提供了丰富的软件包,具有强大的网络服务、多媒体应用和安全管理等功能。2.2 数据库系统基础知识

数据库(DataBase, DB)是指长期储存在计算机内的、有组织的、可共享的数据集合。数据库系统(DataBase System, DBS)从广义上讲是由数据库、硬件、软件和人员组成,管理的对象是数据。数据库管理系统(DataBase Management System, DBMS)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。主要功能有数据定义、数据库操作、数据库运行管理、数据组织、存储和管理、数据库的建立与维护及其他功能。DBMS通常分为三类:关系数据库系统(Relation DataBase Systems, RDBS)、面向对象的数据库系统(Object-Oriented DataBase system, OODBS)、对象关系数据库系统(Object-Oriented Relation DataBase system, ORDBS)。

数据库系统采用三级模式结构,如图2-7所示。数据库系统在三级模式间提供了两级映像:模式/内模式映像、外模式/模式映像来保证数据库中数据具有较高的逻辑独立性和物理独立性。2.2.1 关系数据库基础1.数据库的结构与模式

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载