设计模式、软件测试、软件工程基础

设计模式

设计模式(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)

《王道程序员面试宝典》

原文地址:https://www.cnblogs.com/meiqin970126/p/15434931.html