目录
第1章绪论
1.1软件概述
1.1.1什么是计算机软件
<p> </p> <p>目录</p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p>第1章绪论</p> <p> </p> <p>1.1软件概述</p> <p> </p> <p>1.1.1什么是计算机软件</p> <p> </p> <p>1.1.2软件的特点</p> <p> </p> <p>1.1.3软件的分类</p> <p> </p> <p>1.1.4软件的发展</p> <p> </p> <p>1.1.5软件危机</p> <p> </p> <p>1.2软件工程概述</p> <p> </p> <p>1.2.1软件工程与方法学</p> <p> </p> <p>1.2.2软件工程的基本原理</p> <p> </p> <p>1.2.3软件工程的目标</p> <p> </p> <p>1.2.4软件工程的内容</p> <p> </p> <p>1.2.5软件工程原则</p> <p> </p> <p>1.2.6软件工程面临的问题</p> <p> </p> <p>小结</p> <p> </p> <p>综合练习1</p> <p> </p> <p>第2章基本理论</p> <p> </p> <p>2.1软件工程过程</p> <p> </p> <p>2.2软件生命周期</p> <p> </p> <p>2.2.1软件分析时期</p> <p> </p> <p>2.2.2软件设计时期</p> <p> </p> <p>2.2.3编码与测试时期</p> <p> </p> <p>2.2.4运行与维护时期</p> <p> </p> <p>2.3软件生命周期模型</p> <p> </p> <p>2.3.1软件生命周期模型的概念</p> <p> </p> <p>2.3.2瀑布模型</p> <p> </p> <p>2.3.3原型模型</p> <p> </p> <p>2.3.4增量模型</p> <p> </p> <p>2.3.5螺旋模型</p> <p> </p> <p>2.3.6喷泉模型</p> <p> </p> <p>2.3.7基于知识的模型</p> <p> </p> <p>2.3.8变换模型</p> <p> </p> <p>2.4软件开发方法</p> <p> </p> <p>2.4.1结构化方法</p> <p> </p> <p>2.4.2Jackson方法</p> <p> </p> <p>2.4.3维也纳开发方法</p> <p> </p> <p>2.4.4面向对象的开发方法</p> <p> </p> <p>2.5软件工具与开发</p> <p> </p> <p>2.5.1软件工具箱</p> <p> </p> <p>2.5.2软件开发环境</p> <p> </p> <p>2.5.3计算机辅助软件工程</p> <p> </p> <p>小结</p> <p> </p> <p>综合练习2</p> <p> </p> <p>第3章可行性研究</p> <p> </p> <p>3.1可行性研究任务与步骤</p> <p> </p> <p>3.1.1研究任务</p> <p> </p> <p>3.1.2研究步骤</p> <p> </p> <p>3.2系统分析</p> <p> </p> <p>3.2.1系统分析员</p> <p> </p> <p>3.2.2面临的问题域</p> <p> </p> <p>3.2.3通信技术</p> <p> </p> <p>3.3分析原理</p> <p> </p> <p>3.3.1信息域</p> <p> </p> <p>3.3.2建立模型</p> <p> </p> <p>3.3.3分解</p> <p> </p> <p>3.4系统模型与模拟</p> <p> </p> <p>3.4.1系统模型</p> <p> </p> <p>3.4.2系统建模和模拟</p> <p> </p> <p>3.5成本效益分析</p> <p> </p> <p>3.6可行性研究的文档</p> <p> </p> <p>3.7项目开发计划</p> <p> </p> <p>3.7.1方案选择</p> <p> </p> <p>3.7.2制订项目开发计划</p> <p> </p> <p>小结</p> <p> </p> <p>综合练习3</p> <p> </p> <p>第4章软件需求分析</p> <p> </p> <p>4.1需求分析</p> <p> </p> <p>4.1.1需求分析的特点</p> <p> </p> <p>4.1.2需求分析的原则</p> <p> </p> <p>4.1.3需求分析的任务</p> <p> </p> <p>4.1.4需求分析的方法</p> <p> </p> <p>4.2结构化分析</p> <p> </p> <p>4.2.1自顶向下逐层分解</p> <p> </p> <p>4.2.2结构化分析步骤</p> <p> </p> <p>4.3系统流程图</p> <p> </p> <p>4.4数据流图</p> <p> </p> <p>4.4.1基本图形符号</p> <p> </p> <p>4.4.2画数据流图</p> <p> </p> <p>4.4.3结构化分析方法的应用</p> <p> </p> <p>4.5数据字典</p> <p> </p> <p>4.5.1内容及格式</p> <p> </p> <p>4.5.2数据字典的实现</p> <p> </p> <p>小结</p> <p> </p> <p>综合练习4</p> <p> </p> <p>第5章总体设计</p> <p> </p> <p>5.1软件设计的重要性</p> <p> </p> <p>5.2设计过程</p> <p> </p> <p>5.3软件总体设计</p> <p> </p> <p>5.4设计基本原理</p> <p> </p> <p>5.4.1抽象</p> <p> </p> <p>5.4.2细化</p> <p> </p> <p>5.4.3模块化</p> <p> </p> <p>5.4.4软件体系结构</p> <p> </p> <p>5.4.5程序结构</p> <p> </p> <p>5.4.6数据结构</p> <p> </p> <p>5.4.7软件过程</p> <p> </p> <p>5.5体系结构设计</p> <p> </p> <p>5.5.1软件结构图</p> <p> </p> <p>5.5.2模块的大小</p> <p> </p> <p>5.5.3扇出和扇入与深度和宽度</p> <p> </p> <p>5.5.4模块的耦合</p> <p> </p> <p>5.5.5模块的内聚</p> <p> </p> <p>5.5.6结构设计的一般准则</p> <p> </p> <p>5.5.7模块的作用域与控制域</p> <p> </p> <p>5.6结构化设计</p> <p> </p> <p>5.6.1数据流的类型</p> <p> </p> <p>5.6.2过程步骤</p> <p> </p> <p>5.6.3变换分析设计</p> <p> </p> <p>5.6.4事务分析设计</p> <p> </p> <p>5.6.5混合流设计</p> <p> </p> <p>5.6.6结构化设计方法应用示例</p> <p> </p> <p>5.6.7设计的后期处理</p> <p> </p> <p>5.7软件结构优化</p> <p> </p> <p>5.7.1软件结构设计优化准则</p> <p> </p> <p>5.7.2软件结构的HIPO图</p> <p> </p> <p>小结</p> <p> </p> <p>综合练习5</p> <p> </p> <p>第6章软件详细设计</p> <p> </p> <p>6.1详细设计的任务与方法</p> <p> </p> <p>6.1.1详细设计的基本任务</p> <p> </p> <p>6.1.2详细设计方法</p> <p> </p> <p>6.2设计表示法</p> <p> </p> <p>6.2.1结构化语言</p> <p> </p> <p>6.2.2判定表</p> <p> </p> <p>6.2.3判定树</p> <p> </p> <p>6.3结构化程序设计</p> <p> </p> <p>6.3.1流程图程序</p> <p> </p> <p>6.3.2三种基本控制结构</p> <p> </p> <p>6.3.3常用符号</p> <p> </p> <p>6.3.4正规程序</p> <p> </p> <p>6.3.5基本程序</p> <p> </p> <p>6.3.6结构化程序</p> <p> </p> <p>6.4结构化定理</p> <p> </p> <p>6.4.1程序函数</p> <p> </p> <p>6.4.2基本定理</p> <p> </p> <p>6.4.3非结构化转换为结构化</p> <p> </p> <p>6.4.4常见错误</p> <p> </p> <p>6.5过程设计语言</p> <p> </p> <p>小结</p> <p> </p> <p>综合练习6</p> <p> </p> <p>第7章面向对象分析</p> <p> </p> <p>7.1面向对象的相关概念</p> <p> </p> <p>7.1.1对象</p> <p> </p> <p>7.1.2类</p> <p> </p> <p>7.1.3属性</p> <p> </p> <p>7.1.4服务(操作或方法)</p> <p> </p> <p>7.1.5封装</p> <p> </p> <p>7.1.6继承</p> <p> </p> <p>7.1.7消息</p> <p> </p> <p>7.1.8结构与连接</p> <p> </p> <p>7.2UML的基本图标</p> <p> </p> <p>7.3对象分析</p> <p> </p> <p>7.3.1用户需求与研究问题域</p> <p> </p> <p>7.3.2发现对象方法</p> <p> </p> <p>7.3.3定义属性</p> <p> </p> <p>7.3.4定义服务</p> <p> </p> <p>7.4一般特殊结构</p> <p> </p> <p>7.5整体部分结构</p> <p> </p> <p>7.6实例连接</p> <p> </p> <p>7.6.1简单的实例连接</p> <p> </p> <p>7.6.2复杂的实例连接及其表示</p> <p> </p> <p>7.7消息连接</p> <p> </p> <p>小结</p> <p> </p> <p>综合练习7</p> <p> </p> <p>第8章面向对象设计</p> <p> </p> <p>8.1系统总体方案</p> <p> </p> <p>8.2软件体系结构</p> <p> </p> <p>8.3设计环境</p> <p> </p> <p>8.3.1为适应编程环境的调整</p> <p> </p> <p>8.3.2对象设计的步骤</p> <p> </p> <p>8.4完善对象的细节</p> <p> </p> <p>8.5设计算法</p> <p> </p> <p>8.5.1选择算法</p> <p> </p> <p>8.5.2选择数据结构</p> <p> </p> <p>8.6关联设计</p> <p> </p> <p>8.6.1单向关联</p> <p> </p> <p>8.6.2双向关联</p> <p> </p> <p>8.7设计优化</p> <p> </p> <p>小结</p> <p> </p> <p>综合练习8</p> <p> </p> <p>第9章用户界面设计</p> <p> </p> <p>9.1人的因素</p> <p> </p> <p>9.1.1分析活动者</p> <p> </p> <p>9.1.2从Use Case分析人机交互</p> <p> </p> <p>9.1.3分析处理异常事件的人机交互</p> <p> </p> <p>9.1.4命令的组织</p> <p> </p> <p>9.1.5输出信息的组织结构</p> <p> </p> <p>9.2界面设计风格</p> <p> </p> <p>9.2.1菜单的选择</p> <p> </p> <p>9.2.2对话框</p> <p> </p> <p>9.2.3窗口</p> <p> </p> <p>9.3人机界面的设计准则</p> <p> </p> <p>9.4人机界面设计过程</p> <p> </p> <p>9.4.1用户界面模型</p> <p> </p> <p>9.4.2界面支持系统</p> <p> </p> <p>9.4.3界面元素</p> <p> </p> <p>9.4.4设计的形式</p> <p> </p> <p>9.5描述方法与技术</p> <p> </p> <p>9.5.1灵境技术</p> <p> </p> <p>9.5.2多通道人机交互技术</p> <p> </p> <p>小结</p> <p> </p> <p>综合练习9</p> <p> </p> <p>第10章数据库及其接口设计</p> <p> </p> <p>10.1数据管理系统及其选择</p> <p> </p> <p>10.2技术整合</p> <p> </p> <p>10.3数据接口</p> <p> </p> <p>10.4对象存储方案和数据接口的设计策略</p> <p> </p> <p>10.4.1针对文件系统的设计</p> <p> </p> <p>10.4.2针对RDBMS的设计</p> <p> </p> <p>10.4.3使用OODBMS</p> <p> </p> <p>小结</p> <p> </p> <p>综合练习10</p> <p> </p> <p>第11章软件实现</p> <p> </p> <p>11.1程序设计语言的特性及选择</p> <p> </p> <p>11.1.1程序设计语言特性</p> <p> </p> <p>11.1.2程序设计语言的选择</p> <p> </p> <p>11.2程序设计风格</p> <p> </p> <p>11.3程序设计效率</p> <p> </p> <p>11.3.1代码效率</p> <p> </p> <p>11.3.2内存效率</p> <p> </p> <p>11.3.3I/O效率</p> <p> </p> <p>11.4冗余编程</p> <p> </p> <p>11.5软件容错技术</p> <p> </p> <p>11.5.1容错软件</p> <p> </p> <p>11.5.2容错的一般方法</p> <p> </p> <p>11.5.3容错软件的设计过程</p> <p> </p> <p>11.5.4软件的容错系统结构</p> <p> </p> <p>小结</p> <p> </p> <p>综合练习11</p> <p> </p> <p>第12章软件质量</p> <p> </p> <p>12.1软件质量概述</p> <p> </p> <p>12.1.1软件质量的定义</p> <p> </p> <p>12.1.2软件质量特性</p> <p> </p> <p>12.1.3软件质量特性之间的竞争</p> <p> </p> <p>12.2软件质量的度量和评价</p> <p> </p> <p>12.2.1软件质量的度量</p> <p> </p> <p>12.2.2软件质量度量的分类</p> <p> </p> <p>12.2.3软件质量评价</p> <p> </p> <p>12.3软件质量保证</p> <p> </p> <p>12.3.1软件质量保证的概述</p> <p> </p> <p>12.3.2软件质量保证原则</p> <p> </p> <p>12.3.3软件质量保证计划</p> <p> </p> <p>12.3.4软件质量保证的措施</p> <p> </p> <p>12.3.5软件质量管理小组</p> <p> </p> <p>12.4技术评审与审查</p> <p> </p> <p>12.4.1评审过程</p> <p> </p> <p>12.4.2选择参加评审的成员</p> <p> </p> <p>12.4.3评审的管理和组织</p> <p> </p> <p>12.4.4评审的方法</p> <p> </p> <p>12.4.5走查和审查</p> <p> </p> <p>12.4.6开发过程的评审</p> <p> </p> <p>12.4.7对评审的综合评价</p> <p> </p> <p>12.5软件的可靠性</p> <p> </p> <p>小结</p> <p> </p> <p>综合练习12</p> <p> </p> <p>第13章软件测试</p> <p> </p> <p>13.1软件测试概述</p> <p> </p> <p>13.1.1软件测试的目的</p> <p> </p> <p>13.1.2软件测试的原则</p> <p> </p> <p>13.2测试方法</p> <p> </p> <p>13.2.1静态测试</p> <p> </p> <p>13.2.2动态测试</p> <p> </p> <p>13.3测**例的设计</p> <p> </p> <p>13.3.1白盒技术</p> <p> </p> <p>13.3.2黑盒技术</p> <p> </p> <p>13.4测试过程</p> <p> </p> <p>13.4.1软件测试过程中的信息</p> <p> </p> <p>13.4.2软件测试的步骤与各开发阶段的关系</p> <p> </p> <p>13.4.3单元测试</p> <p> </p> <p>13.4.4集成测试</p> <p> </p> <p>13.4.5确认测试</p> <p> </p> <p>13.5调试</p> <p> </p> <p>小结</p> <p> </p> <p>综合练习13</p> <p> </p> <p>第14章软件维护</p> <p> </p> <p>14.1软件维护概述</p> <p> </p> <p>14.1.1软件维护的定义</p> <p> </p> <p>14.1.2影响维护工作的因素</p> <p> </p> <p>14.1.3维护成本</p> <p> </p> <p>14.2软件可维护性</p> <p> </p> <p>14.2.1软件可维护性的定义</p> <p> </p> <p>14.2.2可维护性的度量</p> <p> </p> <p>14.3软件维护的特点</p> <p> </p> <p>14.3.1非结构化维护和结构化维护</p> <p> </p> <p>14.3.2维护的困难性</p> <p> </p> <p>14.3.3软件维护的费用</p> <p> </p> <p>14.4软件维护的实施</p> <p> </p> <p>14.4.1维护的组织</p> <p> </p> <p>14.4.2维护的流程</p> <p> </p> <p>14.4.3维护技术</p> <p> </p> <p>14.4.4维护的副作用</p> <p> </p> <p>14.5维护“老化代码”</p> <p> </p> <p>14.6逆向工程和再工程</p> <p> </p> <p>14.6.1预防性维护</p> <p> </p> <p>14.6.2逆向工程的元素</p> <p> </p> <p>14.6.3再工程中的重构技术</p> <p> </p> <p>小结</p> <p> </p> <p>综合练习14</p> <p> </p> <p>第15章软件项目管理与计划</p> <p> </p> <p>15.1软件项目管理概述</p> <p> </p> <p>15.1.1软件管理的对象</p> <p> </p> <p>15.1.2软件开发中的资源</p> <p> </p> <p>15.1.3分解技术</p> <p> </p> <p>15.2项目管理过程</p> <p> </p> <p>15.3软件开发成本估算</p> <p> </p> <p>15.3.1软件开发成本估算方法</p> <p> </p> <p>15.3.2软件开发成本估算的经验模型</p> <p> </p> <p>15.4风险分析</p> <p> </p> <p>15.4.1风险识别</p> <p> </p> <p>15.4.2风险估算</p> <p> </p> <p>15.4.3风险评价</p> <p> </p> <p>15.4.4风险驾驭和监控</p> <p> </p> <p>15.5进度安排</p> <p> </p> <p>15.5.1软件开发小组人数与软件生产率</p> <p> </p> <p>15.5.2任务的确定与并行性</p> <p> </p> <p>15.5.3制定开发进度计划</p> <p> </p> <p>15.5.4进度安排的图形方法</p> <p> </p> <p>15.5.5项目的追踪和控制</p> <p> </p> <p>15.6软件项目的组织</p> <p> </p> <p>15.6.1软件项目管理的特点</p> <p> </p> <p>15.6.2软件项目组织的建立</p> <p> </p> <p>15.6.3人员配备</p> <p> </p> <p>小结</p> <p> </p> <p>综合练习15</p> <p> </p> <p>参考答案</p> <p> </p> <p>参考文献</p> <p> </p> <p> </p>显示全部信息前 言前言
1. 写作背景
在计算机软件开发的工程科学技术中,软件工程的概念、原理、技术与方法已成为计算机科学与技术范畴的一项重要内容,在计算机科学技术领域占据无可争议的主流地位。作为软件技术人员,接受软件工程的概念并不难,但是要真正理解、掌握和运用这门先进的技术并完整地进行系统开发,是有一定难度的。鉴于此,编者编写了这本关于软件工程系统分析、设计和实施的教材,以使更多同行受益。<p>前言</p> <p> </p> <p> </p> <p> </p> <p> </p> <p>1. 写作背景</p> <p>在计算机软件开发的工程科学技术中,软件工程的概念、原理、技术与方法已成为计算机科学与技术范畴的一项重要内容,在计算机科学技术领域占据无可争议的主流地位。作为软件技术人员,接受软件工程的概念并不难,但是要真正理解、掌握和运用这门先进的技术并完整地进行系统开发,是有一定难度的。鉴于此,编者编写了这本关于软件工程系统分析、设计和实施的教材,以使更多同行受益。 </p> <p>几年前,编者编写的《软件工程(第3版)》备受老师和其他读者欢迎。这本书对于应用型本科学校的读者而言,有些内容显得深了些。为更好地反映*近几年软件工程领域的发展现状,编者根据普通高等教育“十二五”**级规划教材的指导精神,总结近年来教学和科研的经验,在第3版基础上进行了调整和增删,形成了这本第4版教材。为了方便学校教学,编者还编写了配套的《软件工程习题解答(第4版)》(ISBN 9787302473336)和《软件工程实践与课程设计》(ISBN 9787302478676)。 </p> <p>2. 本书结构</p> <p>本书由以下四部分组成: </p> <p>**部分基础理论,包括第1~3章。 </p> <p>第二部分结构化方法,包括第4~6章。 </p> <p>第三部分面向对象方法与实现,包括第7~11章。 </p> <p>第四部分质量与工程管理,包括第12~15章。 </p> <p>3. 本书特点</p> <p>本书对有用的概念都进行了严格的论述,每一个概念都有相应的例子解释,同时每章都配有习题。此外,编者还编写了与本书配套的《软件工程习题解答(第4版)》和《软件工程实践与课程设计》,帮助读者巩固所学知识。 </p> <p>4. 适用范围</p> <p>软件工程是软件系统开发课程的教科书,适合作为软件工程方面课程的教材,也可作为相关工程技术人员的参考用书。 </p> <p>在选修本课程之前,读者应该具有计算机的基础知识,掌握数据结构和数据库技术。另外,如果具有算法语言的编程经验,会有助于深入理解系统开发过程。 </p> <p>5. 编写方法</p> <p>本书是编者根据近20年来对软件工程学、面向对象方法等的教学与研究,以及编者负责或参与几十项软件开发项目的实践经验,并结合软件开发新技术编写而成的。根据编者的教学经验,读者学习一门新技术的时候,教材是非常重要的。因此,编者在修订的时候,对于部分章节和内容进行了更新和修改,以便读者更好地学习与掌握相关知识。 </p> <p>6. 如何使用本书</p> <p>根据实际情况,在教授时建议安排54~60学时。教师可以按照自己的风格和喜好删减章节,也可以根据教学目标灵活调整章节顺序。</p> <p>第1章绪论(2学时) </p> <p>第2章基本理论(2学时) </p> <p>第3章可行性研究(2学时) </p> <p>第4章需求分析(4学时) </p> <p>第5章总体设计(4学时) </p> <p>第6章软件详细设计(4学时) </p> <p>第7章面向对象分析(4学时) </p> <p>第8章面向对象设计(2学时) </p> <p>第9章用户界面设计(2/4学时) </p> <p>第10章数据库及其接口设计(2学时) </p> <p>第11章软件实现(2学时) </p> <p>第12章软件质量(2学时) </p> <p>第13章软件测试(2学时) </p> <p>第14章软件维护(2学时) </p> <p>第15章软件项目管理与计划(2学时) </p> <p>本书的编写过程中,受到广东理工学院李代平负责的广东省级**学科建设课题——一级学科“计算机科学与技术”项目的支持。信息工程系胡致杰、赖小平、刘建友和张俊林参加了资料的收集与整理工作。由于软件工程的知识面广,书中不可能面面俱到,加上时间仓促,作者水平有限,书中的不足之处在所难免,恳请读者批评指正。</p> <p>编者</p> <p>2017年5月于振华楼</p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p>第3版前言</p> <p>1. 写作背景</p> <p>软件工程是指导计算机软件开发的工程科学技术。软件工程的概念、原理、技术与方法已成为计算机科学与技术范畴的一项重要内容。用软件工程的思想进行软件设计与开发的先进性众所周知,它在计算机科学技术领域占据无可争议的主流地位。作为软件技术人员,接受软件工程的概念并不难,但是要真正理解、掌握和运用这门先进的技术并完整地进行系统开发,是有一定难度的。鉴于此,编者编写了这本关于软件工程系统分析、设计和实施的教材,以使更多同行受益。</p> <p>几年前,编者编写的《软件工程(第2版)》备受老师和读者欢迎。为更好地反映*近几年软件工程领域的发展现状,编者根据普通高等教育“十二五”**级规划教材的指导精神,总结近年来教学和科研的经验,在第2版基础上做了调整和增删,形成了这本教材。主要从下述4个方面进行了精心修改; 删掉了一些较陈旧或较次要的内容; 增加了一些较新颖或较重要的内容; 用UML的概念与符号重新改定了有关面向对象方法学的内容; 结构上也进行了必要的调整。</p> <p>2. 本书结构</p> <p>本书由以下四部分组成:</p> <p>**部分基础理论,包括第1~3章。</p> <p>第二部分结构化方法,包括第4~6章。</p> <p>第三部分面向对象方法与实现,包括第7~16章。</p> <p>第四部分质量与工程管理,包括第17~20章。</p> <p>3. 本书特点</p> <p>本书对各章的概念都进行了严格的论述,每一个概念都有相应的例子解释,同时各章都配有习题。编者还编写了与本书配套的《软件工程习题与解答》,帮助读者巩固所学知识。</p> <p>4. 适用范围</p> <p>软件工程是软件系统开发课程的教科书,适合开设有软件工程课程的大学高年级和低年级研究生作为教材,也可作为工程技术人员的参考用书。</p> <p>在选修本课程之前,读者应该具有计算机的基础知识,掌握数据结构和数据库技术。另外,如果具有算法语言的编程经验,会有助于深入理解系统开发过程。</p> <p>5. 编写方法</p> <p>本书是编者根据近10年来对软件工程学、面向对象方法等的教学与研究,以及编者负责或参与几十项软件开发项目的实践经验,并结合软件开发新技术编写而成。根据编者的教学经验,读者学习一门新技术的时候,教材是非常重要的。因此,编者在修订的时候,对于部分章节和内容做了更新和修改。</p> <p>6. 如何使用本书</p> <p>根据实际情况,在教授时建议安排54~60学时。教师可以按照自己的风格和喜好删除章节,也可以根据教学目标灵活调整章节顺序。另外,前面带“*”的部分为选学内容。</p> <p>第1章绪论(2学时)</p> <p>第2章基本理论(2学时)</p> <p>第3章可行性研究(2学时)</p> <p>第4章需求分析与*体系结构(4学时)</p> <p>第5章总体设计(4学时)</p> <p>第6章软件详细设计(4学时)</p> <p>第7章面向对象方法概论(4学时)</p> <p>第8章模型(2学时)</p> <p>第9章对象分析(4学时)</p> <p>第10章关系分析(4学时)</p> <p>第11章控制驱动部分的设计(4学时)</p> <p>第12章问题域部分设计(4学时)</p> <p>第13章用户界面设计(2/4学时)</p> <p>第14章数据库及其接口设计(2学时)</p> <p>第15章*形式化方法(0/4学时)</p> <p>第16章软件实现(2学时)</p> <p>第17章软件质量(2学时)</p> <p>第18章软件测试(2学时)</p> <p>第19章软件维护(2学时)</p> <p>第20章软件项目管理与计划(2学时)</p> <p> </p> <p>编者</p> <p>2011年1月于广州小谷围岛</p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p>第2版前言</p> <p> </p> <p>1. 本书背景</p> <p>本书是根据普通高等教育“十一五”**级规划教材的指导精神而编写的。出版后我们在教学的使用过程中,觉得有许多地方不是很理想,因此,我们根据使用该教材的教师和读者的意见,对原书在结构和内容上做了很大的调整和修改。</p> <p>随着科学技术的进步,软件的理论与开发方法不断涌现。软件工程是指导计算机软件开发的工程科学技术。软件工程的概念、原理、技术与方法已成为计算机科学与技术的一项重要内容。</p> <p>用软件工程进行软件设计与开发的先进性是众所周知的,它在计算机科学技术领域占据了无可争议的主流地位。作为软件技术人员,接受软件工程的概念并不难,但是要真正理解、掌握和运用这门先进的技术并完整地进行系统开发,是有一定难度的。鉴于此我们编写了本书,目的是向读者提供一本关于软件工程系统分析、设计和实施的教科书,以使更多同行受益。</p> <p>2. 本书结构</p> <p>本书由四部分组成:</p> <p>**部分基础理论,包括第1~3章。</p> <p>第二部分结构化方法,包括第4~6章。</p> <p>第三部分面向对象方法与实现,包括第7~15章。</p> <p>第四部分质量与工程管理,包括第16~19章。</p> <p>3. 本书特点</p> <p>本书对每章的概念都进行了严格的论述,每一个概念都有相应的例子解释,同时每章都配有习题,使读者巩固所学知识。</p> <p>4. 适用范围</p> <p>软件工程是软件系统开发课程的教科书。讲授时间一般为40~60学时。本书适合开设有软件工程课程的大学高年级本科生和低年级研究生作教材,也可作为工程技术人员的参考用书。</p> <p>在选修本课程之前,读者应该具有计算机的基础知识,掌握数据结构和数据库技术。同时具有可视化类语言的编程经验,会有助于深入理解系统开发过程。</p> <p>5. 编写方法</p> <p>本书是作者根据近10年来对软件工程学、面向对象方法等的教学与研究,以及作者领导或参与的20项软件项目开发的实际应用经验,并结合软件开发新技术编写而成。根据过去的教学经验,读者学习一门新技术,教材是非常重要的。因此,在修订的时候,对于部分章节和内容做了调整和修改。</p> <p>6. 如何使用本书</p> <p>根据读者的实际情况,教师在教授本书时,建议一般在54~60学时。可以按照自己的风格和喜好删除章节,也可以根据教学目标灵活调整章节顺序。另外,前面带“*”为选学内容。</p> <p>第1章绪论(1学时)</p> <p>第2章基本理论(2学时)</p> <p>第3章可行性研究(2学时)</p> <p>第4章软件需求分析(4学时)</p> <p>第5章总体设计(4学时)</p> <p>第6章软件详细设计(4学时)</p> <p>第7章面向对象方法概论(4学时)</p> <p>第8章模型(2学时)</p> <p>第9章对象分析(4/6学时)</p> <p>第10章关系分析(4/6学时)</p> <p>第11章面向对象设计原则(2学时)</p> <p>第12章对象设计(5/6学时)</p> <p>第13章接口设计(4/6学时)</p> <p>*第14章形式化方法(4学时)</p> <p>第15章软件实现(2学时)</p> <p>第16章软件质量(2学时)</p> <p>第17章软件测试(2学时)</p> <p>第18章软件维护(2学时)</p> <p>第19章软件项目管理与计划(2学时)</p> <p>由于软件工程知识面广,在介绍中不能面面俱到。加上时间仓促,作者水平有限,书中的不足之处在所难免,恳请读者批评指正。</p> <p> </p> <p>编者</p> <p>2007年5月于小谷围岛</p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p>第1版前言</p> <p>1. 关于本书</p> <p>软件工程是指导计算机软件开发的工程科学。人们希望通过用工程技术和管理方法使软件开发工程化,由此产生了软件工程学。软件工程学是采用工程的概念、原理、技术与方法,把当前先进的技术与已经实践证明了的正确管理方法相结合来开发软件。从20世纪60年代提出软件工程的概念以来,软件工程技术逐渐成熟,现在已成为计算机科学技术中的一门重要学科。但是,还有些公司和个人仍然在随意开发软件,将编写高质量的程序与开发系统混为一谈,也有些软件专业的学生或软件开发人员还没有掌握软件开发出现的新技术,鉴于此我们编写了本书。</p> <p>本书是作者根据近10年来对软件工程学、面向对象方法等教学与研究的经验,以及领导或参与的20项软件项目开发的实际应用经验,并结合软件开发新技术编写而成。根据过去的教学经验,读者学习一门新技术,教材是非常重要的。因此,我们在编写本书之前,在各方面进行了充分的准备。</p> <p>2. 本书结构安排</p> <p>本书由16章构成,内容如下。</p> <p>第1章: 绪论。介绍的主要内容有软件的特点、软件的发展、软件危机、软件工程、软件工程与方法学、软件工程的基本原理等。</p> <p>第2章: 软件工程的基本理论。介绍的主要内容有软件工程过程、软件生存周期、软件生存周期模型、软件开发方法、软件开发工具。</p> <p>第3章: 可行性研究。介绍的主要内容有可行性研究的任务与步骤、系统分析、分析原理、结构化分析、系统流程图、数据流图、数据字典、成本效益分析、可行性研究的文档、项目开发计划。</p> <p>第4章: 软件需求分析与概念模型。介绍的主要内容有需求分析、IDEF方法、概念模型与规范化。</p> <p>第5章: 总体设计。介绍的主要内容有软件设计的重要性、设计过程、软件总体设计、设计基本原理、体系结构设计、结构化设计、IDEF0图的设计方法、软件结构优化。</p> <p>第6章: 软件细节设计。介绍的主要内容有细节设计任务与方法、设计表示法、结构化程序设计、结构化定理、图形工具,面向数据结构的设计。</p> <p>第7章: 面向对象方法学。介绍的主要内容有传统方法学的缺点、面向对象的基本概念、对象模型、动态模型、功能模型。</p> <p>第8章: 面向对象分析。介绍的主要内容有面向对象分析的基本过程、对象的发现和标识、发现对象方法、定义属性、定义服务、定义结构、实例连接、消息连接、建立功能模型。</p> <p>第9章: 面向对象设计。介绍的主要内容有设计的准则、启发式规则、系统分解、设计问题域子系统、设计任务子系统、设计数据管理子系统、面向对象程序设计、软件重用、统一建模语言UML。</p> <p>第10章: 形式化方法。介绍的主要内容有形式化方法的基础知识、有限状态机(FSM)、Petri网的基本原理、净室方法学、客户/服务器模式。</p> <p>第11章: 用户界面设计。介绍的主要内容有界面软件开发综述、人机交互子系统设计、图形用户界面设计、多媒体用户界面设计、用户界面模型、用户界面的描述方法与技术等。</p> <p>第12章: 软件质量。介绍的主要内容有软件质量的概述、软件质量的度量和评价、软件质量保证、技术评审与审查,软件的可靠性。</p> <p>第13章: 软件实现。介绍的主要内容有程序设计语言的特性及选择、程序设计风格、程序设计效率、冗余编程、软件容错技术。</p> <p>第14章: 软件测试。介绍的主要内容有软件测试概述、测试方法、测**例的设计、测试过程、调试。</p> <p>第15章: 软件维护。介绍的主要内容有软件维护概述、软件可维护性、软件维护的特点、软件维护的实施、维护“老化代码”、逆向工程和再工程。</p> <p>第16章: 软件项目管理与计划。介绍的主要内容有软件项目管理概述、项目管理过程、软件开发成本估算、风险分析、进度安排、软件项目的组织。</p> <p>此外,本书的*后给出了一个附录,列出了软件产品的主要文件,以供读者参考。</p> <p>3. 本书特点</p> <p>本书侧重于理论联系实际,从实用性、易懂性出发,**突出,内容丰富而实用。在详细介绍理论的同时,给出了部分示例,以利于读者掌握其实际应用的方法。此外,为了便于读者巩固所学的知识,在各章的后面都附有相应的小结与练习题。</p> <p>4. 适用对象</p> <p>本书可作为大专院校相关专业高年级学生的教材和参考书,也可供计算机专业的**人员参考。</p> <p>本书由李代平编写,另外张信一参加了第9、11、12章的编写,彭重嘉参加了第13~16章的编写。</p> <p>由于作者水平有限,书中的不足之处在所难免,恳请读者批评指正。</p> <p> </p> <p>编者</p> <p>2002年7月</p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p>显示全部信息媒体评论评论免费在线读第5章总体设计
总体设计的基本目标就是概要地回答系统应该如何实现。设计在任何工程产品或系统中,是开发阶段的**步。设计(Design)可以定义为应用各种技术和原理,对一个设备、一个过程或一个系统,做出足够详细的决策,使之有可能在物理上得以实现的过程。系统的总体设计是在前面系统分析的基础上,为后期将要构造的系统实体建立一个模型(Model)或表达式(Representation)。与其他学科的工程设计方法一样,随着新理论新方法的不断出现而继续发展。与其他技术领域比较,软件设计在它的发展中仍处于早期阶段。研究与分析软件设计问题才不过30年左右的时间。由此可见软件设计方法还缺少更为经典的工程设计学科所具有的深度、适应性(Flexibility)和定量性质。但是,已经有一些软件设计技术、设计质量准则及设计符号表示法。
5.1软件设计的重要性