没有合适的资源?快使用搜索试试~ 我知道了~
首页软件工程 Software engineering theory and practice
软件工程 Software engineering theory and practice
4星 · 超过85%的资源 需积分: 12 15 下载量 98 浏览量
更新于2023-03-16
评论 2
收藏 1.66MB PDF 举报
软件的过程建模与生命周期,项目计划与管理,需求获取,系统设计,对象,编写程序,测试程序,测试系统,系统提交,系统维护,评估软件产品、过程和资源等
资源详情
资源评论
资源推荐
1
前言
理论研究与实践的桥梁
自从 1968 年 NATO 会议首次提出 “ 软件工程 ” 概念以来,它经历了一条漫长的道路。
在几十年前,
“ 软件 ” 这个概念本身还不能被多数人接受。因而软件工程理论研究和实践必
须建立一个坚固的统一标准使得人们懂得在我们现今生活中如何建立良好软件和怎样评价
软件的风险、 概率。 本文融合了当前两种软件工程的潮流: 从实践者角度,实践者的焦点 在
于建立高质量的软件产品, 提供实用的功能; 从研究者角度,侧重于寻找提高质量途径, 提
高实践者的生产效率。
本书用于研究生软件工程教材, 描绘了实用的软件工程理论和实践概况, 由于学生的 经
历有限, 本书中所举的例子可能是超出我们的经验, 但这些例子足以清楚地阐述大型软件 项
目从设计到实现的整个开发过程。
此书还可作为本科生软件工程概念和实践的入门教材, 或用于软件开发人员扩充该领 域
知识。本书中涵盖的各种样例:大型项目,小型项目,面向对象和面向过程,实时处理, 事
务处理,开发案例,维护,适合各种读者群。 12 章、 13 章和 14 章提供的材料用于激励学 生
启发思想,培养研究兴趣。
核心特征
与其他书相比本书具有如下特征:
� 本书将许多评价标准综合运用于软件工程, 测量标准是软件工程策略的完整部分, 不 能
孤立看待。 这种综合看待软件工程测量标准的办法可以使学生学会如何将定量分析, 定
量改进运用到日常活动中。可以评价在个人方面、团体以及项目基础上的进步。
� 本书将许多概念,如:重用、风险管理、质量工程融于软件工程中,而非分裂处理。
� 每章用两个实例说明该章中的主要概念,两个例子均来源于实际的项目。 信
息系统实例描述了一个软件系统怎样确定一家英国大型电视公司广告时间
价 格,实时系统实例给出 Ariane-5 火箭控制软件;在这些实例的问题报告中,我们还
可以探索软件工程中的技术怎样定位问题所在及如何解决、 避免这些问题。 学生可以 从
这些实例中学到如何把软件工程技术运用到实际的系统中。
� 每章末尾, 给出该章主要内容对于小组开发的意义、 个人开发意义、研究意义。学生 可
以选择阅读,查找相关部分。
� 本书给出相关的网址, 文献,网上相关的工具, 方法和学习指南。从网上学生可获得 许
多实际的需求文档、设计、代码、测试计划等相关信息。一些声誉较好的网站上还有 进
一步深入的信息。
� 本书包含许多实例和文献中的样例。 其中的简略例子详细内容可在相关网页上查询。 从
中可了解理论概念是怎样运用于实践的
� 每章末尾给出启发式问题, 这些问题涉及到软件工程的合法与伦理等方面。 学生可以 从
社会、 政治环境出发考虑这些问题。 和其他科学一样, 必须从他给人们生活带来的后 果
角度看待软件工程决策。
� 面向过程和面向对象两种思想方法在每章中都有体现。 此外将有一章专门阐述面向对 象
的发展过程,面向对象的开发过程。此处使用 UML 描述通用概念。面向对象开发的 每
2
一步均有实例说明。
�
本书给出注解文献的出处,网址,讨论小组以及专业领域如:软件可靠性、容错、计 算
机安全等的相关联接。
�
本书给出解决方案手册,可以在 Prentice Hall 得到, Power Point 格式。
�
每章介绍一个项目, 比如抵押处理软件系统开发, 老师可以针对这些项目介绍, 项目 变
体作为课堂作业。
�
每章后给出概念索引。
内容与组织
内容与组织
内容与组织
内容与组织
本书分为三部分: 第一部分 (第一章至第三章) 启发读者阐述软件工程知识对于实践 者
和研究人员的重要性,讨论了问题理解,项目计划意义;第二部分(第四章至第十一章) 详
细阐述开发维护主要步骤, 可以不考虑创建软件的处理模型: 需求检查、 需求获得、 设计 问
题解决方案,代码编写和测试、提交用户;第三部分(第十二章到第十四章)集中讨论评 价
与改进。这里将阐述我们如何看待软件产品的质量和怎样提高质量。
第一章:为何需要软件工程
在本章中,我们首先说明每种关键问题均出现在后面的那些章节中。然后参考
Wasserman
’
s 的核心因素给出软件工程的定义:抽象、分析、方法设计、专用符号、模块和
体系结构,软件生命周期、出版,重用、测量,工具,环境集成,用户界面。接着讨论计 算
机科学和软件工程之间的差别, 解释一些可能遇到的问题, 给本书其它部分打下地基。 最 后
阐明了实用系统方法建立软件的必要性, 给出的两个实例是各章中都将用到的, 同时给出 这
些实例的工程背景。
第二章:过程模块与生命周期
给出各种不同类型的处理和生命周期模块概要,包括: 瀑布模式, V 模式,螺旋模式 以
及其他原型。我们还将讨论几种建模技术,工具,包括系统动力, SADT 和常用方法。对 于
两个实例我们都给出模块分析。
第三章:项目计划与管理
本章主要讲解项目计划和进度安排。引入几个概念,比如:工作量,里程碑,进度安 排
表,任务图,风险管理,成本估算。同样我们将用估算模型评价两个实例的成本代价。集 中
于 F-16 飞行器软件开发系统和 Digital
’
s alpha AXP 项目的软件开发与管理的成本估算。
第四章:需求分析
本章讲解需求分析和需求说明书, 阐明功能需求与非功能需求的差别, 分别用几种不 同
的方式说明他们之间的差别, 讨论如何建立需求原型。 并且使用各种正式的方法说明和评 价
需求。此外还包括需求文档书写,需求文档回顾,需求质量及评价,需求可测性。
3
第五章:系统设计
本章主要考虑系统结构问题。 首先讨论 Shaw 和 Garlan 的软件体系结构框架。 接着描 述
概念设计和技术设计的区别。 讨论负责设计的人员的角色, 两种基本设计方法: 组合法与 分
解法。然后给出良好设计特征,介绍几个设计策略,给出若干系统设计技术的实例,工具。
在本章中读者还将学到客户 - 服务器体系结构,可重用设计组件,人机接口设计,安全与可
靠性设计(包括出错处理和容错技术) ,设计模式,正式的设计方法,设计协议评价。在解
释了如何评价设计质量和正确性证明,怎样书写结果文档,我们转向代码设计阶段。
代码设计分别用模块化设计和独立设计用两种方法: 自顶向下, 自底向上解释, 并给 出
逻辑设计和物理设计的区别。 针对并发与安全性要求较高的系统, 我们检查其设计上的因 差
错而导致的 Therac-25 的功能故障。举出若干设计工具,彻底讨论设计质量以及怎样衡量。
最后结合信息系统和时实系统两个实例给出软件设计的实例。
第六章:关于对象
第六章从间接的角度考虑面向对象开发的特殊性质。 我们先给出使用案例的背景, 讨 论
如何从需求中获得对象、 对象特征。 其次要检查系统设计。 接着扩充系统设计,加入非功 能
性需求,编程设计的代码细节。使用 UML 和构造图,我们可以产生面向对象的系统说明 和
系统设计,这里所用的实例是空军服务站系统。
对于面向对象开发的评价, 我们使用普通的面向对象规则评价服务站系统。 可以从中 学
到如何在规则中加入适当的改变有助于我们决定如何分配资源,寻找错误。
第七章:编写代码
在本章中将讲解如何编写高质量的代码实现系统设计。 将着重讨论代码编写标准、 编 写
过程、 提倡使用简单实用的编程指导。 在这里给出两种类型语言的编程实例: 面向对象和 面
向过程。并讨论代码文档的必要性,错误处理措施。
第八章:程序测试
本章将从不同侧面考虑程序测试,比较两种方法,确认软件系统。给出软件问题定义,
分类。分类方法怎样使数据采集, 数据分析更加有效。解释单元测试和整体测试的区别。 引
入若干软件自动测试工具和技术, 测试生命周期的必要, 以及如何将这些工具、 技术集成 到
系统中。
第九章:系统测试
首先给出系统测试的原则, 包括测试和数据的重用性, 配置管理。 所引入的概念还包
括:
功能测试、性能测试、确认测试、安装测试。同时分析了面向对象系统的特殊测试需求。 这
里给出几个测试工具, 测试小组的成员讨论内容。 接下来介绍软件可靠性模型, 可靠性问
题,
软件可维护性,适用性。读者可从中学会如何使用测试结果评价提交产品可能具有的特征。
第十章:系统递交
本章讲解培训与文档记录的必要性。
4
第十一章:系统维护
本章我们涉及到系统变化问题, 系统变化在系统生命周期中怎样产生, 随之而来的系 统
设计、代码、测试处理、文档变化。并讨论典型的系统维护问题配置管理的必要性。并彻 底
讨论了对可能出现变化及变化所带来后果的评测。
第十二章:产品,过程,资源评估
因为许多软件工程决策涉及现存组件集成与整合,那么就需要一种方法评价过程与产
品。 在这里我们给出经验法评估以及若干评价策略。 这些规则用来建立质量和生产力的基
线。
在这里使用几个质量模型,评价系统可重用性,后期使用,理解信息技术投资的回报。
第十三章:预测,处理和资源的改进
本章建立在第十一章基础上,包括几个比较深入的实例用来表示预测模型,检测技术,
可以扩充软件工程的其他方面的理解并有助于提高投资技术水平的提高。
第十四章:软件工程的前景
在最后一章,我们探索几个软件工程领域的若干公开问题。重温 Wasserman 的几个概
念重新看待将软件工程作为一门学科我们在相关行业做得如何。 此外还要讨论在研究成果 转
化成实际应用时若干技术转移问题和决策制定的改进与提高。
致谢
感谢朋友和家人给我的技术与情感上的支持。 对于不能够将所有在编写本书过程中曾 给
过我帮助和支持的人的名字列在这里深表遗憾和歉意。 Carolyn Seaman ( 马里兰大学 - 巴尔 的
摩校区 ) 出色的评论家,提出简化澄清的种种方法,帮助我写出更加紧凑,更易于理解的内
容, 此外她还给出了绝大多数习题的答案, 并给该书分配了网址。 在此衷心感谢她的友善 和
帮助。 Forrest Shull (Fraunhofer Center ) 更新答案使它们能够反映最新的习题与材料。 Yiqin
g
Liang 修复了网上的连接错误, 添加了新的材料
。
Carla
Valle
,来自里约热内卢联合大学, 更
新网址并更新了网上资源。
尤其要感激的是 Guilherme Travassos ,他允许我们使用在马里兰大学 -College Park 共同
开发的项目材料。感激 Manny Lawrence ,实时空军服务站系统经理,以及他的簿记员 Bea
Lawrence ,感谢他们和我们这些共同的工作和生活经历。
习题
1 怎样用处理模型的相关概念描述一个系统?例如: 如何确定一个用处理模型描述的系统 的
上届?
2 对本章中的每个模型,分别列举其优点和缺点。
3 本章中的每个模型是如何处理未来需求分析的改变。
4 请画出一个商务旅行的机票订购处理图。
5 画出 Lai 公司人造用品表,要求包括人造用品没经测试状态、部分经过测试状态,完全 经
过测试状态。
5
6 用自己选择的符号画出软件系统的开发过程, 给出三种不同的处理原型, 从中选择一个 最
佳的。
7 仔细考虑 2.4 节处理模型的特征, 这里的特征对于问题和解决方案还没经彻底理解的项 目
非常重要。
8 在本章中, 我们强调软件开发是一个创造性的过程, 而非一个完全的生产过程。 讨论一 现
代有软件开发的生产的特征,并解释为何软件开发是一个创造性的过程。
9 一个开发组织可以采用一个单一的处理模式处理所有的软件开发, 讨论它的正面和反面 作
用。
10 假如与某用户的合同指明要求使用某个特殊的软件开发工具,那么这项工作应该怎样管
理?
11 考虑本章对处理的介绍。哪一个对于需求变化反映的灵活性最大。
12 假设 Amalgamated 公司在签订创建一个系统时合同中指明要使用某给定的模型。你答 应
使用事先规定的这些人力、 物力资源和软件资源。 在软件交付和安装后, 系统遇到了一个 灾
难性的错误。当 Amalgamated 公司开始调查错误原因时,你被指责没有做代码检查,这些
检查可以发现递交时问题所在。 你反驳: 城代码检查并不在所要求得的处理中。 那么在这 场
争论中法律问题和伦理问题的焦点是什么?
剩余293页未读,继续阅读
秋千525
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- stc12c5a60s2 例程
- Android通过全局变量传递数据
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1