为什么写这篇?

我想设计一个安卓,iOS或者Web应用的时候,开始做软件的步骤是什么,有个想法,做个需求分析,然后开始设计软件。这篇讲的是设计软件这一步。我想好了要做个什么,然后开始干了,不能撸起袖子开始一个接口一个接口写,一个界面一个界面开工。该怎么做一个整个项目的设计图呢?这篇主要想解决的是盖楼如何有个基本图纸。

为什么建筑师要画图纸?

UML是当时上大三的时候的一门课,印象比较深,这是一门选修,没几个人交作业,让花一打UML图,没几个人交作业。为什么没几个人交作业呢?大部分人对于为什么要花UML图没什么概念,如同让不盖楼的人去画一份图纸。为什么建筑师要画图纸是一个好问题,因为人人可以摞起石头却不能盖起摩天大楼。UML图是成千上万的工程师积累盖楼的经验总结的图纸。首先我需要盖一座大楼,所以我需要画一份图纸。大部分人停留在摞石头的状态所以自然画不好几张UML图。当自己需要设计一个自己的软件的时候,自然需要这么一份图纸。

有其形无其实,有其实无其形

当时印象比较深,时常很纠结UML该用那个箭头,用圆的还是用方块。其实这个东西感觉也不用那么纠结,能背下来那么一套复杂的标准自然好,在几百人合作的项目中可能确实需要这种规范,但是小项目可能并不用那么精细,能符合固然好,不能那么细致也是可以接受的,不要太拘泥于此细节。就和倚天屠龙记里面,张三丰问张无忌忘了吗,很多事情在于有其实无其形,如果生搬硬套全把精力花费在用那个三角方块上可能反而背离了初衷有其形而无其实。下面写的是一个思路,其实需要了就花画不需要也可以不画。UML其实从另一个方面告诉我们如何开始设计自己的软件。

五个大部分

用例图

用例图是核心,为什么用例图最重要,用例图是用户的使用过程,哪怕你懒到一定地步后面的图都不花也应该花一张这个。你一定要用这张图描述明白,谁干了什么,第一步是什么,第二步是什么。你做这个东西要解决一个什么问题。Use case View:对系统用例进行描述,典型的视图为用例视图(use case diagram)。

静态图

这部分主要描述静态的关系,对象图,类图,这个讲的是开发过程中的抽象。Logic View:对系统各个组成部分进行抽象描述,其焦点在于系统是如何构成的以及构成系统的各个部分之间是如何互动的。我们常用的类视图(class digram),对象图(object diagram),顺序图(sequence diagram)/通信图(communication diagram)都属于Logic View。

动态图

描述的是各种状态。Process View:描述系统中的各种活动,典型的视图为活动图(activity diagram)。个人认为活动图和流程图非常类似,且目的都是为了将系统中的活动描述清楚。

部署图

这个有利于自己部署好这个系统,从0.1到1.0到2.0如果进行部署。这块可以写清楚如何部署,是直接部署,部署在几个机器上部署,用虚拟机,还是docker,如何理清楚部署过程进行自动构建。Development View:从开发者的角度描述系统的构成,典型的视图为构件视图(component diagram)。

物理图

Physical View:该视图关注软件构件在硬件上的top结构,以及构件之间的通信。典型的视图为部署视图(deployment diagram)

转载于:https://www.cnblogs.com/franzlistan/p/10331438.html

软件必备模块-软件设计相关推荐

  1. 软件必备模块-全栈工程师

    这篇文章又叫一即是全,全即是一. 初心 有时候想想为什么写程序?写程序的初心是什么?这个代码写时间长了有时候就忘记了.为生计?为房贷?都不是.我想做自己喜欢的东西.就想一个一个画家画出了自己想表达的东 ...

  2. 软件必备模块-下载渠道,官网,软件商店,命令

    为什么要写这一篇,也算念念不忘必有回响的一个东西.大一的时候记得有两个东西印象特别深,ubuntu的apt-get install还有360软件商店.再后来是appstore.之前用电脑的时候时常要从 ...

  3. 【解析】在设计软件的模块结构时,()不能改进设计质量

    在设计软件的模块结构时,()不能改进设计质量: A.尽量减少高扇出结构  B.尽量减少高扇入结构 C.将具有相似功能的模块合并  D.完善模块的功能 解析: 在结构化设计中,系统由多个逻辑上相对独立的 ...

  4. STM32F103C8T6温湿度模块软件设计

    4.1单总线通信软件设计 4.1.1温湿度模块软件设计 单总线是美国DALLAS公司推出的外围串行扩展总线技术.与SPI.I²C串行数据通信方式不同,它采用单根信号线传输.这种传输方式信号线上既传输时 ...

  5. labview软件工程师必备模块,做项目时遇到无赖客户可以在规定天数到达锁死,给序列号可根据设置天数生成序号允许天数继续使用

    labview软件工程师必备模块,做项目时遇到无赖客户可以在规定天数到达锁死,给序列号可根据设置天数生成序号允许天数继续使用,到期又锁死,三层数据加密验证防破解! ID:356863259730932 ...

  6. 2018-05-17-OAA-一种mermaid脚本驱动的软件项目模块图形化表述思路

    layout: post title: 2018-05-17-OAA-一种mermaid脚本驱动的软件项目模块图形化表述思路 key: 20180517 tags: OAA flow chart se ...

  7. 软件开发、软件设计培训笔记

    一.代码质量的提高培训笔记(2013.11.29): 部分内容摘自网络: 1.      struct:注意成员排列顺序. 2.      #pragma pack(1) :指定按1字节对齐. 3.  ...

  8. 平面设计必备学习软件

    平面设计必备学习软件,平面设计(graphic design),也称为视觉传达设计,是以"视觉"作为沟通和表现的方式,透过多种方式来创造和结合符号.图片和文字,借此作出用来传达想法 ...

  9. 基于Quartus II 软件(VHDL)设计

    目录 一,基于 Quartus II 的数字系统设计流程 二,Quartus II 软件使用介绍 1. 建立工程 2. 设计输入 3. 编译 4. 时序仿真 quartus ii 安装请参考: Qua ...

最新文章

  1. 串口的偶校验位设置_详解UART串口
  2. adb 显示手机分辨率
  3. JS获取DOM元素的八种方法
  4. SecureFX连接Linux后文件夹中文乱码问题解决
  5. Win32 鼠标绘图代码研究
  6. 【Mysql Docker】备份 docker mysql 脚本
  7. final 在java,final 在java中的注意点
  8. Ubuntu12.10中安装ati显卡驱动amd driver 13.1
  9. java多线程初识4
  10. 华为鸿蒙os2.0公测结果,网友收到华为鸿蒙 OS 2.0 手机开发者 Beta 公测邮件
  11. 多行文字或者单行文字的垂直居中解决方案
  12. 20191002每日一句
  13. 雷蛇灵刃 15 黑苹果 Hackintosh
  14. window电脑H265(HEVC)编码的mp4不显示缩略图解决办法
  15. cookie获取失败(时间差导致的cookie失效)
  16. java 加密解密,编码解码工具类
  17. GCN在交通流预测方面的相关文章
  18. vue 数字正则表达式详解
  19. 2021东阳高考成绩查询,2021金华市地区高考成绩排名查询,金华市高考各高中成绩喜报榜单...
  20. 阿里安全专家BlackHat和DEFCON现场演示:一分钟越狱iOS 11.4

热门文章

  1. python soup.find_BeautifulSoup中find和find_all的使用详解
  2. matlab v4是什么意思,train.m · Song_Yuqi/yolov3-yolov4-matlab - Gitee.com
  3. 离线安装 vs2015、qt插件
  4. BUUCTF:爱因斯坦
  5. 超个性鼠标设计桌面图标
  6. Unity众神之光 文档
  7. el-badge入门学习
  8. i909 rom android build/target/,三星 I909 刷官方ROM救砖教程
  9. C语言电子闹钟(显示时间、计时器、闹钟、倒计时、世界时钟)C语言大作业
  10. 垃圾、诈骗短信举报-12321网络不良与垃圾信息举报受理中心