软件工程--理论与实践

上传人:飞*** 文档编号:39984131 上传时间:2018-05-21 格式:DOC 页数:241 大小:1.45MB
返回 下载 相关 举报
软件工程--理论与实践_第1页
第1页 / 共241页
软件工程--理论与实践_第2页
第2页 / 共241页
软件工程--理论与实践_第3页
第3页 / 共241页
软件工程--理论与实践_第4页
第4页 / 共241页
软件工程--理论与实践_第5页
第5页 / 共241页
点击查看更多>>
资源描述

《软件工程--理论与实践》由会员分享,可在线阅读,更多相关《软件工程--理论与实践(241页珍藏版)》请在金锄头文库上搜索。

1、软件工程理论与实践- 1 -前言前言理论研究与实践的桥梁理论研究与实践的桥梁自从 1968 年 NATO 会议首次提出“软件工程”概念以来,它经历了一条漫长的道路。在几十年前, “软件”这个概念本身还不能被多数人接受。因而软件工程理论研究和实践必须建立一个坚固的统一标准使得人们懂得在我们现今生活中如何建立良好软件和怎样评价软件的风险、概率。本文融合了当前两种软件工程的潮流:从实践者角度,实践者的焦点在于建立高质量的软件产品,提供实用的功能;从研究者角度,侧重于寻找提高质量途径,提高实践者的生产效率。本书用于研究生软件工程教材,描绘了实用的软件工程理论和实践概况,由于学生的经历有限,本书中所举的

2、例子可能是超出我们的经验,但这些例子足以清楚地阐述大型软件项目从设计到实现的整个开发过程。此书还可作为本科生软件工程概念和实践的入门教材,或用于软件开发人员扩充该领域知识。本书中涵盖的各种样例:大型项目,小型项目,面向对象和面向过程,实时处理,事务处理,开发案例,维护,适合各种读者群。12 章、13 章和 14 章提供的材料用于激励学生启发思想,培养研究兴趣。核心特征核心特征与其他书相比本书具有如下特征:本书将许多评价标准综合运用于软件工程,测量标准是软件工程策略的完整部分,不能孤立看待。这种综合看待软件工程测量标准的办法可以使学生学会如何将定量分析,定量改进运用到日常活动中。可以评价在个人方

3、面、团体以及项目基础上的进步。本书将许多概念,如:重用、风险管理、质量工程融于软件工程中,而非分裂处理。每章用两个实例说明该章中的主要概念,两个例子均来源于实际的项目。信息系统实例描述了一个软件系统怎样确定一家英国大型电视公司广告时间价格,实时系统实例给出 Ariane-5 火箭控制软件;在这些实例的问题报告中,我们还可以探索软件工程中的技术怎样定位问题所在及如何解决、避免这些问题。学生可以从这些实例中学到如何把软件工程技术运用到实际的系统中。每章末尾,给出该章主要内容对于小组开发的意义、个人开发意义、研究意义。学生可以选择阅读,查找相关部分。本书给出相关的网址,文献,网上相关的工具,方法和学

4、习指南。从网上学生可获得许多实际的需求文档、设计、代码、测试计划等相关信息。一些声誉较好的网站上还有进一步深入的信息。本书包含许多实例和文献中的样例。其中的简略例子详细内容可在相关网页上查询。从中可了解理论概念是怎样运用于实践的每章末尾给出启发式问题,这些问题涉及到软件工程的合法与伦理等方面。学生可以从社会、政治环境出发考虑这些问题。和其他科学一样,必须从他给人们生活带来的后果角度看待软件工程决策。面向过程和面向对象两种思想方法在每章中都有体现。此外将有一章专门阐述面向对象的发展过程,面向对象的开发过程。此处使用 UML 描述通用概念。面向对象开发的每一步均有实例说明。本书给出注解文献的出处,

5、网址,讨论小组以及专业领域如:软件可靠性、容错、计算机安全等的相关联接。本书给出解决方案手册,可以在 Prentice Hall 得到,Power Point 格式。每章介绍一个项目,比如抵押处理软件系统开发,老师可以针对这些项目介绍,项目变体作为课堂作业。每章后给出概念索引。内容与组织内容与组织本书分为三部分:第一部分(第一章至第三章)启发读者阐述软件工程知识对于实践者和研究人员的重要性,讨论了问软件工程理论与实践- 2 -题理解,项目计划意义;第二部分(第四章至第十一章)详细阐述开发维护主要步骤,可以不考虑创建软件的处理模型:需求检查、需求获得、设计问题解决方案,代码编写和测试、提交用户;

6、第三部分(第十二章到第十四章)集中讨论评价与改进。这里将阐述我们如何看待软件产品的质量和怎样提高质量。第一章:为何需要软件工程第一章:为何需要软件工程在本章中,我们首先说明每种关键问题均出现在后面的那些章节中。然后参考 Wassermans 的核心因素给出软件工程的定义:抽象、分析、方法设计、专用符号、模块和体系结构,软件生命周期、出版,重用、测量,工具,环境集成,用户界面。接着讨论计算机科学和软件工程之间的差别,解释一些可能遇到的问题,给本书其它部分打下地基。最后阐明了实用系统方法建立软件的必要性,给出的两个实例是各章中都将用到的,同时给出这些实例的工程背景。第二章:过程模块与生命周期第二章

7、:过程模块与生命周期给出各种不同类型的处理和生命周期模块概要,包括:瀑布模式,V 模式,螺旋模式以及其他原型。我们还将讨论几种建模技术,工具,包括系统动力,SADT 和常用方法。对于两个实例我们都给出模块分析。第三章:项目计划与管理第三章:项目计划与管理本章主要讲解项目计划和进度安排。引入几个概念,比如:工作量,里程碑,进度安排表,任务图,风险管理,成本估算。同样我们将用估算模型评价两个实例的成本代价。集中于 F-16 飞行器软件开发系统和 Digitals alpha AXP 项目的软件开发与管理的成本估算。第四章:需求分析第四章:需求分析本章讲解需求分析和需求说明书,阐明功能需求与非功能需

8、求的差别,分别用几种不同的方式说明他们之间的差别,讨论如何建立需求原型。并且使用各种正式的方法说明和评价需求。此外还包括需求文档书写,需求文档回顾,需求质量及评价,需求可测性。第五章:系统设计第五章:系统设计本章主要考虑系统结构问题。首先讨论 Shaw 和 Garlan 的软件体系结构框架。接着描述概念设计和技术设计的区别。讨论负责设计的人员的角色,两种基本设计方法:组合法与分解法。然后给出良好设计特征,介绍几个设计策略,给出若干系统设计技术的实例,工具。在本章中读者还将学到客户-服务器体系结构,可重用设计组件,人机接口设计,安全与可靠性设计(包括出错处理和容错技术) ,设计模式,正式的设计方

9、法,设计协议评价。在解释了如何评价设计质量和正确性证明,怎样书写结果文档,我们转向代码设计阶段。代码设计分别用模块化设计和独立设计用两种方法:自顶向下,自底向上解释,并给出逻辑设计和物理设计的区别。针对并发与安全性要求较高的系统,我们检查其设计上的因差错而导致的 Therac-25 的功能故障。举出若干设计工具,彻底讨论设计质量以及怎样衡量。最后结合信息系统和时实系统两个实例给出软件设计的实例。第六章:关于对象第六章:关于对象第六章从间接的角度考虑面向对象开发的特殊性质。我们先给出使用案例的背景,讨论如何从需求中获得对象、对象特征。其次要检查系统设计。接着扩充系统设计,加入非功能性需求,编程设

10、计的代码细节。使用 UML 和构造图,我们可以产生面向对象的系统说明和系统设计,这里所用的实例是空军服务站系统。对于面向对象开发的评价,我们使用普通的面向对象规则评价服务站系统。可以从中学到如何在规则中加入适当的改变有助于我们决定如何分配资源,寻找错误。软件工程理论与实践- 3 -第七章:编写代码第七章:编写代码在本章中将讲解如何编写高质量的代码实现系统设计。将着重讨论代码编写标准、编写过程、提倡使用简单实用的编程指导。在这里给出两种类型语言的编程实例:面向对象和面向过程。并讨论代码文档的必要性,错误处理措施。第八章:程序测试第八章:程序测试本章将从不同侧面考虑程序测试,比较两种方法,确认软件

11、系统。给出软件问题定义,分类。分类方法怎样使数据采集,数据分析更加有效。解释单元测试和整体测试的区别。引入若干软件自动测试工具和技术,测试生命周期的必要,以及如何将这些工具、技术集成到系统中。第九章:系统测试第九章:系统测试首先给出系统测试的原则,包括测试和数据的重用性,配置管理。所引入的概念还包括:功能测试、性能测试、确认测试、安装测试。同时分析了面向对象系统的特殊测试需求。这里给出几个测试工具,测试小组的成员讨论内容。接下来介绍软件可靠性模型,可靠性问题,软件可维护性,适用性。读者可从中学会如何使用测试结果评价提交产品可能具有的特征。第十章:系统递交第十章:系统递交本章讲解培训与文档记录的

12、必要性。第十一章:系统维护第十一章:系统维护本章我们涉及到系统变化问题,系统变化在系统生命周期中怎样产生,随之而来的系统设计、代码、测试处理、文档变化。并讨论典型的系统维护问题配置管理的必要性。并彻底讨论了对可能出现变化及变化所带来后果的评测。第十二章:产品,过程,资源评估第十二章:产品,过程,资源评估因为许多软件工程决策涉及现存组件集成与整合,那么就需要一种方法评价过程与产品。在这里我们给出经验法评估以及若干评价策略。这些规则用来建立质量和生产力的基线。在这里使用几个质量模型,评价系统可重用性,后期使用,理解信息技术投资的回报。第十三章:预测,处理和资源的改进第十三章:预测,处理和资源的改进

13、本章建立在第十一章基础上,包括几个比较深入的实例用来表示预测模型,检测技术,可以扩充软件工程的其他方面的理解并有助于提高投资技术水平的提高。第十四章:软件工程的前景第十四章:软件工程的前景在最后一章,我们探索几个软件工程领域的若干公开问题。重温 Wasserman 的几个概念重新看待将软件工程作为一门学科我们在相关行业做得如何。此外还要讨论在研究成果转化成实际应用时若干技术转移问题和决策制定的改进与提高。致谢致谢感谢朋友和家人给我的技术与情感上的支持。对于不能够将所有在编写本书过程中曾给过我帮助和支持的人的名字列在这里深表遗憾和歉意。Carolyn Seaman (马里兰大学-巴尔的摩校区)出

14、色的评论家,提出简化澄清的种种方法,帮助我写出更加紧凑,更易于理解的内容,此外她还给出了绝大多数习题的答案,并给该书分配了网址。在此衷心感谢她的友善和帮助。Forrest Shull (Fraunhofer Center ) 更新答案使它们能够反映最新的习题与材料。Yiqing Liang 修复了网上的连接错误,添加了新软件工程理论与实践- 4 -的材料。Carla Valle,来自里约热内卢联合大学,更新网址并更新了网上资源。尤其要感激的是 Guilherme Travassos,他允许我们使用在马里兰大学-College Park 共同开发的项目材料。感激 Manny Lawrence,实

15、时空军服务站系统经理,以及他的簿记员 Bea Lawrence,感谢他们和我们这些共同的工作和生活经历。习题习题1 怎样用处理模型的相关概念描述一个系统?例如:如何确定一个用处理模型描述的系统的上届?2 对本章中的每个模型,分别列举其优点和缺点。3 本章中的每个模型是如何处理未来需求分析的改变。4 请画出一个商务旅行的机票订购处理图。5 画出 Lai 公司人造用品表,要求包括人造用品没经测试状态、部分经过测试状态,完全经过测试状态。6 用自己选择的符号画出软件系统的开发过程,给出三种不同的处理原型,从中选择一个最佳的。7 仔细考虑 2.4 节处理模型的特征,这里的特征对于问题和解决方案还没经彻

16、底理解的项目非常重要。8 在本章中,我们强调软件开发是一个创造性的过程,而非一个完全的生产过程。讨论一现代有软件开发的生产的特征,并解释为何软件开发是一个创造性的过程。9 一个开发组织可以采用一个单一的处理模式处理所有的软件开发,讨论它的正面和反面作用。10 假如与某用户的合同指明要求使用某个特殊的软件开发工具,那么这项工作应该怎样管理?11 考虑本章对处理的介绍。哪一个对于需求变化反映的灵活性最大。12 假设 Amalgamated 公司在签订创建一个系统时合同中指明要使用某给定的模型。你答应使用事先规定的这些人力、物力资源和软件资源。在软件交付和安装后,系统遇到了一个灾难性的错误。当 Amalgamated 公司开始调查错误原因时,你被指责没有做代码检查,这些检查可以发现递交时问题所在。你反驳:城代码检查并不在所要求得的处理中。那么在这场争论中法律问题和伦理问题的焦点是什么?软件工程理论与实践1第第 1 章章 为什么进行软件工程为什么进行软件工程?在本章,我们来看一下:软件工程意味着什么软件工程的发展“好软件”意味着什么一个系

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号