1、软件工程导论(6) 软件建模,为什么要建模?,http:/ 一个简单建模的例子 6.2 软件建模 6.3 元建模 6.4 建模语言和UML 6.5 软件过程模型,http:/ 一个简单建模的例子 6.2 软件建模 6.3 元建模 6.4 建模语言和UML 6.5 软件过程模型,http:/ UML,http:/ (UML) 是用于建立面向对象系统模型的标记方法,而序列图是UML中的一个组件,用于形象地描述系统执行时参与者与对象之间的内部交互过程,演示一个软件系统中的某个具体的用例方案。 序列图是直观的,将对象和参与者(横轴)映射到时间(纵轴)。消息连接了对象,当消息发生时,它们沿着纵轴从一个对
2、象移动到另一个对象。这些消息被连接到从对象或参与者底部的中间延伸出的竖直虚线或称生命线,示例表示,http:/ 一个简单建模的例子 6.2 软件建模 6.3 元建模 6.4 建模语言和UML 6.5 软件过程模型,http:/ 软件建模,http:/ 为什么要建模 6.2.2 软件建模概述 6.2.3 如何建模,如果不事先对软件系统进行抽象而完成蓝图或系统架构的设计,就直接构建一个复杂的软件系统,几乎不可能 建模能事先描述系统的结构和关系,使问题清楚、简单化,有效地解决问题 更好理解手头上的业务情况或工程情况(as-is模型) 设计更好的系统架构和构建更好的系统(to-be模型) 创建可视化代
3、码和其他实施形式适应软件的迭代开发,为什么要建模?,as-is 模型,集中于业务流程,to-be 模型,集中于系统架构,软件建模概述,http:/ 业务建模 需求建模 体系结构建模 设计建模 组织建模,面向对象建模,http:/ 动态模型被用来描述系统的控制结构,广泛的模型,http:/ ,如as-is模型 、to-be模型 从更广泛的建模概念看,IDE可以看作是模型驱动开发实践的入口点,在创建和维护代码方面能够提供抽象层次方面的许多机制和工具 代码的可视化显示和编辑可看作是低层次的建模,再看UML,http:/ 贯穿生命周期的建模 模型驱动构架(MDA) 特定领域的建模语言,示例,http:
4、/ 一个简单建模的例子 6.2 软件建模 6.3 元建模 6.4 建模语言和UML 6.5 软件过程模型,http:/ UML 2.0 对象管理组织 (OMG)把元对象设施(MOF)作为MDA的基础,MOF是所有元模型的定义语言 可根据需要,基于MOF为各个领域的特定建模需求定义相应的领域定义语言 (DSL),元建模概念,元建模的4层结构体系,http:/ model,MMM)定义描述元模型的语言(MOF),所以比元模型更抽象、更简洁。元-元建模层构成了元建模体系结构的基础结构。 元模型(UML)是元-元模型的实例,以定义描述模型(model)的语言。 用户模型(user model)是元模型
5、的实例,以定义描述问题域或功能域的语言。 用户对象(user object),是模型的实例,以描述一个特定的信息论域。,本章内容,6.1 一个简单建模的例子 6.2 软件建模 6.3 元建模 6.4 建模语言和UML 6.5 软件过程模型,http:/ 建模语言和UML,6.4.1 建模语言的起源 6.4.2 实体关系建模 6.4.3 UML 6.4.4 UML视图 6.4.5 建模机制 6.4.6 系统建模语言SysML 6.4.7 虚拟现实建模语言,建模语言的历史?,Booch是面向对象方法最早的倡导者之一,基于Ada的工作,于1991年创立了建模语言,Booch OOD,HOOD & O
6、MT,http:/ 实体类型是具有相同的结构并在企业内部独立存在的一组工件,相当于面向对象方法中“类”的概念 每个实体的属性值的集合是唯一的,这样可以保证实体的识别 实体关系(ER)是描述独立的软件工件之间事务或实体之间的一种关联,依赖关系 特化和泛化 分类 表示方法,ER建模的过程,示例,http:/ 每类视图,进一步分为各种类型的图,如逻辑视图分为类图、包图和对象图。 每个视图都由一个或者多个图组成,一个图是系统体系结构在某个侧面的表示 所有的图有机地组成系统的完整视图,UML视图,UML 2.0的13种视图,http:/ 时序图关注沿着线性时间轴、生命线内部和生命线之间的条件改变,描述对
7、象状态随着时间改变的情况,适合实时和嵌入式系统建模。 活动图既支持控制流模型,也支持对象流模型,实现了活动(过程)和动作(执行行为的节点)的集成。,视图之间的关系,http:/ 用协作来表示用例,而协作又被细化为若干个图,建模元素,建模机制,http:/ 注释能够在模型中添加一些模型元素无法表示的额外信息,对某个元素作出解释或说明 在图的模型元素上添加修饰为模型元素附加一定的语义 模型元素具有的一些属性是以数值方式体现的。 扩展机制 模式是指在已有的模型元素基础上建立一种新的模型元素 附加标签值,是模型元素的附加属性。 约束是对元素(语义)的限制,建模步骤,http:/ 根据需求建立系统的静态
8、模型(结构模型),以构造系统的结构; 描述系统的行为,建立动态视图,在系统开发的每个阶段都要建造不同的模型,建造这些模型的目的也不同 注重系统体系结构的开发。 注重过程的迭代和递增性,系统建模语言SysML,http:/ Script结构,VRML Script示例,GeoVRML,GeoVRML是让用户通过Web浏览器中标准的VRML插件来浏览地理参考数据、地图和三维地形模型 全面支持多种常用坐标系和参考椭球,并能完成不同坐标系之间的自动转换和映射 扩展所有的数值类型为64位双精度型,提高精度指标到毫米级 三维建模型功能进一步增强 ,如新增加了地理坐标、DTM模型、植入场景)10个节点 实现
9、了基于高程的浏览模式,GeoVRML 示例,X3D具有高度的可扩展性,整合了Java 3D、流媒体、XML等技术,包括3D计算能力、渲染质量和传输速度,X3D,X3D脚本示例,本章内容,6.1 一个简单建模的例子 6.2 软件建模 6.3 元建模 6.4 建模语言和UML 6.5 软件过程模型,http:/ Cockburn,6.5 软件过程模型,6.5.1 瀑布模型的不足 6.5.2 V模型诠释软件过程 6.5.3 没有统一天下的RUP 6.5.4 MSF的过程模型,http:/ 不支持重用 没有一个联系各个阶段的统一模型,瀑布模型的不足,V模型诠释软件过程,MSF的过程模型,角色和任务,M
10、SF的特点和原则,目标驱动而非任务驱动 外部可见的里程碑 应提交项的变更管理 递进的版本发布策略 风险驱动的进度管理 项目组集体参与管理产品质量,MSF过程模型的应用,1为共同的愿景而工作 2 推动开放式沟通 3 赋予团队成员权力 4 建立清晰的职责和共同的责任 5关注交付业务价值 6 保持灵巧,预测变化 7 质量投资 8 学习所有的经验,RUP的迭代过程,1,2,3,4,RUP初始阶段,主要成果: 前景文档:对核心项目要求、关键性质、前景说明。 初始的项目术语表。 初始的用例模型和商业用例。 项目规划,其中明确阶段和迭代,一个或多个原型。 初始的风险评估和商业模型。评估准则: 相关共利益者对
11、项目范围定义和成本/进度估计达成共识。 通过主要的用例将需求无二义地表达出来。 成本/进度估计、优先级、风险和开发过程的可信度。 开发出来的体系结构原型的深度和广度,RUP细化阶段,成果: 用例模型 可执行的体系结构原型及其描述 修订后的风险表和商业用例、开发用例,指定要使用的过程。 整个项目的开发计划。评估准则: 产品的前景是否稳定?体系结构是否稳定? 可执行的演示是否强调了主要的风险元素并得到解决? 构造阶段规划是否已经足够详细和准确,是否有可信度的评估支持? 如果用当前的计划来开发整个系统,包括使用已定义的体系结构,是否所有相关共利益者对此都达成一致?,RUP构造阶段,版,至少应该包括: 在特定平台上集成的软件产品。 用户手册和对当前版本的描述。评估准则是: 产品版本是否足够稳定和成熟,可以在用户群中发布吗? 是否所有相关共利益者都同意产品的发布? 实际的资源支出和计划的支出的比值是否仍然可接受?,RUP交付阶段,主要工作有: 测试,确认新系统达到用户的预期。 与被取代的旧系统并行操作,以及功能性数据库的转换。 用户和维护人员培训。 向市场、分销商和销售人员进行新产品的展示。交付阶段侧重向用户提交软件的活动,评估准则可以非常简单,也可能极其复杂。 用户是否满意? 是否能够接受实际的和计划的资源支出的比?,Q & A,http:/