编辑推荐
《系统分析与设计方法》(原书第7版)是对面向对象系统分析和设计技术进行了全面系统的扩充。作者通过在全书中融入基于UML的面向对象分析和设计技术,对现代概念、工具、技术以及应用等各方面内容进行了很好的平衡。
内容简介
《系统分析与设计方法》(原书第7版)提供了当前市场上可用的、丰富的系统分析和设计的实例。第7版新增内容:●最新的技术——介绍了当前的流行技术:UML 2.0、VB.NET和C#等。
●面向对象技术——全书中更多地涉及面向对象技术和上下文图。
●可行性研究——更深入地讨论了可行性,包括环境和策略方面的可行性问题。
作者简介
Jeffrey L.Whitten,美国普度大学计算机技术系主任兼教授,曾两次荣James G.Dwyer最佳教师奖。自1984年任教授后,他开始编著《系统分析与设计方法》一书,目前已经出版第7版。该书长期位于同类书销售排行榜第1名,被700多所学校采纳作为教材。Whitten教授是多个学术组织的活跃成员,其中包括:信息技术专业学会(ATP)、信息系统学会(AIS)、计算机学会(ACM)、信息管理协会(SIM)等。
Lonnie D.Bentley,美国普度大学计算机技术系教授,主要教学和研究领域包括:系统分析和设计、企业应用系统、业务过程重构、计算机辅助软件工程(CASE)、快速应用开发(RAD)和图形用户界面设计。
目录
译者序
前言
致谢
第一部分系统开发项目环境
第1章系统分析和设计方法的环境
1.1系统分析和设计框架
1.2参与者——系统关联人员
1.2.1系统所有者
1.2.2系统用户
1.2.3系统设计人员
1.2.4系统构造人员
1.2.5系统分析员
1.2.6外部服务提供者
1.2.7项目经理
1.3现代信息系统的企业驱动力
1.3.1经济全球化
1.3.2电子商务和电子业务
1.3.3安全和隐私
1.3.4协作与合伙经营
1.3.5知识产权管理
1.3.6持续改进和全面质量管理
1.3.7业务过程重构
1.4信息系统的技术推动力
1.4.1网络和因特网
1.4.2移动和无线技术
1.4.3对象技术
1.4.4协作技术
1.4.5企业应用软件
1.5一个简单的系统开发过程
1.5.1系统启动
1.5.2系统分析
1.5.3系统设计
1.5.4系统实现
1.5.5系统支持和持续改进
第2章信息系统构件
2.1产品——信息系统
2.2信息系统架构框架
2.2.1“知识”构件
2.2.2“过程”构件
2.2.3“通信”构件
2.3网络技术和IS构件
第3章信息系统开发
3.1系统开发过程
3.1.1能力成熟度模型
3.1.2系统生命周期和系统开发方法
3.1.3系统开发基本原理
3.2系统开发过程
3.2.1项目确定
3.2.2FAST项目阶段
3.2.3跨生命周期活动
3.2.4顺序开发和迭代开发
3.3选择开发路线和策略
3.3.1模型驱动开发策略
3.3.2快速应用开发策略
3.3.3商用应用软件包实现策略
3.3.4混合策略
3.3.5系统维护
3.4自动化工具和技术
3.4.1计算机辅助系统工程
3.4.2应用开发环境
3.4.3过程和项目管理器
第4章项目管理
4.1什么是项目管理
4.1.1项目失败的原因
4.1.2项目管理知识体系
4.2项目管理生命周期
4.2.1活动1——协商范围
4.2.2活动2——确定任务
4.2.3活动3——估计任务工期
4.2.4活动4——说明任务之间的依
赖关系
4.2.5活动5——分配资源
4.2.6活动6——指导团队工作
4.2.7活动7——监督和控制进展
4.2.8活动8——评估项目结果和
经验
第二部分系统分析方法
第5章系统分析
5.1什么是系统分析
5.2系统分析方法
5.2.1模型驱动分析法
5.2.2加速系统分析法
5.2.3需求获取法
5.2.4业务过程重构法
5.2.5FAST系统分析策略
5.3范围定义阶段
5.3.1任务1.1——列出问题和
机会
5.3.2任务1.2——协商项目的
初步范围
5.3.3任务1.3——评估项目价值
5.3.4任务1.4——计划项目进度表和
预算
5.3.5任务1.5——汇报项目计划
5.4问题分析阶段
5.4.1任务2.1——研究问题领域
5.4.2任务2.2——分析问题和机会
5.4.3任务2.3——分析业务过程
5.4.4任务2.4——制定系统改进
目标
5.4.5任务2.5——修改项目计划
5.4.6任务2.6——汇报调查结果和
建议
5.5需求分析阶段
5.5.1任务3.1——定义需求
5.5.2任务3.2——排列需求的优
先次序
5.5.3任务3.3——修改项目计划
5.5.4任务3.4——交流需求陈述
5.5.5持续不断的需求管理
5.6逻辑设计阶段
5.6.1任务4.1a——结构化功能
需求
5.6.2任务4.1b——建立功能需求
的原型(可选)
5.6.3任务4.2——验证功能需求
5.6.4任务4.3——定义验收测
试用例
5.7决策分析阶段
5.7.1任务5.1——确定候选方案
5.7.2任务5.2——分析候选方案
5.7.3任务5.3——比较候选方案
5.7.4任务5.4——修改项目计划
5.7.5任务5.5——推荐一种系统
方案
5.8系统分析的未来
第6章需求获取的调查研究技术
6.1需求获取简介
6.2需求获取过程
6.2.1发现和分析问题
6.2.2获取需求
6.2.3归档和分析需求
6.2.4需求管理
6.3调查研究技术
6.3.1对现有文档、表和文件进行
抽样
6.3.2调研和实地访问
6.3.3观察工作环境
6.3.4调查表
6.3.5面谈
6.3.6如何进行面谈
6.3.7获取原型
6.3.8联合需求计划
6.4调查研究策略
第7章使用用例建模系统需求
7.1用例建模概述
7.2用例建模的系统概念
7.2.1用例
7.2.2参与者
7.2.3关系
7.3需求用例建模过程
7.3.1第1步:确定业务参与者
7.3.2第2步:确定业务需求用例
7.3.3第3步:构造用例模型图
7.3.4第4步:记录业务需求用例
描述
7.4用例和项目管理
7.4.1分级和评估用例
7.4.2确定用例依赖关系
第8章数据建模和分析
8.1数据建模简介
8.2数据建模的系统概念
8.2.1实体
8.2.2属性
8.2.3关系
8.3逻辑数据建模过程
8.3.1战略数据建模
8.3.2系统分析期间的数据建模
8.3.3对系统设计的考虑
8.3.4数据建模的自动化工具
8.4如何构造数据模型
8.4.1获取实体
8.4.2上下文数据模型
8.4.3基于键的数据模型
8.4.4泛化层次体系
8.4.5具有完整属性的数据模型
8.5分析数据模型
8.5.1好的数据模型的标准
8.5.2数据分析
8.5.3规范化举例
8.6将数据需求映射到地点
第9章过程建模
9.1系统建模简介
9.2过程建模的系统概念
9.2.1外部代理
9.2.2数据存储
9.2.3过程概念
9.2.4数据流
9.3逻辑过程建模的过程
9.3.1战略系统规划
9.3.2用于业务过程重构的过程建模
9.3.3系统分析期间的过程建模
9.3.4对系统设计的考虑
9.3.5用于过程建模的调查研究和
信息收集
9.3.6用于过程建模的计算机辅助
系统工程
9.4如何构造过程模型
9.4.1上下文数据流图
9.4.2功能分解图
9.4.3事件响应或用例清单
9.4.4事件分解图
9.4.5事件图
9.4.6系统图
9.4.7基本图
9.4.8完成规格说明
9.5系统模型的同步
9.5.1数据模型和过程模型的同步
9.5.2过程分布
第10章使用UML进行面向对象分析
和建模
10.1面向对象分析概述
10.2对象建模的历史
10.3对象建模的系统概念
10.3.1对象、属性、方法和封装
10.3.2类、泛化和特化
10.3.3对象/类关系
10.3.4消息和消息发送
10.3.5多态性
10.4UML模型图
10.5对象建模过程
10.5.1建模系统的功能性描述
10.5.2构造分析用例模型
10.5.3建模用例活动
10.5.4构造活动图指南
10.5.5绘制系统顺序图
10.5.6构造系统顺序图指南
10.5.7发现和确定业务对象
10.5.8组织对象并确定其关系
第11章可行性分析和系统方案建议
11.1可行性分析和系统方案建议
11.1.1可行性分析——逐步
投入法
11.1.2系统分析——范围定义阶段的
检查点
11.1.3系统分析——问题分析阶段的
检查点
11.1.4系统设计——决策分析阶段的
检查点
11.2可行性的6个准则
11.2.1运行可行性
11.2.2文化(或者政治)可行性
11.2.3技术可行性
11.2.4进度可行性
11.2.5经济可行性
11.2.6法律可行性
11.2.7底线
11.3成本效益分析技术
11.3.1系统将花费多少
11.3.2系统将提供什么收益
11.3.3建议的系统合算吗
11.4候选系统的可行性分析
11.4.1候选系统矩阵
11.4.2可行性分析矩阵
11.5系统方案建议
11.5.1书面报告
11.5.2正式汇报
第三部分系统设计方法
第12章系统设计
12.1什么是系统设计
12.2系统设计方法
12.2.1模型驱动方法
12.2.2快速应用开发
12.2.3FAST系统设计策略
12.3系统设计之内部开发——“构造”
方案
12.3.1任务5.1——设计应用架构
12.3.2任务5.2——设计系统数
据库
12.3.3任务5.3——设计系统接口
12.3.4任务5.4——打包设计说明
12.3.5任务5.5——修改项目计划
12.4系统设计之集成商用软件——
“购买”方案
12.4.1任务4.1——研究技术评价
准则和选项
12.4.2任务4.2——向供应商征求
建议(或报价)
12.4.3任务5A.1——验证供应商的
声明和性能
12.4.4任务5A.2——评价和分级
供应商建议
12.4.5任务5A.3——签订合同并
听取供应商汇报
12.4.6购买决定对剩余生命周期
阶段的影响
第13章应用架构和建模
13.1应用架构
13.2物理数据流图
13.2.1物理过程
13.2.2物理数据流
13.2.3物理外部代理
13.2.4物理数据存储
13.3信息技术架构
13.3.1分布式系统
13.3.2数据架构——分布式关系
数据库
13.3.3接口架构——输入、输出
和中间件
13.3.4过程架构——软件开发环境
13.4系统设计的应用架构策略
13.4.1企业应用架构策略
13.4.2战术应用架构策略
13.5建模信息系统应用架构
13.5.1绘制物理数据流图
13.5.2前置条件
13.5.3网络架构
13.5.4数据分布和技术确定
13.5.5过程分布和技术确定
13.5.6人/机边界
第14章数据库设计
14.1常规文件和数据库
14.1.1常规文件的优缺点
14.1.2数据库的优缺点
14.2系统分析员的数据库概念
14.2.1字段
14.2.2记录
14.2.3文件和表
14.2.4数据库
14.3数据库设计的前置条件——
规范化
14.4常规文件设计
14.5现代数据库设计
14.5.1数据库设计的目标和前置
条件
14.5.2数据库模式
14.5.3数据完整性和访问完整性
14.5.4角色
14.5.5数据库分布和复制
14.5.6数据库原型
14.5.7规划数据库容量
14.5.8数据库结构生成
ⅩⅦ14.6数据库设计的前景
第15章输出设计和原型化
15.1输出设计概念和指南
15.1.1输出的分布和观众
15.1.2输出的实现方法
15.2如何设计和原型化输出
15.2.1用于输出设计和原型化的
自动化工具
15.2.2输出设计指南
15.2.3输出设计过程
15.2.4基于Web的输出和电子
业务
第16章输入设计和原型化
16.1输入设计概念和指南
16.1.1数据收集、数据录入和数据
处理
16.1.2输入方法和实现
16.1.3输入设计的系统用户问题
16.1.4内部控制——输入数据的
编辑
16.2输入设计的GUI控件
16.2.1常用GUI输入控件
16.2.2高级输入控件
16.3如何设计和原型化输入
16.3.1输入设计和原型化的自动化
工具
16.3.2输入设计过程
16.3.3基于Web的输入和电子业务
第17章用户界面设计
17.1用户界面设计概念和指南
17.1.1计算机用户的类型
17.1.2人的因素
17.1.3人类工程学指南
17.1.4对话语气和词汇
17.2用户界面技术
17.2.1操作系统和Web浏览器
17.2.2显示器
17.2.3键盘和指点设备
17.3图形用户界面风格
17.3.1窗口和框
17.3.2菜单驱动的界面
17.3.3指令驱动的界面
17.3.4提问回答对话
17.3.5用户界面设计的特殊考虑
17.4如何设计用户界面
17.4.1用于用户界面设计和原型化
的自动化工具
17.4.2用户界面设计过程
第18章使用UML进行面向对象设计
和建模
18.1设计面向对象系统
18.1.1实体类
18.1.2接口类
18.1.3控制类
18.1.4持续类
18.1.5系统类
18.1.6设计关系
18.1.7属性和方法可见性
18.1.8对象责任
18.2面向对象设计过程
18.2.1精炼用例模型
18.2.2建模支持用例情境的类
交互、行为和状态
18.2.3修改对象模型以反映实现
环境
18.3对象复用和设计模式
18.4设计模式
18.4.1策略模式
18.4.2适配器模式
18.4.3对象框架和组件
18.5其他UML设计图和实现图
第四部分系统分析和设计
完成后的工作第19章系统构造和实现
19.1什么是系统构造和实现
19.2构造阶段
19.2.1任务6.1——构建和测试网络
(如果需要)
ⅩⅧ19.2.2任务6.2——构建和测试
数据库
19.2.3任务6.3——安装和测试新
软件包(如果需要)
19.2.4任务6.4——编写和测试新
程序
19.3实现阶段
19.3.1任务7.1——进行系统测试
19.3.2任务7.2——准备转换计划
19.3.3任务7.3——安装数据库
19.3.4任务7.4——培训用户
19.3.5任务7.5——转换到新系统
第20章系统运行和支持
20.1系统运行和支持的上下文
20.2系统维护
20.2.1任务8.1.1——验证问题
20.2.2任务8.1.2——对程序进行
基准测试
20.2.3任务8.1.3——研究和调试
程序
20.2.4任务8.1.4——测试程序
20.3系统恢复
20.4技术支持
20.5系统改进
20.5.1任务8.4.1——分析改进
请求
20.5.2任务8.4.2——快速修复
20.5.3任务8.4.3——恢复现有
物理系统
20.6系统退役
词汇表
前言/序言
alt="" />
《系统分析与设计方法》(原书第7版)是一本深入探讨如何构建高效、可靠且满足业务需求的信息系统的权威著作。本书不仅详述了从概念提出到系统交付的完整生命周期,更强调了在复杂多变的现代商业环境中,灵活运用各种分析与设计工具与技术的重要性。它旨在为读者提供一套系统化、工程化的方法论,以应对信息系统开发过程中所面临的挑战,并最终交付出能够为组织带来价值的解决方案。 本书的核心理念在于,成功的系统开发并非仅仅是技术层面的堆砌,而是对业务流程的深刻理解、对用户需求的精准把握,以及对潜在问题的预见性分析。它将系统开发的过程分解为一系列相互关联的阶段,从最初的问题识别与需求收集,到详细的设计,再到最终的实施与维护,每一个环节都至关重要。书中对这些阶段进行了细致入微的阐述,并提供了切实可行的指导。 需求工程:构筑坚实基础 在任何信息系统的开发过程中,需求的定义是基石。本书对此投入了大量的笔墨,详细讲解了如何进行有效的需求工程。这包括了识别关键的业务问题与机会,理解用户的期望与痛点。书中介绍了多种需求收集技术,如访谈、问卷调查、焦点小组、原型法以及用户故事等,并指导读者如何根据不同的项目特点与场景选择最合适的技术。 更重要的是,本书强调了需求规格说明的准确性、完整性、一致性与可验证性。它深入探讨了功能性需求(系统应该做什么)与非功能性需求(系统应该如何做,例如性能、安全性、可用性、可靠性等)的识别与定义。通过对需求的深入分析,读者能够建立一个清晰、无歧义的需求文档,这对于后续的设计与开发至关重要,能够有效避免项目后期出现需求变更的巨大成本。 书中还特别强调了与利益相关者(包括用户、管理者、技术人员等)的有效沟通与协作。它提供了沟通技巧与冲突解决策略,以确保所有参与者的期望得到充分的理解与整合。此外,对于敏捷开发方法论中的用户故事、情景分析等概念,本书也进行了详尽的介绍,展示了如何在迭代的环境中管理和演进需求。 系统建模:可视化理解与沟通 理解复杂的系统需要强大的可视化工具。本书系统地介绍了多种建模技术,帮助读者将抽象的概念转化为清晰的图示,从而促进团队内部以及与利益相关者之间的理解与沟通。 其中,数据建模是本书的重要组成部分。它涵盖了概念数据模型(CDM)、逻辑数据模型(LDM)和物理数据模型(PDM)的构建过程。读者将学习如何识别实体、属性与关系,并使用实体关系图(ER图)等工具来表示数据的结构。本书强调数据模型在数据库设计中的核心作用,以及如何通过规范化等技术来优化数据存储与访问效率。 过程建模同样被深入探讨。本书介绍了流程图、数据流图(DFD)以及活动图等工具,用于描绘业务流程的各个步骤、数据在系统中的流动以及不同组件之间的交互。通过过程模型,读者能够清晰地理解系统的动态行为,识别瓶颈,并设计出更优化的工作流程。 对象建模是面向对象方法论的关键。本书详细讲解了类图、顺序图、协作图、状态图以及用例图等统一建模语言(UML)的各种图示。读者将学习如何识别对象、定义类及其属性与方法,理解继承、多态、封装等面向对象的核心概念,并将其应用于系统的结构设计。通过用例图,读者可以清晰地描述用户与系统之间的交互,为系统的功能定义提供指导。 这些建模技术不仅仅是理论的介绍,本书更注重实际应用,提供了大量的案例分析与实践指导,帮助读者掌握如何运用这些工具来分析现有系统、设计新系统,并有效地向他人解释复杂的系统设计。 架构设计:搭建稳固的骨架 在需求被清晰定义,模型被有效构建之后,接下来的关键任务是进行系统的架构设计。本书深入探讨了各种常见的系统架构模式,如分层架构、客户端-服务器架构、微服务架构、事件驱动架构等。它指导读者如何根据业务需求、技术可行性、成本效益以及可维护性等因素,选择最适合的架构风格。 本书强调架构设计的重要性,它决定了系统的整体结构、关键组件及其之间的关系,直接影响到系统的性能、可扩展性、可靠性与可维护性。它鼓励读者考虑系统的非功能性需求,并在架构层面就予以满足。例如,为了提高系统的可扩展性,可以考虑采用分布式架构;为了提升系统的安全性,可以在架构层面设计相应的安全机制。 书中还讨论了如何进行模块化设计,将大型系统分解为更小、更易于管理和维护的模块。它探讨了模块之间的接口设计原则,以及如何通过清晰的接口来降低模块间的耦合度,提高系统的灵活性。 详细设计:打磨每一个细节 架构设计勾勒出了系统的宏观蓝图,而详细设计则是在此基础上,对每一个组件、每一个功能进行细致的规划。本书详细介绍了如何进行用户界面(UI)设计,包括信息架构、导航设计、布局设计以及交互设计。它强调了用户体验(UX)的重要性,指导读者设计出直观、易用且令人愉悦的用户界面。 在数据库设计方面,本书进一步阐述了如何将逻辑数据模型转化为物理数据库模式,包括表的设计、字段的定义、数据类型的选择、索引的创建以及约束的设置。它还讨论了数据库的性能优化技术,如查询优化、缓存策略等。 对于业务逻辑的设计,本书介绍了如何将业务规则和处理流程转化为具体的代码实现。它鼓励采用面向对象的设计原则,将复杂的业务逻辑封装在独立的类或服务中,以提高代码的可重用性和可维护性。 系统实现与测试:确保系统质量 设计阶段的成果最终需要通过实现与测试来落地。本书讨论了不同的开发方法论,包括瀑布模型、迭代模型以及敏捷开发等,并分析了它们在不同项目场景下的适用性。它强调了版本控制、代码审查以及持续集成等实践在保证代码质量方面的重要作用。 在测试方面,本书详细介绍了各种测试技术,包括单元测试、集成测试、系统测试、验收测试以及性能测试。它强调了测试的系统性与全面性,指导读者如何设计有效的测试用例,识别和修复缺陷,并最终确保系统满足预期的质量标准。它还讨论了自动化测试的重要性,以及如何利用自动化工具来提高测试效率。 项目管理与维护:贯穿始终的考量 本书并非仅仅关注技术层面,更将项目管理与系统维护纳入了系统分析与设计考量的范畴。它介绍了项目管理的常用技术,如范围管理、时间管理、成本管理、风险管理以及质量管理。它强调了有效的项目沟通与协调的重要性,以及如何组建和管理高绩效的开发团队。 对于系统上线后的维护阶段,本书同样进行了深入的探讨。它介绍了如何进行系统监控、故障排除、性能调优以及软件更新与升级。它强调了建立有效的用户支持体系的重要性,以及如何收集用户反馈并将其应用于系统的持续改进。 面向未来的视野 《系统分析与设计方法》(原书第7版)的先进性在于,它不仅涵盖了经典的系统分析与设计理论与技术,还紧跟技术发展的步伐,融入了现代化的开发理念与实践。本书对敏捷开发方法论、DevOps文化、云计算、大数据以及人工智能等新兴技术在系统开发中的应用都给予了充分的关注,帮助读者理解如何在不断变化的技术环境中,设计出面向未来的、更具竞争力的信息系统。 总而言之,本书为读者提供了一套全面、系统且实用的系统分析与设计知识体系。无论您是初入信息技术领域的学生,还是经验丰富的系统分析师、设计师或项目经理,本书都将是您理解、构建和优化信息系统的宝贵指南。它不仅仅是一本技术手册,更是一套思维方式的培养,一种解决复杂问题的方法论,帮助您在信息时代浪潮中,设计出真正有价值的数字解决方案。
坦白说,我是一个对技术书籍要求极高的人,往往很多书会因为内容枯燥、逻辑不清或者过于理论化而让我提不起兴趣。但这本书却让我感到惊喜连连。作者的叙述方式非常老练,能够将复杂的技术概念巧妙地融入到引人入胜的叙述中,让人读来津津有味。它不是那种冷冰冰的技术手册,而是充满了人文关怀和实践智慧。我对书中关于系统架构演进的讨论印象尤其深刻,它生动地描绘了系统在不同发展阶段可能面临的挑战,以及如何应对这些挑战。这种历史的视角让我能够更好地理解当前的技术趋势,并预见未来的发展方向。书中提供的许多图表和模型,都具有很高的概括性和实用性,帮助我能够快速理解和掌握关键概念。它不仅仅是关于“如何设计”,更是关于“如何思考”——如何从更高的层面去审视一个系统,如何权衡各种因素,做出最优的决策。这本书对我来说,是一次深刻的学习体验,它让我对系统分析与设计有了全新的认识,也激发了我对这个领域更深层次的探索欲望。