软件工程基础
分類: 图书,计算机/网络,软件工程/开发项目管理,
作者: 李国彬主编
出 版 社: 机械工业出版社
出版时间: 2008-8-1字数: 284000版次: 1页数: 178印刷时间: 2008/08/01开本: 16开印次: 1纸张: 胶版纸I S B N : 9787111244882包装: 平装内容简介
软件工程已成为计算机科学领域中的一个重要学科。本书着重从实用角度讲述软件工程的基本概念、原理、方法和工具,系统地介绍目前较成熟的、广泛使用的软件工程技术。
本书内容包括:软件工程概述,可行性研究,需求分析,系统设计(概要设计、详细设计),面向对象设计方法和UML的使用,编码,质量保证与软件测试、软件维护以及软件工程管理技术等。每章都有小结,并配有习题供读者练习、提高。
本书可作为职业院校计算机专业及其相关专业的教材,也可供从事计算机软件开发及应用的广大科技人员参考。
本书赠送电子课件,方便教学,需要者请登录www.cmpedu.com免费注册后下载,或联系责任编辑(010—88379194)索取。
目录
前言
第1章软件工程概述
1.1软件
1.1.1软件的发展
1.1.2软件的定义及其特点
1.1.3软件的分类
1.2软件工程的产生与发展
1.2.1软件危机
1.2.2软件工程
1.3软件工程的研究对象和基本原理
1.3.1软件工程的研究对象
1.3.2软件工程的基本原理
1.4软件的生存周期及常用的开发模型
1.4.1软件的生存周期
1.4.2常用的软件开发模型
1.5软件过程技术与软件重用技术(阅读内容)
1.5.1软件过程技术
1.5.2软件重用技术
本章小结
习题
第2章可行性研究
2.1可行性研究的任务
2.1.1可行性研究的要素
2.1.2可行性研究的步骤
2.2系统流程图
2.2.1系统流程图的作用
2.2.2系统流程图的符号
2.2.3系统流程图的示例
2.3成本一效益分析
2.3.1成本估算
2.3.2费用估算
2.3.3几种度量效益的方法
2.4可行性研究的文档
本章小结
习题
第3章软件需求分析
3.1软件需求分析的目标和任务
3.1.1软件需求分析的目标
3.1.2软件需求分析的任务
3.2软件需求分析的步骤
3.2.1问题的分析
3.2.2问题评估和方案综合
3.2.3拟定软件需求分析文件
3.2.4软件需求分析的复审
3.3需求分析的原则
3.3.1指导性原则
3.3.2操作性原则
3.4需求分析的方法
3.4.1需求分析方法概述
3.4.2结构化分析方法
3.4.3数据流图
3.4.4数据字典
3.4.5其他分析方法
3.5加工逻辑说明
3.6软件需求分析文件与复审
本章小结
习题
第4章软件的概要设计
4.1软件设计的基本概念
4.2软件设计的原则
4.2.1模块的独立性原则
……
第5章软件的详细设计
第6章面向对象的分析和设计方法
第7章编码
第8章软件质量与软件测试
第9章软件维护
第10章软件项目计划与管理
参考文献
书摘插图
第1章软件工程概述
软件工程学是引导计算机软件产业发展的一个标志性学科。随着微电子技术的飞速发展,计算机硬件设备的价格急剧下降,功能不断提高,但软件生产的成本却居高不下,导致软件系统的开发成本逐年上升,产品质量难以控制,成品不便于维护,生产率也远远跟不上实际需求。因此,软件的生产与维护,成为了限制计算机应用系统继续快速发展的关键因素。西方计算机科学家把在软件开发和维护过程中遇到的一系列严重问题统称为“软件危机”,并从20世纪60年代末开始认真研究解决软件危机的方法,从而逐步形成了一门新兴的学科——计算机软件工程学。
1.1 软件
1946年,世界上诞生了第一台电子计算机,当时并没有软件的概念,更没有软件工程的概念,程序的编写多是由经过训练的数学家和电子工程师来完成。进人20世纪60年代,美国大学里开始出现计算机专业,软件产业从此开始起步。经过多年的发展,软件产业已经成为推动人类社会发展的龙头产业,并造就了一批百万、亿万富翁。随着信息产业的不断发展,软件产业对人类社会产生的影响将越来越重要。
1.1.1软件的发展
随着计算机硬件性能的极大提高和计算机体系结构的不断变化,计算机软件系统更加成熟且更为复杂,从而促使计算机软件的角色发生了巨大的变化,人们对软件的认识也因此经历了一个由浅到深的过程,其发展过程大致可以分为如图1—1所示的4个阶段。
1.程序设计阶段
20世纪50年代初期至60年代初期的十余年,是计算机系统开发的初期阶段,称为程序设计阶段。这个阶段硬件已经通用化,而软件几乎都是为每个具体应用专门编写的,编写者和使用者往往是同一个或同一组人。在这些个体化的程序设计环境中,人们的头脑中根本就没有软件设计这个概念,除了最后的程序清单外,没有其他任何文档资料保存下来。
在程序设计阶段,人们认为计算机的主要用途就是快速运算,程序的编写非常简单,不存在什么系统化的方法,对开发没有任何管理,程序的质量完全依赖于程序员个人的技巧。而且,为了提高计算机的使用效率,初期开发的计算机系统采用了批处理技术,但事与愿违的是,这种做法使得程序的设计、调试和修改都变得非常麻烦。
……