当前位置:文档之家› 软件工程的种设计模式的UML类图

软件工程的种设计模式的UML类图

软件工程的种设计模式的UML类图
软件工程的种设计模式的UML类图

二十三种设计模式

0 引言

谈到设计模式,绝对应该一起来说说重构。重构给我们带来了什么?除了作为对遗留代码的改进的方法,另一大意义在于,可以让我们在写程序的时候可以不需事先考虑太多的代码组织问题,当然这其中也包括了应用模式的问题。尽管大多数开发者都已经养成了写代码前先从设计开始的习惯,但是,这种程度的设计,涉及到到大局、到总体架构、到主要的模块划分我觉得就够了。换句话说,这时就能写代码了。这就得益于重构的思想了。如果没有重构的思想,有希望获得非常高质量的代码,我们就不得不在开始写代码前考虑更多其实并非非常稳定的代码组织及设计模式的应用问题,那开发效率当然就大打折扣了。在重构和设计模式的合理应用之下,我们可以相对较早的开始写代码,并在功能尽早实现的同时,不断地通过重构和模式来改善我们的代码质量。所以,下面的章节中,在谈模式的同时,我也会谈谈关于常用的这些模式的重构成本的理解。重构成本越高意味着,在遇到类似的问题情形的时候,我们更应该提前考虑应用对应的设计模式,而重构成本比较低则说明,类似的情形下,完全可以先怎么方便,怎么快怎么写,哪怕代码不是很优雅也没关系,回头再重构也很容易。

1 创建型

思想:Factory Method的主要思想是使一个类的实例化延迟到其子类。

场景:典型的应用场景如:在某个系统开发的较早阶段,有某些类的实例化过程,实例化方式可能还不是很确定,或者实际实例化的对象(可能是需要对象的某个子类中的一个)不确定,或者比较容易变化。此时,如果直接将实例化过程写在某个函数中,那么一般就是if-else或select-case代码。如果,候选项的数目较少、类型基本确定,那么这样的if-else还是可以接受的,一旦情形变得复杂、不确定性增加,更甚至包含这个构造过程的函数所在的类包含几个甚至更多类似的函数时,这样的if-else代码就会变得比较不那么容易维护了。此时,应用本模式,可以将这种复杂情形隔离开,即将这类不确定的对象的实例化过程延迟到子类。

实现:该模式的典型实现方法就是将调用类定义为一个虚类,在调用类定义一个专门用于构造不确定的对象实例的虚函数,再将实际的对象实例化代码留到调用类的子类来实现。如果,被构造的对象比较复杂的话,同时可以将这个对象定义为可以继承、甚至虚类,再在不同的调用类的子类中按需返回被构造类的子类。

重构成本:低。该模式的重构成本实际上还与调用类自己的实例化方式相关。如果调用类是通过Factory 方式(此处“Factory方式”泛指对象的实例化通过Factory Method或Abstract Factory这样的相对独立出来的方式构造)构造的,那么,重构成本相对就会更低。否则,重构时可能除了增加调用类的

子类,还要将所有实例化调用类的地方,修改为以新增的子类代替。可能这样的子类还不止一个,那就可以考虑迭代应用模式来改善调用类的实例化代码。

思想:不直接通过对象的具体实现类,而是通过使用专门的类来负责一组相关联的对象的创建。

场景:最典型的应用场景是:您只想暴露对象的接口而不想暴露具体的实现类,但是又想提供实例化对象的接口给用户;或者,您希望所有的对象能够集中在一个或一组类(通常称作工厂类)来创建,从而可以更方便的对对象的实例化过程进行动态配置(此时只需要修改工厂类的代码或配置)。

实现:该模式的实现是比较清晰简单的,如上图,就是定义创建和返回各种类对象实例的工厂类。在最复杂而灵活的情形,无论工厂类本身还是被创建的对象类都可能需要有一个继承体系。简单情形其实可以只是一个工厂类和需要被创建的对象类。不一定非要像上图中结构那么完备(累赘)。

重构成本:中。如果一开始所有的对象都是直接创建,例如通过new实例化的,而之后想重构为Abstract Factory模式,那么,很自然的我们需要替换所有直接的new实例化代码为对工厂类对象创建方法的调用。考虑到像Resharper这样的重构工具的支持,找出对某个方法或构造函数的调用位置这样的操作相对还是比较容易,重构成本也不是非常高。同时,重构成本还和被创建对象的构造函数的重载数量相关。您需要根据实际情况考虑,是否工厂类要映射被创建对象的所有重载版本的构造函数。

思想:将一个类的创建过程和他的主体部分分离。

场景:该模式的典型的应用场景是:一个类的创建过程可能比较复杂,或者创建过程中的某些阶段可能会容易变化;或者多个类的创建过程比较类似,但是主体不同。

实现:在以上提到的两种场景中,我们就可以取出一个类的创建过程的代码,定义一个专门的Builder 类,而在原来创建类对象实例的地方,将这个Builder类的实例作为参数传入。还有第二个重点,就是Builder类可以将将整个创建过程分为几个阶段,每个阶段不必在类中直接实现,而可以通过继承体系在子类中实现,或者通过子类的方法过载来修改创建过程中的某个阶段,但是重用其他的阶段。可以发现,该模式将一个对象的复杂创建过程重用到非常高的层次。这正是它的意义所在。

重构成本:低。该模式的重构成本我觉得是非常低的,因为一般来讲,创建过程的代码本来也就应该在原来的类的构造函数中,把它Extract出来就好了。如果发现多个类的创建过程有比较多的代码重复或类似,那么就可以重用这些提取出来的Builder类或者Builder类中的某些阶段。

思想:克隆一个已有的类的实例(大家相比都用过甚至写过类的Clone实现,应该很容易理解了)。场景:应用Clone的场景应该说非常多,理想情况下我当然希望任何类都能Clone,需要的时候就能Clone一份一模一样的出来。

实现:这里将的实现主要之实现的表现形式,而不是如何用具体的语言来实现。因此,只要为需要Clone 能力的类定义一个Clone方法就行。当然,一般,主流的程序语言框架都已经定义了通用的Clone接口(当然也可以自己定义),继承并实现该接口和方法就好。

重构成本:极低。不多解释了吧。

Singleton

思想:保证一个类只有一个唯一的实例。

场景:生活中有些对象就是只要一个就好了,我们的代码中为什么要每次都为这样的对象生成一个实例呢?

实现:最简单的实现方式就是使用一个static型的类实例,每次对该对象的创建请求都返回这个static的唯一实例就行。

重构成本:极低。

2 结构型

思想:将一个类的接口转换成另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

场景:该模式的应用场景太多了,很多需要的功能模块的接口和我们需要的不完全一致或者有多余或不足,但是需要和我们的系统协同工作,通过Adapter把它包装一下就能让使它接口兼容了。

实现:定义一个Adapter类,包含需要包装的类,实现需要的其它接口,调用被包装的类的方法来实现需要的接口。

重构成本:低。

思想:将一个类的抽象定义和具体实现解耦。

场景:该模式的典型应用场景是:一个类的抽象定义已经确定,但是,其实现代码甚至原理可能会不同。比如:我们最熟悉的图形界面中的window的实现,无论在什么操作系统,什么平台的机器上,一个window应具有的抽象定义基本上是一致的,但是,其实现代码肯定会因为平台不同,机器的代码指令不同而不同。此时,如果希望您写的window类能跨平台,应用Bridge模式就是一个好主意。

实现:该模式的实现方法很简单,就是除了定义类的抽象定义之外,将一个类的所有实现代码独立出一个实现类。这样一来,无论是抽象定义还是实现类都能分别修改和重用,但只要两部分的交互接口不变,还是可以方便的互相组装。当然,实际上也没有必要隔离出“所有实现代码”,只需要隔离需要的部分就行了。因此,也可以说,从代码结构来看,Builder模式是一种变种的Bridge模式的。也经常有人将Bridge模式和接口相比较,如果隔离出所有的实现,那么的确接口的方式也能做到抽象定义和实现分离,但是,Bridge有其优势如下:一、究竟隔离多少代码到Bridge类中可以灵活确定,二、减少了总的类的数目,三、允许被隔离出来的Bridge类被其它的类直接共享使用。

重构成本:中。将所有的(或很大部分)实现代码分离开来总还是一件不大,但是,也不小的事。所以标个“中”在这里。:)

思想:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。

场景:该模式的应用场景极其类似,比如像图形系统,如电路设计、UML建模系统,或者像web的显示元素等,都是那种需要整体和部分具有使用接口上的一定的一致性的需求的结构,实际上,我觉得这样的系统如果不使用Composite模式将会是惨不忍睹的。

实现:该模式的实现主要就是要表示整体或部分的所有类都继承自同一的基类或接口,从而拥有使用接口上一定的一致性。

重构成本:高。

思想:为一个对象已有的子类添加一些额外的职责。

场景:该模式的使用场景,主要是有的时候我们不愿意定义逻辑上新的子类,因为没有新的逻辑含义上的子类概念,而只是想为一个已存在的子类附加一些职责。

实现:该模式的实现主要就是定义一个物理上的新的子类,但是,它只是包含要附加职责的类,传递外部对相同接口的调用,在这个传递调用的通道上附加额外的功能。突然想到,Decorator模式是不是一定程度上也能代替DynamicProxy模式,从而成为一种AOP实现的方案呢?

重构成本:低。定义一个Decorator和一个已有类的逻辑上的子类,物理表现形式上都是一个子类,重构也确实不是难事。

Facade

思想:为子系统中的一组接口提供一个一致的界面,这个接口使得这一子系统更加容易使用。

场景:当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需要更多的可定制性的用户可以越过Facade层。客户程序与抽象类的实现部分之间存在着很大的依赖性。引入Facade将这个子系统与客户以及其他的子系统分离,可以提高子系统的独立性和可移植性。当你需要构建一个层次结构的子系统时,使用Facade模式定义子系统中每层的入口点。如果子系统之间是相互依赖的,你可以让它们仅通过Facade进行通讯,从而简化了它们之间的依赖关系。(这里直接引用了《设计模式迷你手册》,因为觉得它确实已经说得很明了了,下面类似的情形我直接引用原文的就不再注明了,这里先说明一下,感谢《手册》作者的这些优秀总结。当然,本文的绝大多数文字都是Teddy本人的原创看法,绝非抄袭,您可以比较本文和附件《手册》,附件同时也会提供本文的Word版本下载。)

实现:该模式的实现需要定义一个新的系统构架上的Layer,该层向上提供一组新的接口,向下调用子系统原有的接口。

重构成本:高。要修改所有直接对子系统的地调用为对Fa?ade层的调用还是有很多事情要做的。不过,现代IDE中,如果我们删除调用层对子系统的程序集引用,那么所有这些我们需要修改的调用都能标示出来,因为编译不能通过了嘛,因此,重构的风险还不算特别大,只是工作量着实不小。

思想:说Flyweight可能有的朋友第一次看到想象不到是什么样子,其实说他就是一个Pool,你可能就明白了。也就是由一个Flyweight Factory来管理一族一定数目逻辑上经常需要构建和销毁的细颗粒对象,例如我们常见的数据库连接池。在Factory内部,并不物理销毁这些对象,而在接到实例化请求时返回这些被关系对象的实例,从而减少创建销毁这些细颗粒对象的开销。

场景:基本上所有的需要Pool这个概念的环境都能应用。

实现:实现的底层方式可以千变万化,在接口上就是如上图所示,花样不多。这里就不多解释。

重构成本:低。

Proxy

思想:前面在Decorator模式中也提到了Proxy模式了。它是通过逻辑上继承一个已有类的子类,从而扩展原有的子类的功能。

场景:需要注意体会他和Decorator的需别。Proxy是继承需要修饰的类,而Decorator用的是包含的方式。Proxy模式,或者准确地说DynamicProxy模式,是现代AOP框架实现中的一种常用方式。典型的实现如Spring,JBoss以及Castle Project中的Aspect#。

实现:继承,并在过载方法中添加需要的修饰功能。

重构成本:低。

3 行为型

Interpreter

思想:当有一个语言需要解释执行, 并且你可将该语言中的句子表示为一个抽象语法树时,定义一个解释器,这个解释器使用该表示来解释语言中的句子。

场景:其实,从物理结构上,该模式的代码架构看起来可能和Composite模式一模一样,致使其针对的逻辑语义不同。Composite模式描述一种一般的整体和部分使用接口上的一致性,而Interpreter 模式则侧重于语言解释器的实现构架。

实现:如上图,基本同Composite模式。

重构成本:高。

思想:提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。

场景:访问一个聚合对象的内容而无需暴露它的内部表示。支持对聚合对象的多种遍历。为遍历不同的聚合结构提供一个统一的接口(即, 支持多态迭代)。

实现:其实就是定义一个逻辑上类似一个指针的迭代类。专门用于这种迭代工作。如果对C++ STL火锅功夫学习的朋友一定不会陌生啦。实际使用过一下就明白了。除了功能之外,他给我最大的感受就是他让我熟悉的for(int i = 0; i < ; i++)语句,变长了好多。^-^

重构成本:中。

思想:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

场景:该模式主要用来进行降低一组相互关联调用的对象间的耦合度。如果您发现您的系统的某部分的一组对象间调用极其频繁的坏味道的话,可能您需要考虑使用该模式来进行一些解耦,否则,这些对象中的任何一个的修改,都将可能导致其他对象许多地方的修改,可维护性就降低了。

实现:定义一个专门的中介对象来封装和传递一组对象间的调用。

重构成本:中。

思想:用在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。

场景:该模式主要用来实现类似我们在常见的编辑器中经常执行的Undo(Ctrl+Z)操作。实际上就是在外部保持一组对象的某一时刻的状态,并在需要的另一个时候将这组对象回复到之前的状态。

实现:该模式其实主要是一种对象状态的暂存和回复的思想。上面的UML图是一种比较典型的实现方式——定一个专门用于保存类状态的类,为被保存状态的类定义返回当前状态类实例,和根据状态类实例回复对象状态的接口。实际上也不必太拘泥于这个实现,简单情形下,我们完全可以利用任何的已有的对象持久化或者序列化机制来用一个字符串暂存对象的当前完整状态。

重构成本:低。

Template Method

思想:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Te m p l a t e M e t h o d 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

场景:该模式实际上是一种非常直观和可理解的OO思想下的代码重用的实现。只需一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。模板方法只允许在特定点计算法的某个阶段被过载,这样也就只允许在这些点进行扩展。

实现:见上图,太简单了,就不多说了。

重构成本:低。

Chain of Responsibility

思想:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。

场景:该模式实际上是对人们常会不自觉地去做的一种代码组织方式的总结而已。有的时候一条消息需要被处理,我们当然可以在一个雷的一个方法中对他进行所有需要的处理。但是,如果要做的处理很复杂的情形,甚至能够按照一定的逻辑醒来分类所有这些处理,则不要在一个雷一个函数里处以一切会更好,我们可以定义多个处理类类表示逻辑上的不同的处理,然后一个个处理类的传递这个消息对象,让希望处理该消息的类自己决定是不是要处理。这样,就能将一个难以维护的复杂处理过程,分解为一系列简单明了,易于维护的类了。

实现:上图是实现方式之一。即,使所有可能处理该请求的对象继承自一个基类,实际上,只要逻辑语义上我们保持这样一种让每个处理类自己决定何时处理,并传递请求的思想,实现方式也可以千变万化,无论是用接口代替,或者甚至只是简单的定义相同结构的处理函数而通过反射机制来调用处理函数和传递处理请求,都是可选的方案。

重构成本:中。

思想:将一个动态的执行过程封装成一个对象,可以像处理数据来处理和管理这样的对象,在需要的时候激发该对象的方法就能执行被封装的执行过程。

场景:该模式在很多时候非常有用,它使得我们对逻辑上已经激发的行为进行优化成为可能,我们不仅可以根据需要改变一组逻辑上以经济法的活动的顺序,消冗余操作,撤销不必要的操作等。也可以把活动和操作视为资源一样来管理和重用。同时该模式也是许多事务处理机制的基础。

实现:实现很简单,只是定义一些能够通过指定接口被激发的对活动进行封装的类,然后我们按照需要管理这些类,并在需要的时候激发这些活动。您还是应该更多地去体会,为什么他是事务处理机制的基础,当我们可以这样来管理一组活动的时候,可以对这些活动进行那些有趣的控制。

重构成本:高。

思想:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。

场景:上面描述该模式思想的文字可能显得有些拗口,实际上你也不用想得过于复杂。只要你写过任何的基于图形界面的程序,那么实际上您对他是一点也不该陌生的。它就是我们每一次鼠标键盘敲击都在我们的程序内部流转着的事件机制的基础。当一个事件发生,则通知订阅该事件的对象。

实现:上面的UML图看似复杂,实际上,去理解它的最好的办法就是试着思考和使用任何一种OO语言来定义一个拥有事件机制的类。比如,.Net下,你只要好好去看看关于delegate的文档,尝试着根据MSDN写写看一个最简单的自定义事件。那么,上面的UML图,我敢保证你能很轻易的看明白。

重构成本:高。

State

思想:允许一个对象在其内部状态改变时改变它的行为。

场景:实际上该模式在作为重构的目的是,绝大多数情况我们做的事情是将对一个类的state进行if-else或者select-case,决定该执行什么操作的过程解耦的过程。

实现:将表述一个类的某些操作该做什么,该怎么做的信息保存到其state中。即用一个包含更多信息,甚至执行逻辑的state类实例来代替一个简单数据类型的state属性。

重构成本:中。

思想:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。

场景:该模式实际上也可以理解为一种Bridge模式的变种。只是它突出的是,一般当我们把一个类或者一组类的一些代码独立成一个Strategy类的时候,我们可能会为同样接口的这些算法定义多个接口一致,但是实现方法不同的版本,并在需要的时候灵活的替换这些算法。

实现:实现方式同Bridge模式。

重构成本:中。

思想:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

场景:其实你不用去理解上面这句话。该模式其实又是一个在代码的物理结构上和Bridge模式很相似的模式。但是,其语义,其目的,在逻辑上又是不同的。如果说Bridge,以及上述我称为可视为Bridge 扩展的模式中,作为参数的Bridge类,是作为调用类的被访问对象的话,Visitor,在大多数情形下,如其英文含义,它在语义上是完全相反的。不是他被调用的类处理,更大程度上它处于主动状态,是它去访问,去处理调用它的类。调用它的类,把自己对别人隐藏起来的东西,暴露给Visitor品尝,任君蹂躏(这个,这个~~千万别想歪了;-))。另一方面,即使逻辑上没有这种Visitor主动去访问调用类的语义,只要Visitor类中的操作,是依赖于调用类的具体实现类(它本身或他某个层次的子类)的某些状态或者方法的,那么,就可以应用该模式来分离出这样的可重用的操作。

实现:类似Bridge模式。重构成本:中。

软件工程与UML期末试题及答案

软件工程与U M L建模复习题B 一:单选题 1.是在系统之外,透过系统边界与系统进行有意义交互的任何事物 A).相关系统B).Use Case C).Class D).Actor 2.软件工程是以为核心 A).过程B).面向对象C).软件开发D).质量 3.“系统应具有很高的可靠性,使用该产品的前3个月,系统不应该出现崩溃(数据不可恢复)的现象”,这属于 A).功能性需求B).客观需求C).主观需求D).非功能性需求 4.“系统每天晚上自动生成进货报表”,Actor是: A).系统B).其它系统C).时间D).报表审阅者 5.数据流程图是一个分层的概念模型,分三个层次:,分别描述系统的不同特征 A).总体图、二级图、三级图B).总体图、二级图、细节图 C).总体图、零级图、细节图D).总体图、次级图、细节图 6.正式运行系统后能够产生的收益被称为 A).直接效益B).运营效益C).最佳效益D).启动效益 7.“以相对短的时间和相对低的成本来确定给定的问题在其约束条件内是否有解、有几种解以及哪个是最佳解”,这指的是软件开发过程中的 A).问题定义B).可行性研究C).需求分析D).设计 8.在处理过程定义中,有时存在多重嵌套的情况,对于复杂的条件组合问题,用自然语言往往不能直观、清楚地表述处理的过程,因此,常常使用方法。 A).数据字典B).判定表和判定树C).用例图D).螺旋模型 9.设C(X)定义问题X的复杂性函数,E(X)定义解决问题X所需要工作量的函数,对于两个问

题p1和p2,一般情况下如果C(p1)E(p2) B).C(p1+p2)=C(p1)+C(p2) C).E(p1+p2)>E(p1)+E(p2) D).E(p1+p2)

东北大学《软件工程与UML建模》期末考试必备真题集(含答案)44

软件工程与UML建模复习题A 一:单选题( 1.是在系统之外,透过系统边界与系统进行有意义交互的任何事物 A).相关系统B).Use Case C).Class D).Actor 2.软件工程是以为核心 A).过程B).面向对象C).软件开发D).质量 3.“系统应具有很高的可靠性,使用该产品的前3个月,系统不应该出现崩溃(数据不可恢复)的现象”,这属于 A).功能性需求B).客观需求C).主观需求D).非功能性需求 4.“系统每天晚上自动生成进货报表”,Actor是: A).系统B).其它系统C).时间D).报表审阅者 5.数据流程图是一个分层的概念模型,分三个层次:,分别描述系统的不同特征 A).总体图、二级图、三级图B).总体图、二级图、细节图 C).总体图、零级图、细节图D).总体图、次级图、细节图 6.以下用例命名中,最合理的是 A).进行宠物搜索B).查询宠物C).宠物查询D).进行宠物查询 7.某系统中有两个用例:一个用例的参与者是用户,用例是“注册”;另一个用例的参与者是系统管理员,用例是“审核用户注册”。这两个用例之间是什么关系? A).包含关系B).没有关系C).扩展关系D).泛化关系

8.在软件的层次结构中,“一个模块被其他模块直接调用的调用者的数量”是指 A).深度B).扇入C).扇出D).耦合 9.设C(X)定义问题X的复杂性函数,E(X)定义解决问题X所需要工作量的函数,对于两个问题p1和p2,一般情况下如果C(p1)E(p2) B).C(p1+p2)=C(p1)+C(p2) C).E(p1+p2)>E(p1)+E(p2) D).E(p1+p2)

软件工程期末考试题3

试卷一 中南大学考试试卷 2006--2006 学年学期时间110分钟 专业年级:总分100分,占总评成绩 100% 注:此页不作答题纸,请将答案写在答题纸上 填空题(本题20分,每小题2分) 1. 瀑布模型是以文档为驱动、适合于()软件项目的开发。 2. 需求分析的基本任务是()。 3. 若有一个计算类型的程序,它的输入量只有一个X,其范围是[-1.0,1.0],现从输入的角度考虑一组测试用例:-1.001,-1.0,1.0,1.001。设计这组测试用例的方法是()。 4. 根据程序流程图划分的模块通常是()内聚的模块。 5. 软件的分类,按其功能可分为:系统软件、()和应用软件。 6. UML的定义包括UML语义和()两个部分。 7. 客观世界中的若干类,通常有两种主要的结构关系:即分类结构和( )。 8. IDEF1X图用来描述系统的()模型,主要有实体、联系和()三种成分,其中实体可分为独立实体和(),且一个实体只能在图中出现一次。 二、简答题(本题30分,每小题5分) 1. 什么是软件工程?软件工程和计算机科学有何区别?

2. 面向对象方法和结构化方法有何区别与联系? 3. 什么是模块的作用域和模块的控制域?为何要求模块的控制域必须在作用域内? 4. 什么是设计模式?试举例说明组合设计模式的应用。 5.什么是依赖倒置原则?它和开闭原则有何联系? 6. 软件生存期过程和软件生存期模型有何联系?瀑布模型有何特点? 三、绘图题(本题34分) 1. 某单位拟开发一个计算机房产管理系统,要求系统具有分房、调房、退房和查询统计等功能。房产科将用户申请表输入系统后,系统首先检查申请表的合法性,对不合法的申请表,系统拒绝接收;对合法的申请表根据类型分别进行处理。 (1) 如果是分房申请,则根据申请者的情况(年龄、工龄、职称、职务、家庭人口等)计算其分数,当分数高于阀值分数时,按分数高低将申请单插到分房队列的适当位置。在进行分房时,从空房文件中读出空房信息,如房号、面积、等级、单位面积房租等,把好房优先分给排在分房队列前面的符合该等级房条件的申请者;从空房文件中删掉这个房号的信息,并从分房队列中删掉该申请单,再把此房号的信息和住户信息一起写到住房文件中,输出住房分配单给住户,同时计算房租,并将算出的房租写到房租文件中。 (2) 如果是退房申请,则从住房文件和房租文件中删除有关信息,再把此房号的信息写到空房文件中。

《软件工程与UML》期末试题

《软件工程与UML》期末试题 适用专业:考试时间120分钟 一、单项选择题(本大题共小题,每题分,共分) 1. UML图不包括(D ) A. 用例图 B. 类图 C. 状态图 D. 流程图 2. 下面哪一项不是包图中的关系(D ) A .<> B. <> C. <> D. <> 3. 在类图中,下面哪个符号表示继承关系(C ) A. B. C. D. 4. 在类图中,“#”表示的可见性是(B ) A. Public B. Protected C. Private D. Package 5. 消息的组成不包括(C ) A. 接口 B. 活动 C. 发送者 D.接收者 6. 下面哪个视图属于UML语言的交互图(D ) A. 行为图 B. 状态图 C. 实现图 D. 顺序图 7. UML语言包含几大类图形(B ) A. 3 B. 5 C. 7 D. 9 8. RUP中有(C )个核心过程工作流。 A. 1 B. 3 C. 6 D. 9 9. 类之间的关系不包括(D ) A. 依赖关系 B. 泛化关系 C. 实现关系 D. 分解关系 10. 在UML中,协作图的组成不包括(C ) A. 对象 B. 消息 C. 发送者 D. 链 11. 下面哪个符号代表包图(A ) A. B. C. D. 12. 下列对状态图描述不正确的是(C ) A. 状态图通过建立类对象的生命周期模型来描述对象随时间变化的动态行为。 B. 状态图适用于描述状态和动作的顺序,不仅可以展现一个对象拥有的状态,还可以说明事件如何随着时间的推移来影响这些状态。 C. 状态图的主要目的是描述对象创建和撤销的过程中资源的不同状态,有利于开发人员提高开发效率。 D. 状态图描述了一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处状态对不同的事件做出反应。 13. 在UML的顺序图中,通常由左向右分层排列各个对象,正确的排列方法是(A ) A. 执行者角色控制类用户接口业务层后台数据库 B. 执行者角色用户接口控制类业务层后台数据库 C. 执行者角色控制类用户接口后台数据库业务层 D. 执行者角色用户接口业务层控制类后台数据库 14. 多对象是UML哪个视图中的概念(C ) A. 类图 B. 状态图 C. 协作图 D. 组件图 15. 构件图的组成不包括(C )

软件工程期末复习-北邮范文

1、软件是一种(逻辑实体),而不是具体的物理实体,因而它具有抽象性。 2、需求分析研究的对象是软件项目的(用户/客户/功能+性能/功能)要求。 3、需求分析的任务就是借助于当前系统的(逻辑模型)导出目标系统的(逻辑模型),解决目标系统的(“做什么”)的问题。 4、结构化需求分析方法由对软件问题的(信息/数据)和(功能)的系统分析过程及其表示方法组成。 5、确认测试包括:有效性测试和(软件配置审查,文档审查)。 6、白盒测试的逻辑覆盖方法包括语句覆盖、(判定/判断覆盖)、条件覆盖、(判定/判断-条件覆盖)、条件组合覆盖、(路径覆盖/路径测试/基本路径测试)。注:次序无关 7、为了提高模块的独立性,模块之间最好是(数据耦合) 为了提高模块的独立性,模块最好是(功能内聚) 8、下列关于功能性注释不正确的说法是( B ) A. 功能性注释嵌在源程序中,用于说明程序段或语句的功能以及数据 的状态 B. 注释用来说明程序段,需要在每一行都要加注释 C. 可使用空行或缩进,以便很容易区分注释和程序 D. 修改程序也应修改注释 9、在UML状态图中,与转移上的事件联系在一起的瞬时操作是(动作) 10、测试的关键问题是(如何选择测试用例) 11、以下说法不正确的是(A)。 A.原型思想是在研究概要设计阶段的方法和技术中产生的。 B.探索型和实验型原型采用的是抛弃策略。 C.进化型原型采用的是追加策略。 D.快速原型方法是利用原型辅助软件开发的一种思想。 12、需求规格说明书的作用不包括(C) A.软件验收的依据 B.用户与开发人员对软件要做什么的共同理解 C.软件可行性研究的依据 D.软件设计的依据 13、软件结构图中,模块框之间若有直线连接,表示它们之间存在(调用关系) 14、下面关于DFD中的加工的描述正确的是( C ) A. 每个加工只能有一个输入流和一个输出流

《软件工程与UML》期末试题及答案教学文案

《软件工程与U M L》期末试题及答案

软件工程与UML建模复习题B 一:单选题 1.是在系统之外,透过系统边界与系统进行有意义交互的任何事物 A).相关系统B).Use Case C).Class D).Actor 2.软件工程是以为核心 A).过程B).面向对象C).软件开发D).质量 3.“系统应具有很高的可靠性,使用该产品的前3个月,系统不应该出现崩溃(数据不可恢复)的现象”,这属于 A).功能性需求B).客观需求C).主观需求D).非功能性需求 4.“系统每天晚上自动生成进货报表”,Actor是: A).系统B).其它系统C).时间D).报表审阅者 5.数据流程图是一个分层的概念模型,分三个层次:,分别描述系统的不同特征 A).总体图、二级图、三级图B).总体图、二级图、细节图 C).总体图、零级图、细节图D).总体图、次级图、细节图 6.正式运行系统后能够产生的收益被称为 A).直接效益B).运营效益C).最佳效益D).启动效益

7.“以相对短的时间和相对低的成本来确定给定的问题在其约束条件内是否有解、有几种解以及哪个是最佳解”,这指的是软件开发过程中的 A).问题定义B).可行性研究C).需求分析D).设计 8.在处理过程定义中,有时存在多重嵌套的情况,对于复杂的条件组合问题,用自然语言往往不能直观、清楚地表述处理的过程,因此,常常使用方法。 A).数据字典B).判定表和判定树C).用例图D).螺旋模型 9.设C(X)定义问题X的复杂性函数,E(X)定义解决问题X所需要工作量的函数,对于两个问题p1和p2,一般情况下如果C(p1)E(p2) B).C(p1+p2)=C(p1)+C(p2) C).E(p1+p2)>E(p1)+E(p2) D).E(p1+p2)

软件工程 期末考试题(含答案)

一、选择题 1.瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和_。 ( C ), A .详细计划 B .可行性分析 C .运行阶段 D. 测试与排错 2.在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试年勺系统测试阶段的目标( A ) A .需求分析阶段 B .详细设计阶段 C.概要设计阶段 D .可行性研究阶段, 3.软件工程的出现主要是由于(C ) , A.程序设计方法学的影响 B.其它工程科学的影响 C.软件危机的出现 D.计算机的发展, 4.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实旅的主要保证是(C) A.硬件环境 B.软件开发的环境 C.软件开发工具和软件开发的环境 D.开发人员的素质 5.软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为(B) A.相互排斥B相互补充C独立使用 D.交替使用 6.UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法(C) A.基于瀑布模型的结构化方法 B.基于需求动态定义的原型化方法C.基于对象的面向对象的方法 D.基于数据的数据流开发方法 7.在下面的软件开发方法中,哪一个对软件设计和开发人员的开发要求最高(B) A.结构化方法B原型化方法C面向对象的方法 D.控制流方法 8.结构化分析方法是一个预先严格定义需求的方法,它在实施时强调的是分析对象的(B) A.控制流 B.数据流 C.程序流 D.指令流 9.软件开发的结构化生命周期方法将软件生命周期划分成(A) A.计划阶段.开发阶段.运行阶段 B.计划阶段.编程阶段.测试阶段 C.总体设计.详细设计.编程调试 D.需求分析.功能定义.系统设计 10.软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是(C)

软件工程期终考试卷

《软件工程》考试试卷(开卷) 学号姓名 一、单向选择题(每小题1分,共15分) 在每个小题的四个备选答案中选择一个正确的答案。 1.软件是()。 A. 处理对象和处理规则的描述 B. 程序 C. 程序及其文档 D. 计算机系统 2.瀑布模型与演化模型的主要区别是()。 A. 活动不同 B. 项目的规模不同 C. 项目管理方法不同 D. 活动组织的方法不同 3.软件生命周期一般包括三个时期:软件定义期、软件开发期和软件运行期。下述 ()不是软件开发期所应包含的活动。 A. 可行性分析 B. 需求获取和需求建模 C. 软件体系结构设计和数据设计 D. 软件集成与系统测试 4.软件开发方法学应给出的主要内容是()。 A. 开发模型 B. 测试方法 C. 开发工具与环境 D. 概念与表示、过程与工具 5.采用结构化分析方法所建立的系统模型主要捕获了()。 A. 过程属性、对象及其关系 B. 数据结构 C. 对象及其关系、对象行为信息

D. 数据源点和终点、加工、数据流、数据存储以及加工输入、输出之间的逻辑关系 6.软件需求规格说明的内容不应包括()。 A. 主要功能 B. 算法的详细描述 C. 用户界面及运行环境 D. 软件的性能 7.软件设计的主要任务是()。 A. 给出软件解决方案 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型 8.软件模块的内部实现和外部可访问性分离,这是指软件的()。 A. 继承性 B. 共享性 C. 封装性 D. 抽象性 9.面向对象分析方法的基本思想之一是()。 A. 基于过程或函数来构造一个模块 B. 基于事件及对事件的响应来构造一个模块 C. 基于问题领域的成分来构造一个模块 D. 基于数据结构来构造一个模块 10.程序的三种基本控制结构是()。 A. 过程、子程序和分程序 B. 顺序、选择和重复 C. 递归、迭代和回溯 D. 调用、返回和转移 11.软件测试的目标是()。 A. 证明软件是正确的 B. 发现错误、降低错误带来的风险 C. 排除软件中所有的错误 D. 与软件调试相同 12.按不同人员的工作内容来分类软件过程,支持过程包括()。

软件工程与UML》期末试题

《软件工程与U M L》期末试题适用专业:考试时间120分钟 一、单项选择题(本大题共小题,每题分,共分) 1. UML图不包括( D ) A. 用例图 B. 类图 C. 状态图 D. 流程图 2. 下面哪一项不是包图中的关系( D ) A .<> B. <> C. <> D. <> 3. 在类图中,下面哪个符号表示继承关系( C ) A. B. C. D. 4. 在类图中,“#”表示的可见性是( B ) A. Public B. Protected C. Private D. Package 5. 消息的组成不包括( C ) A. 接口 B. 活动 C. 发送者 D.接收者 6. 下面哪个视图属于UML语言的交互图( D ) A. 行为图 B. 状态图 C. 实现图 D. 顺序图 7. UML语言包含几大类图形( B ) A. 3 B. 5 C. 7 D. 9 8. RUP中有( C )个核心过程工作流。 A. 1 B. 3 C. 6 D. 9 9. 类之间的关系不包括( D ) A. 依赖关系 B. 泛化关系 C. 实现关系 D. 分解关系

10. 在UML中,协作图的组成不包括( C ) A. 对象 B. 消息 C. 发送者 D. 链 11. 下面哪个符号代表包图( A ) B. C. D. A. 12. 下列对状态图描述不正确的是( C ) A. 状态图通过建立类对象的生命周期模型来描述对象随时间变化的动态行为。 B. 状态图适用于描述状态和动作的顺序,不仅可以展现一个对象拥有的状态,还可以说明事件如何随着时间的推移来影响这些状态。 C. 状态图的主要目的是描述对象创建和撤销的过程中资源的不同状态,有利于开发人员提高开发效率。 D. 状态图描述了一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处状态对不同的事件做出反应。 13. 在UML的顺序图中,通常由左向右分层排列各个对象,正确的排列方法是( A ) A. 执行者角色控制类用户接口业务层后台数据库 B. 执行者角色用户接口控制类业务层后台数据库 C. 执行者角色控制类用户接口后台数据库业务层 D. 执行者角色用户接口业务层控制类后台数据库 14. 多对象是UML哪个视图中的概念( C ) A. 类图 B. 状态图 C. 协作图 D. 组件图 15. 构件图的组成不包括( C ) A. 接口 B. 构件 C. 发送者 D. 依赖关系 16. 在UML中,接口有几种表达方式( A )

软件工程与UML期末试题及答案

软件工程与U M L期末试 题及答案 It was last revised on January 2, 2021

软件工程与U M L建模复习题B 一:单选题 1.是在系统之外,透过系统边界与系统进行有意义交互的任何事物 A).相关系统B).Use Case C).Class D).Actor 2.软件工程是以为核心 A).过程B).面向对象C).软件开发D).质量 3.“系统应具有很高的可靠性,使用该产品的前3个月,系统不应该出现崩溃(数据不可恢复)的现象”,这属于 A).功能性需求B).客观需求C).主观需求 D).非功能性需求 4.“系统每天晚上自动生成进货报表”,Actor是: A).系统B).其它系统C).时间 D).报表审阅者 5.数据流程图是一个分层的概念模型,分三个层次:,分别描述系统的不同特征 A).总体图、二级图、三级图B).总体图、二级图、细节图 C).总体图、零级图、细节图D).总体图、次级图、细节图 6.正式运行系统后能够产生的收益被称为

A).直接效益B).运营效益C).最佳效益D).启动效益 7.“以相对短的时间和相对低的成本来确定给定的问题在其约束条件内是否有解、有几种解以及哪个是最佳解”,这指的是软件开发过程中的 A).问题定义B).可行性研究C).需求分析 D).设计 8.在处理过程定义中,有时存在多重嵌套的情况,对于复杂的条件组合问题,用自然语言往往不能直观、清楚地表述处理的过程,因此,常常使用方法。A).数据字典B).判定表和判定树C).用例图 D).螺旋模型 9.设C(X)定义问题X的复杂性函数,E(X)定义解决问题X所需要工作量的函数,对于两个问题p1和p2,一般情况下如果C(p1)E(p2) B).C(p1+p2)=C(p1)+C(p2) C).E(p1+p2)>E(p1)+E(p2) D).E(p1+p2)

《软件工程与UML》期末试题及答案

软件工程与UML建模复习题B 一:单选题 1.是在系统之外,透过系统边界与系统进行有意义交互的任何事物 A).相关系统B).Use Case C).Class D).Actor 2.软件工程是以为核心 A).过程B).面向对象C).软件开发D).质量 3.“系统应具有很高的可靠性,使用该产品的前3个月,系统不应该出现崩溃(数据不可恢复)的现象”,这属于 A).功能性需求B).客观需求C).主观需求D).非功能性需求 4.“系统每天晚上自动生成进货报表”,Actor是: A).系统B).其它系统C).时间D).报表审阅者 5.数据流程图是一个分层的概念模型,分三个层次:,分别描述系统的不同特征 A).总体图、二级图、三级图B).总体图、二级图、细节图 C).总体图、零级图、细节图D).总体图、次级图、细节图 6.正式运行系统后能够产生的收益被称为 A).直接效益B).运营效益C).最佳效益D).启动效益 7.“以相对短的时间和相对低的成本来确定给定的问题在其约束条件内是否有解、有几种解以及哪个是最佳解”,这指的是软件开发过程中的 A).问题定义B).可行性研究C).需求分析D).设计 8.在处理过程定义中,有时存在多重嵌套的情况,对于复杂的条件组合问题,用自然语言往往不能直观、清楚地表述处理的过程,因此,常常使用方法。 A).数据字典B).判定表和判定树C).用例图D).螺旋模型 9.设C(X)定义问题X的复杂性函数,E(X)定义解决问题X所需要工作量的函数,对于两个问题p1和p2,一般情况下如果C(p1)E(p2) B).C(p1+p2)=C(p1)+C(p2) C).E(p1+p2)>E(p1)+E(p2) D).E(p1+p2)

《软件工程与UML》期末试题

《软件工程与UML》期末试题 :120分钟 一、单项选择题(本大题共小题,每题分,共分) 1. UML图不包括(D ) A. 用例图 B. 类图 C. 状态图 D. 流程图 2. 下面哪一项不是包图中的关系(D ) A .<> B. <> C. <> D. <> 3. 在类图中,下面哪个符号表示继承关系(C ) A. B. C. D. 4. 在类图中,“#”表示的可见性是(B ) A. Public B. Protected C. Private D. Package 5. 消息的组成不包括(C ) A. 接口 B. 活动 C. 发送者 D.接收者 6. 下面哪个视图属于UML语言的交互图(D ) A. 行为图 B. 状态图 C. 实现图 D. 顺序图 7. UML语言包含几大类图形(B ) A. 3 B. 5 C. 7 D. 9 8. RUP中有(C )个核心过程工作流。 A. 1 B. 3 C. 6 D. 9 9. 类之间的关系不包括(D ) A. 依赖关系 B. 泛化关系 C. 实现关系 D. 分解关系 10. 在UML中,协作图的组成不包括(C ) A. 对象 B. 消息 C. 发送者 D. 链 11. 下面哪个符号代表包图(A ) A. B. C. D. 12. 下列对状态图描述不正确的是(C ) A. 状态图通过建立类对象的生命周期模型来描述对象随时间变化的动态行为。 B. 状态图适用于描述状态和动作的顺序,不仅可以展现一个对象拥有的状态,还可以说明事件如何随着时间的推移来影响这些状态。 C. 状态图的主要目的是描述对象创建和撤销的过程中资源的不同状态,有利于开发人员提高开发效率。 D. 状态图描述了一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处状态对不同的事件做出反应。 13. 在UML的顺序图中,通常由左向右分层排列各个对象,正确的排列方法是(A ) A. 执行者角色控制类用户接口业务层后台数据库 B. 执行者角色用户接口控制类业务层后台数据库 C. 执行者角色控制类用户接口后台数据库业务层 D. 执行者角色用户接口业务层控制类后台数据库 14. 多对象是UML哪个视图中的概念(C ) A. 类图 B. 状态图 C. 协作图 D. 组件图 15. 构件图的组成不包括(C )

河北工业大学软件工程期末复习

软件工程期末复习总结 第一讲概述(选择U填空U简答) 1.1 软件工程的研究内容 软件工程要考虑专业软件开发所需要的理论、方法和工具----工程技术问题 软件工程要考虑如何有效的在软件开发中利用有限的成本资源----工程管理的问题1.2 什么是软件? 软件包括:---软件的内涵 ①能够提供客户所需功能与性能的计算机程序; ②使程序能够适当的操作信息的数据结构; ③用以描述程序开发过程及使用的文档。 软件产品可以为一个特定的用户设计开发,也可以为某一类通用的市场设计开发。软件产品可以分成: 一个新的软件并不一定是全新开发,可以由现有软件或可复用软件成分配置形成。 1.3 什么是软件工程?

软件工程是涉及软件生产各个方面的一门工程学科 软件工程涉及软件生命周期的各个方面,从软件需求的确定到软件退役。 软件工程:(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件;(2)研究(1)中的方法. ——IEEE[IEE93] 1.4 什么是成功的软件项目 一个成功软件项目的三个要素包括: 按时交付不超预算满足用户要求。 1.5 软件过程与软件生命周期的相关概念 软件过程是指开发或制作软件产品的一系列活动及其成果. 所有的软件过程中都包括四个基本活动:(填空) 1. 描述(Specification)- 系统应该提供的功能及其开发约束; 2. 开发(Development)- 软件产品的生产过程; 3. 有效性验证(Validation )- 检验软件产品是否满足了客户的需要; 4. 进化(Evolution )- 按照用户的变更要求不断的改进软件。 软件生命周期是软件过程的另一种形象描述,通常包括需求定义、分析与描述、

《软件工程与UML》期末试题

《软件工程与UML》期末试题 适用专业:考试时间120分钟 一、单项选择题(本大题共小题,每题分,共分) 1.UML图不包括( D) A.用例图? B. 类图?? C. 状态图?D.流程图 2. 下面哪一项不是包图中的关系( D ) A .<> ?B. <>??C. <<trace>>??D. <<stub>> 3.在类图中,下面哪个符号表示继承关系( C) A. B. C.D. 4. 在类图中,“#”表示的可见性是(B) A.Public??B. Protected?C.Private ?D.Package 5. 消息的组成不包括( C ) A.接口? B.活动??C.发送者 D.接收者 6.下面哪个视图属于UML语言的交互图( D ) A.行为图??B. 状态图? C. 实现图D. 顺序图 7. UML语言包含几大类图形(B) A. 3 B. 5 C.7??D.9 8.RUP中有( C)个核心过程工作流。 A. 1 B. 3? C. 6?D.9 9.类之间的关系不包括( D ) A. 依赖关系B.泛化关系C.实现关系??D. 分解关系 10. 在UML中,协作图的组成不包括(C ) A. 对象B. 消息??C.发送者? D. 链 11.下面哪个符号代表包图(A) A. B. C. D. 12. 下列对状态图描述不正确的是( C ) A.状态图通过建立类对象的生命周期模型来描述对象随时间变化的动态行为。 B.状态图适用于描述状态和动作的顺序,不仅可以展现一个对象拥有的状态,还可以说明事件如何随着时间的推移来影响这些状态。 C.状态图的主要目的是描述对象创建和撤销的过程中资源的不同状态,有利于开发人员提高开发效率。 D.状态图描述了一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处状态对不同的事件做出反应。 13.在UML的顺序图中,通常由左向右分层排列各个对象,正确的排列方法是( A)A. 执行者角色控制类用户接口业务层后台数据库 B.执行者角色用户接口控制类业务层后台数据库 C. 执行者角色控制类用户接口后台数据库业务层 D.执行者角色用户接口业务层控制类后台数据库 14.多对象是UML哪个视图中的概念(C) A. 类图? B. 状态图?C.协作图? D. 组件图 15. 构件图的组成不包括(C)

辽师软件工程期末复习题

说明: 以下试题虽然经过多次整理,但由于时间有限,存在错误或不足之处在所难免。同学们在阅读和使用过程中如发现问题,请你在课程评价的“建议”中指出,具体方法是: 写明大小题号:问题所在;正确内容。 在此谢谢你提供的方便和指正。 一、概念题 1、软工程:是1)将系统性的、规范化的、可定量的方法应用于软件的开发、运 行和维护,即将工程化应用到软件上;2)对1)中所述方法的研究。 2、软件:是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。 3、软件危机:是指在计算机软件的开发和维护过程中遇到的一系列严重问题。 4、软件过程:是软件工程人员为了获得软件产品而在软件工具的支持下实施的 一系列软件工程活动。 5、基线:是已经通过了正式复审的规格说明或中间产品,它可以作为进一步开发 的基础,并且只有通过正式的变化控制过程才能改变。 6、软件配置项:是为配置管理而作为单独实体处理的一个工作产品或软件。 7、对象:是系统中用来描述客观事物的一个实体,它是构成系统给的一个基本单 位,有一组属性和对这组属性进行操作的一组服务组成。 8、软件过程模型:是描述软件过程的整体框架,它是软件过程的一种抽象表示。 9、类:是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供 了统一的抽象描述,其内部包括属性和服务两个主要部分。 10、实体类:用于描述必须存储的信息及其相关行为,它是对系统核心信息的建 模,通常这些信息需要长久地保存。 11、版本:是确定在明确定义的时间点上某个配置项的状态。 12、耦合度:是表示两个子系统之间的关联程度。当一个子系统发生变化时对另

一个子系统的影响很小,则称它们是松散耦合的;反之,如果变化的影响很大时,则称它们是紧密耦合的。 13、软件需求:1)用户解决问题或达到目标所需要的条件或能力。2)系统或系 统部件要满足合同、标准、规范或其他正式规定文档所需要具有的条件或能力。3)一种反映上面1)或2)所描述的条件或能力的文档说明。 14、软件实现:是软件产品由概念到实体的一个关键过程,它将详细设计的结果 翻译成用某种程序设计语言编写的并且最终可以运行的程序代码。 15、内聚性:是子系统内部的相关程度。当子系统中彼此相关的多个对象执行类 似的任务时,则认为该子系统是高内聚的;反之,当子系统内的多个对象彼此不相关时,则认为是低内聚的。 16、软件验证:是指试图证明在软件生存期各个阶段,软件产品或中间产品是否 能够满足客户需求,包括逻辑协调性、完备性和正确性。 17、软件测试:广义上讲,测试是指软件产品生存周期内所有的检查、评审和确 认活动。狭义上讲,测试是对软件产品质量的检查和评价,它一方面检查软件产品中存在的质量问题,同时对产品质量进行客观的评价。 18、软件再工程:是以系统理解为基础,结合逆向工程、重构和正向工程等方法, 将现有系统重新构造成为新的形式。 19、软件确认:是一系列的活动和过程,其目的是保证软件产品能够符合其描述 要求。 20、软件维护:是指在软件运行或维护阶段对软件产品所进行的修改,做这些修 改时可能改正软件中的错误,也可能是增加新的功能以适应新的需求,但是一般不包括软件系统结构上的重大改变。

软件工程期末试题与答案

《软件工程》陆惠恩主编 模拟试题参考答案 一.选择题(2X 10题=20分) 1. 软件工程方法学包括的三个要素是A_|。 A .方法、工具和过程 B .对象、过程和方法 C .分析、设计和编程 D .开发、维护和工程 2. 软件生命周期由口三个时期组成。 A .概要设计、详细设计和系统实现B.可行性分析、系统设计和编码 C .定义、开发和运行维护 D .分析、设计和测试 3. 在软件生命周期模型中,属于文档驱动的是AJ。 A .瀑布模型 B .快速原型模型C.增量模型 D .喷泉模型 4. 结构化分析实质上是一种DJ的活动。 A .访问用户 B .创建快速原型C.产生决策 D .创建模型 5. 以下B_不是模块。 A .过程 B .程序C.函数D .对象 6. 所谓信息隐藏是指隐藏模块的BJ o A .接口部分 B .实现细节C.源代码 D .一切信息 7. 以下说法错误的是|C_|o A .测试不能证明程序是正确的B.测试不能证明程序中没有错误 C .成功的测试是指发现程序的所有错误 D .测试是为了发现程序中的错误 8. 面向对象方法的要素是BJ o A .对象、类、数据类型和算法B.对象、类、继承和消息 C .对象、基类、派生类和继承 D .对象、父类、子类和继承 9. 在用面向对象观点建立的模型中A_|是最基本、最重要、最核心的模型。 A .对象模型 B .动态模型C.功能模型 D .操作模型 10. 用“自底向上”方式建立继承关系是指BJ o A .把现有类细化成更具体的子类B.从现有类泛化出更抽象的父类 C .从较高的层次推导出较低的层次D.从较低的层次抽象出较高的层次

09软件《软件工程与UML》期末大作业考核试卷

软件工程与UML期末大作业新闻中心管理系统UML建模 专业年级:软件09级 学号:0901426 姓名:徐叶芳

目录 一、题目概述 (1) 二、用例模型(总计20分) (2) 1.参与者和用例(10分) (2) 2.用例图(10分) (2) 三、静态模型(总计30分) (3) 1.发现类(20分) (3) 2.类图(10分) (3) 四、动态模型(总计50分) (4) 1.“浏览新闻”时序图(15分) (4) 2.“添加新闻”时序图(15分) (5) 3.“添加新闻”协作图(5分) (5) 4.管理员活动图(15分) (6) I

一、题目概述 新闻中心管理系统主要是为了实现网站某些企业商务网站实时动态新闻的显示及管理的系统。根据企业商务新闻的基本要求,本系统需要完成的主要任务如下。 (1)新闻标题信息分类显示:在进入新闻中心主页时,应该能够根据数据库中存放的信息分类显示最新新闻标题,例如热点新闻中所有最新标题信息,以及行业新闻中最新标题信息等,每个新闻标题都应该提供对应的超级链接,在用户单击该新闻标题后,可以跳转到有关该新闻详细内容的显示页面。 (2)新闻详细内容及相关新闻列表显示:在选择需要查看的新闻标题后,应该可以显示该新闻的详细内容。同时也应该提供与该新闻相关的新闻标题信息的显示,以便于用户查阅与该新闻相关的其他信息。 (3)新闻中心后台管理功能:新闻中心的管理者可以随时向数据库中录入最新的新闻标题及内容,同时也可以编辑修改原有新闻,如果需要也可以删除对应的新闻。 根据以上需求建立用例模型、静态模型、动态模型。要求描述模型元素时使用中文和英文两种方式,如参与者有Reader(读者)、Librarian(图书管理员);绘图时使用英文。 1

(完整)《软件工程与UML》期末试题

(完整)《软件工程与UML》期末试题 编辑整理: 尊敬的读者朋友们: 这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)《软件工程与UML》期末试题)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。 本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)《软件工程与UML》期末试题的全部内容。

《软件工程与UML》期末试题 适用专业:考试时间120分钟 一、单项选择题(本大题共小题,每题分,共分) 1。 UML图不包括( D ) A。用例图B。类图C。状态图D。流程图 2。下面哪一项不是包图中的关系( D ) A 。〈〉 B. <〉C。 <〈trace〉> D. 〈〉 3. 在类图中,下面哪个符号表示继承关系( C ) A. B.C。 D. 4。在类图中,“#”表示的可见性是( B ) A. Public B。Protected C. Private D. Package 5。消息的组成不包括( C ) A. 接口B。活动C。发送者 D.接收者 6。下面哪个视图属于UML语言的交互图( D ) A. 行为图 B. 状态图 C. 实现图D。顺序图 7。 UML语言包含几大类图形( B ) A。 3 B。 5 C。 7 D. 9 8。 RUP中有( C )个核心过程工作流。 A。 1 B. 3 C. 6 D。 9 9. 类之间的关系不包括( D ) A. 依赖关系B。泛化关系 C. 实现关系D。分解关系 10. 在UML中,协作图的组成不包括( C ) A。对象B。消息C。发送者 D. 链 11。下面哪个符号代表包图( A ) D. A。B。 C. 12。下列对状态图描述不正确的是( C ) A. 状态图通过建立类对象的生命周期模型来描述对象随时间变化的动态行为。 B. 状态图适用于描述状态和动作的顺序,不仅可以展现一个对象拥有的状态,还可以说明事件如何随着时间的推移来影响这些状态。 C. 状态图的主要目的是描述对象创建和撤销的过程中资源的不同状态,有利于开发人员提高开发效率。 D。状态图描述了一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处状态对不同的事件做出反应。 13。在UML的顺序图中,通常由左向右分层排列各个对象,正确的排列方法是( A ) A。执行者角色控制类用户接口业务层后台数据库 B. 执行者角色用户接口控制类业务层后台数据库 C。执行者角色控制类用户接口后台数据库业务层 D。执行者角色用户接口业务层控制类后台数据库 14。多对象是UML哪个视图中的概念( C ) A。类图 B. 状态图C。协作图D。组件图

软件工程导论期末考试试题

软件工程导论期末考试试题 一.选择 1、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、幵发阶段和(C)0 A、详细计划 B、可行性分析 C 运行阶段D、测试与排错 2、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中 哪个环节出错,对软件的影响最大(C )0 A、详细设计阶段 B、概要设计阶段 C 需求分析阶段D、测试和运行阶段 3、在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标(A )o A需求分析阶段B、详细设计阶段 C 概要设计阶段D、可行性研究阶段

4、软件工程的出现主要是由于(C )o A.程序设计方法学的影响 B.其它工程科学的影响 C.软件危机的出现 D.计算机的发展 5、软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(C ) A、硬件环境 B 、软件幵发的环境 C软件幵发工具和软件幵发的环境D、幵发人员的素质 6、软件幵发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为(B) A相互排斥B、相互补充 C 独立使用D、交替使用 7、UML是软件幵发中的一个重要工具,它主要应用于哪种软件幵发方法 (C ) A、基于瀑布模型的结构化方法 B、基于需求动态定义的原型化方法

C基于对象的面向对象的方法D、基于数据的数据流幵发方法 8、在下面的软件幵发方法中,哪一个对软件设计和幵发人员的幵发要求最高(B ) A、结构化方法 B、原型化方法 C、面向对象的方法 D、控制流方法 9、结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对 象的(B ) A、控制流 B、数据流 C、程序流 D、指令流 10、软件幵发的结构化生命周期方法将软件生命周期划分成(A ) A、计划阶段、幵发阶段、运行阶段 B、计划阶段、编程阶段、测试阶段 C 总体设计、详细设计、编程调试D、需求分析、功能定义、系统设计 11、软件幵发中常采用的结构化生命周期方法,由于其特征而一般称其为(A ) A瀑布模型B、对象模型C、螺旋模型D、层次模型

相关主题
文本预览
相关文档 最新文档