编辑推荐
在企业信息系统的开发中,强有力的分析和设计对成功开发都是非常重要的。《需求分析与系统设计(原书第3版)》讲解设计大型面向对象系统所需的基础理论,以及如何将这些理论付诸实践。《需求分析与系统设计(原书第3版)》作者非常注重实践,提供了大量实例、练习和问题,使读者快速掌握理论知识,提高开发水平。
《需求分析与系统设计(原书第3版)》主要特点
围绕七个实例研究(大学注册、音像商店、关系管理、电话销售、广告支出、时间记录和货币兑换)展开实例教学,每个实例都具有自身的特点和教学价值。
特别关注设计阶段,并不是将设计看成分析的直接转换,而是充分考虑大型企业信息系统开发的困难和复杂性。
通过大量的练习-答案和问题-解决方案巩固所学的知识。
使用可视化系统建模的标准——UML,讨论使用Web技术和数据库技术进行开发。
新增了解决方案管理框架(ITIL和COBIT)和系统集成、业务过程建模、Web GUI设计。
内容简介
《需求分析与系统设计(原书第3版)》论述软件分析与设计的原理、方法和技术,并特别关注设计阶段,对软件体系结构的内容进行了很大的扩充。《需求分析与系统设计(原书第3版)》强调对象技术及统一建模语言(UML)在企业信息系统开发中的应用,并讨论了使用Web技术和数据库技术进行开发的方法。
《需求分析与系统设计(原书第3版)》是大学本科生学习系统分析与设计、软件工程、软件项目管理、数据库和对象技术的理想教材和参考书;对于软件工程技术人员来说,《需求分析与系统设计(原书第3版)》也是很好的参考资料。
内页插图
目录
译者序
前言
第1章 软件过程
1.1 软件开发的本质
1.1.1 软件开发的不变事实
1.1.2 软件开发的“意外事件”
1.1.3 开发还是集成
复习小测验1.1
1.2 系统规划
1.2.1 SWOT方法
1.2.2 VCM方法
1.2.3 BPR方法
1.2.4 ISA方法
复习小测验1.2
1.3 三级管理系统
1.3.1 事务处理系统
1.3.2 分析处理系统
1.3.3 知识处理系统
复习小测验1.3
1.4 软件开发生命周期
1.4.1 开发方法
1.4.2 生命周期的阶段
1.4.3 跨越生命周期的活动
复习小测验1.4
1.5 开发模型与方法
1.5.1 螺旋模型
1.5.2 IBM Rational统一过程
1.5.3 模型驱动的体系结构
1.5.4 敏捷软件开发
1.5.5 面向方面的软件开发
复习小测验1.5
1.6 实例研究的问题陈述
1.6.1 大学注册
1.6.2 音像商店
1.6.3 关系管理
1.6.4 电话销售
1.6.5 广告支出
1.6.6 时间记录
1.6.7 货币兑换
小结
关键术语
选择题
问题
复习小测验答案
选择题答案
奇数编号问题的答案
第2章 需求确定
2.1 从业务过程到解决方案构想
2.1.1 过程层次建模
2.1.2 业务过程建模
2.1.3 解决方案构想
复习小测验2.1
2.2 需求引导
2.2.1 系统需求
2.2.2 需求引导的传统方法
2.2.3 需求引导的现代方法
复习小测验2.2
2.3 需求协商与确认
2.3.1 超出范围的需求
2.3.2 需求依赖矩阵
2.3.3 需求风险和优先级
复习小测验2.3
2.4 需求管理
2.4.1 需求标识与分类
2.4.2 需求层次
2.4.3 变更管理
2.4.4 需求可跟踪性
复习小测验2.4
2.5 需求业务模型
2.5.1 系统范围模型
2.5.2 业务用例模型
2.5.3 业务词汇表
2.5.4 业务类模型
复习小测验2.5
2.6 需求文档
2.6.1 文档模板
2.6.2 项目准备
2.6.3 系统服务
2.6.4 系统约束
2.6.5 项目的其他问题
2.6.6 附录
复习小测验2.6
小结
关键术语
选择题
问题
练习:广告支出
练习:时间记录
复习小测验答案
选择题答案
奇数编号问题的答案
练习的解决方案:AE
第3章 可视化建模基础
3.1 用例视图
3.1.1 参与者
3.1.2 用例
3.1.3 用例图
3.1.4 用例文档化
复习小测验3.1
3.2 活动视图
3.2.1 动作
3.2.2 活动图
复习小测验3.2
3.3 结构视图
3.3.1 类
3.3.2 属性
3.3.3 关联
3.3.4 聚合
3.3.5 泛化
3.3.6 类图
复习小测验3.3
3.4 交互视图
3.4.1 顺序图
3.4.2 通信图
3.4.3 类方法
复习小测验3.4
3.5 状态机视图
3.5.1 状态和转换
3.5.2 状态机图
复习小测验3.5
3.6 实现视图
3.6.1 子系统和包
3.6.2 构件和构件图
3.6.3 节点和部署图
复习小测验3.6
小结
关键术语
选择题
问题
练习
练习:音像商店
复习小测验答案
选择题答案
奇数编号问题的答案
奇数编号练习的解决方案
奇数编号练习的解决方案:音像商店
第4章 需求规格说明
4.1 体系结构优先权
4.1.1 模型-视图-控制器
4.1.2 J2EE的核心体系结构
4.1.3 表示-控制器-bean-中介者-实体-资源
复习小测验4.1
4.2 状态规格说明
4.2.1 类建模
4.2.2 关联建模
4.2.3 聚合及复合关系建模
4.2.4 泛化关系建模
4.2.5 接口建模
4.2.6 对象建模
复习小测验4.2
4.3 行为规格说明
4.3.1 用例建模
4.3.2 活动建模
4.3.3 交互建模
4.3.4 操作建模
复习小测验4.3
4.4 状态变化规格说明
4.4.1 对象状态建模
复习小测验4.4
小结
关键术语
选择题
问题
练习:音像商店
练习:关系管理
练习:大学注册
复习小测验答案
选择题答案
奇数编号问题的答案
练习的解决方案:大学注册
第5章 从分析到设计
5.1 高级类建模
5.1.1 扩展机制
5.1.2 可见性与封装
5.1.3 导出信息
5.1.4 限定关联
5.1.5 关联类与具体化类
复习小测验5.1
5.2 高级泛化与继承建模
5.2.1 泛化和可替换性
5.2.2 继承与封装
5.2.3 接口继承
5.2.4 实现继承
复习小测验5.2
5.3 高级聚合与委托建模
5.3.1 给聚合增加更多的语义
5.3.2 作为泛化的可选方案的聚合
5.3.3 聚合与整体构件-一些仅供
思考的材料
复习小测验5.3
5.4 高级交互建模
5.4.1 生命线和消息
5.4.2 片段
5.4.3 交互使用
复习小测验5.4
小结
关键术语
选择题
问题
练习
练习:时间记录
练习:广告支出
复习小测验答案
选择题答案
奇数编号问题的答案
奇数编号练习的解决方案
练习的解决方案:时间记录
第6章 系统体系结构与程序设计
6.1 分布式物理体系结构
6.1.1 对等体系结构
6.1.2 分层体系结构
6.1.3 数据库为中心的体系结构
复习小测验6.1
6.2 多层逻辑体系结构
6.2.1 体系结构的复杂性
6.2.2 体系结构模式
复习小测验6.2
6.3 体系结构建模
6.3.1 包
6.3.2 构件
6.3.3 结点
复习小测验6.3
6.4 程序设计与复用原则
6.4.1 类的内聚与耦合
6.4.2 复用策略
复习小测验6.4
6.5 协作建模
6.5.1 协作
6.5.2 复合结构
6.5.3 从用例到复合协作
6.5.4 从协作到交互
6.5.5 从交互到复合结构
复习小测验6.5
小结
关键术语
选择题
问题
练习:音像商店
练习:广告支出
复习小测验答案
选择题答案
奇数编号问题的答案
练习的解决方案:广告支出
第7章 图形用户界面设计
7.1 GUI设计原则
7.1.1 从GUI原型到实现
7.1.2 良好GUI设计指南
复习小测验7.1
7.2 桌面GUI设计
7.2.1 主窗口
7.2.2 辅窗口
7.2.3 菜单和工具栏
7.2.4 按钮及其他控件
复习小测验7.2
7.3 WebGUI设计
7.3.1 Web应用系统的使能技术
7.3.2 内容设计
7.3.3 导航设计
7.3.4 利用GUI框架支持Web设计
复习小测验7.3
7.4 GUI导航建模
7.4.1 用户体验故事情节
7.4.2 UX元素建模
7.4.3 行为性UX协作
7.4.4 结构性UX协作
复习小测验7.4
小结
关键术语
选择题
问题
练习:关系管理
练习:电话销售
复习小测验答案
选择题答案
奇数编号问题的答案
练习的解决方案:关系管理
第8章 持久性与数据库设计
8.1 业务对象和持久性
8.1.1 数据库管理系统
8.1.2 数据模型的层次
8.1.3 集成应用系统与数据库建模
8.1.4 对象-数据库映射基础
复习小测验8.1
8.2 关系数据库模型
8.2.1 列.域和规则
8.2.2 表
8.2.3 引用完整性
8.2.4 触发器
8.2.5 存储过程
8.2.6 视图
8.2.7 范式
复习小测验8.2
8.3 对象-关系映射
8.3.1 映射实体类
8.3.2 映射关联
8.3.3 映射聚合
8.3.4 映射泛化
复习小测验8.3
8.4 管理持久对象的模式
8.4.1 检索持久对象
8.4.2 装载持久对象
8.4.3 释放持久对象
复习小测验8.4
8.5 设计数据库访问和事务
8.5.1 SQL程序设计的层次
8.5.2 设计业务事务
复习小测验8.5
小结
关键术语
选择题
问题
练习:关系管理
练习:电话销售
复习小测验答案
选择题答案
奇数编号问题的答案
练习的解决方案:关系管理
第9章 质量与变更管理
9.1 质量管理
9.1.1 质量保证
9.1.2 质量控制
复习小测验9.1
9.2 变更管理
9.2.1 工具与管理变更请求
9.2.2 可追踪性
复习小测验9.2
小结
关键术语
选择题
问题
复习小测验答案
选择题答案
奇数编号问题的答案
第10章 复习巩固指南
10.1 用例建模
10.1.1 参与者
10.1.2 用例
10.1.3 用例图
10.1.4 编写用例文档
10.2 活动建模
10.2.1 动作
10.2.2 活动图
10.3 类建模
10.3.1 类
10.3.2 属性
10.3.3 关联
10.3.4 聚合
10.3.5 泛化
10.3.6 类图
10.4 交互建模
10.4.1 顺序图
10.4.2 通信图
10.5 状态机建模
10.5.1 状态和转换
10.5.2 状态机图
10.6 实现模型
10.6.1 子系统
10.6.2 包
10.6.3 构件
10.6.4 注释
10.7 对象协作设计
10.7.1 用例设计规格说明
10.7.2 用户界面原型
10.7.3 顺序图
10.7.4 设计层类图
10.8 窗口导航设计
10.8.1 用户体验元素
10.8.2 行为性UX协作
10.8.3 结构性UX协作
10.9 数据库设计
10.9.1 对象-关系映射
10.9.2 引用完整性设计
小结
练习:在线购物
附录A对象技术基础
参考文献
前言/序言
信息系统(informationsystem,IS)的开发(从开始计划到部署给利益相关者)包括三个迭代增量式阶段:分析、设计和实现。本书论述了分析和设计阶段使用的方法和技术。实现方面的问题(包括代码实例)只在设计阶段需要考虑时才讲解,质量与变更管理在第9章单独讨论。
本书集中在面向对象软件开发上。统一建模语言(UnifiedModelingLanguage,UML)用于捕捉建模的人工制品,主要论述用逐步细化的方式进行开发,并且在整个开发生命周期中都使用UML这种建模语言、系统分析师、设计师和程序员使用同一种语言和工具,但有时也会使用一些语言中的方言(配置文件)来满足各自的需要。
对象技术的早期应用主要针对图形用户界面(GUI),并关注开发新系统的速度和程序执行的速度.而在本书中,作者强调对象技术在企业信息系统(enterpriseinformationsystem,EIS)开发中的应用。其中的挑战是数据量大,数据结构复杂,许多并发用户对信息进行共享式访问,事务处理,需求变更等.对象技术在EIS开发中的主要优势在于可以提高系统的适应性(可理解性、可维护性和可伸缩性)。
开发企业信息系统与进行大规模的分析和设计是同步的。如果不遵循严格的开发过程,不理解基本的软件体系结构,EIS项目就不可能成功。这种开发是大型的、面向对象的、迭代增量式的。
本书提出了用UML进行企业信息系统分析和设计的详细方法,确定了以下几方面的解决方法:
分析和建模业务过程。
控制大型系统模型的复杂性。
改进软件体系结构。
提高系统的适应性。
处理详细的设计问题。
理解图形用户界面。
了解数据库的重要性。
管理质量.管理变更等。
本书特点
本书的最大特点是“实例教学”。主要的讨论围绕七个实例研究和学习指导形式的复习巩固章节进行。这些例子是从七个应用领域抽取的,每个例子都有各自的特点和教学价值。涉及的领域有大学注册、音像商店、关系管理、电话销售、广告支出、时间记录和货币兑换。学习指导涉及在Internet上购买计算机的在线购物应用系统。
为了便于自学,本书用问题-答案及练习-解决方案的形式阐述了实例研究和学习指导。通过每章末给出的问题和练习,实践材料得到了进一步扩充和丰富、选择题(或练习)都提供了答案(或解决方案)。每章都包含带有答案的复习小测验和选择题,并且都给出了关键术语的定义。
《软件工程导论:核心概念与实践方法》 内容简介 本书旨在为读者构建一套坚实的软件工程理论基础,并结合前沿的实践方法,深入剖析软件开发生命周期的各个环节。我们不直接探讨具体的需求获取技巧或详尽的系统架构模式,而是聚焦于软件工程领域的核心概念、指导原则以及在不同开发场景下通用的思考框架。本书的目标是帮助读者建立起一种“工程思维”,理解软件开发为何需要系统性的方法,以及这些方法如何指导我们创造出高质量、可维护且满足用户期望的软件产品。 第一部分:软件工程的基石——理解软件开发的本质 在这一部分,我们将首先探讨软件工程的定义及其在现代技术发展中的重要地位。我们不会纠结于“需求”与“设计”这两个词汇本身,而是深入理解“为什么我们需要如此细致地规划和构建软件”。我们将从软件的特性入手,分析其与传统工程学科的异同,从而引出软件工程作为一门学科的必要性。 软件的特殊性与挑战: 软件并非物理实体,其无形性带来了独特的挑战,例如难以可视化、易于修改但也容易引入缺陷、以及规模庞大时带来的复杂性管理问题。我们将分析这些内在特性如何促使我们需要一套严谨的工程方法来驾驭。 软件工程的宗旨与价值: 软件工程不仅仅是编写代码,它是一门关于如何系统地、高效地、经济地开发和维护软件的学科。我们将阐述软件工程的核心目标:提高软件质量、缩短开发周期、降低开发成本、提升软件的可信度和可维护性。本书将强调,理解这些根本目标,是掌握任何具体工程技术的前提。 软件生命周期模型: 我们将概述经典的软件生命周期模型,如瀑布模型、迭代模型、螺旋模型等,并分析它们各自的演进思路和适用场景。重点不在于详细描述每一步的活动,而是理解不同模型背后的哲学思想——如何管理复杂性、如何应对不确定性、以及如何在不同阶段进行权衡。我们将讨论为什么单一的、线性的流程难以适应现代软件开发的快速变化。 第二部分:规划与构建——从概念到蓝图的演进 在这一部分,我们将探讨在软件开发过程中,如何将模糊的设想转化为清晰的、可执行的计划。我们将聚焦于“过程”和“模型”的概念,而不是具体的“需求文档”或“设计图”。 建模的思想: 建模是理解复杂系统的关键。我们将讨论不同类型的模型在软件工程中的作用,例如概念模型、逻辑模型和物理模型。我们将强调,无论是在理解问题领域还是在描述解决方案时,构建抽象模型都能帮助我们聚焦核心要素,忽略不必要细节。我们不会提供具体的建模语言(如UML),但会讲解建模背后的原理和价值。 抽象与分解: 软件的复杂性可以通过抽象和分解来管理。我们将探讨如何通过抽象来屏蔽细节,关注更高级别的概念,以及如何通过分解将大型问题拆分成更小、更易于管理的部分。这是一种通用的工程思维,适用于任何复杂系统的设计。 结构与组织: 软件系统的结构至关重要。我们将讨论软件设计的原则,如模块化、内聚性、耦合性。这些原则是构建易于理解、易于修改和易于扩展的软件的基础。我们将解释为什么一个良好的软件结构能够极大地影响其长期可维护性。 约束与权衡: 任何工程项目都存在资源、时间和质量的约束。我们将分析在软件开发过程中,这些约束如何影响我们的决策,以及如何在不同的目标之间进行权衡。例如,是追求极致的性能,还是优先考虑快速上线?这些都是工程实践中必须面对的权衡。 第三部分:质量保障与持续改进——软件工程的生命线 软件的成功不仅仅在于完成开发,更在于其交付后的表现和长期的生命周期。这一部分将关注如何确保软件的质量,以及如何在软件生命周期中不断进行改进。 验证与确认的哲学: 我们将区分“验证”(是否正确地构建了系统?)和“确认”(是否构建了正确的系统?)。理解这两者的区别,是构建高质量软件的关键。我们将讨论不同层面的验证与确认活动,但不会深入到具体的测试技术(如单元测试、集成测试)。 风险管理: 软件开发充满了不确定性和风险。我们将探讨识别、评估和应对潜在风险的方法,以最小化项目失败的可能性。这是一种前瞻性的思维模式,帮助我们在问题发生前就采取预防措施。 过程改进: 软件工程并非一成不变,它是一个不断发展的领域。我们将讨论软件过程改进的理念,以及如何通过度量和反思来不断优化开发流程。这强调了一种持续学习和适应的态度。 软件可维护性: 软件的生命周期远不止开发阶段。我们将探讨软件可维护性的重要性,以及在设计和开发过程中如何考虑未来的修改和演进。良好的可维护性是软件能够长期服务于用户的基石。 第四部分:软件工程的实践视角 在这一部分,我们将从更宏观的视角审视软件工程在实际项目中的应用。我们将关注项目管理、团队协作以及如何将理论转化为可操作的实践。 项目管理基础: 软件项目管理是确保项目按时、按预算、高质量完成的关键。我们将概述项目管理的核心要素,如范围、时间和成本管理,以及如何有效地组织和协调开发团队。 团队协作与沟通: 软件开发通常是团队协作的产物。我们将强调有效的沟通和协作在软件项目中的重要性,以及如何建立一个高效的开发团队。 软件工程在不同环境中的适应性: 不同的项目规模、团队组成和业务需求,都需要不同的软件工程方法。我们将讨论如何根据实际情况调整和应用软件工程的原则和实践,而不是机械地套用某种模型。 面向未来的软件工程: 随着技术的发展,软件工程也在不断演进。我们将展望软件工程的未来趋势,如敏捷方法论的哲学思想(但不深入具体方法)、DevOps的理念以及人工智能在软件工程中的潜在作用。 总结 《软件工程导论:核心概念与实践方法》致力于为读者提供一个全面而深入的软件工程视野。本书的核心在于传递一种“工程化”的思维模式,强调系统性、严谨性和持续改进。通过理解软件工程的本质、规划与构建的原则、质量保障的机制以及实践中的考量,读者将能够更好地理解如何构建健壮、可靠且有价值的软件系统,并为未来深入学习具体的软件工程技术打下坚实的基础。本书的内容不局限于特定的开发阶段或技术栈,而是聚焦于那些跨越时间、适用于任何软件开发项目的核心理念。