软件工程简介:软件工程专业是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件比如有电子邮件,嵌入式系统,人机界面,办公套件,操作系统,编译器,数据库,游戏等。同时,各个行业几乎都有计算机软件的应用,比如工业,农业,银行,航空,政府部门等。这些应用促进了经济和社会的发展,使得人们的工作更加高效,同时提高了生活质量。
计算机科学简介:计算机科学,研究计算机及其周围各种现象和规律的科学,亦即研究计算机系统结构、程序系统(即软件)、人工智能以及计算本身的性质和问题的学科。计算机科学是一门包含各种各样与计算和信息处理相关主题的系统学科,从抽象的算法分析、形式化语法等等,到更具体的主题如编程语言、程序设计、软件和硬件等。计算机科学分为理论计算机科学和实验计算机科学两个部分。后者常称为“计算机科学”而不冠以“实验”二字。前者有其他名称,如计算理论、计算机理论、计算机科学基础、计算机科学数学基础等。数学文献中一般指理论计算机科学。
二者关系:大部分学校的计算机科学主要来源于数学学科,而软件工程学科是源于计算机科学的(可以类比材料科学源于物理学),一直是计算机科学的一个二级子学科。从国际学科发展看,2001年IEEE提出了“计算学科”的概念,来替代原有的计算机科学学科,计算学科包括了计算机科学、计算机工程、 软件工程 、信息系统、信息技术五个子学科。在中国,2011年开始,软件工程开始和计算机科学与技术并列为一级学科。
二者区别:软件工程在电气工程和软件工程基础方面有更多的要求,例如软件测试,设计和软件需求规范。计算机科学学生可以选择更高级别的计算机科学的选修课程。可选择的课程范围很广,例如计算机安全,软件工程基础知识,计算机视觉,机器学习和数据库管理。计算机专业更注重算法的研究和改进,而后者更注重软件开发过程中对于需求、资源、进度的管理,即把软件开发作为工程进行实践的专业。
软件工程 | 计算机科学 | |
目标 | 在时间、资源、人员的限制条件下构建满足用户需求的软件系统。 | 探索正确的计算和建模方法,从而改进计算方法本身。 |
进度与时间表 | 软件专案都有特定的进度与时间表 | 研究专案一般不具有设置的进度与时间表 |
产品 | 软件(比如办公包和编译器)。 | 算法(比如希尔排序法)和抽象的问题(比如哲学家进餐问题)。 |
关注点 | 软件工程关注如何为用户实现价值。 | 软件理论关注的是软件本身运行的原理,比如时间复杂度。 |
变化程度 | 随着技术和用户需求的不断变化,须时刻调整以适应当前的需求。 | 对于某一种特定问题的正确解决方法将永远不会改变。 |
需要的其他知识 | 相关领域的知识。 | 数学。 |
著名的探索者和教育家 | Barry Boehm, David Parnas 等 | Edsger Dijkstra, 高德纳 等 |
著名的实践者 | John Backus, 蒂姆·伯纳斯-李 等 | 无。 |