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

2023-11-14

简介

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

课程体系结构图

一、好的设计

“球不是这么踢的”

让目标指导行动

设计已死?

足够好的软件

 

化整为零,个个击破

 

先实现后设计

二、别废话,动手!

从你的场景开始

获取需求

场景驱动与故事划分

从测试开始

驱动设计

实现

重构

再设计

结对编程

来,别看着,动手!

三、设计的原本

角色、职责、协作

再看封装、抽象与多态

职责的封装

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

桩对象

重构技术的变种

TDD、重构导向模式

四、用例驱动设计

用例与功能

用例场景

健壮性分析图

时序图

协作图

类图

包图

逻辑框架和层

模型-视图分离原则

五、领域驱动设计

何为“领域驱动设计”

通用语言

模型驱动设计

面向深层理解的重构

保持模型一致性

六、职责驱动设计

GRASP是什么?

创建者

信息专家

低耦合

控制器

高内聚

多态

纯虚构

间接性

防止变异

七、测试驱动开发

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

ATDD满足客户需求

正确地做事:TDD

做正确的事:ATDD

增量式开发

重构以保持代码的健康

下士!保持绿色!

八、设计模式

设计模式与变迁

行为型模式

创建型模式

结构型模式

九、设计原则

开闭原则

里氏科夫替换原则

单一职责原则

接口隔离原则

依赖倒置原则

不要重复你自己原则

你不需要它原则

KISS原则

十、开发部曲

计划游戏

简单设计

测试驱动开发

重构

团队协作

持续构建

迭代

反思改进

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

讲师介绍

姜志辉

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

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

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

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

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

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

  • 设计模式一之简单工厂模式

    生活示例 刻板印刷 gt 活字印刷举例 喝酒唱歌 人生真爽 gt 对酒当歌 人生几何 可维护 需要修改 则只需要改需要改的字即可 可复用 字体可在后来的印刷复用 可扩展 需要加字 只需要加入相应的刻字即可 灵活性好 字的排列可能竖排或横排
  • 程杰“大话设计模式”中的设计原则

    单一职责原则 SRP 就一个类而言 应该仅有一个引起它变化的原因 如果一个类承担的职责过多 就等于把这些职责耦合在了一起 一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力 这种耦合会导致脆弱的设计 当发生变化时 设计会遭受到意想不到
  • Java 多线程模式 —— Guarded Suspension 模式

    Part1Guarded Suspension 模式的介绍 我们只从字面上看 Guarded Suspension 是受保护暂停的意思 1Guarded Suspension 模式 在实际的并发编程中 Guarded Suspension
  • 软件测试 接口测试 入门Jmeter 接口关联 提取器 断言 与fiddler配合使用 使Jmeter录制和创建脚本 操作数据库 持续集成测试

    文章目录 1 接口测试概述 1 1 什么是接口测试 1 2 接口分类 1 3 接口的设计风格分类 1 3 1 Soap架构 1 3 2 Rpc架构 1 3 3 RestFul架构 1 3 4 接口测试工具介绍 1 4 接口测试流程 2 Jm
  • 漫谈软件测试工程师与mercury认证

    漫谈软件测试工程师与mercury认证 出自无忧网 作者 叶赫华 sinckyzhang hotmail com 自从本人从事软件测试培训以来 接触了太多的软件测试工程师 发觉从业者多数存在以下现象 刚刚毕业 踏入IT行业 不懂开发或开发经
  • 设计模式(十)装饰器模式

    装饰器模式是一种非常有用的结构型模式 它允许我们在不改变类的结果的情况下 为类添加新的功能 我们来举例说明一下 首先添加一组形状 它们都实现了形状接口 public interface Shape String getShape class
  • oracle批量绑定 forall bulk collect用法以及测试案例

    一 如何使用批挷定提高性能 How Do Bulk Binds Improve Performance 在PL SQL 和SQL引擎 engines 中 太多的上下文切换 context switches 会影响性能 这个会发生在当一个循环
  • 设计模式-2--工厂模式(Factory Pattern)

    一 什么是工厂模式 工厂模式 Factory Pattern 是一种创建型设计模式 它提供了一种创建对象的接口 但是将对象的实例化过程推迟到子类中 工厂模式允许通过调用一个共同的接口方法来创建不同类型的对象 而无需暴露对象的实例化逻辑 工厂
  • 第12课:生活中的构建模式——想要车还是庄园

    用程序来模拟生活 从剧情中思考构建模式 与工厂模式的区别 与组合模式的区别 构建模式的模型抽象 类图 基于升级版的实现 模型说明 应用场景 故事剧情 下周就要过年了 这是 Tony 工作后的第一个春节 还是在离家这么远的北京工作 所以肯定不
  • 每日一问:你想如何破坏单例模式?

    前言 1 单例是什么 单例模式 是一种创建型设计模式 目的是保证全局一个类只有一个实例对象 分为懒汉式和饿汉式 所谓懒汉式 类似于懒加载 需要的时候才会触发初始化实例对象 而饿汉式正好相反 项目启动 类加载的时候 就会创建初始化单例对象 1
  • 设计模式--提供者模式provider

    设计模式 C 提供者模式 Provider Pattern 介绍 为一个API进行定义和实现的分离 示例 有一个Message实体类 对它的操作有Insert 和Get 方法 持久化数据在SqlServer数据库中或Xml文件里 根据配置文
  • 单例模式的八种写法比较

    单例模式是最常用到的设计模式之一 熟悉设计模式的朋友对单例模式都不会陌生 一般介绍单例模式的书籍都会提到 饿汉式 和 懒汉式 这两种实现方式 但是除了这两种方式 本文还会介绍其他几种实现单例的方式 让我们来一起看看吧 简介 单例模式是一种常
  • 设计模式之享元模式

    享元模式 就是共享技术 对于系统中存在大量相同的对象 把他们抽取成一个对象放在缓存中进行使用 这样可以大大节省系统资源 例如 围棋棋盘上有两种棋子 一个是黑子 一个是白子 如果在下棋的时候每下一个棋子就要new一个棋子对象 那么就会有大量的
  • 设计模式——State(状态)模式

    目录 前言 1 定义 2 适用性 3 结构 3 1 结构图 3 2 参与者 4 应用举例 4 1 State TcpState 4 2 Context TcpConnection 4 3 ConcreteState ListeningTcp
  • [ASP.NET MVC 小牛之路]05 - 使用 Ninject

    在 ASP NET MVC 小牛之路 系列上一篇文章 依赖注入 DI 和Ninject 的末尾提到了在ASP NET MVC中使用Ninject要做的两件事情 续这篇文章之后 本文将用一个实际的示例来演示Ninject在ASP NET MV
  • 设计模式(不懂)

    面试中经常问到设计模式 我才对这个东西了解了一下 才发现他是没有开发的新大陆 是oo设计的更高级别 能把设计模式搞懂 那oo你就搞的差不多了 随便看了还是很有意思的 虽然不怎么懂 百科名片 相关书籍 设计模式 Design pattern
  • 设计模式(3)--对象结构(5)--外观

    1 意图 为子系统中的一组接口提供一个一致的界面 Facade模式定义了一个高层接口 这个接口使得 这一子系统更加容易使用 2 两种角色 子系统 Subsystem 外观 Facade 3 优点 3 1 对客户屏蔽了子系统组件 减少了客户处
  • 设计模式 原型模式 与 Spring 原型模式源码解析(包含Bean的创建过程)

    原创 疯狂的狮子Li 狮子领域 程序圈 2023 12 19 10 30 发表于辽宁 原型模式 原型模式 Prototype模式 是指 用原型实例指定创建对象的种类 并且通过拷贝这些原型 创建新的对象 原型模式是一种创建型设计模式 允许一个
  • 2023 年精选:每个 DevOps 团队都应该了解的 5 种微服务设计模式

    微服务彻底改变了应用程序开发世界 将大型整体系统分解为更小 更易于管理的组件 这种架构风格的特点是独立 松散耦合的服务 带来了从可扩展性 模块化到更高的灵活性等众多优势 DevOps 团队如何最好地利用这种方法来实现最高效率 答案在于理解并
  • 【设计模式之美】 SOLID 原则之五:依赖反转原则:将代码执行流程交给框架

    文章目录 一 控制反转 IOC 二 依赖注入 DI 三 依赖注入框架 DI Framework 四 依赖反转原则 DIP 一 控制反转 IOC 通过一个例子来看一下 什么是控制反转 public class UserServiceTest

随机推荐

  • 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 重构设计与功能实现 单元测试几个课程合而为一 我们称之为设计匠艺 这几个课程当然可以分开来讲 但是如果把他们组织在一起 将会形成一个有效的开发闭环 事实上 在实际的开发过程中 它们本身就是一个整