软件工程实用教程(2版)-5章-习题与参考答案-2012-5-28
- 格式:doc
- 大小:579.50 KB
- 文档页数:4
《软件工程实用教程》第2、3、4、5章习题与参考答案第2章软件生存周期及开发模型1.简述什么是软件生存周期?根据国家标准《计算机软件开发规范》,软件生存周期主要包括哪几个阶段?答案要点:软件生存周期是指软件产品从功能确定、设计、开发成功、投入使用,并在使用中不断修改、完善,直至被新的软件所替代,而停止该软件使用的全过程。
国家标准GB8566-1988《计算机软件开发规范》将软件生命周期划分为几个阶段:可行性研究、项目计划、需求分析、总体设计、详细设计、编码实现(包括单元测试)、集成测试、确认测试、系统运行和维护。
这几个阶段又可以归纳为3个大的阶段,即软件定义阶段,软件开发阶段和软件运行维护阶段。
2.瀑布模型有哪些特点?对于里程碑,你有哪些认识?答案要点:瀑布模型是一种基于里程碑的阶段过程模型,它所提供的里程碑式的工作流程,为软件项目按规程管理提供了便利。
例如,按阶段制定项目计划,分阶段进行成本核算,进行阶段性的评审等。
这为提高软件产品质量提供了有效保证。
瀑布模型的特点:•阶段性:前一阶段工作完成以后,后一阶段工作才能开始,前一阶段的输出文档是后一阶段的输入文档。
•阶段评审:在每一阶段工作完成后都要进行评审,以便尽早发现问题,避免后期的返工,如果评审不合格,则不开始下一阶段的工作。
•文档管理:在每阶段都规定了要完成的文档,没有完成文档,就认为没有完成该阶段的任务。
3.试说明原型模型的两种实现方案各有什么特点?各适用于什么情况?答案要点:原型模型在软件分析、设计阶段的应用,用来解决用户对软件系统在需求分析上的模糊认识。
将模拟的手段引入需求分析的初期阶段,通过建立原型缩短用户与分析人员之间的距离。
快速原型方法具有以下一些特点。
•快速原型是用来获取用户需求的,或是用来试探某种设计是否有效。
一旦需求或设计确定下来,原型就将被抛弃。
因此快速原型要求快速构建、容易修改,以节约原型创建成本,加速开发速度。
快速原型往往采用软件生成工具来创建,例如,4GL语言。
软件工程第二版习题答案软件工程第二版习题答案修改浏览权限 | 删除第一章1.什么是软件危机?为什么会产生软件危机?答:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。
(1).软件维护费用急剧上升,直接威胁计算机应用的夸大。
(2).软件生产技术进步缓慢2. 什么是软件生产工程化?工程化生产方法与早期的程序设计方法主要差别在哪里?答:结构化程序设计地出现,使许多产业界认识认识到必须把软件生产从个人化方式改变为工程化。
采用工程的概念、原理、技术和方法开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程,同时这也是工程化生产方法。
3. 分别说明(1)软件开发方法与开发工具;(2)软件技术与软件管理的相互关系。
答:(1)工具和方法,是软件开发技术的两大支柱,它们密切相关。
当一种方法提出来并证明有效后,往往随之研制出相应的工具,来帮助实现和推行这种方法。
新方法在推行初期,总有人不愿接受和采用。
若将新方法融合于工具之中,使人们通过使用工具来了解新方法,就能更快促进新方法的推广。
(2)在工业生产中,即使有先进的技术和设备,管理不善的企业也不能获得良好的效益。
软件在生产中不能按质按时完成计划,管理混乱往往是其中的重要原因。
所以对于一个理想的软件工程环境,应该同时具备技术和管理两个方面。
4.试从你的亲身实践,谈谈软件工具在软件开发中的作用。
答:用C++开发一个软件,是校园一卡通的模块。
首先,要在编辑程序支持下在计算机中输入源程序。
然后编译程序,把源程序翻译成目标程序。
如果发现错误,就重新调入编辑程序对源程序进行修改。
编译通过后,再调用连接程序吧所有通过了编译目标程序连同与之有关的程序连接起来,构成一个能在计算机上运行的可执行软件。
编译程序,编辑程序,连接程序以及支持他们的计算机操作系统,都属于软件工具。
离开这些工具,软件开发就是去了支持,变得十分困难和低效,甚至不能运行。
结构化需求分析需求分析位于软件开发的前期,它的基本任务是准确定义未来系统的目标,确定为了满足用户的需要系统必须“做什么”。
在需求分析过程中,软件分析人员通过研究用户在软件问题上的需求意愿,分析出软件系统的功能、性能、数据等诸方面应该达到的目标,从而获得有关软件的需求规格定义。
本章主要介绍需求分析的任务、需求获取的过程和方法,并重点介绍结构化分析方法,以使读者掌握结构化需求分析的方法与技术。
本章学习目标:1.掌握需求分析的基本概念2.明确需求分析应遵循的原则3.掌握如何使用需求获取技术来进行数据采集4.掌握结构化分析的思想与过程5.掌握数据流建模技术3.1 需求工程概述软件工程所要解决的问题往往十分复杂,尤其是当建立一个全新的软件系统时,了解问题的本质是一个非常困难的过程。
一般情况是开发软件的技术人员精通计算机技术,但并不熟悉用户的业务领域;而用户清楚自己的业务,却又不太懂计算机技术。
对同一个问题,技术人员和用户之间可能存在认识上的差异。
因此,在着手设计软件之前,需要由既精通计算机技术,又熟悉用户应用领域的系统分析人员,对软件问题进行细致的需求分析。
在规定软件需求时,软件人员与用户同样起着至关重要的作用。
用户必须对软件功能和性能提出初步要求,并澄清一些模糊概念。
而软件人员则要认真了解用户的要求,细致地进行调查分析,把用户“需要”什么软件认识清楚,最终转换成一个完全的、准确的、清楚的软件逻辑模型,并写出软件的需求规格说明,准确地表达用户的需求。
3.1.1 软件需求IEEE软件工程标准词汇表(1997年)中将需求定义为:①用户解决问题或达到目标所需的条件或能力;②系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力。
其中①是从用户的角度定义的,②是从软件系统的角度定义的。
虽然目前对什么是软件需求的定义有不同的看法,但我们认为软件需求是指软件系统必须满足的所有功能、性质和限25。
软件工程课后习题参考答案软件工程课后习题参考答案1. 第一章规约与软件工程概述1.1 规约的定义规约是软件开发过程中明确要求的描述,包含了对软件需求、设计、实现、测试、部署和维护等各个阶段的要求和约束。
1.2 软件工程的概述软件工程是一门涉及对软件的开发、运行和维护的学科。
它通过应用工程原则和方法,以系统化、规范化、可靠化、经济化和高质量的方式来开发和维护软件。
2. 第二章软件需求规约2.1 软件需求规约的作用软件需求规约是对软件系统所需功能和性能的具体描述和说明,是软件开发的基础和依据。
它指导着开发团队的工作,确保软件的功能和性能符合用户的需求。
2.2 软件需求规约的要素软件需求规约包括功能需求、非功能需求和约束条件。
功能需求描述了软件系统应该具备的功能,非功能需求描述了软件系统的性能要求和质量特性,约束条件描述了软件系统所受限制的条件。
3. 第三章软件设计规约3.1 软件设计规约的目标软件设计规约是对软件系统进行结构化和模块化设计的过程,其目标是确保软件系统具备可靠性、可维护性、可扩展性和可重用性。
3.2 软件设计规约的方法软件设计规约采用面向对象设计、结构化设计和模块化设计等方法。
面向对象设计强调将问题领域的概念和对象转化为软件系统的类和对象,结构化设计强调将系统分解为模块,模块化设计强调模块间的接口和通信。
4. 第四章软件实现规约4.1 软件实现规约的目的软件实现规约是指将软件设计阶段得到的设计规约转化为计算机可执行的程序代码,其目的是确保软件系统的正确性、可靠性、可维护性和可测试性。
4.2 软件实现规约的技术软件实现规约采用编程语言、软件开发工具和软件开发环境等技术。
编程语言提供了描述算法和数据结构的语法和语义,软件开发工具提供了代码编辑、编译、调试和测试等功能,软件开发环境提供了开发的整体支持。
5. 第五章软件测试规约5.1 软件测试规约的目的软件测试规约是对软件系统进行功能、性能和质量等方面的验证和检测,其目的是找出软件系统的错误和缺陷,并修复和改进。
第1章习题部分答案1. 操作系统的发展分为那几个阶段?解:操作系统的发展经历了三个阶段:操作系统的酝酿阶段、操作系统的形成阶段、操作系统的理论化和标准化阶段。
2. 计算机软件技术开发系统包括那几个阶段?解:计算机软件开发系统的发展经历了四个阶段:机器语言阶段、汇编语言阶段、高级语言阶段、面向对象语言和可视化语言阶段。
3. 计算机软件技术的主要范畴是什么?解:计算机软件技术的主要范畴包括软件工程技术、程序设计技术、软件工具环境技术、系统软件技术、数据库技术、实时软件技术、网络软件技术、与实际工作相关的软件技术等八个领域的内容。
4. 从软件技术的发展现状来看有哪些值得我们注意的问题?解:从软件技术的发展现状来看有以下几个值得我们注意的问题:1)软件危机2)软件技术标准,软件版权和软件价值评估3)软件技术的基础研究。
1第2章习题部分答案1. 什么是软件危机?软件危机的表现有哪些?解:软件开发技术的进步为能满足发展的要求,在软件开发中遇到的问题找不到解决的方法,问题积累起来形成了尖锐的矛盾,导致了软件危机。
2. 软件危机产生的原因是什么?解:造成软件危机的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的。
1)软件规模越来越大,结构越来越复杂。
2)软件开发管理困难而复杂。
3)软件开发费用不断增加。
4)软件开发技术落后。
5)生产方式落后。
6)开发工具落后,生产率提高缓慢。
3. 常见的软件过程模型有哪些?解:常见的软件过程模型有瀑布模型、增量模型、演化过程模型、敏捷开发4. 如何对软件质量进行评价?解:软件质量的评价主要围绕可维护性、可靠性、可理解性和效率这几个方面进行。
2第3章习题部分答案1. 软件可行性研究的目的是什么?软件可行性研究的任务又是什么?解:软件可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。
可行性研究的任务首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。
第一章1.1什么是计算机软件?软件的特点是什么?计算机软件是指计算机系统中的程序及其文档软件的特点:●软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。
●软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大。
●软件的使用没有硬件那样的机械磨损和老化问题。
1.2简述软件的分类,并举例说明1.系统软件系统软件居于计算机系统中最接近硬件的一层,其他软件一般都通过系统软件发挥作用。
例如:编译软件、操作系统。
2.支撑软件支撑软件是支撑软件的开发和维护的软件。
例如:数据库管理系统、网络软件、软件工具、软件开发环境。
3.应用软件应用软件是特定应用领域专用的软件。
例如:工程/科学计算机软件、嵌入式软件、产品线软件、Web应用软件、人工智能软件。
1.3简述软件语言的分类,并举例说明。
1.需求定义语言是用于书写软件需求定义的语言。
例如:PSL/PSA。
2.功能性语言是用于书写软件功能规约的语言,通常又称为功能规约语言。
例如:广谱语言、Z 语言。
3.设计性语言是用于书写软件设计规约的语言。
例如:PDL。
4.实现性语言也称为程序设计语言,是用于书写计算机程序的语言。
例如:C、java、PROLOG、FORTRAN、COBOL、Modula。
5.文档语言是用于书写软件文档的语言。
通常用自然语言或半形式化语言书写。
1.4什么是软件工程?软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。
软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。
1.5简述软件工程的基本原则。
软件工程原则包括围绕工程设计、工程支持和工程管理所提出的以下4条基本原则。
1.选取适宜的开发模型必须认识需求定义的易变性,采用适宜的开发模型,保证软件产品满足用户的要求。
2.采用合适的设计方法合适的设计方法有助于这些特征的实现,以达到软件工程的目标。
3.提供高质量的工程支撑软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。
1练习题1)软件的特点有哪些?1.软件是一种逻辑实体,具有抽象性。
硬件是有形的设备,而软件不像硬件那样具有明显的可见性。
人们可以把软件记录在介质上,但是却无法直观地观察到它的形态,而必须通过在计算机上实际地运行才能了解它的功能、性能及其他特性。
2.软件的生产与硬件的制造不同。
它更多地渗透了人类的智能活动,是人类智力劳动的产物。
软件是被开发或设计的,而不是传统意义上被制造的。
软件成本集中于开发上,这意味着软件项目不能像制造项目那样管理。
3.软件在运行使用过程中,不会磨损。
在软件的运行和使用期间,它不会产生像硬件那样的磨损和老化现象,然而却存在着缺陷维护和技术更新的问题。
软件不会磨损,但是它会退化,而软件的退化是由于修改。
因此,软件维护比硬件维护要复杂得多。
4.软件的开发至今尚未完全摆脱手工艺的开发方式。
在硬件世界,构件复用是工程过程的自然的一部分,而在软件世界,它是刚刚开始起步的事物。
虽然软件产业正在向基于构件的组装前进,但大多数软件仍是定制的。
5.软件的开发和运行必须依附于特定的计算机系统环境。
它不像有些设备一样,能够独立地工作,而是受到了物理硬件、网络配置、支撑软件等因素的制约。
由此引发了软件的可移植性问题。
2)软件危机是如何产生的?有哪些表现?原因:在20世纪60年代中期,随着软件规模的扩大,复杂性的增加,功能的增强,使得高质量的软件开发变得越来越困难。
表现:1.开发出来的软件产品不能满足用户的需求,即产品的功能或特性与需求不符。
这主要是由于开发人员与用户之间不能充分有效的交流造成的,使得开发人员对用户需求的理解存在着差异;2.相比越来越廉价的硬件,软件代价过高;3.软件质量难以得到保证,且难以发挥硬件潜能。
开发团队缺少完善的软件质量评审体系以及科学的软件测试规程,使得最终的软件产品存在着诸多缺陷;4.难以准确估计软件开发、维护的费用以及开发周期。
往往软件产品不能在预算范围之内,按照计划完成开发。
《软件工程实用教程》习题与参考答案第5章面向对象的需求分析
1.简述对象与类之间的联系与区别。
答案要点:
对象是指问题域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用,它是由数据(属性)及其上的操作(也称为服务、方法或行为)组成的封装体。
类是指具有相同属性和操作的对象的集合,它代表一种抽象,作为具有类似特性与共同行为的对象的模板,可用来产生对象。
类是具有相同属性和行为的一组相似对象的抽象,类在现实世界中并不能真正存在。
类是建立对象时使用的“样板”,按照这个样板所建立起来的一个个具体的对象,就是类的实例。
对象是类的属性数据具体化的结果,因而可称为是类的实例。
3.与传统结构化方法比较,面向对象方法具有哪些方面的优越性?
答案要点:
面向对象方法的优越性:1)与人们习惯的思维方法一致2)可使软件系统结构更加稳定3)软件具有更好的可复用性4)软件更加便于维护与扩充
4.试描述面向对象的分析建模过程。
答案要点:
面向对象的分析建模过:用例模型、对象(概念)模型、设计模型、配置模型
、实现模型和测试模型等。
使用用例驱动的开发方法是通过首先建立使用用例模型,再以用例模型为核心构造一系列的模型。
6.题,答案要点:
1. 根据用户的职能建立的用例图。
2.通过对系统需求中的形容词和动词进行分析,确定了每个对象的属性和服务,把每个对象的属性和服务填到相应的类符号中,构成了类图的特征层。
见图3所示。
3. 动态模型
(1)添加借阅者
“添加借阅者”的过程是,图书管理员选择菜单项“添加借阅者”,对话框弹出,图书管理员输入借阅者信息,然后提交,系统根据借阅者的ID号查询数据库,看数据库中是否
存在该借阅者,若不存在,创建借阅者账户,并存储借阅者信息。
“添加借阅者”的顺序图如上所示。
图书管理员选择菜单项“添加借阅者”,边界类Mainwindow的方法addborrower()被调用,然后通过调用边界类BorrowerDialog的方法createDialog()创建对话框。
图书管理员输入借阅者信息后,提交信息,类BorrowerDialog的方法addBorrower()被调用,通过调用实体类Borrower的方法findBorrower(id:string)来确定该借阅者的账户是否已经存在,若不存在,则调用类Borrower的方法newBorrowe()为借阅者创建账户,并调用Borrower的方法store()存储该借阅者的信息。
(2)添加书种
图书管理员选择菜单项“添加书种”,对话框弹出,图书管理员输入书刊名、ISBN/ISSN、作者等信息,提交,系统根据ISBN/ISSN号查询书种信息是否已存在,若不存在,创建书种,并存储书种信息。
“添加书种”的时序图如上所示。
图书管理员选择菜单项“添加书种”,类MainWindow 的方法addTitle()被调用,然后通过调用类TitleDialog的方法creatDialog()创建对话框,图书管理员输入书刊信息后,提交,类TitleDialog的方法addTitle()被调用。
通过调用类Title的方法findTitle()来确定该书刊种类是否存在,若不存在,则调用类Title的方法newTitle()创建Title对象,并调用类Book的方法newBook()创建物理书刊对象,以及调用方法store()将Book对象存储到数据库中,然后调用类Title的方法addBook()将物理书刊添加到Title中,最后将Title对象存储到数据库中;反之,若书刊种类存在,则显示提示信息,终止操作。