
1.1 软件概念
软件(Software)是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲,软件被划分为系统软件、应用软件和介于这两者之间的中间件。在国标中对软件的定义是与计算机系统操作有关的计算机程序、规程、规则以及可能有的文件、文档及数据等。
由此可见,软件并不只是包括可以在计算机(这里的计算机是指广义的计算机)上运行的电脑程序,与这些电脑程序相关的文档一般也被认为是软件的一部分。简单地说软件就是程序加文档的集合体。
1.1.1 软件发展史
软件的发展大致经历了如下五个阶段:
1.第一阶段(1946年—1953年)
该阶段属于汇编时代,软件是用机器语言编写的,机器语言是内置在计算机电路中的指令,由0和1组成(二进制数字)。因此,只有少数专业人员能够为计算机编写程序,这就大大限制了计算机的推广和使用。
由于程序最终在计算机上执行时采用的都是机器语言,所以需要用一种称为汇编器的翻译程序,把用汇编语言编写的程序翻译成机器代码。编写汇编器的程序员简化了程序设计,是最初的系统程序员。
2.第二阶段(1954年—1964年)
该阶段软件开始使用高级程序设计语言简称高级语言(与之对应机器语言和汇编语言被称为低级语言)编写,高级语言的指令形式类似于自然语言和数学语言,不仅容易学习,方便编程,也提高了程序的可读性。
在1964年Dartmouth学院的凯梅尼(John Kemeny)和卡茨(Thomas Kurtz)发明了BASIC(Beginner’s All-purpose Symbolic Instruction Code)语言。高级语言的出现催生了在多台计算机上运行同一个程序的模式,每种高级语言都有配套的翻译程序(称为编译器),编译器可以把高级语言编写的语句翻译成等价的机器指令。系统程序员的角色变得更加明显,系统程序员编写诸如编译器这样的辅助工具,使用这些工具编写应用程序的人,称为应用程序员。
在汇编和编译时期,由于程序规模小,程序编写起来比较容易,也没有系统化的方法,对软件的开发过程更没有进行任何管理。这种个体化的软件开发环境使得软件设计往往只是在人们头脑中隐含进行的一个模糊过程,除了程序清单之外,没有其他文档资料。
3.第三阶段(1965年—1970年)
该阶段处于结构化程序设计理论,由于用集成电路取代了晶体管,处理器的运算速度得到了大幅度的提高。因此需要编写一种程序,使所有计算机资源处于计算机的控制中,这种程序就是操作系统。
1967年,塞缪尔(A.L.Samuel)发明了第一个下棋程序,开始了人工智能的研究。1968年荷兰计算机科学家狄杰斯特拉(Edsgar W.Dijkstra)发表了论文《GOTO语句的害处》,指出调试和修改程序的困难与程序中包含GOTO语句的数量成正比,从此,各种结构化程序设计理念逐渐确立起来。
20世纪60年代以来,计算机用于管理的数据规模更为庞大,应用越来越广泛,同时,用户对多种应用、多种语言互相覆盖的共享数据集合的要求越来越强烈。为解决多用户、多应用共享数据的需求,使数据为尽可能多的应用程序服务,出现了数据库技术以及统一管理数据的软件系统——数据库管理系统DBMS(Database Management System)。
随着计算机应用的日益普及,软件数量急剧膨胀,在计算机软件的开发和维护过程中出现了一系列严重问题,许多程序的个体化特性使得它们最终成为不可维护的,“软件危机”就这样开始出现了。1968年,北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机问题,在这次会议上正式提出并使用了“软件工程”这个名词。
4.第四阶段(1971年—1989年)
该阶段属于结构化程序时代,20世纪70年代出现了结构化程序设计技术,Pascal语言和Modula-2语言都是采用结构化程序设计规则制定的,BASIC这种为第三代计算机设计的语言也被升级为具有结构化的版本。此外,在1973年,美国贝尔实验室的丹尼斯·里奇(D.M.Ritchie)设计出了一种新的语言,这就是灵活且功能强大的C语言。
此外,IBM PC开发的PC-DOS和为兼容机开发的MS-DOS都成了微型计算机的标准操作系统,更好用、更强大的操作系统被开发了出来。Macintosh机的操作系统引入了鼠标的概念和点击式的图形界面,彻底改变了人机交互的方式。
20世纪80年代,随着微电子和数字化声像技术的发展,在计算机应用程序中开始使用图像、声音等多媒体信息,出现了多媒体计算机。多媒体技术的发展使计算机的应用进入了一个新阶段。
这个时期出现了多用途的应用程序,这些应用程序面向没有任何计算机经验的用户。典型的应用程序是电子制表软件、文字处理软件和数据库管理软件。Lotus1-2-3是第一个商用电子制表软件,WordPerfect是第一个商用文字处理软件,dBase III是第一个实用的数据库管理软件。
5.第五阶段(1990年—至今)
该阶段软件中有三个著名事件:在计算机软件业具有主导地位的Microsoft公司的崛起、面向对象的程序设计方法的出现以及万维网(World Wide Web)的普及。
(1)在这个时期,Microsoft公司的Windows操作系统在PC机市场占有显著优势,尽管WordPerfect仍在继续改进,但Microsoft公司的Word成了最常用的文字处理软件。20世纪90年代中期,Microsoft公司将文字处理软件Word、电子制表软件Excel、数据库管理软件Access和其他应用程序绑定在一个程序包中,称为办公自动化软件。
(2)面向对象的程序设计方法最早是在20世纪70年代开始使用的,当时主要是用在Smalltalk语言中。20世纪90年代,面向对象的程序设计逐步代替了结构化程序设计,成为目前最流行的程序设计技术。面向对象程序设计尤其适用于规模较大、具有高度交互性、反映现实世界中动态内容的应用程序。其中Java、C++、C#等都是面向对象程序设计语言。
(3)1990年,英国研究员提姆·柏纳李(Tim Berners-Lee)创建了一个全球Internet文档中心,并创建了一套技术规则和创建格式化文档的HTML语言,以及能让用户访问全世界站点上信息的浏览器,此时的浏览器还很不成熟,只能显示文本。
软件体系结构从集中式的主机模式转变为分布式的客户端/服务器模式(C/S,Client/Server的缩写)或浏览器/服务器模式(B/S,Brower/Server的缩写),专家系统和人工智能软件从实验室走出来进入了实际应用,完善的系统软件、丰富的系统开发工具和商品化的应用程序的大量出现以及通信技术和计算机网络的飞速发展,使得计算机进入了一个大发展的阶段。
1.1.2 软件生命周期
生命周期(Life Cycle)的概念应用很广泛,简单说就是指一个对象的“生老病死”。对一个软件产品或软件系统而言也需要经历同样阶段,一般称为软件生命周期。软件生命周期大致分为六个阶段:如图1-1所示。

图1-1 软件的生命周期
1.项目计划阶段
此阶段主要是确定软件开发的总体目标,通过市场调研并给出功能、性能、接口等方面的设想以及项目的可行性分析,同时对项目开发使用的资源、成本、进度做出评估,制定项目实施的计划(项目一级计划)。
2.需求分析阶段
需求俗称软件的主体,所以需求分析阶段作为一个非常重要的阶段,它由需求分析人员和用户共同对软件需要实现的各个功能进行详细的分析并给予确切的描述,并编写软件需求说明书(Software Requirements Specification,简称SRS)。
3.软件设计阶段
该阶段俗称软件的核心,主要是由系统分析组(架构师和系统分析人员)根据需求分析的结果,对整个软件进行系统架构的设计,编写概要设计说明书(High Level Design,简称HLD)。接下来由数据库设计员和开发人员根据需求说明书和概要设计说明书进行系统数据库设计以及编写详细设计说明书(Low Level Design,简称LLD)。
4.程序编码阶段
把软件设计的结果转换为计算机可运行的程序代码,使用RDBMS工具建立数据库。程序编码必须符合标准和编码规范,以保证程序的可读性、易维护性,保证程序运行的效率。
5.软件测试阶段
此阶段主要是测试人员来检测软件是否符合客户的需求,是否达到质量的要求。一般在软件设计完成后,项目开发人员构建测试版本,以便测试团队进行测试,整个测试过程大致分为:单元测试、集成测试、系统测试、验收测试。
6.运行与维护阶段
此阶段是软件生命周期中最长的阶段。在软件开发完成并正式投入使用后,可能有很多原因需要对软件进行修改,如软件错误、系统升级、增加功能、提高性能等。
1.1.3 软件体系结构
近年来,随着计算机技术与网络技术突飞猛进的发展,现代企业遇到了巨大的机遇与挑战,为了最大限度地利用现代计算机及网络通信技术加强企业的信息管理,很多企业建立了管理信息系统(Management Information System,简称MIS)。一个完整的MIS应包括:辅助决策系统(Aided Decision Making System,简称ADMS)、工业控制系统(Industrial Control System,简称ICS)、办公自动化系统(Office Automation,简称OA)以及数据库、模型库、方法库、知识库和与上级机关及外界交换信息的接口。可以这样说,现代企业MIS不能没有Internet,但Internet的建立又必须依赖于MIS的体系结构和软硬件环境。
基于Web的MIS系统同传统的MIS技术有相似也有区别。相似之处在于技术的理念;区别之处在于技术的实现。传统的MIS系统的核心是C/S(客户端/服务器)结构,而基于Web的MIS系统的核心是B/S(浏览器/服务器)结构。
1.什么是C/S结构
C/S(Client/Server)结构即客户端/服务器结构。客户端通常可以理解为安装在PC、手机终端设备上的软件,是软件系统体系结构的一种。比如:QQ软件、手机APP等,C/S模式简单地讲就是基于企业内部网络的应用系统。与B/S(Browser/Server,浏览器/服务器)模式相比,C/S模式的应用系统最大的好处是不依赖企业外网环境,即无论企业是否能够上网,都不影响应用。
还有一类通信的软件,比如:百度云盘、迅雷下载等,也属于C/S结构。但是它们之间的数据传输不需要经过服务器处理业务,可以直接通过客户端进行传输,这种结构通常称为P2P(Peer to Peer)点对点结构。
P2P是可以简单的定义成通过直接交换来共享计算机资源和服务,而对等计算模型应用层形成的网络通常称为对等网络。对等网络,即对等计算机网络,是一种在对等者(Peer)之间分配任务和工作负载的分布式应用架构,是对等计算模型在应用层形成的一种组网或网络形式。
2.什么是B/S结构
B/S(Brower/Server)结构即浏览器/服务器结构。随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过浏览器来实现,极少部分事务通过逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。B/S是目前互联网中应用最为广泛的系统结构。B/S结构比起C/S结构有着很大的优越性,传统的MIS系统依赖于专门的操作环境,这意味着操作者的活动空间受到极大限制;而B/S结构则不需要专门的操作环境,在任何地方,只要能上网,就能够操作MIS系统,这其中的优劣差别是不言而喻的。
基于Web的MIS系统,弥补了传统MIS系统的不足,充分体现了现代网络时代的特点。随着网络技术的高速发展,因特网必将成为人类社会新的技术基石。基于Web的MIS系统必将成为网络时代的新一代管理信息系统,前景极为乐观。
3.什么是A/S结构
A/S(Application Serving)体系结构。A/S体系结构通过设置应用服务器,将关键性的业务软件集中安装并进行发布,客户端可完全在服务器上执行所需的应用。A/S结构利用ICA协议,将应用程序的逻辑从用户界面中分离开来,使得网络传输数据量很小,对网络带宽的要求低,平均每个用户仅占用10K左右,即使是通过电话线连接到Internet,也能保证多个用户同时工作,提供数据的实时访问和更新。
另外,应用服务器与后台数据库通常采用局域网连接,计算和查询所需的大量数据都是基于LAN传输,因此远程用户的网络性能非常理想。同时在A/S结构中,网络中传输的仅仅是通过用户界面以及操作动作更新信息,因此系统的安全性更好。