[followme]如何写好软件设计文档实战系列-1

案例一:幼儿园用户心理测评套餐设计方案

原始设计方案:

picture-1
picture-2
picture-3
picture-4

点评:原始设计方案,结构完整,实现方案功能OK。

会议评审改进:

一、模块概述

注:本部分需要完整描述需求所涉及的功能,相当于需求的全面掌控,因此各项功能需要一一列出;

评审意见:

1.功能描述不够,有缺失

2.常见问题,代码实现中肯定考虑了,但是功能描述时没有列出;

3.不完整列出,容易导致考虑不完善;要点功能项必须列出,也是思维的完备性;

评审修改:

picture-5

点评:

2.幼儿园用户注册和登陆

这条是必备,正因为是必备,而往往就忽略不写了。但是其为要点功能必须写(坚持思维的完备性);

3.幼儿园用户测评得分保存

第四点隐含了,但必须单独列出,也是核心功能;

5.信息统计分类:

1)班级+所有宝宝+量表+总得分——>评价:优中差;

2)班级+男/女+量表+各维度得分——>各项评价

幼儿园版功能实现的服务目的和数据使用的扩展,以便充分考虑核心功能实现方案;

二、模块设计

注:本部分需要描述逐个功能的实现方案思路和设计要点;包括流程和数据存储等。

picture-6

评审意见:

1.方案1、方案2均可,都能很好实现套餐功能;

2.方案1数据库存表,在业务不定时,更便于扩展,无需修改代码;

3.方案2代码静态变量存储,体量不大,更有效率和更简便;

4.本次业务场景如上,暂无扩展,因此优选方案2;


2.幼儿园用户信息和注册

方案1:

方案2:

评审意见:

1.方案1、方案2均可,但均需用户主动注册,对定向推广的用户可以后台批量注册,因此推荐方案3,参见评审修改1;

2.本部分是否有功能点遗漏,没有描述?(可以思考一下)

点评:原始方案这部分功能初看没有什么问题,但是跟模块概述部分忽略写评审修改意见里面的第2点功能一样,也忽略遗漏一个要点功能,参考评审修改意见2

评审修改:

1.新增方案3,如下:

picture-7

2.遗漏功能,如下:

picture-8

3.测评流程

现有的测评流程不改变

4.测评结果保存

方案1:

点评:此部分是核心功能,也比较复杂的部分,也是最有意思的部分,通过评审,我们逐步展开。:)

评审意见:

1.按照业务场景,只需要保存每个宝宝的测评总得分(1项),维度得分(多项);没有必要保存每道题的得分;

2.测评的总得分(1项),维度得分(多项),原表涉及比较冗余,记录总得分时dimension_id,dimension_avg,dimension_score均为0,反过来记录多项维度得分时total_avg,total_score均为0,太冗余,因此应该考虑合并。由于总得分只有1项,维度得分每个都有非0的维度ID,因此改进如下:

picture-9

点评:复用dimension_id字段,0代表总得分;维度得分和总得分字段合并;测试时间也可以不用记录;

3.其他评审意见:幼儿园ID编号更方便于数据提取;gender性别字段可以不用记录,因为通过baby_id查宝宝信息表就可以查到;


到这里是不是感觉评审差不多,其实才刚刚开始,请接着往下看

评审修改:

1.这部分比较重要,我们先看几个问题:

picture-10

问题三解答:幼儿园测评得分信息保存后的使用场景,我可以预想到离线场景,后台一套程序专门实现从数据库中提取信息,进行分类和统计。要点就离线场景:与线上系统分离,不用考虑性能,查多少个表,只要数据可以提取即可。而原方案中保存了宝宝的城市信息和幼儿园信息等,这些信息肯定在宝宝信息表中,那么线上系统保存得分时必须多查一次表,但是线上系统要考虑性能,因此我们得到优化如下:

picture-11

点评:保存得分表去掉了city,preschool等信息,因此可以查询宝宝信息表即可。而且减少了在线系统的查表次数;上面的问题二也得到了解答。

问题一解答:这是一个扩展问题,涉及前后业务功能,要回答这个问题,我们要看看之前的测评流程,幼儿园用户的测评流程前部分和普通用户的测评流程一样,因此要想知道我们增加一个流程图部分,如下:

picture-12

点评:为什么要增加流程图,流程图反映了功能子模块,另外也让你看到之前的设计,以便思考和分析。业务是否正确,是否相似,是否可以复用

保存测评得分save_history()——普通用户测评这个函数实现什么功能,放大保存的数据库表,是记录每个测评表的男/女总得分和维度得分,以便大数据汇总和改进。

对比三个表有没有发现,第三个对应的原来方案幼儿园测评得分保存这个函数,但是他们的信息却基本一致。

picture-13
picture-14
picture-15

再点评:这时我们才发现,以前普通测评保存得分的业务需求和这次幼儿园测评得分保存时间上属于相似业务,代码可以复用(原来代码稍加修改即可!)

因此前后反观,发现我们之前遗漏了一个潜在需求(普通用户得分保存也需要增加baby_id)!以便地域分析。到这里他们也合并了!

picture-16

至此评审结束。

结束语:

程序设计是一场逻辑思维的旅程,你思考到哪里,你的代码就走到哪里。而设计文档的编写,正是一场思维之旅的印迹。我们不是反反复复的code,modify,code again。而是在code之前,停下脚本,好好思考,提前你的笔,开始一场思维风暴!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容