EagleBear2002 的博客

这里必须根绝一切犹豫,这里任何怯懦都无济于事

本文主要内容来自 SpriCoder的博客,更换了更清晰的图片并对原文的疏漏做了补充和修正。

设计易读的代码

  1. 维护的需要(维护的工作量已经超过了开发的工作量)
    1. 50%-90% 的维护时间在于阅读代码
  2. 团队协作的需要

代码规范

布局格式

阅读全文 »

本文主要内容来自 SpriCoder的博客,更换了更清晰的图片并对原文的疏漏做了补充和修正。

部分名词解释

  1. 测试驱动开发:测试驱动开发要求程序员在编写一段代码之前,优先完成该段代码的测试代码。并在编程中重复执行测试代码,以验证程序的正确性。
  2. 结对编程:两个程序员挨着坐在一起,共同协作进行软件构造活动。

什么是软件构造?

SWEBOK2004

阅读全文 »

本文主要内容来自 SpriCoder的博客,更换了更清晰的图片并对原文的疏漏做了补充和修正。

可修改性及其基本实现机制

  1. 实现的可修改性:涉及到大的场景的修改
    1. 对已有实现的修改
    2. 例如:修改现有促销策略
  2. 实现的可扩展性(DIP & OCP)
    1. 对新的实现的扩展
    2. 例如:增加一条新的促销策略(策略模式)
  3. 实现的灵活性
    1. 对实现的动态配置
    2. 例如:动态修改更改某商品对应促销策略

如何实现可修改性? 重要

  1. 接口与实现的分离
阅读全文 »

本文主要内容来自 SpriCoder的博客,更换了更清晰的图片并对原文的疏漏做了补充和修正。

课前测试

1
2
3
4
5
6
7
8
9
10
11
12
13
void Copy(ReadKeyboard& r, WritePrinter& w) {
int c;
while ((c = r.read ()) != EOF)
w.write(c);
}
void Copy(ReadKeyboard& r, WritePrinter& wp, WriteDisk& wd, OutputDevice dev) {
int c;
while((c = r.read()) != EOF)
if(dev == printer)
wp.write(c);
else
wd.write(c);
}

封装类的职责

阅读全文 »

本文主要内容来自 SpriCoder的博客,更换了更清晰的图片并对原文的疏漏做了补充和修正。

模块化的原则(总结)

  1. 核心就是上面的
  2. 题目是,给例子,发现违反的原则并纠正

面向对象中的模块与耦合

阅读全文 »

本文主要内容来自 SpriCoder的博客,更换了更清晰的图片并对原文的疏漏做了补充和修正。

内聚和耦合概念重要

  1. 内聚:内聚表达的是一个模块内部的联系的紧密型:包括信息内聚、功能内聚、通信内聚、过程内聚、时间内聚、逻辑内聚和偶然内聚。
1
2
3
4
5
public class Rous {
public static int findPattern(String text, String pattern)
public static int average(Vector numbers)
public static OutputStream openFile(String fileName)
}
  1. 耦合:耦合描述的是两个模块之间关系的复杂程度:包括内容耦合,公共耦合,重复耦合,控制耦合,印记耦合,数据耦合
阅读全文 »

本文主要内容来自 SpriCoder的博客,更换了更清晰的图片并对原文的疏漏做了补充和修正。

详细设计基础

  1. 详细设计的出发点:软件详细设计是在软件体系结构设计之后进行,以需求开发的结果(需求规格说明和需求分析模型)和软件体系结构的结果(软件体系结构设计方案与原型)为出发点。

什么是详细设计

  1. 中层设计是对特定的模块的,以及针对特定模块的对象/类的低级设计
阅读全文 »

本文主要内容来自 SpriCoder的博客,更换了更清晰的图片并对原文的疏漏做了补充和修正。

用户和不好的设计

  1. 系统用户通常通过系统界面而非功能来判断系统:用户界面的设计应与预期用户的技能,经验和期望相匹配。
  2. 界面设计不当会导致用户发生灾难性错误:不好的 UI 的设计往往是很多软件系统不被使用的原因。
  3. IPAD 的良好的体验感和可操作性,而早期的 Andriod 操作系统则主要是从工程师角度出发的操作系统。
  4. 比如医院书写病历:老医生打字困难,所以我们我们应该针对性的进行设计。

什么是人机交互设计(HCI)

阅读全文 »

本文主要内容来自 SpriCoder的博客,更换了更清晰的图片并对原文的疏漏做了补充和修正。

体系结构设计过程(简略步骤) 重要

  1. 分析关键需求和项目约束:分析用例文档和需求规格说明书(包含需求规格和项目约束)。注意既要考虑功能性需求,又要考虑非功能性需求,甚至很大意义上体系结构设计是为了满足非功能性需求。
  2. 通过选择体系结构风格:选择分层风格(信息系统、并行开发、非 web 应用),进行评审。
  3. 进行软件体系结构逻辑(抽象)设计:产生逻辑包图
  4. 依赖逻辑设计进行软件体系结构(实现)设计:产生物理类图
  5. 完善体系结构设计:关键类图,持久化数据格式的定义等
  6. 添加构件接口:包、重要文件的创建,定义接口
  7. 迭代过程 3-6
  1. 步骤 1-3 是逻辑设计,步骤 4-7 是物理设计
  2. 本文接下来的部分将要按照这个思路进行下去

第一步:分析关键需求和项目约束

阅读全文 »

本文主要内容来自 SpriCoder的博客,更换了更清晰的图片并对原文的疏漏做了补充和修正。

软件体系结构

  1. 1969 年出现软件体系结构
  2. 历史部分了解即可

Until the late 1980 直到 1980 年底

  1. 从那时到 1980 年代后期,“体系结构”一词的使用主要是指系统体系结构(即计算机系统的物理结构),或者有时是指给定的一系列计算机指令集的狭义含义。
  2. 有关软件系统组织的主要信息来自 1975 年的 Fred Brooks,1983 年的 Butler Lampson,1972 年至 1986 年的 David Parnas 以及 1985 年的 John Mills(其文章着眼于架构的过程和实用性)。
阅读全文 »