下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

软件工程与信息科学的关系

作者:课课家教育     来源: http://www.kokojia.com点击数:873发布时间: 2019-03-11 13:59:44

标签: 软件工程信息科学计算机科学

  从上世纪90年代初起,计算学科(Computing)的发展远远超越了计算机科学的边界,形成了计算机科学、计算机工程、软件工程、信息系统与信息技术等若干独立学科。

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

  中国大陆的高校中大致有下面三种讲计算机软件的机构:

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

  软件学院

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

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

  计算理论(TheoreticalComputing)

  信息和编码理论(InformationandCodingTheory)

  算法和数据结构(AlgorithmandDataStructure)

  形式化方法(FormalMethods)

  程序设计语言(ProgrammingLanguage)

  偏实践的领域:

  计算机体系结构(ComputerArchitecture)

  并行计算和分布式系统(Concurrent,ParallelandDistributedSystem)

  实时系统和嵌入式系统(RealTimeandEmbeddedSystem)

  操作系统(OperatingSystem)

  计算机网络(Networking)

  科学计算(ScientificComputing)

  安全性和密码学(SecurityandCryptography)

  人工智能(ArtificialIntelligence)

  这个领域涵盖了许多相关的领域,如模式识别(PatternRecognition)、机器学习(MachineLearning)、数据挖掘(DataMining)、信息提取(InformationRetrieval)等。

  计算机图形学(ComputerGraphics)、计算机视觉(ComputerVision)、多媒体(Multimedia)

  数据库和大规模数据处理(DatabaseandLargeScaleDataProcessing)

  万维网(WorldWideWeb)

  自然语言处理和语音(NaturalLanguageProcessingandSpeech)

  人机交互(HumanComputerInteraction)

  软件工程(SoftwareEngineering)

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

  托尼·霍尔(TonyHoare)比较过计算机科学和软件工程的不同侧重点。

  表1-2计算机科学和.软件工程的不同侧重点

  计算机理论的进展会帮助软件工程(例如对程序正确性的分析);软件工程的进展(更好的工具,更多的应用领域)会帮助计算机科学家做更多的实验和探索。

  计算机人工智能研究的一个重大里程碑,就是计算机程序能否在国际象棋这个游戏中打败人类。从20世纪60年代开始,就有很多研究人员从理论和“智能”的角度去着手,取得了一定进展,但是离最终胜利还是遥遥无期。1985年,还是一个研究生的许峰雄这样想:

  “我们从一个不同的方向去逼近这个问题。我们,至少是我自己,把这个问题看成是一个纯粹的工程问题。”

  历史证明,这个从工程的角度出发,用“蛮力”提高计算速度的工程方法远远甩开了同时代的各种“智能”方案。1997年,“深蓝”战胜了国际象棋大师加里·卡斯帕洛夫。

  中国大陆高校大部分都设有与“计算机科学”相关的院系。除了学术水平名列前20名的学校,其他学校的这些院系大部分老师做的都是偏工程方面的研究(所谓“横向项目”),大部分学生毕业后也投身于解决具体的工程问题,这跟软件学院、软件工程系(院)的研究和培养方向非常雷同。这是中国IT产业目前发展的要求决定的,但并不是说中国大陆就没有人研究计算机科学的各个领域,或者说计算机科学就等同于软件工程。

  上一节谈到了软件的许多特殊性,这里我们又看到软件工程和计算机科学的其他领域也有很多差异。我们要看到,软件和软件工程的早期开拓者有不少是从事硬件设计、计算机工程这些领域工作的背景,他们带来了相应领域的不少思想和术语。例如,冒烟测试(SmokeTest)就是从电路设计和测试行业借用过来的。软件工程的“工程”二字意味着它和许多工程领域的学科,以及管理学科有很大的关系。软件工程和机械工程、航空工程等工程学科一样,其中也有工程理论、质量控制论的原理。软件团队开发和维护软件的行动,就和质量控制理论中的PDCA(Plan-Do-Check-Act)模型有很深的联系。这些我们在后面会详细提到。

赞(24)
踩(1)
分享到:
华为认证网络工程师 HCIE直播课视频教程