EagleBear2002 的博客

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

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

什么是软件交付

  1. 软件交付是软件项目的结束阶段,标志着软件开发任务的完成
  2. 软件交付是软件开发与软件维护两个既连续又不同的软件产品生存状态的分水岭。
  3. 只有做好软件交付工作,才是真正地完成整个项目。

安装与部署

  1. 需求阶段:考虑环境约束等
  2. 体系结构设计阶段:进行产品部署的设计决策,包括网络拓扑、库文件、动态链接库、配置文件等
    1. 32 位环境还是 64 位环境等问题
  3. 开发阶段:使用的支持软件也会影响到交付,可能要求客户安装特定支撑软件或者硬件
阅读全文 »

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

考试题

  1. 给出功能需求,设计功能测试用例
  2. 给出设计图,按要求写集成测试用例,Stub 和 Driver
  3. 给出方法的描述,按要求写单元测试用例,Mock Object
  4. Junit 基本用法

Bug 起源

第一个 Bug

阅读全文 »

本文主要内容来自 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. 耦合:耦合描述的是两个模块之间关系的复杂程度:包括内容耦合,公共耦合,重复耦合,控制耦合,印记耦合,数据耦合
阅读全文 »