软件设计每日错题知识点总结(4)_子类

【知识分析】

随着软件开发工作的开展,会得到许多工作产品或阶段产品,还会用到许多工作软件。所有这些独立的信息项都要得到妥善的管理,绝对不能出现混乱,以便于在提出某些特定要求时,将它们进行约定的组合来满足使用目的。这些信息项目是配置管理的对象,称为软件配置项。

软件配置项目可以分为以下几类:

1)      环境类,指软件开发环境或软件维护环境,例如 编译器、操作系统、编译器、数据库管理系统、开放工具、项目管理工具、文档编制工具等。

2)      定义类,是需求分析与定义阶段结束后得到的工作产品,例如需求规格说明、项目开发计划、设计标准或设计准则、验收测试计划等。

3)      设计类,设计阶段结束后得到的工作产品,例如系统设计规格说明、程序规格说明、数据库设计、编码标准、用户界面标准、测试标准、系统测试计划、用户手册等。

4)      测试类,系统测试完成后的工作产品,例如系统测试数据、系统测试结果、操作手册、安装手册等。

5)      维护类,进入维护阶段以后产生的工作产品。


软件设计每日错题知识点总结(4)_子类_02

【知识解析】

敏捷开发式一种以人为核心、迭代、循序渐进的开发方法。 在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可以独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

敏捷开发的原则包括:

1)      我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。

2)      即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。

3)      经常性交付可以工作的软件,交付的间隔可从几周到几个月,交付的时间间隔越短越好。但不要求每次交付的都是系统访完整功能。

4)      在整个项目开发期间,业务员和开发人员必须每天都在一起工作。

5)      围绕被激励起来的人来构建项目。给他们提供所需要的环境和支持,并信任他们能够完成工作。

6)      在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面交谈。

7)      工作的软件是首要进度度量标准。

8)      敏捷过程提可持续发展的速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。

9)      不断的关注优秀的技能和哈多设计会增强敏感能力。

10)  简单——使未完成的工作最大化的艺术——是根本的。

a)      最好的构架、需求和设计出自与自组织的团队。

b)     每隔一段时间,团队会在如何才能更有效的工作方面进行反省,然后相应的对自己的行为进行调整。


软件设计每日错题知识点总结(4)_系统测试_03

【知识分析】

每种设计模式都有特定的意图,描述一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心,该方案能够重用而不必做重复劳动。

组合(Composite)模式将对象组合成树形结构以表示“部分—整体”的层次结构,使得用户对单个对象和组合对象的使用局域一致性。适用于:想表示对象的部分—整体层次结构:希望用户忽略组合对象与单个对象的不同,用户将统一是使用组合结构中的所有对象。

外观(Facade)模式为子系统中的一组接口提供一个一致的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易被使用。适用于:要为一个复杂子系统提供一个简单接口时,子系统往往因为不断演化而变得越来越复杂;客户程序与抽象类的实现部分之间存在着很大的依赖性;当需要构建一个层次结构的子系统时,使用Façade模式定义子系统中每层的入口点。

享元(Flyweight)模式运用共享技术有效地支持大量细粒度的对象。适用于:一个应用程序使用了大量的对象;完全由于使用大量的对象,造成很大的存储开销;对象的大多数状态都可变为外部状态;如果删除对象的外部状态,那么可以用相对较少的共享对象;应用程序不依赖于对象标识。

装饰器(Decorator)模式描述了以透明围栏里支持修饰的类和对象的关系,动态地给一个对象添加一些额外的职责,从增加功能的角度来看,装饰器模式相比于生成子类更加灵活。适用于:在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责;处理哪些可以撤销的职责;当不能采用生成子类的方式进行扩充时。

工厂方法(Factory Method)定义一个用于创建对象的接口,让子类决定将哪一个类实例化,使一个类的实例化延迟到其他子类。适用于:当一个类不知道它所必须创建的类的类的对象的时候;当一个类希望由它的子类来指定它所创建的对象的类的时候;当类将创建对象的职责委托给多个帮助子类中的某一个,并且希望将哪一个帮助子类是代理者这一信息局部化的时候。

观察者(Observer)模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。适用于:当一个抽象模型有两个方面,其中一个方面依赖于另一个方面,将这两者封装在独立的对象中以使他们可以各自独立的改变和复用;当对一个对象的改变需要同时改变其他对象,而不知道具体有多少对象有待改变时;当一个对象必须通知其他对象,而它又不能假定其他对象是谁,即不希望这些对象是紧耦合的。

中介者(Mediator)用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。适用于:一组对象以定义良好但是复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解;一个对象引用其他对象并且直接与这些对象通信,导致难以复用该对象;想定制一个分布在多个类中的行为,而又不想生成太多的子类。如使一个后端数据模型能够被多个前端用户界面连接,采用此模式最合适。