首页 新闻 搜索 专区 学院

咨询大家一个软件开发过程中的问题

0
悬赏园豆:10 [待解决问题]

咨询大家一个软件开发过程中的问题:
我在一家互联网公司担任技术总监,其中一个工作就是项目的总体设计和详细设计。目前各种设计所用时间占整个项目开发时间的10%左右。我个人认为设计时间偏少,而且越正规、越成熟的项目团队,设计比重越高,听说微软占40%。
老板是做工程和建筑行业,投资互联网,他认为一个设计师,既然以前做过很多设计,那么再做一个新项目的设计时,必然可以借鉴前面项目的经验,总体设计和详细设计应该很快完成才对,甚至几天就可以完成。就像为一座建设刷涂料一样,应该很快就估算出哪里需要刷,用料多少等。否则,就说明设计师的能力有问题。
大家怎么看?

conroe965的主页 conroe965 | 初学一级 | 园豆:192
提问于:2015-05-21 21:58
< >
分享
所有回答(9)
0

是的,软件设计和建筑设计确实有相通之处,不过也有不同之处。

首先,如果是造两层的楼房,你只要一张基本的平面图就能造完,不需要考虑安全、通风、消防、抗震、抗风、布线、管道布置等等等等各种问题。但是如果你要造的是几百米高的大厦,这些东西都需要考虑,而且由于楼型设计的不同,所有的这些都需要专门设计。你们老板这样的想法,沿用到建筑领域就等于是每次造的楼主体结构几乎一样,其他配套设计只要略微调整下就行了。这在建筑这样的传统行业可行,在软件这种快速发展的行业里是行不通的。

其次,IT技术的发展很快,技术架构每年都在革新,要跟得上时代的步伐,新项目也必须或多或少的用到一些较新的技术、架构等,设计上需要有针对性的变动。

再次,人们对软件的需求变化也越来越快,几年前还在大张旗鼓的做网站,现在大家都开始做微信端和移动App了(一个体育馆的设计和一个教学楼的设计肯定是不一样的吧);前几年大家的期待用户量只有几万,现在可能是数百万了(一幢能住10人的房子,和能住1000人的房子设计肯定也完全不一样吧)。

综上所述,软件行业和传统行业最大的区别就是软件行业的技术、需求变化太快了,如果想大量重用老的设计就像在原地踏步,在软件行业很快会被淘汰的。

无上@诀 | 园豆:202 (菜鸟二级) | 2015-05-22 00:40
0

建筑与软件的区别,就如同雕像与人体的区别。对建筑起决定性作用的是结构设计,对软件起决定性作用的是系统设计。这两者有天壤之别。

“越正规、越成熟的项目团队,设计比重越高,听说微软占40%。”,如果微软真的是这样,我觉得那不是学习榜样,而是反面教材。而且微软也在转变,现在在GitHub上的多个开源项目,都采用更敏捷的方式,快速迭代,不过分追求开始的设计。

“否则,就说明设计师的能力有问题。”,如果在软件开发中这么干,那说明设计师不是忽悠,就是超级天才。

dudu | 园豆:38827 (高人七级) | 2015-05-22 08:37

dudu看清楚,“否则,就说明设计师的能力有问题。”这貌似是老板说的。。。

支持(0) 反对(0) 顾晓北 | 园豆:10219 (专家六级) | 2015-05-22 08:57

@顾晓北: 我针对的就是他们老板:)

支持(0) 反对(0) dudu | 园豆:38827 (高人七级) | 2015-05-22 09:36
0

我觉得详细设计不应该很快完成,而且不应该在开发之前完成,因为在开发过程中会发现新的实现方法,新的领悟,而且需求也会有所变化,所以详细设计应该是始终贯穿于整个开发过程中的,个人愚见。

会长 | 园豆:9552 (大侠五级) | 2015-05-22 08:57
0

情况其是是很复杂的,要分开来说。

1:你的老板的思路大体上是对的。模块化所有的功能,可以快速产生新的产品。使用现成的成熟的模块、框架来开发可以减少无所谓的时间损失和调试代码的时间。

2:具体到一个产品,如果是理想情况下自己主导从头开始设计一个产品,可以化多一点时间来做设计,务求稳健完善,然后才动工,这个思路也ok。

 可是如果具体的开发并不是这样的。

    A:) 客户的需求会改变

              没有做好分析或者用户环境改变、或者用户的目标发生改变、或者投资改变.....    

    B:)老板对产品的定位也会改变

    C:)工作环境可能改变(核心技术人员离职)
    D:)市场环境可能变化(新的操作系统、模块出现)

 

这些改变都直接影响整个产品,可能需要对设计图完全的修改。 这种情况下,前期化的时间就是垃圾时间了。

 

所以软件产品是一个综合判断的过程。

圆大帅 | 园豆:604 (小虾三级) | 2015-05-22 09:06
0

觉得中小型系统和农村建房很多共通之处,一:搭好框架和常见类库(打好地基)二:填充(码砖)三:优化(贴瓷砖等装修)

不同之处在于,建房子需要建成什么格局在地基那就已经确定了,而软件设计却要考虑后续扩展、变更,所以觉得区别也就在于需求分析这块没有建筑那么明确,很多项目都是前期说好需求,到上线就出现异议,那时候什么文字游戏,理解能力就决定了各种无法理解的变更,老的瓦匠师可以明确建房需要多少材料工期,当然牛逼的设计师也确实可以...

另外,觉得你们老板说的挺有道理,刚创业嘛,前期都是能省就省...

风醉 | 园豆:1197 (小虾三级) | 2015-05-22 09:26
0

就软件工程来说,设计很重要。因为软件交付的不仅仅是一个程序,或者一个网站,它包含很多后续服务,优化等等。而且设计到软件硬件业务等相关因数影响。建筑只是交付一个房子就好了,设计完了,那么造出来就完了。软件不一样,每个过程都是动态的,现在主流的还是用敏捷的方式来管理。用敏捷开发,这样你老板可能更好接受一些。每次交付的时间缩短。让老板短时间就能看到结果,然后适当的跟老板沟通下软件工程学。术业有专攻,你要拿出合理的理由,设计的时间也不是不可以给。

茂茂 | 园豆:2860 (老鸟四级) | 2015-05-22 10:47
0
SoftwareTeacher | 园豆:223 (菜鸟二级) | 2015-05-23 09:48
0

有时候外行人当领导真是头大,如果他能相信你还好,如果不相信你更难纠缠。

angelshelter | 园豆:9676 (大侠五级) | 2015-05-24 21:55
0

如果你要做的东西需求及各种细节非常明确,非常清晰,可以适当的多花点时间设计、研究透彻一点。。如果你有一个不是100%确定的需求,或者有个不很靠谱的老板,或不靠谱的客户,建议你将架构基本搭好,然后马上开工干。干出成果了,拿出来让老板批斗,让客户批斗,然后你再完善。然后再被批斗,你再完善。。。做好随机应变,改来改去的心理准备。。。你遇到过做了半年的项目到了现场准备实施了方案被自己领导反悔推翻的情况么??

小浩叔叔 | 园豆:210 (菜鸟二级) | 2015-05-29 05:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册