首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >软件开发是一门工程学科吗?

软件开发是一门工程学科吗?
EN

Software Engineering用户
提问于 2008-10-16 17:38:56
回答 16查看 22.6K关注 0票数 16

软件开发能被认为是工程吗?如果不是,它缺少什么东西才能成为一门工程学科?与此相关的是关于堆栈溢出的关于程序员和软件工程师之间的区别的问题

卡尼基梅隆大学的软件工程研究所规定和维护CMMI标准。这是将发展转化为工程的东西吗?

EN

回答 16

Software Engineering用户

回答已采纳

发布于 2008-10-16 17:47:40

是软件开发工程吗?如果没有,它所缺少的东西是什么才有资格这样做呢?

是的,软件工程是一门工程学科。

维基百科将工程定义为“应用数学以及科学、经济、社会和实用知识,以便发明、创新、设计、建造、维护、研究和改进结构、机器、工具、系统、部件、材料、过程、解决方案和组织”软件工程的结果是一个能够改善人们生活的软件系统,它涉及到科学、数学、经济、社会或实际知识的某种结合。

无论是在学术上还是在专业上,人们对它的看法各不相同。软件工程程序可以被教唆认证为工程项目。软件工程师可以成为IEEE的成员。有些公司认为软件工程是一门工程学科,而另一些公司则不然--这真的是一种折腾。

关于这个主题的最好的书是史蒂夫·麦康奈尔的专业软件开发:更短的时间表,更高质量的产品,更成功的项目,更好的职业发展。它将软件工程视为一种职业,从手工艺向专业的演变,软件开发的科学,软件工程与软件工程(将工程实践应用于软件与碰巧构建软件的工程师之间的区别,其中包括我的母校)、认证和许可以及伦理。

格伦·范德堡举行了一系列会谈被称为“真实软件工程”(),它在2010年至2015年期间举办了多场会议,同时还举办了两场相关讲座:“工艺、工程和编程的本质”(2011年RailsConf的主题演讲)和“工艺和软件工程”(2011年在伦敦QCon举办)。我认为这些会谈是一个相当全面的论点,为什么软件工程是一门工程学科。

范德堡在他的演讲中简短地提出了一个论点,那就是杰克·里维斯于1992年(并在2005年再次讨论)关于软件设计是什么以及代码是如何输出的软件工程设计活动 (这也在C2 wiki上进行了讨论.)提出的论点。一旦您摆脱了规范和建模是软件设计的旧思想流派,并将代码变成软件设计,软件工程和其他工程学科之间的一些关系就会变得更加明显。在您看到软件开发的经济学与许多其他学科有很大不同之后,一些差异和差异的原因变得更加明显--构建是廉价的(在许多情况下几乎是免费的),而设计则是昂贵的部分。

这是CMMI将把开发变成工程的东西吗?

不是的。CMMI是一个过程改进框架,它为组织提供指导,说明在构建软件时哪些活动是有用的。工程学科通常有一个工程过程。拥有这样一个过程对于成功完成高质量的项目是非常重要的。也就是说,CMMI (或任何其他过程框架或方法)只是一个工具--使用它不会使您从开发人员神奇地晋升到工程师。然而,在我看来,不遵循某种程序是一个项目的标志,而不是一个工程项目。

另外,您对软件工程课程/证书有什么看法?

它的价值和其他人的价值一样大。有有用的课程,也有无用的课程。有一些有价值的证书和不值得打印的纸张的证书。有很多因素,从谁是认可或认证课程,谁是颁发证书,你目前的就业行业,你现在的工作,你想去哪里。

票数 20
EN

Software Engineering用户

发布于 2009-05-06 19:19:09

我来自一个典型的工程背景,但从事软件开发,我发现这两个领域之间有很大的相似之处。除了工程的确切定义之外,我在实践中看到,开发软件与开发物理产品没有多大区别。至少我认为这不应该有太大的不同。

无论您设计飞机还是软件应用程序,您都需要:

  • 做设计
  • 定义子系统和组件
  • 制造原型
  • 指定并执行测试
  • 等。

我在另一个答案中读到,软件的设计是不同的,因为在开始编程之前,并不是所有的东西都是你设计的。实际上,在较小的程度上,在设计物理产品时也是如此。设计、原型设计和测试是一个迭代过程。

此外,当软件项目的规模扩大时,定义清晰的子系统、组件和接口变得更加重要,这与设计复杂的产品(如飞机)类似。

这就是为什么我认为开发软件是工程。

票数 9
EN

Software Engineering用户

发布于 2008-10-16 18:10:26

我想说的是,确实有软件工程这样的东西。

工程涉及到科学知识在解决问题中的系统应用。今天处理的问题的复杂性与电气工程师在制造电路或化学工程师设计制造工艺或机械工程师制造设备时所处理的问题并没有多大不同。

采用现有计划的实际做法(这种情况下的发展)与在其他领域由其他人执行这些计划(例如建筑工人)的事实很相似。

的确,大多数开发人员也从事软件工程任务,我们的教育通常不是编程,而是软件工程。所以我们把手弄脏了,而土木工程师却不这么做。

然而,应用编程语言和程序的能力并不能将编程语言和程序转化为工程师:我遇到了一些开发人员,他们对当前代码之外的复杂性和问题缺乏真正的理解。

至于你关于CMU的问题:应用标准或实践(例如CMMI)不会自动将一个人的工作转化为工程。然而,有一些组织进行科学研究以提供新的实践,这再次表明存在着工程这样的东西。

票数 7
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/111265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档