对详细设计的理解
我觉得没有好的软件工程不但会给个人,也会给项目组,所有人带来困难,这是我对详细设计的理解:
一、 开发人员需要做3到4次测试。
其实,我们并不是不做详细设计。我们都做详细设计,包括开发人员与测试人员。
开发人员开发的时候,甚至需要做3到4次详细设计,它们分别是:
1. 拿到开发任务后,首先需要对开发任务进行思考和调查,这是第一次详细设计。成果物是记在脑子里的理解。
这一阶段通常没有副产品,不会想到设计点,所以就增大了单元测试时候的工作量。
2. 编码的时候,由于对任务理解的深化,会想到许多细节的东西,这时候再思考、调查一遍,这是第二次详细设计。
成果物是写出来的代码和脑子里的理解。
因为这些思考带有随意性,容易忘记,就增大了修改bug的工作量。
3. 单元测试的时候,因为没有预先设计好的测试点,所以需要回顾一下自己曾经的思考和调查,按照回顾的东西来做测试(这种测试通常很不全面),这时第三次详细设计。
原因是没有预先设计好测试点,与详细设计。
结果是单元测试不到位,把很多该单元测试的问题撂给了测试人员。
4. 当测试人员测试出bug,而且bug埋藏的很深的时候,需要自己找错误原因,回顾一下编程思路,对该功能的理解,然后再做修改,这是第四次详细设计。
由于无法保证这次详细设计的正确性,为程序留下了隐患。
二、 无法合理的安排进度。
三、
因为没有详细设计,无法很好的把握每个功能的工作量的大小,所以很难做一个合理的计划,开发计划做不好,测试计划估计就更难做了。
产生这个问题的原因是没有对功能有足够的了解,有些看上去简单的东西可能含有许多复杂的逻辑。还有,就是下一个要讲的问题:疑难问题在编码前得不到解决,留到编码时解决,就加大了开发时间。
四、 疑难问题难解决,交流不畅通。
在开发的时候很难拿出很好的交流时间,因为
1. 大家都忙。
2. 这些疑难问题是一个一个发现的,不系统,无法统一解决,也无法规定时间解决,因为是随时发现的,有些可能还急需要解决。
结果是疑难问题层出不穷,影响进度也影响开发的积极性,还会影响发开质量。因为这些疑难问题会打断开发人员的思路。
五、 无法很好的适用客户要求(因为每个人作设计。理解不同)。
因为这样的详细设计是每个人自己做的,而且是在不同的阶段不同的时间,出于不同的目的做的,所以,这样的详细设计为难题很多。
1. 没有系统性,遇到问题解决问题,可能会出现为了解决这个问题而影响到其它的问题。
2. 无法集思广益,因为是个人做的,由于阅历,思维方式,知识结构和性格不同,肯定有许多地方想不到。
3. 无法得到大家对该详细设计的看法,因为没有交流的时间(大家都在忙)。
4. 无法及时解决疑难问题,可能有些问题就按照自己的理解来完成了。
5. 系统无法统一,例如某个单位、功能的实现都会因为人不同而不同,例如:同样是币值,一个系统中,可能会出现元、角、分的单位。
六、 无法验收,无验收依据。
因为没有详细设计,所以只能*概要设计或需求规格说明书来验收。而这些文档好多地方都没有考虑,而没有考虑的地方可能会很大的影响系统的功能。
例如上面说的单位问题。
而且,因为没有详细设计,没有制定出来测试点,很难说某个人的单元测试是合格还是不合格。
七、 为单元测试带来难度。
因为详细设计时,没有设置测试点,测试的时候就不知道怎么测试好,会一头雾水。
测试多少个点合适,那些地方是重点,那些地方需要注意,测试到什么程度就算测试好了,不知道,所以单元测试很难测试。
没有预设的测试点,单元测试就很难量化,也很难计划。
因为麻烦,因为一头雾水,单元测试的热情就降下来。
单元测试做不好,就会出现下面的问题:增加测试人员的难度。
八、 为测试组人员带来难度,难以保证测试人员的测试质量。
因为单元测试没有做好,很多测试就只能拿到测试组来测,这样就增加了测试人员的难度。
由于测试人员对系统并不必开发人员熟悉,所以,发现bug的难度要比开发人员的大。
因为测试的工作量增大,就很难保证测试的质量。
因为测试出bug的增多,测试人员可能会怀疑开发人员的能力,甚至对开发人员有意见。
由于测试出bug的增多,开发人员修改bug的热情也会下降,甚至会怀疑系统的性能,会怀疑自己的能力。
因为需要修改的bug的增多,距离编码完成的时间长,对代码的具体细节会产生遗忘,修改bug的质量就难以保证。
其实我觉得详细设计也不难做,因为每个开发人员都在做,虽然与正规格式不一样,但是很实用。所以我们肯定能很轻松的,做出非常实用的详细设计。
至于变更,我觉得许多变更是因为对系统了解不深造成的,做详细设计能够加深对系统的了解。
而且,如果有变更,都逃脱不了。不做详细设计比做浪费的时间精力要多。而且,开发前思考的不仔细,也不会知道为什么需要变更,变更后有什么影响,变更的必要性有多大。
如果我们在实现前就深入思考过,我们就可以对变更了解的更深。由资本来接受、拒绝、延迟实现变更,因为我们做过深入调查嘛。
我觉得我们做详细设计第一不是浪费时间,第二不是难事,是我们拿手的事。
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器