关于软件工程

软件工程是应用计算机科学、数学管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。

 

软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。

 

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

 

软件工程的核心知识(SWEBOK)

 ACM 与 IEEE Computer Society 联合修定的 SWEBOK[12](Software Engineering Body of Knowledge)提到,软件工程领域中的核心知识包括:

  • 软件需求(Software requirements)
  • 软件设计(Software design)
  • 软件建构(Software construction)
  • 软件测试(Software test)
  • 软件维护与更新(Software maintenance)
  • 软件构型管理(Software Configuration Management, SCM)
  • 软件工程管理(Software Engineering Management)
  • 软件开发过程(Software Development Process)
  • 软件工程工具与方法(Computer-Aided Software Engineering, CASE)
  • 软件品质(Software Quality)

软件工程与计算机科学

软件的开发到底是一门科学还是一门工程,这是一个被争论了很久的问题。实际上,软件开发兼有两者的特点。但是这并不意味着它们可以被互相混淆。很多人认为软件工程基于计算机科学信息科学就如传统意义上的工程学之于物理化学一样。在美国,大约40%的软件工程师具有计算机科学的学位。在世界其他地方,这个比例也差不多。他们并不一定会每天使用计算机科学方面的知识,但是他们每天都会使用软件工程方面的知识。

软件工程与计算机科学的差别 [13]
 软件工程计算机科学
目标时间资源人员这3个主要限制条件下构建满足用户需求的软件系统。探索正确的计算和建模方法,从而改进计算方法本身。
产品软件(比如办公包和编译器)。算法(比如希尔排序法)和抽象的问题(比如哲学家进餐问题)。
进度与时间表软件项目都有特定的进度与时间表研究项目一般不具有设置的进度与时间表
关注点软件工程关注如何为用户实现价值软件理论关注的是软件本身运行的原理,比如时间复杂度空间复杂度,和算法的正确性。
变化程度随着技术和用户需求的不断变化,软件开发人员必须时刻调整自己的开发以适应当前的需求。同时软件工程本身也处于不断的发展中。对于某一种特定问题的正确解决方法将永远不会改变。
需要的其他知识相关领域的知识。数学
著名的探索者和教育家Barry BoehmDavid Parnas, and Frederick P. BrooksEdsger Dijkstra高德纳Robert TarjanPeter Slater艾伦·图灵姚期智
著名的实践者John BackusDan Bricklin蒂姆·伯纳斯-李林纳斯·托瓦兹理查德·马修·斯托曼无。

例如 Peter McBreen 认为,软件“工程”意味着更高程度的严谨性与经过验证的流程,并不适合现阶段各类型的软件开发。Peter McBreen 在著作《Software Craftsmanship: The New Imperative》提出了所谓“craftsmanship”的说法,认为现阶段软件开发成功的关键因素,是开发者的技能,而不是“manufacturing”软件的流程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值