1、软件设计与体系结构考试重点精品文档2.人月神话提出两条著名的法则:1.人月神话:向一个已经延后的项目中投入更多的人力资源,只会让他更延后。2.没有银弹:没有一种策略技术技巧可以极大地提高程序员的生产力。15软件设计的一般过程16.软件设计的主要活动1)软件设计计划2)体系结构设计3)界面设计4)模块/子系统设计5)过程/算法设计6)数据模型设计17.18.软件可信性质有以下几种。(1)可能性:在规定的环境下、规定的时间内软件无失效运行的能力。(2)可靠安全性: 软件运行不引起危险、灾难的能力。(3)保密安全性:软件系统对数据和信息提供保密性、完整性、可用性、真实性保障的能力。(4)生存性;软件
2、在受到攻击或出现失效时连续提供服务并在规定时间内恢复所有服务的能力。(5)容错性: 软件在故障(硬件环境异常)出现时保证提供服务的能力。(6)实时性;软件在指定的时间内完成反应或提交输出的能力19什么是软件体系结构风格软件体系结构风格是描述某一特定应用领城中系统组织方式的惯用模式。体系结构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含了一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。体系结构风格反映了领城中众多系统所共有的结构和谐义特征,并指导如何将各个模块和子系统有效地组织成一个完整的系统、按这种方式理解、软件体系结构风格定义了用于描述
3、系统的术语表和一组指导构建系统的规则。20黑板风格的体系结构的优点如下:(1)便于多客户共享大量数据。他们不用关心数据是何时出现的、谁提供的,以及怎样提供的。(2)既便于添加新的作为知识源代理的应用程序也便于扩展共享的黑板数据结构。(3)可重用的知识源。(4)支持容错性和健壮性。 黑板风格的体系结构的缺点如下:(1)不同的知识源代理对于共享数据结构要达成一致,而且,这造成了对黑板数据结构进行修改较为困难。(2)需要一定的同步锁机制保证数据结构的完整性和致性,增加了系统复杂度。(3)测试困难(4)不能保证有好的求解方案。(5) 低效。(6)开发成本高。21.C/S风格优缺点优点主要在系统的客户端
4、应用程序和服务器构件分别运行在不同的计算机上,系统中的每台服务器都可以适合各构件的要求,这对于硬件与软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。在C/S体系结构中,系统中的功能件充分隔离。客户端应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中数据的管理,不必在每一个新的应用程序中都对一个DBMS 进行编码。将大的应用处理任务分布到许多通过网络连接的低成本计算机上,可以节约大量费用。缺点:(1)开发成本较高。 (2) 客户端程序设计复杂。(3)信息内容和形式单一。(4)用户界面风格不一,使用繁杂,不利于推广使用。(5)软件移植困难。(6)软件维护与升级困难
5、。 (7)新技术不能轻易应用。22.三层C/S结构风格1表示层2功能层3数据层23.三层C/S结构的优点与传统的二层结构相比,三层C/S结构具有以下优点:(1)允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,从而使整个系统的逻辑结构更为清晰,能提高系统与软件的可维护性和可扩展性。(2)允许更灵活、有效地选用相应的平台与硬件系统,使之在处理负荷能力上与处理特性上分别适应于结构清晰的三层,并且这些平台与各个组成部分可以具有良好的可升级性与开放性。(3)在三层C/S结构中,应用的各层可以并行开发,各层也可以选择各自最适合的开发语言,使之能并行地而且高效率地进行开发,达到较高的性能价格比,对
6、每一层的处理逻辑的开发和维护也会更容易一些。(4)允许充分利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段非法地访问数据层,这就为严格的安全管理奠定了坚实的基础;整个系统的管理层次也更加合理和可控制。24.C/S/与B/S混合结构风格B/S与C/S混合软件体系结构是一种典型的异构体系结构。优点是外部用户不直接访向数据库服务器。从而能保证企业数据库的相对安全。另外,企业内部用户的交互性较强.数据查询和修改的响应速度较快。缺点是企业外部用户修改和维护数据时速度较慢,较烦琐,数据的动态交互性不强。25.正交软件体系结构的概念正交软件体系结构由组织层和线索的构
7、件构成。其中,层是由一组具有相同抽象级别的构件构成的,线索是子系统的特例,它由完成不同层次功能的构件组成(通过相互调用来关联),每一条线索完成整个系统中相对独立的一部分功能。每条线索的实现与其他线索的实现无关或关联很少,在同一层中构件之间是不存在相互调用的。26.正交软件体系结构具有以下优点:(1)结构清晰,易于理解。 (2)易修改,可维护性强。 (3)可移植性强,27.使用异构结构的原因(1)从根本上来说,不同的结构有不同的处理能力的强项和弱点,一个系统的体系结构应该根据实际需要进行选择,以解决实际问题。(2)关于软件包、框架通信以及其他一些体系结构上的问题,目前存在多种标准,即使在某段时间
8、内某一种标准占统治地位,但变动最终是绝对的。(3)在实际工作中开发人员总会遇到一些遗留下来的代码,它们仍然有用,但是与新系统有着某种程度上的不协调。而在许多场合将技术与经济综合进行考虑时,总是决定不再重写它们。(4) 即使在某一单位中规定了共享共同的软件包或相互关系的一些标准,仍会存在解释或表示习惯上的不同。在UNIX中就可以发现这类问题.即使规定用单一的标准(ASCII)来保证过滤器之间的通信,但因为不同人对关于在ASCII流中信息如何表示的假设不同,不同的过滤器之间仍可能不协调。28.异构体系结构的实例 1.“内外有别”模型 2.“查改有别”模型29.面向对象的系统开发过程概述面向对象的思
9、想已经涉及软件开发的各个阶段,如面向对象分析(OOA)、面向对象设计(OOD)面向对象编程(OOP)。面向对象的系统开发生命周期由分析阶段、设计阶段、实现阶段组成,每个阶段都可以相互反馈,整个过程是一种迭代、渐增的开发过程。1.首先要进行面向对象分析,其任务是了解问题域所涉及的对象、对象间的关系和作用(即操作),针对不同的问题性质选择不同的抽象层次,然后构造问题的对象模型,使该模型能精确地反映所要解决的“实质问题”。2.其次就是面向对象设计,即设计软件的对象模刑。根据所应用的面向对象软件开发环境的功能强弱不等,在对问题的对象模型的分析基础上,可能要对它进行一定的改造,但应以改变原问题域的对象模
10、型最少为原则。然后在软件系统内设计各个对象对象间的关系(如层次关系、继承关系等、对象回的通信方式(如消息模式)等,总之是设计各个对象的职责。3.最后是面向对象编程,即软件功能的编码实现,主要工作包括每个对象的内部功能的实现;确定对象的哪些处理能力在哪些类中进行描述;确定并实现系统的界面、输出的形式及其他控制机理等,需要实现OOD阶段规定的各个对象所应完成的任务。30.下面给出画数据流图的一般步骤:(1)首先,找出数据源点和汇点,它们是外部实体,由它们确定系统与外界的接口。(2)找出外部实体的输出数据流与输入数据流,画出顶层数据流图。(3)从顶层加工出发,逐步细化,画出所需的子图,分析系统的主要
11、处理功能,把每一个处理功能作为一个加工,并且确定它们之间的数据流入和流出关系,画出第一层数据流图。(4)对当前层流图中的每个加工进行细化,画出所需的子图,直到加工不需要再分解为止。31.数据流图33. 面向数据流的需求分析方法步骤 (1)理解当前的现实环境,获得当前人工系统的具体模型。 (2)从当前系统的具体模型抽象出当前系统的逻辑模型。事益村路8 (3)分析目标系统与当前系统逻辑上的差别,建立目标系统的逻辑模型。5 9 (4)为目标系统的逻辑模型做补充。36合理的以用户为中心的界面设计分为6个阶段。 第一阶段:产品概念的开发。 第二阶段:调查研究和需求分析第三阶段:设计思路和关键屏幕画面原型
12、。第四阶段:反复的设计和改进。 第五阶段:软件的实现。 第六阶段:大力推广39设计模式的核心思想是总结和积累前人成功的设计经验,通过对这此经验的学习,使得人们在面对新的设计问题时不用再重复所有的环节,而是尽量套用已有的模式,以提高编程的效率。模式是解决特定问题的经验,实质上是软件的复用。模式由特定的环境、问题以及解决方案3个要素组成,按照软件开发的层次可以分为体系结构模式、设计模式、程序模式。体系结构模式属于层次较高的模式,设计模式是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。由于在以往的软件开发中,设计者经常在某种特定场合中遇到一些以前经常出现或感觉似曾相似的问题,直截了
13、当的解决方案就是套用原有的经过证明的解决方案,或参考别人成熟的思路来解决。长时间下来,通过不断地完善并文档化就形成了针对这种问题的处理模式,形成了特定问题的解决方案。43.什么是EJB?它有哪些特点?EJB规范是Sun公司于1997年12月发布的JavaBean 构件模型。一个EJB是特定的在服务器上运行的JavaBean,并且EJB能在可视化的工具下装配成新的应用。EJB应用程序只能用Java语言编写,且必须使用EJB API。编写良好的EJB应用程序无须修改任何源代码就可以在J2EE认证的应用服务器之间移植和互操作。EIB具有以下特点:(1) EJB以构件的形式组织服务器,EJB构件是直接
14、用Java语言编写的服务器构件。Java语言编写的跨平台特性使得EJB构件可以非常方便地移植到各种操作系统平台和EJB服务器上。(2) EJB构件的实现仅需考虑应用需求,其系统级服务(如事务管理、安全性、构件生命周期与线程等)都是通过EJB服务器自动进行管理的。(3) EJB体系结构具有面向对象、分布式跨平台、可扩充性、安全性以及便于开发等特点,同时它还以协议为中心,任何协议都可以被利用。44 EJB 由哪些角色组成?其结构的优缺点有哪些?1角色1.EJB组件开发者2.应用组合者3.部署者4.EJB服务提供者5.EJB容器提供者6系统管理者2EJB构件模型的优点如下:(1)EJB将成为用Jav
15、a语言开发分布式的、面向对象的企业级应用系统的标准构件体系构.EJB使得通过组合构件得到分布式应用系统成为可能(2)EJB使得应用系统开发变得容易,应用系统开发人员不需要理解底层的事务处理细节、状态管理、多线程、资源共享管理以及其他复杂的底层API细节。(3)EJB遵行Java的“一次编译,到处运行的思想,一旦一个EJB开发完成之后就可以部署在任何支持EJB的平台上,而不需要重新编译或对源代码进行修改。(4)EJB定义了一个协议,使用不同供应商提供的工具开发和部署的构件能在运行时互操作,(5)EJB体系结构与已有的服务器平台其他的Java APL、CORBA等兼容。(6)EJB支持Enterp
16、riseBeans和其他的非Java应用系统的互操作性。采用EJB开发应用系统有很多优点:(1)标准的Java技术的便利应用系统可以在许多不同的服务器平台上运行。(2)修改应用系统变得容易,对单个构件进行增加、修改、删除等操作不会对应用系统的体系结构产生很大的影响。(3)应用系统经过划分之后,使得构件之间相互独立,又可以相互协作,提供给用户的是该用户所需要的构件。(4)应用系统的开发变得容易,基本上是即插即用的方式。(5)应用系统从本质上说是叮伸缩的,可以运行在多线程多处理机的环境中。(6)可以在新的应用系统中得到重用,减少了新系统的开发时间。同时,EJB也存在些缺点,主要有:(1)EJB的数
17、量可能非常多,以至于在软件开发库中很难对这些EJB进行跟踪和管理。(2)如果应用开发人员不能正确地使用EJB,可能会导致不恰当的应用系统设计,结果使得应用系统的总体性能下降。(3)除非WM及编译器的性能得到提高,否则EJB应用系统的性能仍将是一个问题。(4)由于EJB技术出现时间不长,目前可用的EJB还不多,要想得到大量的商业性EJB还需要一段时间。45.什么是DCOM? DCOM的特性和优势有哪些?DCOM是一系列微软的概念和程序接口,利用这个接口,客户端程序对象能够请求来自网络中另一台计算机上的服务程序对象,DCOM基于组件对象模型COM.COM提供了一套允许同一台计算机上的客户端与服务器
18、之间进行通信的接口。DCOM的特点1.组件和复用2.位置独立性3.语言无关性4、连接管理5.可扩展性6.对称的多进程处理46.软件体系结构评估方法所关注的质量属性有哪些?1功能性2可靠性3可用性4有效性5可维护性6.可移植性2.风险承担者包括哪些人员?系统体系结构所涉及到的人员。包括架构设计师、开发人员、维护人员等。47什么是场景?基于场景的软件体系结构评估方法有哪几种?场景是对于风险承担者与系统进行交互的简短描述。一般采用刺激、环境、响应三个方面来描述场景。评估方法:SAAM 与 ATAM48.简述SAAM方法的评估步骤。49.比较SAAM和ATAM两种方法的异同点。场景的生成方式不同风险承
19、担者商业动机表述方式不同软件体系结构的描述方式不同第十三章51.简述软件演化的几种定义,这几种定义各有哪些侧重点?Manny Lehman和Juan F. Ranil定义:有目的地从早期的可操作版本来产生新的软件版本的所有规划设计活动。L. A. Belady定义:软件系统在它们的生命周期里被维护和增强的动态行为。NedChapin定义:它是软件 维护活动和过程的一个运用以及对这些活动和过程质量的保证和管理。这些活动和过程是用来从一个早期的可运行版本中产生一个新的软件版本,这个新的软件必须满足客户要求改变的功能或属性。50.造成软件演化的原因有哪些?软件系统开发完成并且投人使用之后,变更就悄悄
20、开始进行了。这些变更一部分来自于对软件缺陷的改正,例如软件使用后暴露的缺陷,软件的性能和可靠性的改进;一部分会随着新的需求浮现出来,例如实现新的功能;另一部分来自于外界的环境变化给软件带来的压力,例如商业模式和环境的不断改变,计算机硬件和软件环境的升级,业务的变更,等等。54.简述软件再工程模型。58.软件如何重构?说一说常见的软件重构的方法(1)大量重复的代码:尽量消除重复的代码,将它们合而为根据重复的代码出现在不同的地方,分别采取不同的重构策略在同一个类(Class)的不同地方:提炼出重复的代码,然后生这些地方调用上述提炼出的方法。在不同子类(Subclass)中:提炼出重复的代码然后通过
21、提开将该方法移动到上级Super class内.在没有关系的类(Class)中:将重复的代的提炼到一个新类中,然后在另个Cass中调用生成的新类,消除重复的代码。(2)过长的方法参数序列: 如果可以向已存在的对象查询获取参数,则可通过移除参数列,在雨数内部向上述已存在的对象查询获取参数。如果参数列中的若干参数是已存在对象的属性,则可通过使用已存在的对象,取代这些参数将这些参数替换为一个完整的对象,这样不仅提高了代码的可读性同时已易 于代码今后的维护。另外,还可以将若 T不相关的参数通过创建新的参数对象创建一一个新的参数类。不过,笔者认为如果这些情况过多,会产生很多莫名其妙的参数类,反而降低了代
22、码的可读性。(3) 代码量过大的方法体或类体:对于代码最过大的方法,拆解过长的函效。(4) 过多的if eise和switch-case逻辑: 看多态能不能取代条件式,如果能,使用多态。如果不能应该重新考虑程序的逻辑结构。另一种情况是if 和else句子何非常相似,那么考虑将其重写,使同样的代码段无论对于那种情况都能生成正确的结果,然后去除条件式。 (5)局部变量的“全局”化:,如果是方法体内的就放在方法体内.如果是代码段内的就放在代码段。(6)数据集合类:该用get方法的时候还是要用。对于数据集合类,最好的解决方法是不要让客户直接去读取这些类的值域,而需要封装起来.然后设置get/set接口
23、,让客户通过这些接口去读取数据。(7)数据泥团:通过创建新的参数对象取代这些参数,或使用已存在的对象取代这些参数,实现使用对象代替Class成员变量和方法中的参数列表,清除数据泥团,使代码简洁,也提高了维护性和易渎性。(8)注释的问题:如果需要注释/解释一段代码做了什么,则可以试试提取出一个独立的函数,让函数名称解释该函数的用途/功能。另外,如果觉得需要通过注释来说明系统的某些假设条件,可以尝试引入断言来明确标明这些假设。(9)死代码:赶紧清除它们,不要为以后着想,以后的问题不是现在放几个方法和变量就能解决掉的。55什么是软件再工程?软件再工程是指对既有对象系统进行调查,并将其重构为新形式代码
24、的开发过程。取大限度地重用既有系统的各种资源是再工程的最重要的特点之一。56.为什么实施软件再工程?再工程可帮助软件机构降低软件演化的风险; 再工程可帮助机构补偿软件投资;再工程可使软件易于进一步变革; 再工程有着广阔的市场;再工程能扩大CASE工具集; 再工程是推动自动软件维护发展的动力。57.简述软件移植的方法。软件移植主要分为源代码移植和二进制移植两种类型。源代码移植通过修改与环境相关的部分源代码,使软件具备适应多种环境的能力;二进制移植是指将软件从源环境移植到目标环境,且能正确运行,并与其在源环境下的行为保持一致。59.云计算有哪些特点?(1)超大规模(2)虚拟化(3)高可靠性(4)通用性(5)高可扩展性(6)按需服务(7)极其廉价。收集于网络,如有侵权请联系管理员删除