软件生命周期的主要阶段 需求分析
软件设计 编码 测试/调试 运行/维护
几种经典的软件过程模型及其相应的特点 瀑布模型
1. 软件开发各阶段严格按照顺序进行,前一阶段的任务没有完成,不能进入下一阶段
2. 每一阶段的工作成果必须经过评审,确认无误,才能作为下一阶段的输入和依据
3. 每一阶段结束时要求交出规定的软件文档资料 4. 缺乏灵活性
5. 对软件开发过于理想化,如对系统的需求分析 快速应用开发(RAD)模型
1. 重用在以前项目中开发过和测试过的构件 2. 开发速度快
3. 适用于在开发过程之前就充分理解需求的情况
4. 需要有足够的人力资源以建立相应的RAD小组 5. RAD不适合技术风险很高或系统难以模块化的情况
原型模型
a) 循环模式(Circulation) b) 引入用户评价 c) 逐步求精
增量模型
1. 从一组给定的需求开始,通过构造一系列可执行的中间版本来实现开发活动
2. 第一个中间版本实现一部分需求,下一个版本纳入更多的需求,以此类推,直至系统完成 螺旋模型
1.具有原型模型的迭代性和瀑布模型的线性特点
2.在螺旋模型的每一次迭代中,开发过程遵循分阶段的线性法。每次循环结束时,客户评价现阶段的成果,并提供反馈意见。在反馈意见的基础上,软件开发进入下一个循环。这一过程不断反复 面向对象的基本建模原则 抽象、封装、继承、分类、关联 面向对象分析的大致过程
分析用户需求陈述的文件、建立快速原型、建立分析模型、后继的设计阶段将以分析模型为基础
1. 描述需求
2. 识别潜在对象 3. 筛选对象 4. 对象的命名 5. 识别对象的属性 6. 识别对象的行为 7. 识别对象所属的类 8. 定义类的结构 面向对象程序设计语言
Simula1967、Smalltalk,20世纪60年代、C++、Java、C#、C++特点: 优点
1. 可在操作系统的任何层次上作任何事情 2. 可能是现有的速度最快的面向对象语言 3. C++编译器十分流行,程序员很多 缺点
1.指针的大量使用难以保证软件在运行时的安全性 JAVA特点:
1. 平台无关性,可移植性高 2. 垃圾回收机制 3. 没有指针 RUP
Ada
UML的基本概念,其与编程语言的区别
UML Unified Modeling La nguage( 统一建模语言)的简称。UML 是对软件密集型系统中的制品进行可视化、详述、构造和文档化的语言。
区别:Java 、c++ 等程序设计语言是用编码实现一个系统,而UML 是对一个系统建立模型,这个模型可以由Java 或C++等程序设计语言实现,它们是在不同的软件开发阶段使用的。 UML中图的分类
用例图,顺序图,协作图,类图,对象图,状态图,活动图,构件图,部署图 UML的组成
UML中的可见性规则
常用的UML工具
RationalRose(功能强大,市场占有率高)、StarUML、Enterprise Architect、ArgoUML、Visio
需求技术,需求的类型
两种类型的需求
– 功能性需求:系统应该提供什么行为 – 非功能性需求:系统上的特定属性或约束
三种需求技术 – XP中的用户故事 – FDD中的特性描述 – RUP中的用例
用例的定义,基于用例进行需求分析的特点
用例的定义:
–1.用例是对一个活动者(actor)使用系统的一项功能时所进行的交互过程的一个文字描述序列
–2.用例是系统、子系统或类和外部参与者交互的动作序列的说明,包括可选的动作序列和会出现异常的动作序列 基于用例进行需求分析的特点:
1. 用例从使用系统的角度描述系统中的信息
2. 用例描述用户提出的一些可见需求,对应一个具体的用户目标 3. 用例是对系统行为的描述,属于UML的动态建模部分
用例图的三要素
参与者,用例,关系
用例之间的关系:泛化 包含 扩展 用例建模
类图
类的基本概念
类是具有相似结构、行为和关系的一组对象的描述符 类的一些种类
抽象类、接口、关联类、模版类、主动类、嵌套类 类之间的关系及相应的表示方法 泛化、关联、聚合,组合、实现、依赖 组合>聚合>关联>依赖
三种主要的类版型及其表示方法
类图的抽象层次
概念层类图、说明层类图、实现层类图 多重性
0…1,0…n,1,1…n,*(即0…n)
类图建模的几个原则(面向对象设计的原则)
开闭原则,Liskov替换原则,依赖倒置原则,接口分离原则
对象图,包图
对象的特性,对象的命名方法 特性:
状态,行为,标识
对象的命名方法:
对象(图)和类(图)的关系 1. 类是定义,对象是实例 2. 类是抽象,对象是具体
3. 对象是一个存在于时间和空间中的实体,类仅代表一种抽象,抽象出对象的本质
4. 类是静态的,对象是动态的 5. 类是一般化,对象是个性化 包在UML体系中的位置 基本构造块,事物,分组事物 包中可以包含的元素
类、接口、构件、节点、协作、用例,甚至可以是其他子包或图 包的版型
1. 《system》版型–表示正在建模的整个系统
2. 《subsystem》版型–表示正在建模的系统中某个独立的部分 3. 《facade》版型–是其它包的视图,主要为复杂的包提供简略视图 4. 《stub》版型–是一个代理包,通常用于分布式系统的建模
5. 《framework》版型–表示一个框架,框架是一个领域中的应用系统提供可扩充模板的体系结构模式 包之间的关系
依赖关系:《use》《import》《access》《trace》,泛化关系 包图建模原则
重用等价原则,共同重用原则,共同闭包原则,非循环依赖原则
活动图
活动图的概念
活动图描述系统或业务的一系列活动构成的控制流;活动图描述系统从一种活动转换到另一种活动的整个过程;活动图通常对业务过程、工作流和用例实现进行建模
活动图的构成元素
初始节点、活动终点、活动节点、转换、分支和监护条件、分岔和汇合。 对并发活动建模 一些较复杂的活动图
辅助活动图、汇合描述、发送信号与接收信号、引脚、扩展区。 活动图建模 分岔和分支的区别
分岔:并行流;分支:判断、决策点;
状态机图
状态机图的基本概念
由状态符号表示,状态之间的转换由连接状态节点的有向弧表示;状态机图描述
状态到状态的控制流程,常用来对系统的动态特征建模;状态机图可以用于对不同建模元素的实体建模– 比如类的实例——对象。 状态机图的一般构成元素
初态和终态;源状态和目标状态;触发事件;监护条件;动作;分支 转换 复合状态
指状态本身包含一个或多个状态机的状态
顺序复合状态– 只包含一个状态机的复合状态 并发复合状态– 包含两个或两个以上并发执行的状态机 历史状态
用于记住上次离开复合状态时所处的子状态
• 表示方法 浅历史(圈圈里面一个H)深历史(圈圈里面一个H*) 状态机图建模
交互图
交互图包含哪几种图
顺序图,通信图,定时图,交互概述图 顺序图的基本概念
顺序图是显示对象之间交互的图, 这些对象是按时间顺序排列的。 顺序图的建模元素
对象、生命线、控制焦点、消息 通信图的基本概念
通信图描述了系统中对象之间通过消息进行的交互,强调了对象在交互行
为中承担的角色 通信图的组成元素 对象,链,消息 顺序图和通信图对比
1.顺序图强调消息的时间顺序,通信图强调参加交互的对象的组织,两者
可以相互转换
2.顺序图不同于通信图的两个特征:顺序图有对象生命线;顺序图有控制焦
点
3.通信图不同于顺序图的特征:通信图必须有消息顺序号
定时图和交互概述图的基本概念
定时图:如果要表示的交互有很强的时间特性,使用定时图 交互概述图:
a) 交互概述图是将活动图和顺序图嫁接在一起的图
b) 可以看作活动图的变体,它将活动节点进行细化,用一些小的顺序图来表示活动节点内部的对象控制流
c) 也可以看作顺序图的变体,它用活动图来补充顺序图
构件图
构件图主要描述系统中一组构件以及它们之间的相互关系
构件:构件是系统中可替换的物理部分,它包装了实现而且遵从并提供一组接口的实现
对于一个构件来说,它包含5个要素
其他的UML图
接口声明 接口实现 构件标准 封装方法 部署方法 部署图
1. 部署图又称配置图,实施图
2. 部署图用来显示系统中软件和硬件的物理架构
3. 部署图描述了系统中包含的计算机和其它硬件设备,以及这些设备之间的相互连接方式 复合结构图 Profile图
正向工程和反向工程的概念 正向工程
把设计模型转换成代码 逆向工程
把代码转换成设计模型
因篇幅问题不能全部显示,请点此查看更多更全内容