UML在项目实施中的使用心得(详细设计阶段)

2024-04-20 00:08

本文主要是介绍UML在项目实施中的使用心得(详细设计阶段),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

3.详细设计阶段

在业务需求分析阶段使用Use Case图、Sequence图(有时候也使用Activity图的泳道图)描述清楚业务范围及业务流程,在概要设计阶段使用deployment图、component图、Sequence图、StateMachine图、Activity图描述清楚技术架构、部署方式、内外接口、主要流程后。在国内的项目中,很可能不需要详细设计,强大的中国程序猿已经可以直接开始开发了。中国的程序猿个个都有极强的创造精神,而且有相当一部分不大喜欢别人把详细设计做的太细,以便发挥下自己的创造力(初级设计能力)。我有朋友做日本公司的外包,详细设计不但详细到类级别,甚至每个方法都还有伪代码,这种感觉确实是太不能发挥自己的主观能动性了。不过仁者见仁,智者见智,因为一个初级的程序猿如果先是看别人的设计,然后再开始自己的设计,也许学习曲线就不会那么陡峭,日子也会过的舒服一点儿也未可知。


3.1Class图

类是面向对象最核心的要素(没有之一),因此详细设计阶段的第一要素是类。

类怎么设计类呢?按照UML的标准,要抽出来需求描述中的”名词“考虑是否要做一个对象,动作考虑是对象间的关系,我认为这句话以及相应的例子只是为了描述对象是什么,对象之间的关系是什么, 但是实际上是无法这样使用的:

1.一个需求文档可能动辄几百页,这么分析下去要死人的;

2.需求文档可能也不见得写的那么规范;

3.根据系统架构、需求,设计者心中已经有了合适的设计模式,而为了适应一个设计模式要建立的类,也不是通过需求文档逐句的挖掘能挖掘出来的。

所以说到底,如果说写需求文档的人可以不需要太懂技术,主要精力用于和客户讨论,进而把控需求的范围(SoW,Scope of Work)、梳理清楚相关的业务流程的话,那么写概要设计文档的就要有总体的架构能力,而写详细设计的人就得是超人,是一个从底层开发人员上去的,对设计模式、算法都精通的人,才能写出优秀的详细设计文档。有时候也很感慨,其实写需求文档的人(这个角色一般叫做BA,Business Analyst),写概要设计的人(这个一般叫架构师,Solution Architect,System Architect,System Analyst...)可能当年就没有搞明白设计模式、算法等计算机技术领域(这里的算法也指技术、工程域的算法,不包括计算科学家们搞的算法)相对”难“的东西,数年后最后摇身一变,工资比做详细设计、优秀的编码人员的工资还高出一大截,最后逼得有那么一批人心不甘情不愿的也走上了架构师、需求分析师的道路,做着其实不大喜欢做的活(这两个职位与人打交道要远多于程序猿与详细设计人员了)。Engineer的本意是说这是一门艺术,所以编程本身也是一门艺术,希望未来能看到越来越多的牛X的程序猿,拿的跟架构师、系统分析师不相上下的工资,做一个快乐的Engineer吧。


类图概要:

类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法
类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象
类图中的事物包括:类、接口、抽象类、模板类

类的关系包括:关联关系(又可分为聚合关系、组合关系)、泛化关系、实现关系、依赖关系。

关联关系的映射







下面是个形而上的例子,根据use case直接能生成类图,在实际系统中太难了:



3.2 Object图

可以使用对象图来描述某种状态下,系统中活跃的对象及其关系:



3.3 Package图(包图)

包对c++可以理解为命名空间,对java可以直接理解为package,是在component之下在文件之上的一个层面。



3.4 Sequence图

  Sequence图的描述见"UML在项目实施中的使用心得(需求分析阶段)",与需求分析阶段和概要设计阶段不同的是,此时的sequence图可以与代码对应起来:


信息亭发Request (count, performance)消息给售票中心,表示调用售票中心类的Request (count, performance)操作,来查询演出的信息。

售票中心发Show Available(seat-list)消息给信息亭,表示调用信息亭类中的Show Available(seat-list)操作,给出可用的座位表。

3.5 Communication 图(通信图,协作图)

协作图的描述见"UML在项目实施中的使用心得(概要设计阶段)",与概要设计阶段不同的是,此时的协作图是可以与代码级的类对象对应起来。

3.6 Activity图(活动图)

描述见"UML在项目实施中的使用心得(概要设计阶段)",与概要设计阶段不同的是,此时的活动图是可以与代码级的类对应起来。

3.7 State Machine图(状态机图,状态图)

描述见"UML在项目实施中的使用心得(概要设计阶段)",与概要设计阶段不同的是,此时的状态图是可以与代码级的类以及类中的成员变量、成员函数对应起来。


3.8包与Component的关系
包与component的关系可以使用”复合结构图”,将构件、包、类关系全部合在一起展示,但是更简单的方法是用表格列出来包与构件的关系即可。


总结:在业务需求分析阶段使用功能框图、Use Case图、Sequence图逐级分析业务项及业务流程,在概要设计阶段确定系统架构,使用Deployment图、Component图确定部署、对外提供接口、内部接口等主要信息,  Sequence图、Activity图、StateMachine图细化一些关键流程,这两个阶段UML中的Thing都可以理解为更粗粒度的对象。到了详细设计阶段,除了Use Case图、Deployment图,其他图全部都会用上,且是此时的对象是代码级别的对象。



这篇关于UML在项目实施中的使用心得(详细设计阶段)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918812

相关文章

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain