软件工程基础 第一章
#1.1.1软件工程危机概述 软件工程危机的概念和特征 软件危机是指20世纪60年代在计算机软件的研发,运行,维护和管理过程中,出现一系列严重问题的现象 软件危机的特征主要体现在7个方面 (1)在软件系统运行过程中,经常出现功能,性能等严重问题或故障 (2)软件产品的质量,可靠性和安全等方面,时常不能达到标准要求。软件产品质量难以保证,甚至在开发过程中被迫中断 (3)软件开发管理差,对成本和进度难以估计 (4)系统时常出现无法维护,升级或更新的问题 (5)开发效率低,无法满足应用快速发展与更新升级的实际需要 (6)研发成本难以控制,在总成本中所占比不断大幅上升 (7)软件开发没有标准,完整统一规范的文档资料。软件不仅只是程序,还应当有一套规范的文档资料和售后服务 2.软件危机产生的原因 软件危机产生的主要原因包括6个方面 (1)软件开发的规模、复杂度和需求量都在不断 增加。 (2)软件(系统)需求分析与设计不完善、有欠缺,致使软件开发、维护和管理或文档出现问题。 (3)没有按照工程化方式运作,开发过程无统一标准、准则和规范方法。 (4)研发人员之间或同用户相互交流沟通不够或文档资料不完备。 (5)软件测试调试不规范、不细致,提交的软件质量不达标。 (6)在软件运行过程中,忽视了正常有效的维护和管理。 3.解决软件危机的主要措施包括3个方面
(1)技术方法。运用软件工程的技术、方法和标准进行规范。 (2)开发工具。选用先进高效的软件工具,采取切实可行的实施策略。 (3)组织管理。研发机构需要组织高效、管理制度和标准严格规范、职责明确、质量保证有力、团结互助、齐心协力,注重文档及服务。
1.1.2软件工程的发展过程
软件工程发展经历了程序设计阶段,程序系统阶段,软件工程阶段和创新完善软件工程4个阶段,各阶段的典型技术如下所示 1.传统软件工程的发展也经历了四个重要阶段 1.传统软件工程 传统软件工程也称为第一代软件工程,是指软件工程产生的初期。20世纪60年代末到70年代,开发软件主要采用“生产作坊”方式,随着软件需求量、规模及复杂度的快速增加,相继出现了软件皿知识拓展开发效率低、成本高、进度及质量失控等各种难以解决的软件工程技术软件问题,大量无标准规范开发的低劣软件涌入市场,导的发展致出现了“软件危机”且不断加重,传统开发方式已无法适应软件开发的需要,致使产生了软件工程。 2.对象工程 对象工程也称为第二代软件工程。20 世纪80年代中期到90年代,以Smalltalk为代表的面向对象的程序设计语言相继推出,使面向对象的方法与技术得到快速发展。从20世纪90年代起,研究的重点从程序设计语言逐渐发展到面向对象的分析与设计技术,形成了一种完整的软件开发方法和系统的技术体系,其后出现了许多面向对象的开发方法,使面向对象的开发技术和方法逐渐得到完善和推广。 3.过程工程 过程工程也称为第三代软件工程。随着计算机网络等信息技术的快速发展和广泛应用,软件的规模、复杂度、开发时间和开发人员持续快速增加,致使软件工程开发、维护和管理的难度不断加大。在软件开发的实践过程中,软件企业和研发人员逐渐认识到**:保证软件质量、提高软件生产效率的关键是对“软件过程”的有效管理和控制,从而提出了对软件项目管理的计划组织、质量保证.成本估算.软件配置管理等技术与策略.逐步形成了软件过程工程。 4.构件工程 构件工程(Component Engineering)也称为第四代软件工程**。20 世纪90年代起,基于构件(模块)的开发方法取得重要进展,软件系统的开发可利用已有的可复用构件进行修改集成,而无须从头开始编程构建,从而解决了提高软件研发效率和质量、降低成本的重大问题。面对复杂的操作系统控制的桌面系统,需要兼顾各种异构网络、数字通信与交互和先进的应用软件的综合需求。计算机体系结构从主机环境转变为分布式的客户机/服务器等环境。计算机辅助软件工程(Computer Aided Software Engineering ,CASE)将软件工具和代码生成器进行集成,为很多软件系统提供了高效且可靠的解决方案,专家系统和人工智能软件的应用更加广泛,模拟人脑的人工神经网络软件开拓了信息处理的新途径,云计算、并行处理、网络技术、虚拟技术、多媒体技术和现代通信技术等新技术、新方法改变了人们原有的工作方式。
1.2软件及软件工程概述
#1.2.1软件的概念,特点和分类 11.软件的相关概念 软件(Software)是计算机及手机等终端设备运行的指令、数据和资料与服务的集合,包括指令程序、数据、相关文档和完善的售后服务的完整集合。具体可以表示为 软件=程序十数据十文档十服务 其中,数据是信息的表达方式和载体,是使程序正常进行信息处理的结构及表示。文档(Document)是与程序开发、维护及使用有关的技术数据和图文资料。服务主要指对各种软件用户的服务,包括提供软件产品使用说明书推销服务及售后技术,支持等。软件分为系统软件、支撑软件(开发环境)和应用软件。其中,应用软件也称为信息系统(Information System),是指由一系列相互联系的部件(程序模块)组成的,为实现某个业务处理目标对数据进行输人、处理、存储、输出、反馈和控制的集合。 2.软件的主要特点 软件的主要特点如下 (1)智能性。软件是人类智能劳动的产物、代替和延伸。程序、流程、算法、数据结构等需要通过人的思维进行设计、编排和组织。 (2)抽象性。软件属于逻辑实体,而非物理实体,无形性和智能性致使软件难以认识和理解。在研发过程中,需要进行逻辑设计和组织,运用抽象思维和方法。人们只能通过用户界面来与软件交互,其丰富内涵被蕴含在计算机内部,使软件具有高度的抽象性。(3)人工方式。软件的开发、维护及管理设置等方面,很难完全脱离手工方式。(4)夏杂性和系统性。软件开发和运行经常受计算机等终端系统的限制,软件的开发和运行必须依赖于软件环境。大中型软件是由多种要素组成的有机整体,具有显著的系统特性。软件具有确定的目标、功能、性能、结构和要素。(5)泛域性。软件应用很广泛,在信息化中可服务于各个领域、行业和层面。(6)智能复制性。软件成本相对比较昂贵,软件是人类智能创造性的特殊产品。而复制和推广的费用一般较低,并可以借助复用技术进行软件开发再利用。(7)非损及更新性。各种软件不存在物理性磨损和老化向题,但可以退化,需要及时进行更新升级。 3.软件的主要分类 1)按照软件功能划分。可以分为3种。 ①系统软件。如操作系统、设备驱动程序等。②支撑软件。协助用户开发的工具软件,如编译程序、程序库、图形软件包等。 ③应用软件如企业业务管理软件、CAD/CAM软件、CAI软件、图书管理信息系统学生成绩管理信息系统等。 (2)按照软件规模划分按照软件规模(源代码行)、参与研发人数、研制时间,可以将软件分为微型、小型、中型、大型、超大型5种 .(3)按照软件工作方式划分。通常可以分为4种:实时处理软件分时软件交互式软件、批处理软件。 (4)按照软件服务对象的范围划分。可以分为如下类型。 ①项目软件。主要由企事业客户委托研发机构进行开发的软件。 ②产品软件。通常由软件开发机构进行研发,然后提供给市场。 (5)按照软件运行的终端设备划分。可以分为服务器软件、计算机软件、手机软件、机器人软件和其他嵌人设备(电子化设备)软件等。此外,还可按照软件使用频度或软件失效的影响等方面进行划分。手机软件从开发的角度,可以分成应用软件、用户界面、操作系统、底层与设备驱动和通信协议等.
|