软件工程与计算机科学的关系

软件工程中的"工程"二字也大有来历,人们把下面的活动称之为工程:

创造性地运用科学原理,设计和实现建筑、机器、装置或生产过程;或者是在实践中使用一个或多个上述实体;或者是实现这些实体的过程。远古时期,人们互相协作建成了不少工程奇迹,其中有些现在还能看到(例如希腊雅典的帕特农神庙、古罗马帝国的罗马水道、中国的长城等),我们想象这些工程在设计和建造的过程中一定牵涉到了大量的计算、计划、各类角色的协作,以及成百上千的人,动物、机械的劳作。这些因素在后来出现的各种"工程"(如化学工

程、土木工程)中依然存在。中国大陆的高校中大致有下面三种讲计算机软件的机构:

计算机科学与技术系或学院

软件学院

软件工程系、软件工程学院

很多同学在报名时不知道它们的区别,进去之后发现除了收费高低不同,学的科目差不多,毕业后大部分同学都是写程序,似乎差别不大13?其实,它们的区别还是挺大的。和数理化相比,计算机科学是一内相当年轻的学科,虽然我们可以追溯到巴贝奇(Charles Babbage:1791-1871)、埃达(AdaLovelace,1815-1852)、图灵(AlanTuring,1912-1954)等计算机科学的先驱,但是"ComputerScience"这个学科的名字是1959年才正式提出,综合维基百科中"计算机科学"的词条和微软学术搜索(Microsoft Academic Search)[注释9]对于计算机科学子领域的划分,计算机科学(Computer Sci-ence)这一学术领域可以分为下面这些领域:

计算理论(Theoretical Computing

信息和编码理论(Information and Coding The-ory)算法和数据结构(Algorithm and Data Struc-ture,形式化方法(Formal Methods)

程序设计语言(Programming Language)偏实践的领域:计算机体系结构(Computer Architecture)

并行计算和分布式系统(Concurrent,Parallel and DistributedSystem)

实时系统和嵌入式系统(Real Time and Embed-ded System)

操作系统(Operating System)

计算机网络(Networking)

科学计算(Scientific Computing)

安全和密码学(Security and Cryptography)

人工智能(Artificial Intelligence)

这个领域酒盖了许多相关的领域,如模式识别(Pattern数据挖掘(DataRecognition)、机器学习(MachineLearning)Mining)、信息提取(Information Retrieval)等。

计算机图形学(Computer Graphics)、计算机视觉(ComputerVision)

多媒体(Multimedia)

数据库和大规模数据处理(Database and Large Scale DataProcessing)

·万维网(World wide Web)

自然语言处理和语音(Natural Language Pro-cessing and Speech)人机交互(Human Computer Interaction)

软件工程(Software ngineering

根据我们对软件特性及工程这一概念的了解,可以看到,计算机科学中的理论研究部分,大多可以从形式上证明,与数学、离散数学、数理逻辑密切相关;计算机科学中与实践相关的部分,都和数据以及其他学科发生关系;软件工程则和人的行为、现实社会的需求息息相关。软件工程的研究目标(软件的开发、运营和维护)都有"人"出现,这些"人"可以是项目需求的提供者,可以是软件的开发人员,还可以是软件的用户。这一特征与其他计算机科学的子领域明显不同。其实,在任何科学领域中,都有偏理论的子领域和偏应用的子领域(例如数学与应用数学),当偏应用的领域得到长足发展之后,就会更多地被大家所熟知,甚至成为一内独立的学科,这并不说明相对应的两方面有高低或优劣之分。

相关推荐
武陵悭臾16 分钟前
Python应用开发学习: Pygame 中实现数字水平靠右对齐和垂直靠底对齐
python·学习·程序人生·游戏·个人开发·学习方法·pygame
兜有米啦20 分钟前
python练习题3
开发语言·python
Wzx19801227 分钟前
go基础语法练习
开发语言·后端·golang
忧郁的蛋~1 小时前
.NET异步编程中内存泄漏的终极解决方案
开发语言·前端·javascript·.net
2301_795167201 小时前
玩转Rust高级应用. ToOwned trait 提供的是一种更“泛化”的Clone 的功能,Clone一般是从&T类型变量创造一个新的T类型变量
开发语言·后端·rust
你才是向阳花1 小时前
如何用Python实现飞机大战小游戏
开发语言·python·pygame
合作小小程序员小小店1 小时前
web网页开发,在线%商城,电商,商品购买%系统demo,基于vscode,apache,html,css,jquery,php,mysql数据库
开发语言·前端·数据库·mysql·html·php·电商
星释1 小时前
Rust 练习册 :Phone Number与电话号码处理
开发语言·机器学习·rust
one year.1 小时前
Linux:线程同步与互斥
java·开发语言
一 乐2 小时前
旅游|内蒙古景点旅游|基于Springboot+Vue的内蒙古景点旅游管理系统设计与实现(源码+数据库+文档)
开发语言·前端·数据库·vue.js·spring boot·后端·旅游