您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
为什么软件工程特别强调必须先有设计,然后才能编程?
软件,需求,项目为什么软件工程特别强调必须先有设计,然后才能编程?
发布时间:2016-12-08加入收藏来源:互联网点击:
数通畅联专注于企业IT架构、SOA应用集成、数据治理分析领域,感谢您的阅读与关注。
回答于 2019-09-11 08:43:50
全行业需要而非软件工程
首先,需要纠正一点是,不是仅仅软件工程需要先有设计,然后才能编程。所有的行业都需要先进行设计,才能够去真正落地实施(当然,各行各业的用词可能会有些差别,像拍电影通常称之为:筹划)。
从头几年开始,有一个比较流行的词汇进入了大众的视野之中:“商业计划书”。要知道这个词早在几十年前就有了,但是一直也没有将这个概念推广开来,它一直停留在大中型企业之间的商业行为当中。直到有一天,“大众创业,万众创新”的时代在党的号召下来临了!
“商业计划书”就很好的体现了“先设计,在实施”的思路。商业计划书中包含很多内容(如:市场痛点、竞争分析、运营支持、公司概况、财务预测、融资计划、财务报表等等一些内容),这些内容核心就是在介绍两方面:
一、我们有什么资源、数据体现有哪些;
二、我们要完成的事情有什么前景、如何实现这个事情。
第二点通常占比70%,且是还没有实现的东西,需要预先的规划出来,把所有需要的准备工作用比较简洁的方式描述出来。从某种角度来说,它也是一种蓝图。未来所有工作都是围绕这个蓝图,不断的延伸、展开的。
没设计能不能干?
那么问题来了,既然有了设计之后,后面可以把它作为中心来进行展开。如果没有设计,可以直接编程么?
答案是可以的。正如:早餐是先吃面包后喝牛奶,还是先喝牛奶后吃面包的问题一样,本身没有特别硬性的规定。软件项目同样如此,在二十年前,中国互联网产业方心未艾之际,有很多大牛级人物都是一边编写程序代码,一边理顺思路,慢慢设计并实现出划时代意义的软件产品的(例如:某民杀毒软件),当初他们无论是出于个人爱好也好,还是有远大的梦想想要改变人们生活方式也好,最初他们也是对于产品的定位没有一个清晰、准确的认知。
但是,没有设计先编码的方法,随着客户业务的复杂化和耦合化不断增长,已经越来越凸显出对软件项目致命的影响。越是到软件项目的后期,这个影响会越来越深远,覆盖的范围也相应变大。
所以,后来大家做了很多优化,比如:建立完善的软件设计思想和步骤,设立专门的业务分析\u0026程序设计岗位,将程序模块化,将系统架构微服务化,都是在优化软件项目从开始立项到最终交付过程中避免后期造成致命影响的措施。
这些优化其实也都是已“先设计再编程”为基础的。
所以,软件项目中先设计后编程是避免后期出现致命问题的一种优秀实践。但也要根据业务的实际情况,避免滥用造成资源的浪费。
回答于 2019-09-11 08:43:50
软件工程或者编程项目,需要先规划设计后编程实施的主要原因还是每个人的编程思路特别是严密性不一样,而且没有明确清晰的控制要求的话,很容易考虑不周全,程序就会不完善。
其实项目如果很小,那么即使考虑不周全,在调试的时候也能发现问题,并及时修正。
而当比较大的项目,控制要求或者任务书,就需要集思广益的不断探讨确认。这个过程相当于编程实施已经预演了一遍,而且多人考虑确认,就可以减少很多考虑不完善的问题。
而且,有确定的控制任务文件,也有利于大家分区域的分工合作,你做A部分,我做B部分,他做C部分。
套用一个成语“凡事预则立,不预则废”,因此任何稍微复杂一点的系统,都应该先有经过广泛意见采集与确认的顶层文件作为指导,后续的工作才能有序的开展,后边检查出错点,也同样有一条主线可循。
所以,有设计文件就可以有效减少编程时的猜测,讨论等时间,也可以组织更多的人同时开展工作,可以说有百利而无一害。
回答于 2019-09-11 08:43:50
前期设计得不好,对以后的编程来说,绝对是个噩梦。
好的设计,是有高扩展性、伸缩性的,可以应对千变万化的需求,不至于需求改了,或增加需求,而造成代码大改。
这要求设计者有良好的软件架构能力,设计思维要有高远瞻性
回答于 2019-09-11 08:43:50
一个大的项目必须要先有设计,一定要先设计,而设计之前必须要做的事情就是需求分析。需求分析是了解用户“做什么”,需求分析包括了解功能和性能需求,只有了解了用户的需求以后再设计才能保证在项目完工后返工的现象发生。
设计阶段包括四个方面:数据设计,系统结构设计,过程设计,接口设计。 结构设计:定义软件系统各主要部件之间的关系。 数据设计:将模型转换成数据结构的定义。 接口设计:软件内部,软件和操作系统间以及软件和人之间如何通信。 过程设计:系统结构部件转换成软件的过程描述。
用一副简单的图来描述一下软件设计。软件设计分成两个模块,模块划分和结构化设计,设计之前先要了解设计的任务和设计的基础,这样在设计的时候才能有方向感。软件设计的任务:概要设计和详细设计。这是在软件设计阶段的两个文档。概要设计的主要任务是把需求分析得到的数据流图转换为软件结构和数据结构。
上一篇:怎么哄人开心?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |