JAVA与UML
1. UML和 软件工程
1> 增量和迭代(iterative and increamental)
增量 数量,大小或者范围的增加;添加或获得某些东西;一系列有规则的增加或进步.
迭代 用来产生所需结果的过程,通过重复一系列的操作,逐渐逼近所需结果.
2> 统一过程
3> 协同过程
4> CMM
CMM即Capability Maturity Model for Software,意为“软件能力成熟度模型”。分为质量等级(CMM1~CMM5),分别为:初始级、可重复级、已定义级、已管理级和优化级.
图1.0
1.4.1 初始级
初始级的软件机构缺乏对软件过程的有效管理,其软件项目的成功来源于个人英雄主义而非机构行为,因此它不是可重复的。
1.4.2 可重复级
项目计划和跟踪的稳定性,项目过程的可控性和以往成功的可重复性.
本级的关键过程领域(KPA)包括:
1.需求管理(Requirements Management)
客户的需求是软件项目的基础。软件需求管理的目的是在客户和软件项目之间达成对客户需求的一致理解。
2.软件项目计划(Software Project Planning)
为软件工程和项目管理建立一个合理的计划。
3.软件项目的跟踪和监督(Software Project Tacking and Oversight)
使管理者对实际的软件项目进展过程有足够的了解,以在项目效能偏离计划太多是采取有效措施。
4.软件子合同管理(Software Subcontract Management)
选择合格的分包商,并有效管理之。
5.软件质量保证(Software Quality Assurance)
对软件项目过程及其间生产的各个产品进行监管以保证最终软件质量。
6.软件配置管理(Software Configuration Management)
在整个软件生命周期里建立并维护软件项目的工作产品的完整性。
1.4.3 已定义级
软件过程已被提升成标准化过程,从而更加具有稳定性、可重复性和可控性.
1. 机构过程关注(Organization Process Focus)
确立机构对于改进机构的软件过程能力的软件过程活动的责任。
2. 机构过程定义(Organization Process Definition)
开发和维护一组有用的软件过程assets和提供一个用于定义定量过程管理的有意义的数据的基础
3. 培训计划(Training Program)
开发个体的技能和知识以使他们能够更加有效的完成他们的角色
4. 集成软件管理(Integrated Software Management)
基于业务环境和项目的技术需要,从机构的标准软件过程和相关的过程assets经过剪裁,将软件工程和管 理 活动集成为一个有机的定义的软件过程。
5. 软件产品工程(Software Product Engineering)
一致地完成定义良好的工程过程。它描述了项目的技术活动,如需求分析,设计,编码和测试。
6. 组间协调(Intergroup Coordination)
确立软件工程组主动介入其它工程组以便项目能更好满足客户要求的手段
7. 同行评审(Peer Reviews)
早而且有效的排除软件工作产品中的缺陷。它可通过inspection,structured walkthrough等手段进行。
1.4.4 已管理级
软件过程和软件产品都有定量的目标,并被定量地管理,因而其软件过程能力是可预测的,其生产的软件产品是高质量的.
1.定量过程管理(Quantitative Process Management)
定量地控制软件项目的过程效能。
2.软件质量管理(Software Quality Management)
定量了解项目软件产品的质量,并达到既定的质量目标。
1.4.5 优化级
技术和过程改进被作为常规的业务活动加以计划和管理.
1. 缺陷预防(Defect Prevention)
识别出错原因,防止错误再现(通过改变定义的软件过程)
2. 技术变更管理(Technology Change Management)
识别有益的新技术(工具、方法和过程),并按有序的方式将其转移至机构之中。其重点在于在变化的世界中有效的完成革新。
3. 过程变更管理(Process Change Management)
连续改进机构所采用的软件过程,以改进软件质量,提高生产率和减少产品开发时间
5> ISO9000和CMM比较
ISO9000标准 |
要点 |
过程文件 |
记录或指南 |
CMM标准 |
7.3.1 设计和开发策划 |
组织应对产品的设计和开发进行策划和控制 在进行设计和开发策划时,组织应确定: a) 设计和开发阶段; b) 适合于每个设计和开发阶段的评审、验证和确认活动; c) 设计和开发的职责和权限。 组织应对参与设计和开发的不同小组之间的接口进行管理,以确保有效的沟通,并明确职责分工。 随设计和开发的进展,在适当时,策划的输出应予更新。 |
软件开发管理规程 项目计划规程 |
<软件生命周期使用指南 1 软件项目计划 2 变更申请表 3 问题状态日志 4 产品审批表 5 风险分析表 6 降低风险措施日志 7 任务描述表 8 每周状态报告 9 项目周报 10 工作细分结构 11 工作产品表 |
L2 SPP L2 SCM |
|
在进行设计和开发策划时,组织应确定: a) 设计和开发阶段; b) 适合于每个设计和开发阶段的评审、验证和确认活动; |
软件开发裁剪规程 |
裁剪审批表 |
L2 SPP L3 机构过程焦点 |
|
组织应对参与设计和开发的不同小组之间的接口进行管理,以确保有效的沟通,并明确职责分工。 |
测试规程 |
测试计划 测试用例 测试实施记录 缺陷汇总表 测试报告 |
L3 |
|
随设计和开发的进展,在适当时,策划的输出应予更新。 组织应对参与设计和开发的不同小组之间的接口进行管理,以确保有效的沟通,并明确职责分工。 |
配置管理规程 |
配置管理计划 配置管理报告 配置项发布报告 配置项更改申请 基线发布申请 配置管理审计报告 |
L2 SCM |
|
组织应对参与设计和开发的不同小组之间的接口进行管理,以确保有效的沟通,并明确职责分工。 |
质量保证规程 |
软件质量保证计划 软件质量保证报告 |
L2 SQA |
7.3.2设计和开发输入 |
应确定与产品要求有关的输入,并保持记录(见4.2.4) |
需求管理规程 |
用户需求规格 软件需求规格 用户需求审批报告 软件需求审批报告 立项报告 |
L2 RM |
|
并保持记录(见4.2.4) |
配置管理规程 |
配置项发布报告 |
L2 SCM |
7.3.3 设计和开发输出 |
设计和开发的输出应以能够针对设计和开发的输入进行验证的方式提出, 并应在放行前得到批准。 |
<概要设计规程> <详细设计规程> <编码规范> <程序开发指南> |
|
|
7.3.4设计和开发评审 |
在适宜的阶段,应依据所策划的安排(见7.3.1)对设计和开发进行系统的评审 |
<软件项目计划规程> <评审规程> <配置管理规程> |
概要设计评审报告 详细设计评审报告 代码评审报告 |
|
7.3.5 设计和开发验证 |
|
<软件项目计划规程> <评审规程> <需求管理规程> |
单元测试报告 模块测试报告 集成测试报告 系统测试报告 回归测试报告 |
|
7.3.6 设计和开发确认 |
应依据所策划的安排(见7.3.1)对设计和开发进行确认 |
<软件项目计划规程> <评审规程(里程碑)>
<验收规程> |
软件验收申请 软件验收测试计划 软件验收测试报告 |
L2 SQA |
6> ISO9001与CMM比较
ISO 9001要素 |
本文中涉及的CMM级别 |
第2级 |
第3级 |
第4级 |
第5级 |
通用特点 |
4.1 |
管理职责 |
√ |
|
√ |
|
√ |
4.2 |
质量体系 |
√ |
√ |
|
|
√ |
4.3 |
合同评审 |
√ |
|
|
|
|
4.4 |
设计控制 |
√ |
√ |
√ |
|
|
4.5 |
文件和资料控制 |
√ |
√ |
|
|
√ |
4.6 |
采购 |
√ |
|
|
|
|
4.7 |
顾客提供产品的控制 |
√ |
√ |
|
|
|
4.8 |
产品标识和可追溯性 |
√ |
√ |
|
|
|
4.9 |
过程控制 |
√ |
√ |
√ |
√ |
|
4.10 |
检验和试验 |
√ |
√ |
|
|
|
4.11 |
检验、测量和试验设备的控制 |
|
|
|
|
√ |
4.12 |
检验和试验状态 |
√ |
√ |
|
|
|
4.13 |
不合格品控制 |
√ |
√ |
|
|
|
4.14 |
纠正和预防措施 |
√ |
|
|
√ |
|
4.15 |
搬运、包装、贮存、防护和交付 |
√ |
√ |
|
|
|
4.16 |
质量记录的控制 |
√ |
√ |
|
|
√ |
4.17 |
内部质量审核 |
√ |
|
|
|
√ |
4.18 |
培训 |
|
|
|
|
√ |
4.19 |
服务 |
√ |
|
|
|
|
4.20 |
统计技术 |
√ |
√ |
√ |
|
√ |
7> XP
2. UML
1> 类图
组件 |
说明 |
类 |
|
属性 |
- name: String [1] = "Untitled" {readOnly}
等于 private String name[1]=”Unittiled”; |
方法 |
+ balanceOn (date: Date) : Money 等于 public Money balanceOn(Data date){} |
关联 |
表示 |
含义 |
0..1 |
0个或1个 |
1 |
只能1个 |
0..* |
0个或多个 |
* |
0个或多个 |
1..* |
1个或我个 |
3 |
只能3个 |
0..5 |
0到5个 |
5..15 |
5到15个 |
class 人{
ArrayList cars=new ArrayList();
Public void addCar(汽车 car){
cars.add(car);
}
}
class 汽车{
人 person=new 人();
} |
聚合 |
1. 表示两个类是整体/局部的关系
2. 实例图中不含有回路,单向关系
|
合成(复合,组合) |
1. 表示”局部”在”整体”的生命周期职责
2. 他们是非共享的
|
泛化 |
一个类对另一个类的细化.
class Motor{
public abstract int getTyre();
}
class Motorcycle{
public abstract int getTyre(){
return 2;
}
}
class Car{
public int getTyre(){
return 4;
}
} |
自反关联 |
public class Test {
public Test theTest;
public Test() {}
} |
链接关联 |
|
限定关联 |
|
描述 |
|
依赖 |
|
终止类 |
|
图1.1