【ASE第二次作业】从需求分析看软件开发的挑战

前言

ddl给我动力。回顾本学期到现在为止软工的课程,我感觉,可以说每次完成吴老师布置的“作业”之后,我们组的进度就会有一次跃进式的提升hhh。正好,就按照这3个节点来回顾一下我对软件工程这门课的理解吧。

第一阶段. 领域分析

领域分析?什么意思?这个概念在上课的时候被吴老师无数次的提及,但始终没有一个提出一个明确的定义。只是在每次被提及的时候,通过描述去体会它大致是在做什么。因为这种模糊难明的状态,如果让我自己做领域分析,我一定会傻眼。所以那时候PPT里对领域分析报告的详细要求可算是救命级的了

  

通过这个详细的解释,我们小组分工完成了这个报告的各个子部分,而后meet确定一些公共部分(比如术语),以及互相提问和检查、确定大家的理解一致、各部分也没有矛盾,达成共识之后提交了上去。当时我负责的是“领域系统主要流程分析”。事实证明负责什么就对什么的理解会深刻许多,尽管现在回忆,这个时候的我对系统的理解还有很多偏差,但此时我对整个系统主流程的分析还是比较清晰的,给后面进一步修改打下的基础还可以(软工真的是一门实践非常非常重要的学科)

 

 

 而后得到了老师们的反馈,被指出了很多问题……不过其实我觉得很多地方我们都是考虑到了的,比如不关心家庭的生产工序啊,工厂生产能力怎么上报啊,以及分配流程是自动无人工等等……不过既然被指出了问题,也就说明要么是“自以为想清楚了”,要么是“没说清楚”,后来我们也认真去思考了这些环节。比如当时我们对家庭工厂的生产能力就定义为一个生产速度v,根据这个物料等等环节,我们又加入了意愿值(即最大产量)、库存等其他有实际含义的参数。再比如对于任务分配的流程,我们也争论了很久才决定。

除此之外,不在txt里,课上老师点出的另一点——系统的价值所在,也是第一次进入我的大脑。(此处感谢杨义轩同学敏锐地抓住了这一点)之前我在分析系统的时候,有一种“完成题目要求”的朴素观念,就是想着“题目要求什么功能”,我就去实现什么功能。并没有考虑系统的价值,也就是——如果这是一个现实中的系统,那么它为什么要存在?工厂们为什么要用你?乍一听的时候很迷,什么为什么……但转换一下思路之后就豁然开朗了:把自己当做一个创业公司,一个“乙方”,要拼命把这个系统推销给甲方爸爸,我们应该怎么做。后来这个梗贯穿了我们后面的小组讨论,把自己当做初创团队,体验乙方的感觉,颇为有趣,也十分真实。

 

第二阶段. 需求分析

在需求分析阶段开始,我又面临了一个类似于领域分析开始的困惑,那就是需求分析仍然听起来模模糊糊,和领域分析的区别我没有搞太明白。只是模模糊糊的会觉得“嗯,需求应该被分析,很重要”,但仍然不成章法。一开始我还有点路径依赖,去问去百度需求分析文档是什么样啊,要包含什么内容啊……后来得到了否定答案后,看到吴老师对我们准备的要求里都没有“文档”的时候,我才渐渐回过味儿来——需求需求,从字面意思入手就好。无非是去思考用户需要什么“功能”,我们如何实现这些“功能”,围绕这两个核心问题去讨论和完善。

 

 

 

 在这个过程中,technical的部分,最重要的就是两张图——用例图和类图。用例图直指用户需要的功能,类图则关系底层实现的逻辑。而其他的图更多的是一种辅助思考的工具。某个类的状态复杂,变化想不清楚了,画个它的状态图明确一下(在我们这里最核心的类就是“任务”);某个用例牵扯广泛,各种调用通讯想不清楚,画个顺序图描述一下;支线太多喧宾夺主,把主业务的活动图画出来看个清楚……根据不同的困惑和模糊点,用不同的UML图去明确化呈现。这就是目前为止我自己对利用UML图做需求分析的一个思维方式。当然还是有不足之处的,比如非功能性需求就还不能用这个方式特别明确的体现出来等,我还需要在接下来的几周进一步去完善自己的认知。

 

第三阶段. 需求分析整理和答辩

带着几张图,本以为就是让吴老师看看,我们问问问题。没想到是要上台展示。做展示的过程以及听吴老师指出问题的过程是非常锻炼我对所做工作的理解的。我印象最深刻的有两点:

1.对价值的理解:此前我们组尽管考虑价值,但只是从功能的角度,我们要联系各工厂,做好服务等等。但我们对目标客户的理解仍然有偏差,下意识的想成了把一堆已经在一起的家庭工厂用软件系统更好地交流起来。但事实上,更有价值的系统是对陌生的工厂,通过我们的平台达成协作。因此就会有出入、风控、评级等等新问题是我们此前没有考虑到的。

2.对产品的理解:我们此前对产品的理解就是“只有最终商品才是产品,中间产品只能叫工序”。然而这一理解虽然简化了问题,但对现实情况的描述就有了偏差。特别是加入了工厂的流动性之后,中间产品和最终商品的界限更是模糊。因此我们后来又重新对类图进行了调整。

最终进行了修改和细扣之后,答辩的效果我们还是比较喜出望外的(5个人在小黑屋里关门讨论的时光没有白费),接下来的部分要继续加油,我的队友都是最厉害的!

 

总体而言,目前为止我对需求分析最大的感受是:

1. 需求分析是需要反复迭代思考的过程。它看似轻巧,但细扣起来却很容易会漏掉一些没有被发觉的问题,和所有人都没注意到的理解偏差。很难“毕其功于一役”,只能是不断地“发现问题”、“改正问题”一步步接近和优化模型。

2. 需求分析过程中的细节层次很复杂,有功能上的,有实现的逻辑关系上的,甚至还有底层数据库和编程设计的问题……我们之前没有把这些孤立的计算机课知识点结合起来的经验,走了不少弯路。如何适当的把握抽象的层次,和不同部分之间的关系与地位,也是我们组在讨论中的感到有所收获的。

3. 团队的交流比我们想象中更复杂。一个模型,要5个人全部都认可才讨论的下去,做的下去。中间有什么改动,也需要5人全都认可。达不成共识的时候更是麻烦。这还不提有的时候驴唇不对马嘴,彼此理解出现偏差的情况。目前我们的解决方法是踏踏实实磨,磨到大家理解无误,全都一致。但我可以想象,对于更大型更复杂的工作,交流问题也是很重要的点了。

这3点就是我目前从需求分析中看到的软件开发的挑战了。BTW,这一段时间的实践让我真的感受到了需求分析的价值。从第一版到现在,我们的模型变化的确很大,如果不好好分析清楚,可能修改或debug的功夫就远远超过了目前小组讨论的时间,而且还是迷惘的状态。

 

posted @ 2020-12-14 22:35  伏羲琴_Ellery  阅读(132)  评论(1编辑  收藏  举报