《软件工程方法与实践》—— 1.2 什么是软件

本节书摘来自华章出版社《软件工程方法与实践》一 书中的第1章,第1.2节,作者窦万峰,更多章节内容可以访问“华章计算机”公众号查看。

1.2 什么是软件

既然软件工程的主角是软件开发,那么在现代社会中,软件担任的究竟是一种什么样的角色呢?我们使用的大部分软件同时担任着两个角色,既是软件产品,又是软件工具。软件产品是指为最终用户使用并带来益处的具有商业价值的软件系统。软件工具是指开发其他软件的软件系统。我们可以利用这些软件系统存储信息或进行信息的变换等。

1.2.1 软件的定义与特性

什么是软件?软件是计算机系统中与硬件相对应的另一部分,是一系列程序、数据及其相关文档的集合。程序、数据和文档称为软件的三要素,如图1-1所示。

程序是按照特定顺序组织的计算机数据和指令的集合。
数据是使程序能正常执行的数据结构。
文档是与程序的开发、维护和使用有关的资料。
计算机软件的核心是程序,而文档则是软件不可分割的组成部分。
要理解软件的真正含义,需要了解软件有哪些特征。与软件相对应的是硬件,在计算机的体系结构中,人们当初利用智慧创造的硬件是有物理形态的。现在,人们利用结构化的思想创造出的软件是逻辑的而不是有固有形态的实体,所以,计算机软件和硬件有着截然不同的特征。
复杂性。软件是一个庞大的逻辑系统,比人类构造的其他产品更复杂,甚至硬件的复杂性和软件比起来也是微不足道的。此外,软件主要是依靠人脑的“智力”构造出来的,多种人为因素使得软件难以统一化,更增加了其复杂性。软件的复杂性使得软件产品难以理解、难以生产、难以维护,更难以对生产过程进行管理。
一致性。软件必须和运行它的硬件保持一致,这是由软件对硬件的依赖所决定的,一般采用软件顺应硬件接口,而不是硬件顺应软件的方案。如果硬件系统是“现存”的,软件必须和现有硬件系统接口保持一致。此外,由于计算机的软件和硬件具有功能互换性,所以也可能出现用软件来替代硬件接口的功能。
退化性。软件与硬件相比不存在磨损和老化的问题。事实上,软件不会磨损,但它会因缺陷和过时而退化,因此,软件在其生命周期中需要进行多次的维护,直至被淘汰。
易变性。软件在生产过程中,甚至在投入运行之后,也可以再改变。软件必须能够经历变化并容易改变,这也是软件产品的特有属性。软件易变性的好处是:改变软件往往可以收到改变或者完善系统功能的效果;修改软件比更换硬件容易,使得软件具有了易维护、易移植、易复用的特征。但这种动态的变化难以预测且难以控制,可能对软件的质量产生负面影响。
移植性。软件的运行受计算机系统的影响,不同的计算机系统平台可能会导致软件无法正常运行,即软件的移植性。好的软件在设计时就要考虑到软件如何应用到不同的系统平台。
高成本。软件的开发是一个复杂的过程,需要耗费大量的开发成本和管理成本,导致软件的成本比较高。

1.2.2 软件技术的演化

软件的发展经历了一个演化的过程,自从20世纪40年代产生了世界第一台计算机后,伴随而生的就是程序或软件。软件的演化大致经历了以下四个阶段。
第一阶段。1946年到20世纪60年代初是计算机软件发展的初期,一般称为程序设计阶段,其主要特征是程序生产方式为个体手工方式。
第二阶段。20世纪60年代初到70年代初是计算机软件发展的第二个阶段,也称为程序阶段。在这个阶段,软件工程学科诞生了。程序的规模已经发展得很大了,软件开发需要多人分工协作,软件的开发方式由个体生产发展为小组生产。但是,由于小组生产的开发方式基本上沿用了软件发展早期所形成的个体化的开发方式,软件的开发与维护费用以惊人的速度增加,导致许多软件产品后来根本不能维护,最终导致软件危机的出现。
第三阶段。20世纪70年代中期至80年代中期是计算机软件发展的第三个阶段,一般称为软件工程阶段。在这个阶段,软件工程师把工程化的思想加入软件的开发过程中,用工程化的原则、方法和标准来开发和维护软件。
第四阶段。从20世纪80年代中期至今,面向对象的方法学受到了人们的重视,促进了软件业的飞速发展,软件产业在世界经济中已经占有举足轻重的地位,这个阶段一般称为面向对象阶段。
20世纪末开始流行的Internet给人们提供了一种全球范围的信息基础设施,形成了一个资源丰富的计算平台,未来如何在Internet平台上进一步整合资源,形成巨型的、高效的、可信的虚拟环境,使所有资源能够高效、可信地为所有用户服务,成为软件技术的研究热点。
Internet平台具有一些传统软件平台不具备的特征:分布性、结点的高度自治性、开放性、异构性、不可预测性、连接环境的多样性等。这对软件工程的发展提出了新的问题,软件工程需要新的理论、方法和技术和平台来应对这个问题。目前投入很大精力研究的中间件技术就是这方面的典型代表。Internet和基于Internet应用的快速发展与普及,使计算机软件所面临的环境开始从静态封闭逐步走向开放、动态和多变。软件系统为了适应这样一种发展趋势,将会逐步呈现出柔性、多目标、连续反应式的网构(NetWare)软件系统的形态。
随着Internet的发展与应用,出现了“互联网+”的新概念。“互联网+”是创新2.0下的互联网发展的新业态,是知识社会创新2.0推动下的互联网形态演进及其催生的经济社会发展新形态。“互联网+”催生了一系列软件及其平台的需求。近几年来,“互联网+”已经改变了多个行业,当前大众耳熟能详的电子商务、互联网金融(ITFIN)、在线旅游、在线影视、在线房产等行业都是“互联网+”的杰作。
随着宽带无线接入技术和移动终端技术的飞速发展,人们迫切希望能够随时随地乃至在移动过程中都能方便地从互联网获取信息和服务,移动互联网应运而生并迅猛发展。然而,移动互联网在移动终端、接入网络、应用服务、安全与隐私保护等方面还面临着一系列的挑战。其基础理论与关键技术的研究,对于国家信息产业整体发展具有重要的现实意义。

时间: 2024-10-23 13:02:29

《软件工程方法与实践》—— 1.2 什么是软件的相关文章

《软件工程方法与实践》—— 第3章 软件过程模型 3.1 引言

    本节书摘来自华章出版社<软件工程方法与实践>一 书中的第3章,第3.1节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 第3章     软件过程模型 3.1 引言     软件是逻辑的和复杂的,完全依靠开发者的智力思维活动.软件开发过程涉及人员的有效组织与管理,以充分发挥开发人员的能动性.因而,软件开发过程是非常复杂的.然而,软件开发过程中的各种活动具有一般性的规律,可以对软件开发过程进行定量度量和优化,人们总结了这些规律,提出了软件过程模型.    

《软件工程方法与实践》—— 2.5 软件工程活动

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第2章,第2.5节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 2.5 软件工程活动 在软件工程的概念被提出来之前,开发人员错误地认为,软件就是开发活动,或者极端地认为其就是编码,至于分析和设计等都是次要的.随着软件规模的不断增大,软件开发活动中暴露出很多问题.软件工程是为克服这些问题而被提出,并在实践中不断地探索它的原理.技术和方法.软件工程的工程化思想让开发人员看到,软件工程活动包括沟通活动.计划活动

《软件工程方法与实践》—— 3.3 传统的软件过程模型

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第3章,第3.3节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 3.3 传统的软件过程模型 3.3.1 瀑布模型 在20世纪80年代之前,瀑布模型是最早也是应用最广泛的软件过程模型,现在它仍然是软件工程中应用得最广泛的过程模型.瀑布模型提供了软件开发的基本框架,其过程是接收上一项活动的工作结果作为输入,然后实施该项活动应完成的工作,并将该项活动的工作结果作为输出传给下一项活动.同时,在开始下一个阶段的活动

《软件工程方法与实践》—— 3.4 面向对象模型

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第3章,第3.4节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 3.4 面向对象模型 3.4.1 构件集成模型 构件集成模型利用模块化方法将整个系统模块化,并在一定构件模型的支持下重用构件库中的软件构件,通过组合手段提高应用软件系统过程的效率和质量.构建集成模型融合了螺旋模型的许多特征,本质上是演化型的,开发过程是迭代的.基于构件的开发模型由软件的需求分析和定义.体系结构设计.构件库建立.应用软件构建及测

《软件工程方法与实践》—— 2.2 什么是软件过程

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第2章,第2.2节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 2.2 什么是软件过程 2.2.1 软件过程的定义 软件的诞生及其生命周期是一个过程,我们总体上称这个过程为软件过程.软件过程是为了开发出软件产品,或者是为了完成软件工程项目而需要完成的有关软件工程的活动,每一项活动又可以分为一系列的工程任务.任何一个软件开发组织,都可以规定自己的软件活动,所有这些活动共同构成了软件过程. 必须有科学.有效的

《软件工程方法与实践》—— 3.2 什么是软件过程模型

    本节书摘来自华章出版社<软件工程方法与实践>一 书中的第3章,第3.2节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 3.2 什么是软件过程模型     为了能高效地开发一个高质量的软件产品,通常把软件生存周期中各项开发活动的流程用一个合理的框架-开发模型来规范描述,这就是软件过程模型,或者称为软件生存周期模型.所以,软件过程模型是一种软件过程的抽象表示法,"建模"是软件过程中常使用的技术手段之一.     软件过程模型是从一个特

《软件工程方法与实践》—— 1.4 软件工程的基本原理与基本原则

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第1章,第1.4节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 1.4 软件工程的基本原理与基本原则 人们根据软件开发的特点和软件工程的概念,提出了软件工程的基本原理和基本原则. 1.4.1 基本原理 推迟实现.推迟实现是软件方法学的基本指导思想.软件开发过程应该理性地 "推迟实现",即把逻辑设计与物理设计清楚地划分开来,尽可能推迟软件的物理实现.对于大中型的软件项目,在软件开发过程中

《软件工程方法与实践》—— 2.4 软件生存周期

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第2章,第2.4节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 2.4 软件生存周期 同任何事物类似,软件也有一个从生到死的过程,这个过程一般称为软件生存周期或生命周期(Software Development Life Cycle,SDLC).一般地,软件生存周期可划分为定义.开发和运行3个时期,每个时期又细分为若干个阶段.把整个软件生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大.结构复杂和

《软件工程方法与实践》—— 1.5 软件工程开发方法学

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第1章,第1.5节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 1.5 软件工程开发方法学 在软件工程学科中,方法学用来表示一套涵盖整个软件生产过程的技术的集合.目前使用得较广泛的软件工程开发方法学,分别是结构化开发方法学和面向对象开发方法学. 1.5.1 结构化开发方法学 结构化开发方法学自1968年提出后,经过几十年的发展,形成了一套完整的规范.构成结构化开发方法学的技术包括结构化分析.结构化设计.结

《软件工程方法与实践》—— 2.3 软件产品与过程

本节书摘来自华章出版社<软件工程方法与实践>一 书中的第2章,第2.3节,作者窦万峰,更多章节内容可以访问"华章计算机"公众号查看. 2.3 软件产品与过程 软件过程提高了软件工程活动的稳定性.可控性和有组织性,过程受到严格的约束,保证软件活动有序进行.软件工程师和管理人员根据需要调整开发过程和遵循该过程.从技术的角度来看,软件过程注重软件开发中采用的方法. 从软件工程师的观点来看,产品就是过程定义的一系列活动和任务的结果,即要交付的软件.产品依赖过程,软件团队会根据产品的