[b]计算机科学研究的课题是:[/b]
计算机程序能做什么和不能做什么(可计算性);
如何使程序更高效的执行特定任务(算法和复杂性理论);
程序如何存取不同类型的数据(数据结构和数据库);
程序如何显得更具有智能(人工智能);
人类如何与程序沟通(人机互动和人机界面)。
[b]软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义:[/b]
(1) Barry Boehm:
运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。
(2) IEEE在软件工程术语汇编中的定义:
软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究
(3) Fritz Bauer在NATO会议上给出的定义:
建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。
目前比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
(4) 《计算机科学技术百科全书》中的定义:
软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
计算机程序能做什么和不能做什么(可计算性);
如何使程序更高效的执行特定任务(算法和复杂性理论);
程序如何存取不同类型的数据(数据结构和数据库);
程序如何显得更具有智能(人工智能);
人类如何与程序沟通(人机互动和人机界面)。
[b]软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义:[/b]
(1) Barry Boehm:
运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。
(2) IEEE在软件工程术语汇编中的定义:
软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究
(3) Fritz Bauer在NATO会议上给出的定义:
建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。
目前比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
(4) 《计算机科学技术百科全书》中的定义:
软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。