软件工程是不是教会不怎么会写程序的人开发软件?


 "Software engineering, of course, presents itself as another worthy cause, but that is eyewash: if you carefully read its literature and and analyse what its devotees actually do,  you will discover that software engineering has accepted as its charter 'How to program if you cannot.' "

翻译过来就是:软件工程是另一个有价值的事业,但那是骗人的:如果你仔细阅读它的文献,并分析它的本质实际上在做什么,你会发现软件工程已经接受了它的章程,即如果你不能编程的话,该如何去编程。


软件工程:

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。涉及程序设计语言、数据库、开发工具、系统平台、标准、设计模式、开发方法等方面。

软件工程包括三要素:过程、方法、工具,通俗点说就是,描述了软件开发应该是怎么样的过程,过程中的每个环节(分析、设计、开发、发布、维护等)适合采用哪些方法与解决方案,采用这些方法是否可以通过一些工具来提高每个环节的效率,降低整个软件工程生命周期的时间、资金、资源成本。


软件工程是不是教会不怎么会写程序的人开发软件?

我认为软件工程并不只是教会开发软件,

软件工程的目的和其他学科的工程方法并无太大差异,主要是降低软件系统的复杂性、提高其可控性,以此在软件开发、维护、测试等各个阶段提高效率。

其实要了解软件工程“有什么用”,最好能了解软件开发过程有多复杂。如果只是一个geek自己随便开发上千行代码的小系统,其实并不需要传统的软件工程方法。但是,如果开发的系统的规模上升到万行乃至十万行左右的规模,加上软件中各行代码间存在的千丝万缕的联系,普通人要继续开发并且维护这样一个系统就会变得捉襟见肘了。当现实中存在这种情况时,程序员们往往会说,这个系统“太复杂了”,或者会说这个系统“太乱了”。复杂原因在于程序员面对的问题规模超过了他人脑所能处理的极限。面对现实问题,比如,一个银行系统,我们很难改变它本身的规模,因为银行业务本身就很庞大,但是人们能做到的是降低那“庞然大物”内部的逻辑复杂性。更重要的是,很多时候,程序员在开发一个软件功能时并不需要完全了解整个系统的所有细节,他只需要专注于某个局部。这样,相比于系统规模,减少系统内部的逻辑耦合就更为重要。由此,软件工程的核心目的就在于做到这一点,简而言之,我们需要让整个软件系统“大而不乱”,井井有条。如果了解软件工程领域的相关知识,就会发现软件工程的准则,比如高内聚低耦合、构件化软件开发以及关注点分离等等,都是围绕这一目的提出的。其实不编程也可以做软件开发,但编程是基础,首先你得会编程,对其有一定的经验和和理解,才能去做其他的东西。软件工程是教会人将更系统化,严格约束的,可量化的方法应用于软件的开发,运行和维护,而不能教会不会编程的人开发软件的。就像房屋设计师在学会设计出外观好看的房屋之前,必须懂得,在那些地方应该怎样设计才能可行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值