内容简介
本书主要介绍软件和软件工程的基本概念,面向过程的软件开发方法和面向对象的软件开发方法,软件编码、测试与维护技术,软件项目管理,软件质量与质量保证等。可作为高等学校软件工程专业、计算机科学与技术专业和信息类等相关专业应用型人才培养本科生教材,也可以供学工程的读者单独参考使用括参加计算机等级考试或相关专业自学考试)。
目录
目录第1章软件工程概述11.1软件11.1.1软件的定义、特点、种类及其发展11.1.2软件危机71.2软件工程的概念71.2.1软件工程的定义71.2.2软件工程的目标和原则81.3软件生存周期与软件开发模型91.3.1软件生存周期91.3.2软件开发模型101.4软件开发工具与软件开发环境171.4.1软件开发工具171.4.2软件开发环境18小结200第2章可行研究212.1可行研究的任务212.2可行研究的方法步骤222.3成本/效益分析242.3.1成本估算技术242.3.2几种度量效益的方法282.4系统规格说明与评审292.4.1系统规格说明302.4.2系统定义的评审30小结311第3章需求分析323.1需求分析的任务、过程与原则323.1.1需求分析的任务323.1.2需求分析的过程323.1.3需求分析的原则333.2需求分析的方法333.2.1结构化分析方法333.2.2原型化方法383.2.3系统动态分析393.2.4Jackson系统开发方法和Warnier系统开发方法393.3需求规格说明与评审423.3.1需求规格说明书423.3.2需求评审43小结444第4章概要设计454.1概要设计的任务与步骤454.1.1概要设计的任务454.1.2概要设计的步骤454.2软件设计的基础464.2.1模块化464.2.2模块独立474.2.3软件结构设计494.3概要设计的方法504.3.1结构化设计方法504.3.2面向数据结构的设计方法544.3.3用户界面设计574.4概要设计文档与评审594.4.1概要设计阶段的文档594.4.2概要设计阶段的评审59小结590第5章详细设计615.1详细设计的任务与原则615.1.1详细设计的任务615.1.2详细设计的原则625.2详细设计的方法635.2.1结构化程序设计技术635.2.2详细设计基础685.2.3详细设计方法的选择765.3数据设计775.3.1数据设计原则775.3.2数据结构设计785.3.3数据库设计795.4详细设计规格说明与评审805.4.1详细设计规格说明805.4.2详细设计规格说明评审82小结823第6章面向对象技术846.1面向对象的基本概念846.1.1面向对象技术846.1.2对象856.1.3类和实例856.1.4继承856.1.5多态866.1.6消息866.1.7方法866.2面向对象分析866.2.1面向对象分析的特点876.2.2面向对象分析的基本任务与分析过程886.3面向对象设计946.3.1面向对象设计的概念946.3.2面向对象设计的准则946.3.3面向对象设计的任务966.4面向对象设计方法976.4.1Booch方法976.4.2Coda/Yourdon方法996.4.3对象模型技术方法简介1016.5UML开发方法1036.5.1UML的发展与特点1036.5.2UML的表示法1046.5.3UML的开发方法1126.6面向对象实例分析与设计1136.6.1建立用例1146.6.2系统分析1156.6.3系统设计116小结11819第7章程序设计语言和编码1207.1程序设计语言1207.1.1程序设计语言的分类1207.1.2程序设计语言的特1237.1.3程序设计语言的选择1247.2程序设计基础1257.2.1结构化程序设计1257.2.2程序设计风格1267.2.3程序效率1287.3程序复杂度量1297.3.1代码行度量法1307.3.2McCabe度量法1307.3.3Halstead软件科学法1307.4编程1337.4.1保护编程1337.4.2冗余编程134小结13435第8章软件测试1378.1软件测试的基本概念1378.1.1软件测试的目的和重要1378.1.2软件测试的特点和原则1388.1.3软件测试的基本步骤1408.1.4静态分析与动态测试1408.2软件测试的基本方法1418.2.1白盒测试1428.2.2黑盒测试1458.3软件测试的策略1528.3.1单元测试1528.3.2组装测试1548.3.3确认测试1578.3.4系统测试1588.4排错技术1608.4.1排错的原则1618.4.2排错方法1628.5面向对象的测试1648.5.1面向对象的单元测试1648.5.2面向对象的集成测试1658.5.3面向对象的确认测试1658.6软件测试计划与测试分析报告166小结16869第9章软件维护1709.1软件维护的定义、分类和特点1709.1.1软件维护的定义1709.1.2软件维护的分类1719.1.3软件维护的特点1729.2软件维护过程及组织1739.2.1软件维护过程1739.2.2软件维护组织1749.3软件的可维护1759.3.1软件的可维护概念1759.3.2影响可维护的因素1759.3.3提高软件可维护的方法1799.3.4软件维护的副作用1829.4逆向工程和再生工程1849.4.1逆向工程1849.4.2再生工程185小结18889第10章软件质量与质量保证19010.1软件质量的概念19010.2影响软件质量的因素19110.2.1McCall软件质量因素19110.2.2ISO 9126质量因素19310.3软件质量度量19410.3.1软件质量度量方法19410.3.2软件质量评价19510.4软件质量保证策略和活动19610.4.1软件质量保证策略19610.4.2软件质量保证活动19710.5软件质量保证标准19810.6软件技术评审200小结20203第11章项目计划与管理20411.1软件项目管理过程20411.2软件度量20511.2.1面向规模的度量20611.2.2面能的度量20711.3软件项目组织与计划20911.3.1软件项目组织20911.3.2软件项目计划21111.4项目成本估算与开发成本估算21211.4.1项目成本估算21311.4.2开发成本估算21311.度计划与风险分析21611.5.度计划21611.5.2风险分析21911.6软件过程与能力成熟度模型22311.6.1能力成熟度模型的基本概念22311.6.2能力成熟度模型22411.6.3能力成熟度模型的应用226小结22626
摘要与插图
4.软件的发展
(pan style="font-family:宋体">程序设计阶段
计算机发展的早期阶段(20世纪50年代初期60年代中期)为程序设计阶段。在这个阶段,硬件已经通用化,而软件的生产却是个体化的。这时,由于程序规模小,几乎没有系统化的方法可以遵循。对软件的开发没有管理方法.在出现计划推迟或者成本提高的情况时.程序员才开始弥补。在通用的硬件已经普遍时,软件产品还处在初级开发阶段,对每类应用均需自行再设计.软件的应用范围很有限。软件设计往往仅是人们头脑中的一种模糊想法,而文档根本不存在。
(2)程序系统阶段
计算机系统发展的阶段(20世纪60年代中期到70年代末期)为程序系统阶段。多道程序设计和多用户系统引入了人机交互的概念,交互技术打开了计算机应用的新世界,使硬件和软件的配合达到了一个新的层次,实时系统和代数据库管理系统此诞生。这个阶段还有一个特点,是软件产品的使用和“软件作坊”的出现。被开发的软件可以在较宽广的范围内应用.主机和微机上的基础程序能够有数百甚上千的用户。
在软件的使用过程中,当发现程序错误或用户需求和硬件环境发生变化时都需要修改软件,这些活动统称为软件维护。软件维护上的花费以惊人的速度增长,更为严重的是,许多程序的个体化特使得它们根本不能维护。于是“软件危机”出现了。
(3)软件工程阶段
计算机系统发展的第三阶段始于20世纪70年代中期并跨越十年,被称为软件工程阶段。在这一阶段,以软件的产品化、系列化、丁程化、标准化为特征的软件产业发展起来,打破了软件生产的个体化特征,有了可以遵循的软件工程化设计原则、方法和标准。在分布式系统中,各台计算机可以同时执行某能并与其他计算机通信,极大地提高了计算机系统的复杂。广域网、局域网、高带宽数字通信以及对即时数据访问需求的增加都对软件提出了更高的要求。
(4)第四阶段
计算机系统发展的第四阶段已经不再着重于单台计算机和计算机程序,而是针对计算机和软件的综合影响。由复杂操作系统控制的强大台式机、广域和局域网络,配以的软件应用已成为标准。计算机体系结构迅速从集中的主机环境转变为分布的用户机/服务器环境。世界范围的信息网提供了一个基本结构,信息高速公路和网际空间连通已成为令人关注的热点问题。事实上,Inter可以看作是能够被单个用户访问的软件,计算机正朝着社会信息化和软件产业化的方向发展,从技术的软件工程阶段过渡到社会信息化的计算机系统。随着第四阶段的发展,一些新技术开始涌现。面向对象技术将在众多领域中迅速取代传统的软件开发方法。
计算机系统发展的四个阶段中的典型技术如表pan style="font-family:宋体">.pan>所示。pan>.pan>.2软件危机
软件危机指软件开发和维护过程中出现的一系列严重问题。这些问题绝不仅仅是“不能正常运行的”软件才具有的,实际上几乎所有软件都不同程度地存在这些问题。概括地说,软件危含以问题:如何开发软件,怎样满足人们对软件日益增长的需求;如何维护数量不断膨胀的已有软件。具体地说,软件危机主要有下列表现。
①产品不符合用户的实际需要。
②软件开发生产率的提高速度远不能满足客观需要,软件的生产率远低于硬件生产率和计算机应用的增长率,使人们不能充分利用现代计算机硬件提供的巨大潜力。
③软件产品质量差。软件可靠和质量保证的定量概念刚刚出现不久,软件质量保证技术(审查、复审和测试)没有贯穿软件开发的全过程,这些都会导致软件产品发生质量问题。
④对软件开发成本度的估计通常不。实际成本比估计成本有可能高出一个数量级,实度比预度拖延几个月甚几年,这种现象降低了软件的信誉。而为了度和节约成本所采取的一些权宜之计又往往会降低软件产品的质量,从而不可避免地引发用户的不满。
⑤软件的可维护差。很多程序中的错误是难以改正的,实际上既不能使这些程序适应硬件环境的改变.也不能根据用户的需要在原有程序中增加一些新能。无法实现软件的可重用会导致人们仍然在重复开能类似的软件。
⑥软件文档资料通常既不完整,也不合格。
⑦软件的价格昂贵,软件成本在计算机系成本中所占比例逐年上升。
……




