1.抽象和分解的关系
抽象和分解是软件设计的核心思想。
分解是横向将系统分解为几个相对简单的子系统以及各子系统之间的关系,分解之后每次只需关注经过分解的相对简单的子系统及其相互间的关系,从而降低了复杂度;
抽象则是在纵向上聚焦各自系统的接口,抽象可以分离接口与实现过程,让人更好地关注系统本质,降低复杂度。
分解和抽象一般是一起使用的,可以既将系统分解为子系统,又通过抽象分离接口与实现。
2.重构是什么?在什么情况下发生?
重构:修改软件系统的严谨方法,在不改变代码的外部表现(即系统功能)的情况下改进其内部结构(即提升详细设计结构的质量)。
重构发生在新功能增加完成之后,用于消除新功能所带来的负面影响。
3.单元测试、集成测试、系统测试的区别
单元测试:测试一个单元接口,是对程序单元(软件设计的最小单位)进行正确性检验的测试工作
集成测试:测试多个单元接口,即对程序模块一次性或采用增量方式组装起来,对系统的接口进行正确性检验的测试工作。
系统测试:测试全部单元接口,测试关注整个系统的行为。
单元测试和集成测试更加关注技术上的正确性,重在发现设计缺陷和代码缺陷。系统测试更关注不符合需求的缺陷和需求自身的内在缺陷。