您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
为什么软件工程特别强调必须先有设计,然后才能编程?
软件,需求,项目为什么软件工程特别强调必须先有设计,然后才能编程?
发布时间:2016-12-08加入收藏来源:互联网点击:
详细设计的就要将每个模块的具体设计情况通过业务流图,程序流程图,PAD图,NS图来将展示出来。
进入了设计阶段,这个项目就进行了三分之一了,设计,编码,测试三个阶段完成后就可以组装成有效的软件了。设计阶段的文档预期读者用户,技术人员和管理员,这些文档就是将设计时候的想法用文字表达出来,供预期读者参考。
回答于 2019-09-11 08:43:50
首先先说明一点,不仅仅是软件工程强调必须现有设计,对于很多的工程都是一样的。既然这里说的是软件工程,那么我们就从软件开发的层面来做分析。
我们在开发软件的时候第一件要做的事情就是做需求的分析,也就是我们面向的用户(可以是公司,可以是自己,可以是任何一个有需求使用者或者群体)想要一款什么样的软件,或者说我们的软件会给用户带来什么样的价值,为用户解决了什么样的问题。
我们在了解了具体的需求之后就需要去分析和研究我们怎么样做才能满足用户的需求,这就是一个设计的过程。设计分析的过程很复杂,主要包括几个点:
技术的选型,我们用什么样的技术来满足软件开发的需要,需要考虑到团队开发人员的技术水平以及擅长的领域。
模块的划分,我们根据软件不同的功能种类,将软件划分为不同的功能模块,这样可使使软件的结构更加清晰,更能让人理解,方便开发期间的人员安排也同时满足的后期的软件维护需要。
算法和数据结构的设计,在完成了模块划分之后,需要深入到每个功能模块的内部,分析通过什么样的算法或者数据结构来解决对应的功能模块问题。
性能的考虑,在满足了基本的功能后,可能会出现比如软件运行速度慢,使用的人多了感觉卡顿等等问题,这时候就需要想办法提升软件的性能。提升软件的性能又是有很多领域的知识。
扩展性,一般软件都是需要迭代的,每个版本都会有相应的新功能上线,一款设计良好的软件可以很容易的增加新的功能,反之糟糕的软件想往里面增加功能可能就会十分的痛苦甚至根本没有办法增加功能。
稳定性,也称为鲁棒性,在一般的认知里,我们认为一款软件要想稳定的运行是通过严格的测试才可以,当然必要的严格的测试十分重要。但是在软件设计层面上也是要做很多的工作,尤其对于平台型的应用,稳定性的设计十分重要,比如咱们常用的Windows系统,我们应用程序意外崩溃了,但是对Windows没有任何影响。
安全性,安全性的范围就比较广泛了,比如我们在设计的时候要考虑到一些问题:保证用户的数据不会丢失,保证用户的数据不被恶意的访问,保证系统不被恶意攻击,在系统遭受攻击时如何保证系统数据的安全等等
上面列举了一些我们在开发软件之前要考虑的问题,如果这些问题没有想好,没有做任何的设计,可想而知,我们最终会遇到什么的困难,在很大程度上会影响软件整体的交付,要么是考虑的不周全导致进度无法估计,要么交付的软件不符合要求,要么在后期整个软件都没有办法有效的维护。
凡是都有例外,如果你做个很小的功能,小工具性质的软件,可能就不要考虑这么多的东西了。
希望对你有用!
回答于 2019-09-11 08:43:50
首先说明编程只是一种工具而已,是实现功能模块的一种手段。但是,你如果头脑不清晰就去写代码,不但代码可读性差,而且也容易产生许多bug,进而返回重写,这产生的时间成本可想而知。
学过软件工程这门课的同学都知道,在编写代码前需要进行可行性分析、概要设计和详细设计,这里不到需要与对接人员了解需求,还需要设计各种数据结构与数据库,这样才能对任务有一个整体的了解。之后还需要进行代码接口的编写与函数的优化,这些都需要提前考虑好,哪些操作可能会提高性能与降低时间复杂度。如果您做到事前分析,那么就会减少许多出错的可能。
最后,当我们养成了事前分析问题的习惯时,那么不管是对于编写代码还是生活,都将受益匪浅。
如果您有疑问,可下方留言,让我们共同进步。
回答于 2019-09-11 08:43:50
软件开发是一个比较复杂的过程,从需求调研到数据库设计、原型设计、功能设计、开始编码、功能测试、压力测试、功能上线。这些是软件开发的一个基本流程。
其中我认为最重要的是一个环节是设计。这个决定了你做出来的东西是什么样,会不会出现大量的返工。这个是耗费成本的环节。只有好的设计才可以最大程度的避免返工产生的人工成本。所以我认为设计是必须要做的事情。
回答于 2019-09-11 08:43:50
软件有很多开发模式,最经典的瀑布模型就是需求分析、概要设计、详细设计、单元测试、组装测试和确认测试,但这种方式费时费力,是不适合当前互联网市场需求快速变化需要的,有各种极限编程模式,比如快速原型法,先弄出一个简单的Demo给客看看,再不断快速迭代重构软件,还有测试驱动,我先写测试脚本,再写能让测试通过的程序,再重构迭代,有很多方法,我参与第一个项目,项目经理就画了张效果图,列出了一个包含几千条数据元素的数据字典,就以此为依据分块让我们写程序了,这也是种开发方法
上一篇:怎么哄人开心?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |