[关闭]
@zhongjianxin 2019-11-04T20:51:07.000000Z 字数 1418 阅读 930

任务分解 LJ version

AFS-HW-Java


任务分解

什么叫任务

任务:我们需要完成的“事”,例如:洗碗、大扫除等

当你接收到一个任务,你会怎么做?

例如:
洗碗:

那么回到我们软件开发来,软件开发中的任务是指什么?
软件开发中的任务即我们的需求,需求又可分为业务需求和技术需求

例如:找出集合中的”善良数“并判断是否大于十
你会怎么做?

我们重新定义需求:找出集合中的偶数最大值并判断是否大于十
需求明确了,那么这个需求怎么完成?

刚才我们进行的,就是任务分解,那么我们总结一下,任务分解有哪几步?

  1. 理解需求 (确认问题域)
  2. 拆分 (划分上下文)
  3. 实现
  4. 验证 (教练加的,学员不一定说的出来)
  5. 优化(教练加的,学员不一定说的出来)

那么我们现在对任务分解下一个定义,我的定义是:
任务分解是什么:
将复杂问题拆解为可验证的、相互独立的、简单任务;当所有简单任务都完成时,复杂问题也就解决了。

以上有五个要点:

让我们回到这道题:
找出集合中的偶数最大值并判断是否大于十

由上面的五个要点可知,输入输出对于小任务而言很重要。
程序设计有两类要素:一是数据,二是过程。非形式的讲,数据是我们希望操作的“东西”,而过程则是操作数据的规则描述。
当我们在软件开发领域内进行任务拆分时,我们需要明确指出每个小任务的输入和输出。

请写出每个小任务的输入和输出:

从文字描述上我们可以看到,输入/输出的描述需要包含两个东西:

  1. 类型
  2. 业务含义

通常,我们会通过变量名来表达业务含义。那么我们换一个描述输入/输出的方式:

冒号的左边为变量名,冒号的右边为数据类型,方括号代表数组,int 表示数组元素类型
请同学们尝试写出其他小任务的输入和输出

naming

参考下面链接中的脑图 第一周 第一天下午 任务分解导入 naming 部分
https://drive.google.com/open?id=1rUciowRiIkpnLNttUte3Rv69NNRWB7Gy&authuser=jialiu@thoughtworks.com&usp=drive_fs

上下文图

参考脑图 第一周 第二天下午 回顾文章逻辑 & 介绍上下文图的画法
材料:ppt https://drive.google.com/open?id=11qJaWc1ZDbLm6wvzj-TJ15IRLfxYt_Lu&authuser=jialiu@thoughtworks.com&usp=drive_fs

posv1

布置作业

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注