Software Engineering

http://www.uml.org.cn/oobject/OObject.asp
http://www.xin3721.com/eschool/rjgcjc/

UML: Unified Modeling Language


软件需求

需求分析 ➕ 需求定义 ➡️ 快速原型 ➡️ 需求说明书

概要设计说明书**(文)** ➕ 详细设计说明书

软件设计

组件图

模块之间的关系(包括:运行时库,可执行文件)

序列图

业务的作业流程(先后关系)

类图

系统的子系统. 目的:构建所有必须的类,以及这些类之间的关系

部署图

描述了系统的物理布局,如数据库服务器,因特网等之间的关系


软件测试

测试报告文

  • 单元测试(模块的测试,可以并行) +
  • 集成测试(模块的集成测试,自顶向下或自底向上测试法,主要依据设计文档) +
  • 系统测试(功能测试、压力测试等,主要依据需求规格说明书)

黑盒测试

又称功能测试(着眼在接口上).根据需求,设计文档来测试

白盒测试

又称结构测试,对源代码进行测试,检测代码中每条分支和路径.

JIRA

错误管理(或bugzilla), LoadRunner:压力测试, 按键精灵:功能测试


软件维护

软件配置管理(软件发布), 用户手册


软件开发模型

  • 瀑布模型 线性化的模型,很难回溯,过于的理想,现实的问题都是非线性的
  • 增量模型 分模块并行开发,每一个模块开启一个流水线

泛化(generalization) is a

继承 inheritance/extends

  A ——|> B

实现 implements

  A ()---|> B

依赖(dependent) use a

  • A类有一个method,它的参数类型是B;
  • A类中有个一方法,其实现中用到了一个CB类型的局部变量;
  • A类中有一个方法它调用了B的一个静态方法;
  A ---> B

关联(association) has a

  • CA中有一个成员是CB类型或CB&类型(CA,CB地位相等)
  • CA中有一个成员是全局的,它是CB类型对象
  • 双向的关联关系可以有两个箭头或者没有箭头; 自身关联表示,CA有一个CA(或CA&)类型的成员
  A <>——> B

聚合(aggregation: has a)

  • 菱形为实心则为 组合Composition:contains a
  • 聚合和组合都是一种更强的关联关系,都表现为:CA有一个CB类型的成员,只能用语义来区别他们:
    部分的生命周期是否独立于整体?
  A <>---> B

Rose

Rational Rose 逆向工程

新建组件 - 属性-语言 - VC++

组件右键 - Assign to project - 关联工程

组件右键 - update model

但是上面的方法可能生成的类图并不完整.

使用ANSI C++逆向工程

属性-语言 - ANSI C++

组件右键 - ANSI C++-属性 - 添加工程目录,添加文件 - 确定

组件右键 - ANSI C++ - Reverse Engineer

新建类图 - 双击 - Query-Add Classes

如果需要显示的类图简洁些(只显示类名)

Tools - Options - Diagram - Show all…

组合关系

在聚合关系的属性上 Role B Detail - By Value