diff --git a/.gitignore b/.gitignore index db5d703..ac4197c 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ main.toc main.pdf main.bbl main.blg +main.idx +main.ilg +main.ind diff --git a/Ch1-1-History.tex b/Ch1-1-History.tex index 88f9680..4d820fc 100755 --- a/Ch1-1-History.tex +++ b/Ch1-1-History.tex @@ -1,6 +1,8 @@ +% !TEX root = main.tex + \section{引言} -软件是以计算为核心手段实现应用目标和价值的解决方案。从1966年首届图灵奖至2018年的53次颁奖中,属于软件领域的有37次(69.8\%),其中以程序设计语言、编译和操作系统为主获奖的有22次获奖,还有4次数据库获奖。作为本书第一部分的开篇,本章将简要回顾软件和软件技术的发展历程,通过梳理软件发展脉络,总结软件学科的基本内涵、关键问题、研究方法和发展规律,为第二部分学科发展战略提供基础。 +软件\index{软件}是以计算为核心手段实现应用目标和价值的解决方案。从1966年首届图灵奖至2018年的53次颁奖中,属于软件领域的有37次(69.8\%),其中以程序设计语言、编译和操作系统为主获奖的有22次获奖,还有4次数据库获奖。作为本书第一部分的开篇,本章将简要回顾软件和软件技术的发展历程,通过梳理软件发展脉络,总结软件学科的基本内涵、关键问题、研究方法和发展规律,为第二部分学科发展战略提供基础。 \section{软件发展简史} \subsection{人力/机械计算时代} @@ -48,7 +50,8 @@ Computer一词历史上出现在1613年,用来指完成演算或计算的人 “软件”一词最早出现在1953年兰德公司R.R. Carhart的报告中,用来说明讨论可靠性时与硬件相对应的“人因”。而人们现在一般认为“软件”的术语来自John W. Tukey在1958年的论文。文中指出 “软件由精心编写的解释程序、编译器和自动编程等组成,它们至少象电容器、晶体管、电线和磁带等现代计算机硬件一样重要”。1968年,或许是巧合,出现两个软件发展史上的重大事件。一是,软件与硬件的解绑;二是,软件工程会议的召开。这两个事件的背景都与IBM著名的IBM S/360系统相关。 软件依附在硬件之上解决应用问题。早期的计算机系统中硬件和软件时捆绑的。所谓“捆绑”,指IBM在收费上采取只考虑硬件价格而软件和系统服务免费的策略。这在当时对于用户是很有吸引的,也增强了公司的竞争力。到1964 年,情况发生了变化,IBM宣布了新的IBM S/360系列,希望能够升级硬件系统而不需要替换或改变用户的应用程序。而稍后RCA也宣布了其新的Spectra 70系统与IBM 360兼容。这使得IBM难以阻止RCA在市场上“免费”使用IBM的软件。1968年,IBM宣布了其软件和硬件系统的解绑,改变了软件的商业和竞争模式。自此软件从计算机系统中与硬件的剥离,获得了可以独立发展的空间。可以看到,除了商业上的反垄断和市场竞争因素外,软件本质上“解决方案”的独立性和计算平台抽象为解绑提供了历史必然和技术可行。自此,人们逐步认识到软件是计算机系统的灵魂,它向下管理计算机系统的各类资源,向上满足用户对计算机系统的应用需求。 -第二个事件是软件工程的兴起。计算机能力的快速提高和软件复杂性困难,出现了“软件危机”现象,例如,IBM 360操作系统OS/360的进度、开销和可靠性均不尽人意。NATO在1968年举行了首次软件工程会议,人们逐渐认识到需要如同其他领域的工程方法一样,系统化地进行软件开发。正如Margaret Hamilton在开发阿波罗在轨飞行和导航系统项目中明确指出,“我努力使软件具有合法性,使得构造软件的活动要受到应有的尊重,因而我开始用‘软件工程’将其与硬件和其他类型的工程区分开来,成为整个系统工程的一部分”。软件工程的出现不仅激活了软件发展的巨大活力,也隐喻了软件发展的外在驱动力,不断增长的应用需求和不断增长的计算能力。 + +第二个事件是软件工程\index{软件工程}的兴起。计算机能力的快速提高和软件复杂性困难,出现了“软件危机”现象,例如,IBM 360操作系统OS/360的进度、开销和可靠性均不尽人意。NATO在1968年举行了首次软件工程会议,人们逐渐认识到需要如同其他领域的工程方法一样,系统化地进行软件开发。正如Margaret Hamilton在开发阿波罗在轨飞行和导航系统项目中明确指出,“我努力使软件具有合法性,使得构造软件的活动要受到应有的尊重,因而我开始用‘软件工程’将其与硬件和其他类型的工程区分开来,成为整个系统工程的一部分”。软件工程的出现不仅激活了软件发展的巨大活力,也隐喻了软件发展的外在驱动力,不断增长的应用需求和不断增长的计算能力。 \subsection{软件发展的主线} @@ -82,7 +85,7 @@ Computer一词历史上出现在1613年,用来指完成演算或计算的人 \section{软件学科的内涵、发展规律和基本架构} \subsection{内涵与学科特征} -软件作为计算平台上实现应用价值的解决方案,是最存粹的人工制品,其内涵特征包括了三个方面: +软件作为计算平台上实现应用价值的解决方案,是最存粹的人工制品,其内涵特征包括了三个方面[4]: \begin{itemize} \item [-] 功能性:以何种结构和行为 \item [-] 目的性:达成什么应用目的 diff --git a/README.md b/README.md new file mode 100644 index 0000000..1060dd1 --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +# 软件科学与工程学科发展战略 + +软件学科发展战略协作编辑repo + +## repo协作注意事项 +1. 秘书组负责维护master; +2. 各章节作者请fork自己的分支,在自己的分支上更新;欢迎对其他各章提出修改建议(可以在自己的分支上直接修改)。 +3. 各章作者完成一个milestone后,请通知秘书组审核分支修改,并merge到master中。 + + +## 编译方法 +1. 建议使用TexLive 2019发行版。 +2. 请使用 XeLaTeX 编译,以便更好地支持中文排版。 + +## LaTeX编写注意事项 +1. 目前参考文献尚未处理,各章自己维护即可;回头统一处理。 +2. 请各位注意在阐述重要概念、使用重要概念时添加 \index 标注; 例如 “软件\index{软件}是以计算为核心手段实现应用目标和价值的解决方案。”、“第二个事件是软件工程\index{软件工程}的兴起”。 + + +## 各章文件对照关系 +* 八千字摘要 软件科学与工程学科发展战略(摘要): Ch0-1-Abstract + +* 第一篇 第一章 软件学科历史回顾: Ch1-1-History +* 第一篇 第二章 程序语言与理论: Ch1-2-ProgrammingLanguage +* 第一篇 第三章 系统软件: Ch1-3-SystemSoftware +* 第一篇 第四章 软件工程: Ch1-4-SoftwareEngineering +* 第一篇 第五章 软件产业: Ch1-5-SoftwareIndustry + +* 第二篇 第一章引言: Ch2-1-Overview +* 第二篇 第二章 软件理论: Ch2-2-SoftwareTheory +* 第二篇 第三章 软件语言: Ch2-3-SoftwareLanguage +* 第二篇 第四章 软件开发方法与技术: Ch2-4-DevelopmentMethodology +* 第二篇 第五章 操作系统与运行平台: Ch2-5-OperatingSystem +* 第二篇 第六章-数据管理: Ch2-6-DataManagement +* 第二篇 第七章 面向领域的应用软件系统: Ch2-7-DomainApplication +* 第二篇 第八章软件质量与安全保障: Ch2-8-Quality&Security +* 第二篇 第九章 软件生态: Ch2-9-SoftwareEcosystem +* 第二篇 第十章 软件学科教育: Ch2-10-Education \ No newline at end of file diff --git a/main.tex b/main.tex index bc5cb00..78beaed 100644 --- a/main.tex +++ b/main.tex @@ -8,6 +8,9 @@ \usepackage{booktabs} \usepackage{makecell} \usepackage{subfigure} +\usepackage{imakeidx} +\makeindex + \title{软件科学与工程学科发展战略} \author{梅宏~~等 \\ \emph{中国科学院}} @@ -23,7 +26,7 @@ \chapter*{ 软件科学与工程学科\\发展战略(摘要) } \addcontentsline{toc}{chapter}{软件科学与工程学科发展战略(摘要)} -\input{Ch0-1-Abstract.tex} +\input{Ch0-1-Abstract} \mainmatter @@ -80,6 +83,7 @@ \part{软件学科发展建议} and so on +\printindex \end{document}