zoukankan      html  css  js  c++  java
  • 设计模式、软件测试、软件工程基础

    设计模式

    设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易理解、保证代码可靠性。

    面向对象的三大基本特征(继承、封装、多态)

    面向对象(Object Oriented Programming) = 对象 + 类 + 继承 + 消息通信

    对象:包含现实世界物体特征的抽象实体

    类:具有相同属性和操作功能的对象的集合与抽象,类是对象的抽象

    继承

    子类继承父类非private的属性和功能;子类可扩展父类没有的功能;子类能够以自己的方式实现父类的功能。

    继承是多态的前提。

    封装

    每一个对象都包括它能进行操作所须要的全部信息,这个特性成为封装,因此对象不必依赖其它对象来完毕自己的操作。

    封装能提高代码复用性和安全性。

    多态

    表示不同的对象可运行同样的动作,但要通过它们自己的实现代码来运行。

    多态能提高程序的拓展性。

    面向对象的五个基本设计原则

    单一职责原则、开放封闭原则、依赖倒置原则、接口隔离原则、Liskov替换原则

    注:设计模式通过实现这些原则,达到代码复用、增加可维护性的目的

    设计模式的七大原则

    单一职责原则(Single Responsibility Principle 或 SRP)

    一个类只负责"一个功能"(类的功能要单一),这样可以使程序更利于维护。

    开放封闭原则(Open-Closed Principle 或 OCP)

    软件实体(类、模块、函数等)可以被扩展,但是不能被修改。

    依赖倒置原则(Dependency Inversion Principle 或者 DIP)

    高层模块不应该依赖底层模块,两者都应该依赖抽象;

    抽象不应该依赖细节,细节应该依赖抽象;

    要针对接口编程,不要针对实现编程;

    接口隔离原则(Interface Segregation Principle 或者 ISP)

    使用多个专门的接口比使用单一的总接口要好。

    里氏替换原则(Liskov Substitution Principle 或者 LSP)

    任何基类(父类)可以出现的地方,子类一定可以出现。

    迪米特法则(Law of Demeter 或者 LoD)

    又称最少知识原则,一个对象只与最直接的朋友们通信。

    组合/聚合复用原则(Composition/Aggregation Reuse Principle 或者 CARP)

    尽量使用合成/聚合的方式,而不是使用继承。

    设计模式四要素

    1.模式名称:为每个设计模式取个名字,方便交流.

    2.问题:描述在什么场景下,出现什么样的特定的问题.

    3.解决方案:描述如何解决这个问题.

    4.效果:描述模式应用的效果,以及可能带来的问题,或者使用中需要权衡的问题

    设计模式的分类

    设计模式分为三种类型,共23类

    创建型模式

    通过以某种方式控制对象的创建来解决问题。

    包括:单例模式(Singleton)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)、工厂模式(Factory Method)、原型模式(Prototype)、简单工厂模式(Simple Factory)

    结构性模式

    描述如何组合类和对象以获得更大的结构。

    包括:适配器模式(Adapter)、桥接模式(Bridge)、装饰模式(Decorator)、组合模式(Composite)、外观模式(Facade)、享元模式(Flyweight)、代理模式(Proxy)

    行为型模式

    描述算法和对象间职责的分配

    包括:模板方法模式(Template Method)、命令模式(Command)、迭代器模式(Iteratior)、观察者模式(Observer)、中介者模式(Mediator)、备忘录模式(Memento)、​ 解释器模式(Interpreter)、状态模式(State)、策略模式(Strategy)、职责链模式(Chain of Responsibility)、访问者模式(Visiter)

    设计模式vs重构

    设计模式是重构的目标,重构是达到目标的手段;

    重构并不排斥提前设计,重构并不是不需要设计;

    合理的提前设计 + 重构来不断的改进设计 ==〉趋近于优秀的系统

    软件工程&软件测试

    软件测试:在软件投入生产性运行之前,对软件需求分析、设计规格说明和编码的最终复审。

    软件工程:将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件

    软件

    计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。

    软件生存期

    一个软件从提出开发要求开始直到该软件报废为止的整个时期。包括软件定义、软件开发和运行维护

    软件定义时期三阶段:问题定义、可行性分析、需求分析

    软件开发时期四阶段:概要设计、详细设计、编码、测试

    软件工程方法三要素

    方法、工具和过程

    软件开发过程

    问题定义、需求开发、软件设计、软件构造、软件测试

    常用生存期模型

    瀑布模型、V模型、原型模型、增量模型、渐进式阶段模型、螺旋式模型、敏捷模型

    软件需求

    用户对软件的功能和性能的要求。

    软件需求三层次:业务需求、功能需求和用户需求。

    需求建模基本方法:原型法、结构化分析方法、面向对象的用例分析法、功能列表法。

    软件测试(过程、黑盒、白盒)

    软件测试过程:单元测试、集成测试、确认测试、系统测试

    黑盒测试:把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。  等价类划分、边界值分析属于黑盒测试

    白盒测试:对软件的过程性细节做细致的检查。逻辑覆盖(语句、判定、判定-条件、条件组合、路径)属于白盒测试

    项目管理

    定义:项目管理是就是运用系统理论和管理方法,通过一个临时性的专门的柔性组织,对项目及其资源进行计划、组织、协调和控制,以实现项目目标的管理方法;

    项目管理对象:人员、产品、过程、项目;

    项目是一次性的,日常运作是重复性的;

    项目管理三要素:时间、质量、成本;

    项目管理五个过程:启动、计划、控制、执行、结束。

    项目是一个组织为实现自己既定的目标,在一定的时间、人员和其它资源的约束下所开展的一种有一定独特性、一次性和风险性的工作

    其他

    面向对象分析的三个模型:用例模型、对象模型、交互模型

    项目组织结构主要类型:职能型、项目型、矩阵型

    软件体系结构:具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。

    MVC框架:模型—视图—控制器(model-view-controller)框架

    参考:

    设计模式基础_GeekDengshuo-CSDN博客

    设计模式基础 - 小白个人成长记 - 博客园 (cnblogs.com)

    Java设计模式之初学者笔记——设计模式基础讲解_忧伤的可乐鸡-CSDN博客

    【大话设计模式】——浅谈设计模式基础 - yutingliuyl - 博客园 (cnblogs.com)

    《王道程序员面试宝典》

  • 相关阅读:
    UVA 11925 Generating Permutations 生成排列 (序列)
    UVA 1611 Crane 起重机 (子问题)
    UVA 11572 Unique snowflakes (滑窗)
    UVA 177 PaperFolding 折纸痕 (分形,递归)
    UVA 11491 Erasing and Winning 奖品的价值 (贪心)
    UVA1610 PartyGame 聚会游戏(细节题)
    UVA 1149 Bin Packing 装箱(贪心)
    topcpder SRM 664 div2 A,B,C BearCheats , BearPlays equalPiles , BearSorts (映射)
    UVA 1442 Cave 洞穴 (贪心+扫描)
    UVA 1609 Foul Play 不公平竞赛 (构(luan)造(gao)+递归)
  • 原文地址:https://www.cnblogs.com/meiqin970126/p/15434931.html
Copyright © 2011-2022 走看看