EagleBear2002 的博客

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

第一章-软件工程基础

软件工程的概念:

  1. 应用系统的、规范的、可量化的方法来开发、运行和维护软件,即将工程应用到软件。
  2. 对 1)各种方法的研究。

第二章-软件工程的发展

  1. 1950s:科学计算;以机器为中心进行编程;像生产硬件一样生产软件。
  2. 1960s:业务应用(批量数据处理和事务计算);软件不同于硬件;用软件工艺的方式生产软件。
  3. 1970s:结构化方法;瀑布模型;强调规则和纪律。它们奠定了软件工程的基础,是后续年代软件工程发展的支撑。
  4. 1980s:追求生产力最大化;现代结构化方法/面向对象编程广泛应用;重视过程的作用。
  5. 1990s:企业为中心的大规模软件系统开发;追求快速开发、可变更性和用户价值;web 应用出现
  6. 2000s:大规模 web 应用;大量面向大众的 web 产品;追求快速开发、可变更性、用户价值和创新。
阅读全文 »

本文档依据《中国近现代史纲要(2018 年版)》(高等教育出版社)、《中国近现代史纲要(2021 年版)》(高等教育出版社)、《中华人民共和国史》(人民出版社、高等教育出版社)、《从鸦片战争到五四运动》(胡绳著)等文献整理,多个来源互为补充,相左之处予以标明。

睡狮初醒:资本-帝国主义对华侵略

资本-帝国主义列强,对中国的侵略,首先和主要的是进行军事侵略。

鸦片战争

1840 年,英国发动了侵略中国的鸦片战争。中国历史的发展从此发生重大转折。

阅读全文 »

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

什么是软件交付

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

安装与部署

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

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

考试题

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

Bug 起源

第一个 Bug

阅读全文 »

本文主要内容来自 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);
}

封装类的职责

阅读全文 »