软件体系结构两道大题NEU
- 格式:docx
- 大小:26.25 KB
- 文档页数:4
软件设计与体系结构题目与答案1.各种性能指标及如何到达各种性能指标的方法(1)防止变异模式:是如何设计对象,子系统和系统,使这些元素内部的变化或不稳定性不会对其他元素产生不良影响。
解决方案:识别预测的变化或不稳定之处,分配职责用以创建稳定借口。
(2)依赖反转原理:把你的类从局的现实中隔离开,使他们依赖于抽象类或接口。
它促进了代码面向接口而不是实现,这通过保证对实现的低耦合来增加系统的灵活性。
2.常用的中间件有那几种类型(1)常见的对象请求代理架构(2)面向消息的中间件(3)J2EE(4)消息代理(5)业务过程代理3.有那些常见架构风格(1)管道和过滤器架构风格(2)面向对象风格(3)隐式调用风格(4)客户-服务器风格(5)分层风格(6)仓库风格(7)解释程序风格(8)过程控制风格4.架构师需要的核心技能是什么(1)涉众之间的交流(2)技术知识(3)软件工程学(4)风险管理5.什么是软件架构软件架构是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。
软件架构是一个系统的草图。
软件架构描述的对象是直接构成系统的抽象组件。
各个组件之间的连接则明确和相对细致的描述组件之间的通讯。
在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。
在面向对象领域中,组件之间的连接通常用接口(计算机科学)实现。
6.什么是架构风格一组原则。
你可以把它看成是一组为系统家族提供抽象框架的粗粒度模式。
7.什么是架构视图一个架构视图是对于从某一视角或某一点上看到的系统所做的简化描述,描述中涵盖了系统的某一特定方面,从而省略了此方面无关的实体。
8.各种架构风格的组件和连接器是什么1.管道和过滤器架构风格:适用于需要定义一系列的执行规则数据的独立运算,组件在输入时读数据流,在输出时产生数据流组件:称为过滤器,应用于对局部的输入流的转换,经常增长的计算,因此,在输入结束前输出就开始了连接器:称为管道,给流提供管道,把一个过滤器的输出传输到另一个输入。
一、判断题1、软件重用是指重复使用已有的软件产品用于开发新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。
答案:√2、可重用技术对构件库组织方法要求不仅要支持精确匹配,还要支持相似构件的查找。
答案:√3、软件体系结构充当一个理解系统构件和它们之间关系的框架,特别是那些始终跨越时间和实现的属性。
答案:√5、构件可以由其他复合构建和原子构件通过连接而成。
()答案:√6、体系的核心模型由5种元素组成:构建、连接体、配置、端口和角色()答案:√7、软件体系结构的核心由5种元素组成:构件、连接件、配置端口和角色。
其中,构件、连接件和配置是最基本的元素()答案:√8、开发视图主要支持系统的功能需求,即系统提供给最终用户的服务()答案:X9、构件、连接件以及配置是体系结构的核心模型最基本的元素()答案:√10、HMB风格不支持系统系统自顶向下的层次化分解,因为它的构件比较简单。
答案:×11、正交软件体系结构由组织层和线索的构件构成。
答案:√13、线索是子系统的特例,它由完成不同层次功能的构建组成,每一条线索完成整个系统中相对独立的一部分功能。
()答案:√14、层次系统中支持抽象程度递增的系统设计是设计师可以把一个复杂系统按照递增的步骤进行分解,同时支持功能增强,但是不支持重用。
答案:×16、在软件设计中占据着主导地位的软件体系结构描述方法是图形表达工具。
答案:√18、体系结构设计是整个软件生命周期中关键的一环,一般在需求分析之后,软件设计之前进行。
答案:√19、基于软构件的系统描述语言是较好的一种以构件为单位的软件系统描述语言。
答案:√21、基于构件的动态系统结构模型分为三层,风别是应用层、中间层、和体系结构层。
答案:√23、基于构件的动态系统结构模型分为应用层,中间层和体系结构层。
答案:√29、一般的说,一个模式有一下4个基本成分,1.模式名称,2.问题,3.解决方案,4.效果,这句话是对的()答案:√30、设计模式的概念最早是由美国的一位计算机专家提出的。
软件体系结构第四章作业题1.请把基于体系结构的软件开发模型与其他软件开发模型进行比较。
答:一、基于体系结构为基础的基于构件组装的软件开发模型,如基于构件的开发模型和基于体系结构的开发模型等。
基于体系结构的开发模型是以软件体系结构为核心,以基于构件的开发方法为基础。
然后采用迭代增量方式进行分析和设计,将功能设计空间映射到结构设计空间,再由结构设计空间映射到系统设计空间的过程。
该开发模型把软件生命周期分为软件定义、需求分析和定义、体系结构设计、软件系统设计和软件实现5个阶段.特点:是利用需求分析结果设计出软件的总体结构,通过基于构件的组装方法来构造软件系统。
优点:基于构件的开发方法使得软件开发不再一切从头开发,开发的过程就是构件组装的过程,维护的过程就是构件升级、替换和扩充的过程。
构件组装模型导致了软件的复用,提高了软件开发的效率。
软件体系结构的出现使得软件的结构框架更清晰,有利于系统的设计、开发和维护。
并且软件复用从代码级的复用提升到构件和体系结构级的复用。
缺点:由于采用自定义的组装结构标准,缺乏通用的组装结构标准,因而引入了较大的风险。
可重用性和软件高效性不易协调,需要精干的有经验的分析和开发人员,一般开发人员插不上手。
客户的满意度低,并且由于过分依赖于构件,所以构件库的质量影响着产品质量。
二、以软件需求完全确定为前提软件开发模型,如瀑布模型等。
特点:软件需求在开发阶段已经被完全确定,将生命周期的各项活动依顺序固定,强调开发的阶段性;优点:开发流程简单。
缺点:是开发后期要改正早期存在的问题需要付出很高的代价,用户需要等待较长时间才能够看到软件产品,增加了风险系数。
并且如果在开发过程存在阻塞问题,则影响开发效率。
三、在开始阶段只能提供基本需求的渐进式开发模型,如螺旋模型和原型实现软件开发模型等。
特点:软件开发开始阶段只有基本的需求,软件开发过程的各个活动是迭代的。
通过迭代过程实现软件的逐步演化,最终得到软件产品。
软件设计与体系结构练习题全解精品资料软件设计与体系结构复习一、填空题(一) Chapter 11.软件设计模式通常包含4个基本要素:模式名称、问题、解决方案以及效果。
2.软件设计模式可以分为三个层次:架构模式、设计模式、习惯用法。
3.软件设计模式是对软件设计经验的总结,是对软件设计中特定环境下反复出现的设计问题的、经过验证的、成功解决方案的描述。
(二) chapter 51.早在1968年,计算机领域的大师Dijstra指出:项目规模越大,其整体架构就越重要。
2. 软件体系结构的三个基本要素是:构件、连接件、约束3. 对软件质量的关注正是软件架构师与一般的软件设计师的不同之处,一般的软件设计师主要关注软件功能的设计,并要遵循架构师给出的设计准则。
4. IEEE 1471-2000标准定义软件体系结构是“系统的基本组织结构,包括系统构成要素、这些构成要素相互之间以及运行环境之间的关系,还包括系统设计及演化时应遵循的原则”。
(三) chapter 21.创建型软件设计模式是解决_对象创建机制_的设计模式。
2.创建型软件设计模式的两个主导思想:封装了系统使用的具体类的知识,隐藏这些具体类的实例被创建与结合的细节。
3.简单工厂方法模式的特点是仅仅有一个具体的创建者类,并且在此类中包含一个__静态工厂_____方法。
4.生成器模式是一步一步创建一个复杂的对象,允许用户通过制定复杂对象的类型和内容就可以构建它们,用户不知道内部的具体构建细节5. 单例模式是指确保一个仅有一个唯一的实例,并提供一个全局的访问点。
6. 在单例模式中,为了防止客户程序利用构造方法创建多个对象,要将构造方法声明为private(或私有)类型。
(四) chapter 31. 结构型软件设计模式的主要目的是将不同的类和对象组合在一起,形成更大或者更复杂的结构体。
2. 组合模式指将对象组合成树形结构,以表示“部分-整体”的层次结构。
该模式使得对单个对象和组合对象的使用具有一致性。
一、判断题1、软件重用是指反复使用已有旳软件产品用于开发新旳软件系统,以达到提高软件系统旳开发质量与效率,减少开发成本旳目旳。
答案:√根据页码:P42、可重用技术对构件库组织措施规定不仅要支持精确匹配,还要支持相似构件旳查找。
答案:√根据页码:P73、超文本组织措施与基于数据库系统旳构件库组织措施不同,它基于全文检索技术。
答案:√根据页码:p84、软件体系构造充当一种理解系统构件和它们之间关系旳框架,特别是那些始终跨越时间和实现旳属性。
答案:√根据页码:P285、构件可以由其她复合构建和原子构件通过连接而成。
()答案:√根据页码:P376、体系旳核心模型由5种元素构成:构建、连接体、配备、端口和角色()答案:√根据页码:P377、软件体系构造旳核心由5种元素构成:构件、连接件、配备端口和角色。
其中,构件、连接件和配备是最基本旳元素()答案:√根据页码:P378、开发视图重要支持系统旳功能需求,即系统提供应最后顾客旳服务()答案:X根据页码:P32、339、构件、连接件以及配备是体系构造旳核心模型最基本旳元素()答案:√根据页码:P3710、HMB风格不支持系统系统自顶向下旳层次化分解,由于它旳构件比较简朴。
答案:×根据页码:P8111、正交软件体系构造由组织层和线索旳构件构成。
答案:√根据页码:P7012、基于事件旳隐式调用风格旳思想是构件不直接调用一种过程,而是触发或广播一种或多种事件。
答案:√根据页码:P5313、线索是子系统旳特例,它由完毕不同层次功能旳构建构成,每一条线索完毕整个系统中相对独立旳一部分功能。
()答案:√根据页码:P7014、层次系统中支持抽象限度递增旳系统设计是设计师可以把一种复杂系统按照递增旳环节进行分解,同步支持功能增强,但是不支持重用。
答案:×参照页码:P5515、相交关系R是一种等价关系。
答案:√16、在软件设计中占据着主导地位旳软件体系构造描述措施是图形体现工具。
《软件体系结构》课程试卷一、名词解释( 10*2 分)1、ADLs体系结构描述语言(Architecture Description Language)ADL是这样一种语言,系统构架师可以利用它所提供的特性进行软件系统概念体系结构建模。
ADL提供了具体的语法与刻画体系结构的概念框架。
ADLs使得系统开发者能够很好地描述他们设计的体系结构,以便与人交流,能够用提供的工具对许多实例进行分析。
这种描述语言的目的就是提供一种规范化的体系结构描述,从而使得体系结构的自动化分析变得可能。
2、DSSA3、OCP开放封闭原则OCP:Open-Close Principle一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。
在进行面向对象设计时要尽量考虑接口封装机制、抽象机制和多态技术。
4、Architecture Styles5、Design Pattern设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
6、FrameWork7、SOA8、MDA9、CSP10、MVCMVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。
使用MVC应用程序被分成三个核心部件:模型、视图、控制器。
它们各自处理自己的任务。
二、简答(10*6 分)1、什么是软件体系结构的形式化描述?常用的有哪些?采用形式化方法就是使用形如数学符号的形式化语法和语义来刻画系统的功能行为和描述系统规约及设计。
2、请画图描述软件体系结构的层次有哪些?软件体系结构的层次模型3、什么是松弛的层次结构?请举例说明。
●松弛的层次系统●是分层模型的一种变种●每层可以使用其下面所有层的服务而不仅仅是相邻层的服务●有些服务提供给相邻的上一层,而其余的服务则提供给高于它的所有层●灵活性和性能的提高以牺牲可维护性为代价●经常用于系统软件,而不常用于应用软件的设计●系统软件比起应用软件来很少修改●系统软件对性能的要求高于可维护性的要求举例:Windows NT●根据Microkernel模式构建的,执行部件对应于Microkernel的部件,是一个松弛的层析系统,包括以下几个层次●系统服务层:子系统和NT执行部件之间的接口层●资源管理层:对象、安全、进程、I/O、虚拟存储、LPC●内核:负责基本功能,Int、E、Thread、多处理器同步●HAL(硬件抽象层):隐藏了不同处理器间硬件的差异●硬件层:NT松弛层模型的规则,处于效率的考虑,内核和IO管理需要直接访问硬件4、什么是软件的功能特性、非功能特性?非功能特性的重要性是什么?功能特性主要是直接针对客户的功能需求,多数是容易感知和判断的。
简答题:1、详细阐述软件危机的主要表现参考答案:软件危机是在大型复杂软件系统和软件产品开发过程中出现的一系列严重问题,从而导致软件系统和软量的经济损失。
软件危机主要表现在:(1)大型软件系统的开发时间和开发成本无法准确计算;(2)软件系统或产品往往不能很好地满足使用者的实际需求;(3)软件质量不很可靠,并时常发生软件质量问题;(4)软件系统或产品开发者往往不能提供格式规范统一软件产品说明文档,给软件维护带来严重的困难;(5)软件技术发展的速度落后于现实需求的快速需要,存在软件产品供不应求现象。
2、阐述软件体系结构是如何支持软件复用的。
参考答案:软件复用就是将已有的软件成分用于构造新的软件系统。
可复用的软件成分称为可复用构件,可以从旧的软件系统中提取,也可以专门开发可复用的软件构件。
软件复用不仅仅是对程序的复用,而且包括软件开发过程中所产生的工作产品的复用,包括项目计划、可行性报告、需求定义、分析模型、设计模型、详细说明、源程序和测试用例等。
软件体系结构可以看作更大粒度的软件复用构件。
基于软件体系结构的软件开发过程支持体系结构的复用,从而大大地提高了软件开发效率。
3、简述软件体系结构的研究内容、意义和作用。
参考答案:软件体系结构用软件体系结构体现软件系统的质量,如性能、安全性、可重用性和可靠性。
软件体系结构不但影响了设计者对大型、复杂系统的控制,也影响了软件开发过程自身,它建议甚至决定了开发过程中的工作分配、软件集成计划、软件测试计划、配臵管理和软件文档。
体系结构是软件设计的关键,有助于设计者在复杂的问题面前做出正确的选择,从源头避免软件开发的结构性错误; 体系结构可以使设计人员和用户一致、方便地交流和沟通,准确地把握用户的需求。
总之,软件体系结构是软件开发生命周期所有活动的蓝图。
论述题1、阐述基于体系结构的软件开发过程。
参考答案:基于软件体系结构软件开发过程包括六大部分:(1)软件体系结构需求:获取用户需要,标识构件。
简述什么是软件危机, 产生软件危机旳原因, 怎样克服软件危机?答:软件危机是指在计算机软件旳发展和维护过程中所碰到旳一系列严重问题。
产生软件危机旳原因有顾客需求不明确, 投入对旳旳理论指导, 软件规模越来越大, 软件复杂度越来越高。
目前人们用软件工程旳措施来进行软件生产, 即用现代工程旳概念、原理技术和措施进行计算机软件旳开发、管理和维护。
1.什么是软件重用, 软件重用旳层次可以分为哪几种级别?2.答: 软件重用是指在两次或多次不一样旳软件开发过程中反复使用相似或相近软件元素旳过程。
软件重用旳层次按重用旳粒度大小可分为程序代码重用, 测试用例重用, 设计文档重用, 设计过程重用, 需求分析文档重用及领域知识重用。
构件: 是指语义完整、语法对旳和有可重用价值旳单位软件, 是软件重用过程中可以明确辨识旳系统;构造上, 它是语义描述、通信接口和实现代码旳复合体。
是具有某种功能旳可重用旳软件模板单元, 表达了系统中重要旳计算元素和数据存储。
3.软件体系构造模型可以分为哪几种, 详细是怎样划分旳?4.答: 软件构造旳关键模型由5种元素构成: 构件、连接件、配置、端口和角色。
其中, 构件、连接件和配置是最基本旳元素。
5.体系构造旳设计和演化中试验原型阶段分为2个周期, 分别对各周期简述。
6.答:第一周期没有详细旳、明确旳日期, 第一周期结束会形成图形顾客界面旳初始设计和问题域模型两个版本。
第二周期旳任务是设计和建立一种下次软件体系构造, 具有如下特性:足够灵活, 能包括既有元素, 也有包括新增功能;提供相称稳定旳构造, 在这个构造中, 原型能在试验原型阶段进行演化;开发一种高效旳开发旳组织, 容许开发人员并行地在原型基础上进行开发。
7. 软件体系构造: 是一种设计, 它包括所建立系统中旳各元素(构件和连接件)旳描述、元素之间旳交互、指导装配旳范例和对范例旳约束。
8. 软件体系构造风格: 软件体系构造风格是描述某一特定领域中系统组织方式旳常用模式。
1、设计模式一般用来解决什么样的问题( a)A.同一问题的不同表相 B不同问题的同一表相C.不同问题的不同表相D.以上都不是2、下列属于面向对象基本原则的是( c )A.继承B.封装C.里氏代换 D都不是3、Open-Close原则的含义是一个软件实体( a )A.应当对扩展开放,对修改关闭.B.应当对修改开放,对扩展关闭C.应当对继承开放,对修改关闭D.以上都不对4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用( a )模式。
A.创建型B.结构型 C行为型 D.以上都可以5、要依赖于抽象,不要依赖于具体。
即针对接口编程,不要针对实现编程,是( d ) 的表述A.开-闭原则B.接口隔离原则C.里氏代换原则D.依赖倒转原则6、依据设计模式思想,程序开发中应优先使用的是( a )关系实现复用。
A, 委派 B.继承 C创建 D.以上都不对复用方式:继承和组合聚合(组合委派)7、设计模式的两大主题是( d )A.系统的维护与开发 B 对象组合与类的继承C.系统架构与系统开发D.系统复用与系统扩展8、单子模式中,两个基本要点( a b )和单子类自己提供单例A .构造函数私有 B.唯一实例C.静态工厂方法D.以上都不对9、下列模式中,属于行为模式的是( b )A.工厂模式 B观察者 C适配器以上都是10、“不要和陌生人说话”是( d )原则的通俗表述A.接口隔离B.里氏代换C.依赖倒转D.迪米特:一个对象应对其他对象尽可能少的了解11、构造者的的退化模式是通过合并( c )角色完成退化的。
A.抽象产品 B产品 C创建者 D使用者12、单子(单例,单态)模式类图结构如下:下列论述中,关于”0..1”表述的不正确的是( d )A.1表示,一个单例类中,最多可以有一个实例.B.”0..1”表示单例类中有不多于一个的实例C.0表示单例类中可以没有任何实例D.0表示单例类可以提供其他非自身的实例13、对象适配器模式是( a )原则的典型应用。
软件体系结构试题及参考答案软件体系结构试题及参考答案(一)1. 什么是软件工程?构成软件工程的要素是什么?软件工程是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,对所选方法的研究。
软件工程的要素由方法、工具和过程组成。
方法支撑过程和工具,而过程和工具促进方法学的研究。
2. 什么是软件生存周期?软件开发过程模型与软件生存周期之间是何关系?软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程叫软件生存周期。
软件开发过程模型表示软件开发中各个活动的安排方式,出来软件开发各个活动之间关系,是软件开发过程的概括,是软件工程的重要内容,其为软件管理提供里程碑和进度表,为软件开发过程提供原则和方法,其包括有以软件需求完全确定为前提的瀑布模型,以渐进式开发模型的原型和螺旋模型,以形式化开发方法为基础的变换模型。
3. 叙述软件设计在软件工程中所处的位置和重要性位置:软件需求分析--------需求规格说明------软件设计------设计文档------------软件编码总要性:(1)、是对软件需求的直接体现。
(2)、为软件实现提供直接依据(3)、将综合考虑软件系统的各种约束条件并给出相应方案(4)、软件设计的质量将决定最终软件系统的质量。
(5)、及早发现软件设计中存在的错误将极大减少软件修复和维护所需的成本。
4. 软件设计应该包含哪些要素?软件设计应该包含:目标描述、设计约束、产品描述、设计原理、开发规划、使用描述。
5. 简述UML的特点和用途。
、答:为使用者提供了统一的、表达能力强大的可视化建模语言,以描述应用问题的.需求模型、设计模型和设计模型。
提供对核心概念的扩展机制,用户可加入核心概念中没有的概念和符号,可为特定应用领域提出具体的概念、符号表示和约束。
提供于实现语言和支持所有的方法学,覆盖了面向对象分析和设计的相关概念和方法学。
独立于任何开发过程,但支持软件开发全过程。
软件架构在软件开发过程中的作用与意义?为什么当代更要深入地学习软件架构?作用与意义:作用:1.软件架构在软件开发过程中的起指导与约束作用:架构设计决定了风格,包含了所使用的技术,明确定义了各模块及接口,这些对开发人员具有指导作用,同时开发人员必须按照架构所规定的技术与方案来完成,不可擅自开发,也起到了约束作用。
2.能降低开发成本与维护的成本:没有架构系统就会太混乱,以致进行一个小的改动都会牵动全身,这对后期的维护与升级带来巨大麻烦,从而增加了系统的开发成本。
3.缩短开发周期的作用:架构采用“分而治之”的思想,在设计时不仅定义明确的定义了各模块与接口,而且还最小化了各任务之间的依赖性(我不做完你就不能做),大量缩减了时间,从而缩短了开发周期。
4.为复用奠定基础:有了架构,可以说完成了一个半成品,用户看架构书就能知道组件的功能,接口,数据格式等。
这些东西可看成是“说明书”具有明确的描述,为以后开发复用,奠定了基础。
5.降低复杂性的作用:架构设计采用分而治之思想,将一个大问题分解成若干个小问题,巧妙的化解了问题的复杂性,便于解决。
6.提高产品质量的作用:完善的架构设计,能预知所产生的影响,例如使用B/S 技术会出现何种问题,给出问题的解决方案,有利于提高产品质量。
同时,开发人员定期提供的文档,便于架构师早发现问题,早解决问题。
这些都利于提高产品质量。
意义:结合软件架构的作用,软件架构的意义:架构好比大楼骨架,软件好比大楼。
架构的好坏决定了大楼盖的高低以及其质量。
软件架构是软件产品的精髓,其发挥了指导和约束作用,只有在合适的产品上采用合适的软件架构才能真正的提高软件产品的质量,才能降低软件成本,缩短开发周期,增加复用率,降低复杂性。
为什么要深入学习?1.大环境趋势:1)源于市场的需求:目前,绝大多数的软件组织都缺乏软件架构师的编制。
架构设计的工作基本上由项目经理、系统分析师与软件设计师兼任或分摊,导致普遍轻视软件架构专业人才的培养与任用。
事实上,软件构架师是目前很多软件组织最急需的人才,也是一个软件组织中的高级技术人才。
将来软件架构师势必会成为一个特火的职业,因此要深入学习。
2)源于软件发展趋势的需求:目前,软件系统的规模越来越大,复杂程度越来越高,软件设计的核心已经超越了传统的“算法+数据结构= 程序”的设计模式,取而代之的是软件架构。
对于越复杂的系统,分而治之的思想就越重要,只有这样,开发时目标才能明确,分工才会有条理,集成时才能无误。
另外,目前的软件开发均不是从零开发的,架构为软件开发提供较好的复用性。
所以架构就越凸显,因为软件架构对系统的重用、扩展、安全、性能、伸缩性、简洁等做系统级的把握,为软件开发带了了诸多好处,如降低开发成本、缩短开发周期、分工明确、支持复用等。
源于软件发展趋势的需求,因此要深入学习。
3)培养形式的需求:目前在中国架构师的培养模式主要有两种:1、学院派。
参加培训班封闭式式培训,掌握理论就去考架构师证。
2.经验派。
靠自己技术与经验担任了架构师。
以上两种途径均不妥,而真正的架构师应该是“理论+实践+经验”。
只符合一个条件的,均不是好的架构师。
因此要深入学习。
2.小环境趋势:1.源于个人的需求程序员的终极目标。
程序员的寿命在8-10年,我们不可能干一辈子程序员。
技术不强成为架构师是不可能的,但是技术强也不一定能成为一个架构师,架构师要的是“机遇+能力+经验”。
而深入学习就会增加你的“机遇+能力+经验”。
因此深入学习更重要。
2.使系统更加具有复用性、扩展性、安全性、高性能性、简洁性传统模式是为了解决问题而解决问题。
完成的系统没有架构模式清晰,职责分明。
架构模块与接口定义的明确,有一个宏观上的把握与限制作用。
例如这个模块该使用什么技术,定义成什么样的接口、数据格式是什么样的,均有详细的设计。
传统的定义不明确,架构太混乱,以致进行一个小的改动都会牵动全身。
清晰明了的模块,增加了系统的复用性、而且更加便于扩展,提高系统的安全性,使系统看起来更加简洁。
因此学习其是必要的。
3.模块划分清楚,最大的降低工作的依赖性。
传统的模式没有详细的划分,开发时,常常出现我做完了我的工作,要等待另一个人工作的完成,这对开发与测试都是不利的。
这样的工作就需要开发人员在确定好任务后,进行大量额外的交互,对开发也是不利的。
4.能推断出所产生的影响及早备案架构能允许推断出所产生的影响,例如选取某一类架构的风格,就能预知到该架构所带来的影响,提出应急预案。
而传统的方式,就是“走一步看一步”,出现问题解决问题。
这个没有预知的过程往往花费了较长时间,并且出现的问题较多,而且解决的情况还不好。
5.降低费用带来效益。
如果没有软件架构,在开发一个复杂系统时,仍按照传统的“算法+数据结构=程序”模式来开发,这样就会出现细节划分、日程安排、工作分配不明确,接口定义不准确。
这些势必会增加额外的工作量,增加工作量就等于增加了成本。
另外,传统方法没有对整体做一个详细的规划,即便是完成了系统,存在的隐式问题也相当多,对后续系统的维护,也将增加系统的成本。
如何理解软件架构师的角色?如何成为一个优秀软件架构师应如何准备?软件架构师主要角色有:1、半政治家软件架构师就是总体的设计师,由于人员,技术,时间,成本等众多因素的限制,他不能一味追求技术派,只能在这些因素中做出权衡,例如对架构风格的选取、技术的选取。
在这上面都要做出权衡,一旦决策失误,软件开发也就是失败的。
因此是政治家,要站在一定的高度去决策。
2、半技术家软件架构师经历了大量的开发,其技术毋庸置疑,令人信服。
软并且件架构设计过程中,要把架构转化完成任务的先后顺序,这样才能及时地确定在什么位置用什么技术。
同样要决策选择何种技术。
例如做一个系统是利用C#写还是JAVA写等等,他必须熟悉各种技术的优缺点。
因此是半个技术家。
3、半作家需求分析阶段、架构设计阶段、软件的交付阶段。
都需要提交大量的文档。
文档质量的关键,决定了软件的质量。
如果架构师需求分析写的不明确,用户开发人员都难理解。
架构设计写的不清楚,就可能造成开发人员工作量不清晰。
接口定义不明确。
交付阶段就可能造成用户不会使用等诸多问题,因此写好文档很重要。
要具有逻辑性,简单明了,有吸引力。
可以说是半个作家3、半传教士要无限的虔诚,并且要相信“软件架构”就是上帝,要有不怕苦的精神。
并且要可利用华丽的计划书和技术文档、PPT演讲等优秀的布道技巧,更能增加公众对架构师的信服力。
4、半导师软件开发阶段,开发人员会有诸多问题,例如技术上的、功能上的。
要给开发人员讲解清楚。
还有就是一个团队中,可能有新人,技术不是很强,要负责指导,完善团队的技能。
因此是“半导师”5、半心理学家软件开发过程中,团队的成员心理上可能会有变化,压力大,消极等等。
架构师要积极引导,解决困惑。
同样,还要抓住用户的心理。
因此是“半心理学家”。
成为一名优秀的架构师:1、知识准备。
知识面的宽窄往往决定着一个架构师的架构能力,就我们来说,开发经验较少,毕业了不可能立刻去做架构师。
目前来说,平时多看看与架构师相关的书籍,如《一线架构师》。
同时还要阅读大量的技术书籍,还可以经常泡技术论坛,一方面可以结交朋友,一方面可以增加自己的知识面。
最重要的是要了解并熟悉各个领域业务及知识。
虽做软件行业,但不要局限在自己的领域,例如,要开发一个与机械领域专业性强系统,没有机械方面的知识储备是不行的。
作为架构师会有诸多疑问。
2、技术准备。
学习更多的技术,不要仅停留在一种技术上,假设你对B/S技术相当熟悉,当用户想用C/S时,你就会局限在技术上,这显然是不妥的。
技术能力要做到要深要广,对将来做一名合格的架构师十分重要。
平时多学学技术,阅读大量的技术书籍,还可以经常泡技术论坛,由于与精通构架设计的理论、实践和工具.并掌握多种参考构架、主要的可重用构架机制和模式。
3、理解软件的开发过程,熟练掌握软件架构设计的流程,并且要明确各部分的职责。
多学习并看看架构师的书籍,熟练掌握软件架构设计的流程,明确各部分的职责,而且要经常做一些架构设计的练习。
比较自己设计的架构与知名架构师设计的差别。
分析原因,找差距。
4、实践准备。
平时光看书自学不一定不科学,但要保持大量的实践。
大量开发实践,会增加经验,同时开发过程也是对知识的巩固。
实践准备越充分,你离架构师的距离就越近。
5、分析抽象能力的准备。
平时要训练自己的抽象能力,这对架构设计尤为重要。
这样可以抽象出各个模块。
定义个模块的接口。
为开发人员带来便捷,能降低开发的依赖性。
6、沟通能力准备。
沟通能力要强,因为整个软件周期要与客户、领导、项目组成员进行大量的沟通。
没有好的沟通,需求就可能不明确,开发就可能出问题。
平时多与人打交道,沟通时思路要清晰。
7、写作准备。
开发阶段要为用户、领导、开发人员提交众多文档,提交文档废话要少。
逻辑要清晰,让人看了赏心悦目。
因此平时要多练习练习写作。
8、性格准备。
(1)有耐心。
需求分析阶段与甲方交互最多,没有耐心,需求就做不好,需求做不好,后面的模块划分、接口定义就不清楚。
(2)沉着冷静,三思后行。
架构师最主要的角色就是半政治家。
例如,甲方要求尽快交付,你听别人说分层模式好而且是纵向分层,然后就直接决定选择该架构。
这显然是错误的。
纵向分层较为复杂,所以要沉着冷静,三思后行。
(3)果断坚定软件架构的选取上,就会出现分歧。
出现分歧,争执不下。
架构师就应该果断坚定的选择一种架构风格。
不应将时间浪费在由于的决策上。
(4)敢于承担,注重反思。
架构师在决策上难免出错,出错了,也是正常的,应该积极面对。
认证分析自己的错误,总结经验是自己更加完美。
(5)细心细心不仅仅要体现在软件的开发过程中要细心解答程序员的疑问,更要在需求分析时,细心注意每一个细节,例如系统的使用对象等众多因素。
越细心,发现的问题就越多,软件形成产品时,问题就越少。
(6)抗压能力强。
在软件开发过程中,可能来自于客户的压力,领导的压力,开发人员的压力,这些压力要沉着应对,不要害怕。
畏惧只能让自己越错越多。
因此抗压能力要强。