小步快跑:逐步进化式的程序优化过程。
演进式设计,迭代式开发;
软件——满足功能需求;
软件开发过程是一个由简单到复杂循序渐进的过程。
对于变化,可以通过重构来适应变化。
当软件因为需求变更而开始逐渐退化时,运用软件重构改善我们的结构,使之重新适应软件需求的变化。
重构的方法:
拆分类、函数:单一职责原则。(分久必合、合久必分);
提高代码复用率:封装、抽取父类、类、函数;
发现程序可扩展点:开闭原则,过程的扩展与放置钩子——运用模板模式增加可扩展点,面向切面的可扩展设计;
降低程序依赖度:接口与工厂模式;与外部系统解耦——适配器模式,方法的解耦——策略模式,过程的解耦——命令模式;
分层:
领域驱动设计:
1、TIPS
(1)什么是重构
重构:改变软件的内部结构,但要保证系统中的每个接口其输入输出不变;
贯穿整个重构过程的是不断地测试(先手工测试,等条件成熟,进行代码级的自动化测试)。修改一点点就进行一次测试。
(2)软件重构第一步就是拆分。
当重复代码被割裂成碎片时——继承结合模板模式;
继承的泛滥——桥接模式;
透明的功能扩展与设计——组合模式与装饰模式;
解耦与自动化测试;
(3)什么时候重构
重构让程序可读;
重构,才好复用;
先重构,再扩展;
需求变更是我们去重构的主要动因。
当原程序不适应新的需求时,先重构系统使之首先适应新的需求,再去实现这些需求;
重构方法可分为以下几个层次:
方法的重构、对象的重构、对象间的重构、继承体系间的重构、组织数据的重构、体系架构的重构;
(4)怎样拥抱变化
领域才是软件系统的心;
领域模型分析方法;
领域驱动设计——使用领域模型与客户一起设计;
(5)如何评价软件质量
(6)领域驱动设计思想:
在面向对象的世界里,我们设计的类、方法、关联,应当与现实世界中的事物、行为,及其相互的关系对应起来。现实世界有什么事物,这些事物有什么行为,相互之间是什么关系,则我们在软件世界里就应当设计什么类、什么方法和它们之间的关联关系。
2、PS
(1)QTP
使用QTP的目的是想用它来执行重复的手工测试。
(2)软件修改的四种动机
a、增加新功能;
b、原有功能有bug;
c、改善原有程序的结构;——提高软件内部的质量;
d、优化原有系统的性能;
(3)什么是高质量的软件
易读;保证维护容易;保证需求变更轻易进行,而不是大改——要做到,需要系统重构,持续不断对内部质量进行优化改进;