• 1.20 MB
  • 0页

高级软件工程标准答案

  • 0页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'一、解释下列概念学科:相对独立的知识体系。方法:实现一个目标或做某事的方式、技巧、技术或系统化过程。方法学:对某个知识领域探索知识的原则或方法而作的系统分析。模型:对现实(事物或实体)的简化(或抽象)表示。模型是抽象的产物!视图:在SQL中:和物理表相对应,临时性的虚表。在MVC软件架构模式中:图形界面。在软件工程中:指从系统的令人感兴趣的视点依某种视角,通过压缩细节,只保留必要的元素而形成的简洁的系统表示模型。即,视图是模型的某一选定刻面即简洁表示。概念模型:是对真实世界中问题域内的事物的描述,不是对软件设计的描述。概念模型=功能模型+结构模型+行为模型。组件:系统的一个物理实现块。框架:是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法。架构:存储在ActiveDirectory中的对象类别和属性的描述。对于每一个对象类别来说,该架构定义了对象类必须具有的属性,它也可以有附加的属性,并且该对象可以是它的父对象。信息域:一系列关联信息的集合而形成的一个领域。用例:对一组动作序列的描述,系统执行这些动作将产生对特定的参与者有价值而且可观察的结果。 实体对象:具有图形表示的数据库对象。软件体系结构:是一组体系结构元素的特定组织形式。体系结构元素分为3类:负责完成数据加工的处理元素;作为被加工的信息的数据元素;把体系结构的不同部分连接到一起的连接元素。ORM:对象-关系映射,主要实现程序对象到关系数据库数据的映射。二、简答题2.1什么是模型?为什么要建立模型?建模的原则是什么?模型:对现实(事物或实体)的简化(或抽象)表示。模型是抽象的产物!为什么建模(软件建模)?l清楚、准确、可视地说明与定义系统的结构与行为的方法(简化问题复杂度,分析定义);l作为指导系统构造的基础与模板(设计基础);l作为涉众(stakeholder利益相关者)交流的工具与成果(交流);l对分析与决策的结果规范化、文档化(成果)。建模原则((不同程度、细度、粒度、维度)):l仅当需要模型时,才够建(按需构建)l选择要创建什么模型,对如何动手解决问题和如何形成解决方案有着意义深远的影响。(选择构建)l可以在不同的精度级别上表示每一种模型。(分层构件)l最好的模型是与现实相联系的(一致构建)l单个模型或视图是不充分的。对每个重要的系统最好用一组几乎独立的模型从多个视角去处理。这些视图一起从整体上描绘了软件蓝图(组合构建。功能、结构、行为模型)l尽可能使用草图讨论,重要程度不足的草图模型直接入文档,重要性高的图使用CASE工具绘制成蓝图入文档。l每个模型应配有必要的文字说明(数据字典)。2.2什么是问题域和系统责任?举例说明其区别与联系?问题域(问题空间):待开发系统的应用领域,即在客观世界中由该系统处理的业务范围。 如要为银行开发一个业务处理系统,银行就是这个系统的问题域。银行的日常业务(如金融业务、个人储蓄、国债发行、投资管理等)、行政管理及与此有关的人和物都属于问题域。系统责任:被开发系统应具有的职能。1.(数据/属性属于系统责任范畴-存储/记录功能)2.系统责任和问题域语义上有很大部分是重叠的,但有区别。如前述银行业务处理系统,银行就是这个系统的问题域,银行的日常业务(如金融业务、个人储蓄、国债发行和投资管理等)、行政管理及与此有关的人和物都属于问题域。尽管银行内部的行政管理属于问题域,但是在当前的这个业务处理系统中并不属于系统责任。另一方面,像对计算机信息的定期备份这样的功能属于系统责任,但不属于问题域。识别对象的系统责任需要合理的抽象:例如,开发图书馆管理系统和开发书店图书销售管理系统均涉及书籍对象。但抽象却不同:前者要设计一个BOOK类,且每本书均为该类的一个对象,因为系统要记录每本书借给哪个读者;后者中,只需把同一版本的一种书看成一个对象类,并记录其书名、数量、单价等信息即可。2.4什么是方法?它有哪些构成要素?方法:实现一个目标或做某事的方式、技巧、技术或系统化过程。方法构成:基本概念+原理+运用过程+检验/评价标准+实例。2.5什么是软件模型视图?建模时创建哪些视图?(多视角建模)软件工程中:指从系统的令人感兴趣的视点依某种视角,通过压缩细节,只保留必要的元素而形成的简洁的系统表示模型。即,视图是模型的某一选定刻面即简洁表示。表2-1模型视图视图名称视图内容图形元素观察角度用户模型视图(用例视图)系统的功能和行为能力建模用例图用户、分析师、架构师,面向功能的划分结构模型视图(设计视图)指领域问题的静态结构(类、对象和关系)建模类图、对象图设计师,面向结构的划分, 类和接口,及其关系行为模型视图(进程视图)系统的动态或行为建模活动图、状态图、交互图设计师,面向线程、进程实现模型视图(实现视图)组件模型,系统的结构建模组件图设计师、架构师进行组件配置、发布的设计环境模型视图(实施视图)系统物理结构,组件与物理节点的配置、发布、交付、安装模型部署图(实施图)软件运行环境、系统的拓扑结构、实施方案设计2.6举例说明系统、模型与视图三者的关系?系统、模型与视图关系:模型是系统的抽象表示、视图刻画模型的某个刻面,一个模型往往由其多个视图表示,一个系统的模型和其视图往往有重叠。例如:System:航空器Models:航空器仿真器(模型1),比例模型(模型2)Views(模型1):设计蓝图,电子线路视图,燃料系统视图(蓝图视图含有其他两子系统标识成分)2.7面向对象的三大机制是什么?解释他们的主要作用面向对象的三大机制是封装、继承和多态.封装提供了一个有效的途径来保护数据不被意外的破坏。继承主要实现重用代码,节省开发时间。编译时的多态性为我们提供了运行速度快的特点,而运行时的多态性则带来了高度灵活和抽象的特点。2.8简单阐述KarlE.Wiegers关于软件需求的描述。2.9举例说明软件需求三个层次之间的关系。 三种需求关系示例一:业务需求可能是:“用户能有效地纠正文档中的拼写错误”,该产品的包装盒封面上可能会标明这是个满足业务需求的拼写检查器。对应的用户需求可能是:找出文档中的拼写错误并通过一个提供的替换项列表来供选择替换拼错的词。对应的软件(功能)需求可能是:l找到并高亮度提示错词;l显示提供替换词的对话框以及实现整个文档范围的替换。三种需求关系例证二:业务需求可能是:公司内部,所有部门数据实现共享用户需求:l能通过方便的操作方式将当部门数据汇总到总公司的中心数据库中。或:l分布存储,但用户能访问自由访问其它部门的数据红色为准确找到的,绿色为老师附带给的答案,(只有2.13的第一问是在网上找的)2.10需求分析面临的主要挑战是什么?l问题域和系统责任的复杂性(隔行如隔山。未知领域出现。更清晰的理解、更高明的见解!故需简单直观高效的方法)l交流问题(共同语言)l需求的不断变化(问题域本身、客户主观因素、市场竞争、经费与技术因素等赌友影响。故需要冻结相对稳定的需求)l软件复用的要求(软件复用是提高软件开发效率,改善软件质量的重要技术。故需复用机制)2.11简述软件需求分析的主要步骤与过程。l问题(需求)获取(elicitation)(进一步分为访谈调研、诱导澄清子过程)l分析 l编写规格说明(specification)l验证(verification)2.12简述软件需求建模的主要方法及其特点。(信息、功能分解、结构和OO)方法:功能分解+结构化(面向数据流的DFD)+信息建模(面向信息结构的Jackson,ERD)+OO–功能分解(优点:易理解、抽象原则、模块化;缺点:易变不稳、接口非问题域事物、不全面)–结构化(优点:较全面、逐步求精的难度分解原则、分析到设计的指导性原则;缺点:侧重功能、概念体系非问题域、转化不严格、概念各不同)–信息建模(优点::实体抽象、静态结构描述、转化严格、理论体系完整;不足:侧重数据)–面向对象(特点:问题域的事物,概念一致、抽象、分类、封装、信息隐蔽、消息通讯、多态;优点:概念一致、思维一致、模型稳定、可维护性高、模型可复用性强、有助于提高开发效率与质量)2.13简述统一建模语言(UML)的主要作用及其和OO方法之间的关系。 作用:uml在面向对象分析和设计中具有重大的作用。从应用的角度看,当采用面向对象技术设计系统时,首先是描述需求;其次根据需求建立系统的静态模型,以构造系统的结构;第三步是描述系统的行为。关系:建模使用OO方法时,才用UML-建模语言;UML是OMG推荐的统一、标准化、广泛使用的OO建模语言。2.14UML由哪些部分组成?简述他们的作用?UML概念模型UML构造块((vocabulary/syntax))规则(semantics)公共机制(如扩展机制)构造块:UML的模型元素,是模型的主体。规则:支配基本构造块如何放在一起。不能简单地把UML的构造块按随机的方式堆放在一起。像任何语言一样,UML有一套规则。公共机制:运用于整个UML的公共机制、扩展机制。2.15简述用例建模步骤的过程?(识别角色、识别场景、辨识用例、细化用例、识别角色和用例的关系、必要时,使用包简化用例图)–识别角色–识别场景–辨识用例 –细化用例–识别角色、用例中的关系–必要时,使用包简化用例图2.16简述用例建模的主要技术。(用户目标技术、CRUD、事件分析、短语动词识别)一:用户目标技术-与用户交谈,讨论他们为新系统设定的目标。二:CRUD(Create,ReadorReport,UpdateandDelete)技术-分析师标识由系统处理所有的数据元素,并建立创建,报告,更新和删除数据项的用例。三:事件分解技术-此技术侧重于辨识要求系统作出响应的事件以及确定系统必须如何作出响应。四:动词短语识别技术,从问题域中搜寻系统使用的动词短语,作为候选用例,然后抽象、排除不合理用例。2.17简述对象模型的目标及过程。(识辨对象与类、准备数据字典、识辨关联与聚集、识辨对象与链的属性、使用继承组织和简化类、复审并精化模型、分组类成为模块)–识辨对象与类(Identifyobjectsandclasses)–准备数据字典(Preparedatadictionary)–识辨关联与聚集(Identifyassociationsandaggregations)–识辨对象与链的属性(Identifyattributesofobjectsandlinks)–使用继承组织和简化(对象与类Organizeandsimplifyusinginheritance –复审并精化模型(Iterateandrefinethemodel)–分组类成为模块(主题Groupclassesintomodules)2.18简述系统设计的主要任务。(设计目标、系统分解、目标实现与优化)–识别设计目标(主要和优先满足的系统质量需求)–设计初始系统分解-使用标准架构风格为起点–细化分解模型,实现设计目标。2.19系统设计的主要产品有哪些?–设计目标(总则、决策)–软件体系结构n问题分解和求解方案构建的高层策略的选择n子系统职责、相互依赖关系n映射子系统到硬件和软件组件n全局数据流、存取控制和数据存储的设计决策–边界用例:描述系统配置、起、停和出错处理三、选择填空(25分)1.下列关于用例特征的描述错误的是(D)A.为角色提供某种可度量价值的一系列活动的抽象描述B.一个用例实现用户的一个具体目标C.一个用例是用户的一个可见功能D.一个用例是场景的实例 2.CMM能力成熟度模型定义了一个阶梯式演进框架,分为五个等级,按从低到高次序是(初始、重复、定义、管理、优化)A.初始级、已管理级、已定义级、可重复级、优化级B.初始级、已定义级、已管理级、可重复级、优化级C.初始级、已管理级、已定义级、可重复级、优化级D.初始级、已定义级、可重复级、已管理级、优化级3.使用Abbott自然语言识别法分析建模时,常常将(B)A.普通名词映射为实例,专有名词映射为类B.普通名词映射为类,专有名词映射为实例C.普通名词映射为类,专有名词和形容词映射为类的属性D.专有名词映射为类,Doing型动词映射为类的操作4.Jacobson,1999认为分析对象模型由三类对象构成,它们是(C)A.分析对象、设计对象和实现对象B.类、类间关系与约束C.实体对象、边界对象和控制对象D.数据对象、结构对象和行为对象5.面向对象分析与设计的起点是(C)A.企业需求描述B.功能需求描述C.用例需求描述D.静态结构需求描述 6.根据KarlE.Wiegers的描述,软件需求分为(J)和非功能性需求两个部分。其中,(J)性需求又进一步分为(C)、(D)和(J)三个层次。(C)需求从总体上描述了为什么要开发系统,组织希望达到什么目标。一般使用远景与范围文档来记录该需求。(D)反映用户对所要开发的系统提出的各种要求和期望,其中包括系统的功能、性能、保密和交互方式等(A)性要求,以及成本、交付时间和资源使用限制等非技术性要求。选项:A.技术B.非技术C.业务需求D.用户需求E.性能需求F.效能需求G.功能性H.系统需求I.非功能性J.功能需求7.根据KarlE.Wiegers,软件的功能需求主要来源于(B)、(C)、(D)(F)和(G)。选项:A.技术需求B.用户需求C.质量属性D.系统需求E.非技术性需求F.业务规则G.约束8.UML概念模型的构成元素分类包括(B)A.结构事物、行为事物、分组事物和注释事物B.构造块、规则和公共机制C.事物、关系和图D.说明机制、公共划分、修饰和扩展机制9.UML构造块包括(B) A.构造块、规则和公共机制B.事物、关系和图C.结构事物、行为事物、分组事物和注释事物D.详述、修饰、通用划分和扩展机制10.UML事物构造块包括(C)A.构造块、规则和公共机制B.事物、关系和图C.结构事物、行为事物、分组事物和注释事物D.详述、修饰、通用划分和扩展机制11对一类的意义进行描述的正确方式是采用(C)A.标记值B.规格描述C.注释D.构造型12将下述UML工具模型依据其建模作用,填入随后的软件架构4+1视图模型中的对应模型标识位置中(见用例图、对象图示例)。这些UML工具是:类图、组件图、顺序图、协作图、状态图、部署图。图1.软件架构4+1视图模型 21阅读下面的类图,下述说法不正确的是(B)A.一个航标监控器可以监控一个浮标的多个雷达感应器B.一个航标监控器可以监控一个立标和一个浮标C.一个航标监控器可以监控一个立标的多个航标指示灯D.一个航标监控器可以监控一个立标或一个浮标22下图是订单管理系统中计算订单价格的顺序图,根据该图可知订单类具有(A)组服务 A.getProduct(),getPriceDetails(),getQuantity(),getBasePrice(),calculateDiscounts(),getdiscountInfo()B.calculatePrice(),getBasePrice(),calculateDiscounts()C.getProduct(),getPriceDetails(),getQuantity()D.calculatePrice()23当想要澄清和探索涉及多个对象的单个用例的情况时候,适于用A.交互图B.状态转换图C.活动图D.类图24当想要澄清和探索一个对象在多个用例中的作用的时候,适于用A.交互图B.状态转换图C.活动图D.类图25当想要澄清和探索多个对象在多个用例中的作用的时候,适于用A.交互图B.状态转换图C.活动图D.类图 26根据下述Java源代码绘制顺序图publicclassSale{privateListitems=newArrayList();publicMoneygetTotal(){Moneytotal=newMoney();Moneysubtotal=null;For(SaleLineItemlineItem:items){Subtotal=lineItem.getSubtotal();Total.add(subtotal);}returntotal;}}27持久化对象的主要的候选对象是()A.边界对象以及多对多关联类B.问题域实体对象以及多对多关联类 C.控制对象和实体对象D.控制对象以及多对多关联类四、关系辨识(25分)。1给出下面陈述的UML类图描述。一个公司包含若干个部门,每个部门有若干名职员,有些职员是经理,每个部门有一名经理负责管理该部门的下属职员。2.给出下面陈述的UML类图描述。UML概念模型包括三类元素:构造块、规则和公共机制。其中,构造块又分为事物、关系和图,而图分为行为图和结构图。 3.辨识下述用例之间的关系(includes或extends),并标于图中。<><><><>4.分析下面的类图,绘制新的类图将下述多对多关系转换成一对多关系。(5分) 5.下面是关于领域对象Employee和Work及其测试类EmployeeWork的Java描述,用UML类图描述上述三类及其关系importjava.util.ArrayList;publicclassEmployeeWork{publicstaticvoidmain(String[]args){Employee[]em=newEmployee[2];Work[]wk=newWork[3];em[0]=newEmployee(11);em[1]=newEmployee(12);wk[0]=newWork(21);wk[1]=newWork(22);wk[2]=newWork(23);em[0].addWork(wk[0]);em[0].addWork(wk[2]);em[1].addWork(wk[0]);wk[0].addEmployee(em[0]);wk[0].addEmployee(em[1]);wk[2].addEmployee(em[0]);System.out.println(java.util.Arrays.toString(em));System.out.println(java.util.Arrays.toString(wk));}}classEmployee{privateintemployeeNo;privateArrayListworks=newArrayList();publicEmployee(intemployeeNo){this.employeeNo=employeeNo;}publicvoidaddWork(Workwork){works.add(work);}publicArrayListgetWorkList(){returnworks;}}classWork{ privateintwNo;privateArrayListemployees=newArrayList();publicWork(intwNo){this.wNo=wNo;}publicvoidaddEmployee(Employeeemployee){employees.add(employee);}publicArrayListgetWorkList(){returnemployees;}}Employee和Work类的关系不确定所以没画。6常见的UML事物间的关系包括关联、聚合、组合、泛化、依赖和实现,下列符号是他们的UML图形表示,请将它们代表的关系的名称填入相应的图符后面的括号中(如:关联所示)。 (依赖)(泛化)(组合)(实现)(聚合)(关联)7判断下列类之间的关系,并用连线和右面的关系类别关联。文件–文件内容文件–文件编辑器文件–Word文件编辑器–文本编辑器文件–文件格式文件格式--文件阅读器Web页面–超连接文件聚合组合继承关联8给出下列UML事物之间的关系<><><><><>9给出下列UML事物之间的关系 Window类实现接口AbstractWindow,ConsoleWindow和DialogBox是它的子类,一个窗口可以包含0或多个Component,如Label和Combox等。0..*110下面关于用例描述错误的是(b)A.用例是涉众交流的手段之一B.用例是人机交互设计的基础C.用例是黑盒测试用例设计的基础。D.用例描述的是用户交互11以下是有关格式化文档处理发生的事件,最适合作为用户用例的是()A.定义一个风格 B.使用一个风格格式化一个文档C.改变一个风格D.拷贝一个文档的风格到另一文档12使用连线将下面左右两列有对应关系的概念关联用户模型视图对象图结构模型视图用例图类图行为模型视图组件图活动图实现模型视图部署图状态图环境模型视图交互图13.使用连线指出下述各UML类图与软件开发阶段之间的关系实现分析 设计概念15给出下面陈述的UML类图描述。一个人可能持有0或多张卡,每张卡属于0个(不指名)或一人持有,每张卡可能授权0或多个人使用,每个人可能被授权使用0或多张卡16给出下面陈述的UML类图描述。一个程序由语句块组成,每个语句块或者是(is-a)简单语句、或者是复合语句;而一个复合语句包含0个或多个语句块。 17下图中类“教授”和“人”之间的单项关联“指导”的完整含义是什么?一个教授可以指导0个人或者多个人。18给出下面陈述的概念模型的UML类图描述。一部电梯系统包含一个电梯控制器,一个轿厢系统,多个楼层面板系统及一个紧急制动器几个部分组成。轿厢系统由轿厢、轿厢驱动系统、两扇电梯门,轿厢呼叫按钮,厢内楼层指示器和运动方向指示器组成,它们均由电梯控制器直接控制;楼层面板系统包含楼层面板控制器、上下楼层呼叫按钮,大厅楼层指示器和大厅运动方向指示器几部分组成,面板控制器负责该部分的控制及其和电梯控制器的交互 19给出下述实体概念模型持久化的数据库解决方案。可以设计六张表,单独的Student表、Teacher表、Course表,以及学生和老师的关系表S_T表、学生和课程的关系表S_C表以及老师和课程的关系表T_C表。 20下述Java程序的输出结果是什么?它违反了什么设计原则?为什么?1000(违反了李氏替换原则,因为在test类中,用A定义,用B实例化,所以,在调用computer方法时,先调用B中的compute方法,A的同名compute方法被覆盖。)classA{publicintcompute(inta,intb){returna/b;}}classBextendsA{publicintcompute(inta,intb){returna*b;}}publicclassTest{publicstaticvoidmain(String[]args){intc1=50,c2=20;Aa=newB();System.out.println("Useparentclasstocompute"+c1+"/"+c2+"="+a.compute(c1,c2));}}21阅读下述Java程序,回答后续问题 publicclassChartRenderClient{publicstaticvoidmain(String[]args){ChartRendercr=newChartRender();cr.display("pie");}}classPie{publicvoiddisplay(){System.out.println("显示饼图");}}classBar{publicvoiddisplay(){System.out.println("显示棒图");}}classChartRender{publicvoiddisplay(StringchartType){if(chartType.equals("pie")){Piechart=newPie();chart.display();}elseif(chartType.equals("bar")){Barchart=newBar();chart.display();}}}(1)使用UML类图描述程序结构 (2)按照上述代码的思路,假如服务端ChartRender要提供新的统计图,如折线Line程序需作什么变动?2.1增新类LineclassLine{publicvoiddisplay(){System.out.println("显示折线图");}}2.2修改CharTrender类的display方法,增加控制策略代码……elseif(chartType.equals("line")){Linechart=newLine();chart.display();}(3)上述变化说明服务端部分的设计违反了什么原则?为什么?3.1违背依赖倒置原则-高层ChartRender依赖了底层Line3.2违背了开闭原则-底层变化增Line类导致高层ChartType的修改(4)改变服务端部分的设计架构,使其满足设计原则?(5)给出你的设计方案的Java实现,客户端显示折线图。 classPieextendsAbstractChart{publicvoiddisplay(){System.out.println("显示饼图");}}classBarextendsAbstractChart{publicvoiddisplay(){System.out.println("显示棒图");}}classLineextendsAbstractChart{publicvoiddisplay(){System.out.println("显示折线图");}}abstractclassAbstractChart{abstractpublicvoiddisplay();}classChartRender{privateAbstractChartchartType;publicvoidsetChartType(AbstractChartchartType){this.chartType=chartType;}publicvoiddisplayChart(){chartType.display();}}publicclassChartRenderClient{publicstaticvoidmain(String[]args){AbstractChartac=newLine();ChartRendercr=newChartRender();cr.setChartType(ac);cr.displayChart();}}(4)(5)变种 ……classChartRender{publicvoiddisplayChart(AbstractChartchartType){chartType.display();}}publicclassChartRenderClient{publicstaticvoidmain(String[]args){ChartRendercr=newChartRender();cr.displayChart(newLine());}}22请画出下述问题的状态图。一个简单的下棋游戏,游戏双方称为黑方和白方。白方首先走第一步,然后黑白双方轮流走棋。如果有一方不能继续走棋,则另一方获得胜利,游戏结束;如果比方同意平局,则游戏结束。23指出下图中WEB层、对象层、关系层、持久层DAO涵盖的子层 五、分析建模某高校教务处拟建一在线学生选课系统供各学院本科生在各学期开始前选课使用。其基本需求陈述如下:学生利用本系统可以完成下列任务目标:(1)选课与退选课。每学期可选1到5门。(2)查看自己的选课信息。每个教师可以讲授多门课程。教师使用该系统完成的主要工作包括:(1)查看选课学生的信息(2)提交学生成绩等。管理员负责:(1)管理学生信息;(2)管理教师信息; (1)管理课程信息;(2)打印学生成绩单等。问题一、给出系统的功能模型(用例图)?问题二、给出UML类图表示的系统的概念模型,并标示出属性与服务。问题三、通过消除多对多关系、抽象一般类等设计手段,完善上述模型,给出面向实现的软件架构模型。问题四、用户要求的下列服务:打印班级学生名单、打印某科目学生成绩单应该属于那些类中的服务?为什么?'