没有合适的资源?快使用搜索试试~ 我知道了~
首页软件工程经典教材:理论与实践的集成教程
软件工程经典教材:理论与实践的集成教程
5星 · 超过95%的资源 需积分: 50 121 下载量 84 浏览量
更新于2024-07-18
5
收藏 2.17MB PDF 举报
《软件工程经典教材》是一本全面介绍和指导软件工程理论与实践的权威著作,自1968年软件工程概念诞生以来,它一直在不断完善和发展,旨在帮助读者理解和掌握如何构建高质量的软件产品。该教材特别关注软件工程的两大主流视角——实践者和研究者的角度,前者注重实用性,后者追求质量提升和效率优化。 书中的内容覆盖广泛,从研究生到本科生,乃至软件开发人员,都能从中受益。书中通过丰富的实例,如大型电视公司广告定价系统和Ariane-5火箭控制软件,展示软件工程的实际应用,使读者能够学习如何将理论知识转化为实际操作,解决并预防软件开发中的问题。每章都配备两个实际项目案例,这些案例不仅提供了概念理解的辅助,还展示了软件工程中的技术应用和问题解决策略。 核心特色之一是本书强调软件工程测量标准的整合性,强调它们与工程策略的紧密联系,教导读者如何在个人、团队和项目层面进行定量分析和改进。此外,书中的概念如重用、风险管理、质量工程等被融入整体框架,而非孤立讨论,增强了理论的实用性。 每一章节末尾,作者对小组开发、个人独立开发以及研究工作的重要性进行了阐述,这为读者提供了灵活的学习路径。同时,书中还提供丰富的参考资料,包括网址、文献、在线工具和学习指南,鼓励读者利用网络资源获取更多实战经验和专业知识。 此外,书中包含大量实例和文献样本,既有简洁的概述,也有详细的内容供深入学习,这为读者提供了丰富的实践素材和深入研究的可能性。总体而言,《软件工程经典教材》是一本极具价值的参考书籍,无论是初学者还是经验丰富的专业人士,都可以从中找到适合自己层次和需求的内容,提升软件工程领域的专业素养。
资源详情
资源推荐
讨论)改进开发过程,Hughes Aircra
Dion(1993)报告说,在过程改进后
ft 将生产率提高了 4 倍,节省了几百万美元。类似地,
,Raytheon 生产率加倍,且每投资一美元就得到 7.7 美
元的回报。而位于俄克拉荷马州的 Tinker 空军基地的技术人员说生产率有 6.35 倍的改进
Li
了几个关键的问题。在另外的一些事
笔资金投资
技术或发起
生产率
过程
消费者
花费
商业
包括在定义中的花费问题涉及满足预测、改善花费效能及不超出预算,而不是减少运作
费用或使工程或组织简化并更有效率。图 1.6 概括了许多组织在他们的 ROI 的定义中包括一
条投资项的频率。例如,会见公司中约%5 在 ROI 业绩计算中包括了一个质量组的业绩,约
%35 在考虑投资费用时包括软件费用。
观点间的差异是烦扰的,因为它意味着组织间 ROI 的计算是无法比较的。但是这此不
同的观点的存在却有很好理由。来自缩减的进度、更高质量和增加的生产率中的美元节省被
返回政府而不是订约人。另一方面,订约人经常期待竞争优势和增强的工作能力和更大的利
润;因此,订约人的 ROI 是更有业绩——比起基于花费。特别地,更精确的费用和进度估
计可能意味着消费者满意及不断的生意。并且,对于市场来说,缩减的时间跟改进了的产品
质量一样也被理解为提供商业价值。
即使不同的 ROI 计算可对每个组织是合理的,也有人担心软件技术投资回报与金融上
的 ROI 不同。从某种观点来看,程序成功必须向更高层次的管理汇报,很多与软件无关而
与公司的主要业务有关,例如通讯或银行。有很大内在意思上差异的相似术语的使用将引
( pke 和 Butler 1992)。
然而,Brodman 和 Johnson(1995)对过程改进的商业价值做了更紧密的思考。他们调
查了 33 个进行了某种过程改进活动的公司,并调查出
情中,Brodman 和 Johnson 问公司他们怎样定义投资回报率(ROI),一个商界清楚定义了的
概念。他们指出,投资回报率的书面定义衍生于金融界,描述了根据为达到别的目的所进行
的投资。也就是说,“投资必须不仅要返还原来资本而且要更多,至少要等于这
于别的方面所赚利润加上一笔风险金(Putnam 和 Myers 1992)。通常,商界使用三个模型之
一来评估 ROI:偿还模型,会计学返回率模型和折扣兑现流模型。
然而,Brodman 和 Johnson(1995)发现美国政府和美国工业界以很不相同的方式解释
ROI,彼此不同,且二者也不同于标准商校的方法。政府以美元来看 ROI,考虑减少动作费、
预测美元储蓄及计算采用新技术的费用。政府的投资也以美元来表示,如引进新
过程改进的费用。
另一方面,工业界以业绩来看待投资而不是花费或美元。也就是说,公司感兴趣的是节
省时间或使用更少的人力,并且他们对有关投资回报的定义反映在临死业绩这样的焦点上。
在被调查的公司中,投资回报包括这样的项目:
培训
进度表
风险
质量
是
起很多混淆。因此,我们的成功标准必须不仅对软件工程和过程有意义,而且也应对软件所
支持的更一般商业实践有意义。我们将在十二章的更多细节中调查这个问题并考虑使用几个
通用商业价值指标来在技术选项中进行选择。
11
0% 10% 20% 30% 40% 50% 60% 70%
一般
软件过程组
质量组
文档
过程
内部 R&D
SCE 费用
评估
一般
材料
硬件费用
设施
软件费用
美
元
业
绩
被接见者百分比
图 1.6 工业投资回报率中的术语
1.4 谁实施软件工程?
软件开发的一个关键部分就是顾客和开发者之间的交流;如果失败,系统也将失败。在
建立一个系统来帮助顾客解决问题之前,我们必须理解顾客想要和需要的东西。为了做好这
一步
个角色;在一个小工程中,一个人或一个组可能一次担当几个角色。
,或开发者。顾客就是为软件系统开发
支付 发软件系统的公司、组织或个人。这类
人包 人员。用户就实际使用这个系统的人
员: 、用户和开发者是同一个人或同
一个 三类人间的基本关系。
控制着资金,通常谈判合同和签署接受文件。然而,有时顾客不是一名用户。例
如,
理解
部门。这个部门可能决定需要有一个自动工具来跟踪它自己的工程的花费和进度。在自身建
,让我们把目光转向软件开发过程中涉及的人。
从事软件开发的人数依赖于工程规模和困难程度。然而,无论涉及多少人,在整个工程
的生命中扮演的角色是有区别的。因此,对一个大型工程,一个人或一个组可能会被安排为
确定的每
通常,一个项目的参与者属于三类:顾客,用户
资金的公司、组织或个人。开发者就是为顾客开
括任何协调、指导程序员和测试人员所需要的管理
坐在终端前或提交数据或读输出。尽管对一些工程顾客
组,但通常他们是不同集合中的人。图 1.7 显示了
顾客,
假定 Wittenberg Water Works 与 Gentle Systems 公司签署为前者建立计算机化记帐系统
的合同。Wittenberg 的总裁向 Gentle Systems 的代表正确地描述要求,并且签署合约。然而,
这位总裁将不直接使用这套记帐系统;用户将是簿记员和财务工作人员。因此开发者正确地
顾客和用户两者想要的和需要的东西是很重要的。
另一方面,假定 Wittenberg Water Works 是如此庞大的以致于有自己的计算机系统开发
12
立工具的时候,这个部门同时是用户、顾客和开发者。
合同义务
资金,
需求
顾客
发起系统开发
用户
使用系统
开发者
建立系统
需求
软件系统
图 1.7 软件开发的参与者
在最近几年,顾客、用户和开发者间简单的区别已经变得更加复杂。顾客和用户已经以
各种
码以求完整);或者子系统需要一个单独的完整
性处理
这个工程中,什么不需要。例
如,假设上司要求你写一个替你办公室里人员打印付薪水的支票的程序。你必须要知道程序
是否 别的另外的系统读工作小时数并打印结果,或者是否也还要计算支付信
息。
了开始,我们必须知道是否任何对象或活动已
经被包含于系统中。
系统元素
我们通过为系统各部分命名然后确定组成部分和另外组成部分如何关联来描述它。识别
是分析摆在我们面前的问题的第一步。
方式涉入开发过程中。顾客可能决定购买 Commercial Off-The-Shelf(COTS)软件以并
入开发者将供应和支持的最终产品中。当这样的事情发生时,顾客涉及了系统体系决策,并
且开发工作也有了更多的限制。类似地,开发者可以选择使用别的被称为次承包商的开发者,
次承包商建立子系统并将它交付给开发者以纳入最终的产品中。次承包商可能与主开发者并
肩工作,或者在不同的场所工作,同时保持他们的工作与主开发者协调一致并在开发过程后
期交付子系统。子系统可能是一个一切齐全可立即使用的系统(turnkey system),在这个系
统中代码被合并成一个整体(没有额外的代
以建立主系统到子系统间的联接。
因此,“系统”的概念在软件工程是很重要的,我们装配起来的硬件和软件必须与用户
交互,与别的软件作业交互,与别的硬件交互,与现存数据库(例如,数据库拥有仔细确定
的数据集和数据关系),甚至与别的计算机系统。所以,对任何工程,了解这个工程的边界
以为其提供一个上下文(环境)是很重要的:什么需要包括在
只是简单地从
类似的,你必须知道是否由程序来计算税金、养老金和退休金,或者是否这些项目的一
份报告将附随于每一张付薪支票。你真正问的是:这个工程开始哪里又在哪里结束?同样的
问题适用于任何系统。一个系统是一个对象和活动的集合再加把对象和活动联系在一起的关
系的一个描述。典型地,我们的系统定义中,对每个活动,包括所要求的输入、所要采取的
行为、和所产生的输出的一个列表。因此,为
13
活动和对象
首先,我们区分一下活动和对象。一个活动(Activity)就是发生于系统中的某事。活
动通常被描述为一件由触发器发起的事件,它通过改变一个特征来将一件事物转换为另一事
物。这种转换可能意味着一个数据元素从一个位置移到另一个位置,从一个值变为另一个值,
或者与另的数据合起来为另外的活动提交输入。例如,一个数据项可能从一个文件移到另一
个文件。在这种情况下,发生变化了的特征就是位置。或者这个数据项的值被增加。最后,
这个数据项的地址可能和几个另外的数据项的地址被包括在参数列表中以便别的例行程序
立即被调用来处理所有这些数据。
活动中涉及的元素被称为对象(object)或实体(entity)。通过,这些对象以某种方式
相互关联。举例,对象可被排列在一张表或矩阵中。通常,对象聚合成记录,每个记录以一
种指定的格式排列。例如,一条雇员的历史记录(称为域)可能包括着描述每位雇员的对象,
如下:
First name Postal code
Middle name Salary per hour
Last name Benefits per hour
Street address Vacation hours accrued
City Sick leave accrued
State
在记录中,不仅定义了每个域,而且也指明了每个域的尺寸及与别的域间的关系。因此,
一旦实体和活动确定下来,我们将实体和它们的活动匹配。实体和活动间的关系是被清
的项是我们的系统的产品并跑出去为另外系统使用。
记录描述规定了每个域的数据类型、在记录中的开始位置和域的长度。依次地,因为有了每
个雇员的记录,记录可被合并成一个文件,并且可以指定这个文件的特征(例如最大记录数)。
有时,对象的定义会稍有不同。在一条更大的记录中,对象被视为是独立的,而不考虑
作为一个域的每一项。对象描述包括了每个对象的特征列表和使用这个对象或影响这个对象
而发生的所有的活动的列表。例如,考虑“多边形对象(polygon)”。对象的描述可能说诸
如边数和每边边长这样的特征。行为可能包括面积或周长的计算。甚至可能有一个称为“多
边形类型(polygon type)”的特征,以便“polygon”的每个实例能被识别出何时它是,举例
来说,“菱形(rhombus)”或“矩形(rectangle)”。 类型自身可能有一个对象描述;例如,
“rectangle”可以由“正方形(square)”和“非正方形(not square)”组成。我们将在第四章
研究需求分析时探究这些概念,并在第六章讨论面向对象开发时深入探究。
关系和系统边界
晰而仔细定义。一个实体定义包括实体来源的描述。一些项在已存在的文件中;另外的在活
动期间建立。实体的目的地也是重要的。一些项仅由一项活动使用,但另一些被预定地输入
别的系统。也就是说,一些来自一个系统的项被处于受检查的本系统之外范围时的活动使用。
因此,我们认为我们所见的系统是有边界或分界线的。一些项跨过边界进入我们的系统而别
运用这些概念,我们可在将系统(System)定义为如下事物的集合(collection):一个实
体集、一个活动集、一个实体与活动的联系的描述,和一个系统边界的定义。这条系统的定
义不仅适用于计算机系统而且也适用于在其中对象以某种方式与别的对象交互的任何事物。
1.5 一个系统的方法
为了弄明白系统定义如何工作,考虑让你身体可以吸收氧气排出二氧化碳和水的那个部
14
分:呼吸系统。你可以很容易地定义它的边界:如果你叫出你身体的一个特别器官,你能说
出它是否是呼吸系统的一部分。氧气和二氧化碳分子以明确定义了的方式通过系统的对象或
实体。我们也能根据实体的交互描述系统中的活动。如果需要,我们能通过显示进入和离开
它的东西解释系统;我们也能提供表格来描述所有的实体和他们所涉及的活动。图 1.8 解释
了呼吸系统。注意到每个活动都涉及实体,并且能通过描述哪个实体充当输入、它们怎样被
机。系
统输出可能是一组将送往邮箱以交付给适当收件人的付薪支票。在图 1.9 所示的系统中,我
实体、活动和他们的关系。
相关系统
的
处理和产生了什么结果(输出)来定义。
图 1.8 呼吸系统(略)
我们也必须清晰地描述我们的计算机系统。我们和预期的用户来定义系统的边界:我们
的工作开始和终止于哪里?另外,我们需要知道什么是处于系统边界上并因此确定输入的来
来源和输出的目标。举例,在一个打印付薪支票的系统中,支付信息可来自公司计算
们能看到这样的边界并能理解
边界概念是重要的,因为很少有系统是独立于其他系统的。例如,呼吸系统必须与消化
系统,循环系统、神经系统及其他系统交互。没有神经系统呼吸系统不能工作;没有呼吸系
统循环系统也不能工作。相互依赖可能是复杂。(的确,许多环境问题出现并加剧就是因为
我们没有认识到生态系统的复杂性。)然而,一旦系统边界得到描述,我们就很容易明白什
么在里面什么不在里面、什么穿越了边界。
依次地,一个系统存在于另一个系统内部也是可能的。当我们描述一个计算机系统时,
我们常常把焦点集中于实际上更大的一个系统的一小片上。如此的焦点可让我们定义和建立
一个复杂性相对要小一点的系统包含于大系统内部。如果我们仔细地文档化影响我们系统
计算
薪水支票
薪水信息
打印
邮箱
计算机
日期验证
(你)
系统边界
图 1.9 付薪支票产生系统的定义
15
剩余293页未读,继续阅读
joiin08
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 前端面试必问:真实项目经验大揭秘
- 永磁同步电机二阶自抗扰神经网络控制技术与实践
- 基于HAL库的LoRa通讯与SHT30温湿度测量项目
- avaWeb-mast推荐系统开发实战指南
- 慧鱼SolidWorks零件模型库:设计与创新的强大工具
- MATLAB实现稀疏傅里叶变换(SFFT)代码及测试
- ChatGPT联网模式亮相,体验智能压缩技术.zip
- 掌握进程保护的HOOK API技术
- 基于.Net的日用品网站开发:设计、实现与分析
- MyBatis-Spring 1.3.2版本下载指南
- 开源全能媒体播放器:小戴媒体播放器2 5.1-3
- 华为eNSP参考文档:DHCP与VRP操作指南
- SpringMyBatis实现疫苗接种预约系统
- VHDL实现倒车雷达系统源码免费提供
- 掌握软件测评师考试要点:历年真题解析
- 轻松下载微信视频号内容的新工具介绍
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功