软件设计能力提升之设计匠艺

2023-11-14

简介

课程将高效率的软件项目质量管理、UML、重构设计与功能实现、单元测试几个课程合而为一,我们称之为设计匠艺。这几个课程当然可以分开来讲,但是如果把他们组织在一起,将会形成一个有效的开发闭环。事实上,在实际的开发过程中,它们本身就是一个整体,无法分解。我们称之为开发部曲。

课程体系结构图

一、好的设计

“球不是这么踢的”

让目标指导行动

设计已死?

足够好的软件

 

化整为零,个个击破

 

先实现后设计

二、别废话,动手!

从你的场景开始

获取需求

场景驱动与故事划分

从测试开始

驱动设计

实现

重构

再设计

结对编程

来,别看着,动手!

三、设计的原本

角色、职责、协作

再看封装、抽象与多态

职责的封装

重构与设计模式是一种封装技术

桩对象

重构技术的变种

TDD、重构导向模式

四、用例驱动设计

用例与功能

用例场景

健壮性分析图

时序图

协作图

类图

包图

逻辑框架和层

模型-视图分离原则

五、领域驱动设计

何为“领域驱动设计”

通用语言

模型驱动设计

面向深层理解的重构

保持模型一致性

六、职责驱动设计

GRASP是什么?

创建者

信息专家

低耦合

控制器

高内聚

多态

纯虚构

间接性

防止变异

七、测试驱动开发

保持节奏:红色绿色重构模式

ATDD满足客户需求

正确地做事:TDD

做正确的事:ATDD

增量式开发

重构以保持代码的健康

下士!保持绿色!

八、设计模式

设计模式与变迁

行为型模式

创建型模式

结构型模式

九、设计原则

开闭原则

里氏科夫替换原则

单一职责原则

接口隔离原则

依赖倒置原则

不要重复你自己原则

你不需要它原则

KISS原则

十、开发部曲

计划游戏

简单设计

测试驱动开发

重构

团队协作

持续构建

迭代

反思改进

   以上大纲仅用于罗列课程中的知识点,在实际授课时将会穿插在实际案例里,并非按时间顺序讲解。

讲师介绍

姜志辉

Jobs,中科院计算所培训中心 高级讲师

国家863项目(国家数字油田)专家,首席架构师

敏捷中国团队持有人;2005年IBM开发者大会最佳讲师、最佳讲义获得者;人民银行技术顾问;国家质量认证中心技术顾问;总参某部技术顾问;国家安全局技术顾问;大庆油田技术顾问;胜利油田技术顾问;鲁能集团技术顾问;2007年度开源项目之一AgileUML的主架设计师。

更重要的是他是一位快乐的实用主义软件工程专家。虽然他热衷于软件开发技术与敏捷开发实践。但是能真正吸引他的是程序与使用者交流和沟通的能力。Jobs是实用开发的“永久消费者”,几乎在任何地方,都可以找到软件开发哲学的灵感.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件设计能力提升之设计匠艺 的相关文章

  • 这7个GitHub高级搜索技巧,你知道吗?

    前言 GitHub作为全球最大的同性交友 代码托管 平台 里面藏着巨大的资源宝库 一套Ctrl C和Ctrl V组合拳打出来 就没有你实现不了的需求 好了 废话不多说 下面介绍7个GitHub搜索高级技巧 让资源搜索不再困难 关键字 in

随机推荐

  • JPA——Date拓展之Calendar

    Java Calendar 是时间操作类 Calendar 抽象类定义了足够的方法 在某一特定的瞬间或日历上 提供年 月 日 小时之间的转换提供方法 一 获取具体时间信息 1 当前时间 获取此刻时间的年月日时分秒 Calendar cale
  • python卸载_可能是全网最详细的 Python 安装教程(windows)

    Python 是这两年来比较流行的一门编程语言 主要卖点是其相对简单的语法以及丰富的第三方库 下面我来带大家安装 配置 Python 文章最后有各种疑难杂症的解决方法 大体步骤有两步 安装 Python 让电脑学会这门语言 配置编辑器 方便
  • 让chatGPT回答一些有趣?无聊的问题

    本来我是没有国外的手机号的 也就没法注册chatGPT并使用 不过好在 csdn 的猿如意 里面有体验功能 我就顺便体验一下 这一次主要是看看chatGPT能否理解我的目的 很可惜 这一次并没有 其实第一次 chatGPT准确的回答出了 自
  • 算法导论 练习 2.2

    2 2 1 答案 n theta n 渐进符号的定义会在第三章里明确给出 所以这里就不写证明了 详细证明见第三章习题 好多好多啊 2 2 2 选择排序 数据结构课程基本排序算法之一 代码 SELECTION SORT A n length
  • 算法研究---MNIST数据集

    MNIST简介 MNIST Mixed National Institute of Standards and Technology database 是一个计算机视觉数据集 它包含70000张手写数字的灰度图片 其中每一张图片包含 28
  • vue3按需导入element-plus后使用ElMessage报错或样式丢失

    在vue项目中已经自动导入element plus 但是直接使用ElMessage时编译会报错 async function userLogin Promise
  • 史上最全《计算机网络 自顶向下方法》答案合集

    史上最全 计算机网络 自顶向下方法 答案合集 封面 英文名 Computer Networking A Top Down Approach 7th Edition 答案 第一章 一 第一章 二 第二章 一 第二章 二 第三章 一 第三章 二
  • .NET Core API框架实战(五) 依赖注入 服务的注册与提供

    ASP NET Core 的底层设计支持和使用依赖注入 ASP NET Core 应用程序可以利用内置的框架服务将它们注入到启动类Startup的方法中 并且应用程序服务ConfigureServices能够配置注入 依赖注入 Depend
  • 【Unity入门计划】利用Cinemachine实现简单的相机跟随&设置相机边界

    目录 使用情景 1 从Packages载入Cinemachine 2 创建2D Camera的Cinemachine 3 设置摄像机跟随玩家角色 4 设置主摄像机边界 5 加上相机跟随和边界的效果 使用情景 Cinemachine是Unit
  • 【20230103】FROM_UNIXTIME和UNIX_TIMESTAMP函数

    首先知道UNIX TIMESTAMP函数的由来 是自 1970 01 01 的道当前时间的秒数差 累似1337276321 一般10位 1 FROM UNIXTIME 函数 FROM UNIXTIME unix timestamp form
  • python 2、python读取.htm文件报错:UnicodeDecodeError: 'utf8' codec can't decode byte 0xb3 in position 0的解决方法

    问题是这样的 我用python写的程序去读取 htm文件中的数据 刚开始我用 fr open 0 htm r 时 程序运行后直接崩溃 后来根据提示的错误信息 ValueError encoding must be one of utf 8
  • 不同文件格式与图像类型

    文件格式 通常有BMP 8 位 24 位 32 位 PNG JPG JPEG GIF PPM PNM 和 TIF 图像类型 单通道图像 每个像素由单个值表示 包括二值 单色 图像 每个像素由一个 0 1 位 和灰度图像 每个像素由 8 位表
  • Kotlin:Android世界的Swift

    转载自 http www infoq com cn news 2015 06 Android JVM JetBrains Kotlin Kotlin 是一门与 Swift 类似的静态类型 JVM 语言 由 JetBrains 设计开发并开源
  • 2019年7月3日星期三 恒指/美原油/美黄金 走势分析

    财经早餐 2019年7月3日重点关注的财经数据与事件 09 45 中国6月财新服务业PMI 15 50 法国6月服务业PMI终值 15 55 德国6月服务业PMI终值 16 00 欧元区6月服务业PMI终值 16 30 英国6月服务业PMI
  • malloc和free,brk和sbrk和mmap和munmap的使用和关系以及内存分配的原理

    目录 一 使用 1 1 malloc和free 2 brk和sbrk 2 1 sbrk 2 2 brk 3 mmap munmap 二 关系 三 内存分配原理 四 malloc底层 一 使用 1 1 malloc和free 参数 申请内存大
  • Android进阶——AIDL详解

    看这篇之前先看看binder Android Binder机制 1 简介 AIDL Android 接口定义语言 可以使用它定义客户端与服务端进程间通信 IPC 的编程接口 在 Android 中 进程之间无法共享内存 用户空间 不同进程之
  • 【第13篇】Bert论文翻译

    文章目录 摘要 1 简介 2 相关工作 2 1 无监督的基于特征的方法 2 2 无监督微调方法 2 3 从监督数据中迁移学习 3 Bert 3 1 预训练BERT 3 2 微调BERT 4 实验 4 1 GLUE 4 2 SQuAD v1
  • 应该选择使用哪个版本的 JDK?

    要构建和运行 Java 应用程序 就需要安装 JDK 环境 OpenJDK 是 Java SE 规范的开源软件 但它只是源代码 二进制发行版由不同的供应商提供 适用于许多受支持的平台 这些发行版在许可证 商业支持 支持的平台和更新频率方面有
  • All in AI,现在开始算不算太晚?

    编者按 目前大模型近乎可以帮助人类处理方方面面的事情 如对话 写文章 写代码等等 在大模型 狂飙 趋势下 想要从事AI领域的小伙伴可能会犹疑 现在进入AI领域会不会已经太晚了 本文作者结合自身转型经历和对AI市场的研判 阐述了进入人工智能领
  • 软件设计能力提升之设计匠艺

    简介 课程将高效率的软件项目质量管理 UML 重构设计与功能实现 单元测试几个课程合而为一 我们称之为设计匠艺 这几个课程当然可以分开来讲 但是如果把他们组织在一起 将会形成一个有效的开发闭环 事实上 在实际的开发过程中 它们本身就是一个整