软件工程--课后答案
软件工程---课后习题答案.doc
软件工程---课后习题答案.doc第一章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.采用合适的设计方法合适的设计方法有助于这些特征的实现,以达到软件工程的目标。
软件工程课后习题参考答案
软件工程课后习题参考答案软件工程课后习题参考答案1. 第一章规约与软件工程概述1.1 规约的定义规约是软件开发过程中明确要求的描述,包含了对软件需求、设计、实现、测试、部署和维护等各个阶段的要求和约束。
1.2 软件工程的概述软件工程是一门涉及对软件的开发、运行和维护的学科。
它通过应用工程原则和方法,以系统化、规范化、可靠化、经济化和高质量的方式来开发和维护软件。
2. 第二章软件需求规约2.1 软件需求规约的作用软件需求规约是对软件系统所需功能和性能的具体描述和说明,是软件开发的基础和依据。
它指导着开发团队的工作,确保软件的功能和性能符合用户的需求。
2.2 软件需求规约的要素软件需求规约包括功能需求、非功能需求和约束条件。
功能需求描述了软件系统应该具备的功能,非功能需求描述了软件系统的性能要求和质量特性,约束条件描述了软件系统所受限制的条件。
3. 第三章软件设计规约3.1 软件设计规约的目标软件设计规约是对软件系统进行结构化和模块化设计的过程,其目标是确保软件系统具备可靠性、可维护性、可扩展性和可重用性。
3.2 软件设计规约的方法软件设计规约采用面向对象设计、结构化设计和模块化设计等方法。
面向对象设计强调将问题领域的概念和对象转化为软件系统的类和对象,结构化设计强调将系统分解为模块,模块化设计强调模块间的接口和通信。
4. 第四章软件实现规约4.1 软件实现规约的目的软件实现规约是指将软件设计阶段得到的设计规约转化为计算机可执行的程序代码,其目的是确保软件系统的正确性、可靠性、可维护性和可测试性。
4.2 软件实现规约的技术软件实现规约采用编程语言、软件开发工具和软件开发环境等技术。
编程语言提供了描述算法和数据结构的语法和语义,软件开发工具提供了代码编辑、编译、调试和测试等功能,软件开发环境提供了开发的整体支持。
5. 第五章软件测试规约5.1 软件测试规约的目的软件测试规约是对软件系统进行功能、性能和质量等方面的验证和检测,其目的是找出软件系统的错误和缺陷,并修复和改进。
《软件工程》课后习题答案
1、可行性研究的目的是用最小的代价,在尽可能短的时间,确定该项目是否能够开发。
2、程序设计时代的生产方式是个体手工,程序系统时代的生产方式是作坊式小团体,软件工程时代的生产方式是工程化。
3、喷泉模型是一种以需求分析为动力,以对象为驱动的模型。
4、需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是功能需求。
5、可行性研究需要从以下三个方面分析研究每种解决方法的可行性:技术可行性、经济可行性、社会可行性。
6、可行性研究的目的不是去开发一个软件项目,而是研究这个软件项目是否值得开发,其中的问题能否解决。
7、判定树较判定表直观易读,判定表进行逻辑验证较严格,能把所有的可能性全部都考虑到。
可将两种工具结合起来,先用判定表做底稿,在此基础上产生判定树。
8、软件工具的发展特点是软件工具有单一工具向多个工具集成化方向发展。
重视用户界面的设计,不断的采用新理论和新技术。
软件工具的商品化推动了软件产业的发展,而软件产业的发展,又增加了对软件工具的需求,促进了软件工具的商品化进程。
9、环境集成主要有数据集成、界面集成、控制集成、平台集成、过程集成。
10、可行性研究实质上是进行一项简化、压缩了的需求分析、设计过程。
11、结构化方法有结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。
12、投资回收期就是累计的经济效益等于最初的项目投资所需的时间。
13、详细描述处理过程常用三种描述工具:图形、表格和语言。
14、数据流图中,每个加工至少有一个输入流和一个输出流。
15、结构化设计以数据流为基础映射成软件结构。
16、当数据流图中某个加工的一组动作存在着多个条件复杂组合的判断时,使用判定表或判定树较好。
17、由于运用原型的目的和方式不同,在使用原型时也采取不同的策略,有抛弃策略和附加策略。
18、有两类维护技术:在开发阶段是用来减少错误、提高软件可维护性面向维护的技术,在维护阶段用来提高维护的效率和质量的维护支援技术。
软件工程第四版齐治昌课后答案
1、Chapter 11.1 What is Software Engineering? Software engineering is the application of engineering principles and techniques to the development, operation, and maintenance of software systems. It is a discipline that involves the application of scientific and mathematical principles to the design, development, and maintenance of software products. Software engineering focuses on the development of efficient, reliable, and maintainable software systems thatmeet the needs of their users.1.2 What is the Software Life Cycle? The software life cycle is the set of stages that a software product goes through from its conception to its retirement. It typically consists of the following stages: Requirements Analysis, Design, Implementation, Testing, Deployment, Maintenance, and Retirement. Requirements Analysis involves gathering information from stakeholders and users to determine the needs of the software. Design involves creating a plan for the software thatmeets the requirements identified during Requirements Analysis. Implementation involves coding the software according to the plan created during Design. Testing involves verifying that the software works as expected. Deployment involves making the software available to its users. Maintenance involves making changes to the software to fix any bugs or to add new features. Retirement involves removing the software from use and archiving any important data or documents associated with it.1.3 What is the Difference Between Software Engineering and Computer Science?Software engineering and computer science are related disciplines, but they are not the same. Software engineering focuses on the development of software products, while computer science focuses on the study of computers and computing. Software engineering involves the design, development, and maintenance of software systems, while computer science involves the study of algorithms, data structures, and programming languages. Softwareengineering focuses on the practical application of engineering principles and techniques to the development of software products, while computer science focuses on the theoretical aspects of computing.2、Chapter 22.1 What is the System Development Life Cycle?The system development life cycle (SDLC) is a process used by software engineers to develop software products. The SDLC consists of six stages: planning, analysis, design, implementation, testing, andmaintenance. During the planning stage, the software engineer collects information from stakeholders and users to determine the scope and requirements of the software product. During the analysis stage, the software engineer analyzes the gathered information to determine the user’s needs and the software’s requirements. During the design stage, the software engineer creates a plan for the software product. During the implementation stage, the software engineer codes the software according to the plan created during the design stage. During thetesting stage, the software engineer verifies that the software works as expected. During the maintenance stage, the software engineer makes changes to the software to fix any bugs or to add new features.2.2 What is the Waterfall Model?The waterfall model is a software development process that follows a linear approach. It is a sequential process where each stage must be completed before the next stage can begin. The stages of the waterfall model are: requirements analysis, design,implementation, testing, deployment, and maintenance. During the requirements analysis stage, the software engineer collects information from stakeholders and users to determine the scope and requirements of the software product. During the design stage, the software engineer creates a plan for the software product. During the implementation stage, the software engineer codes the software according to the plan created during the design stage. During the testing stage, the software engineer verifies that the software works as expected. During thedeployment stage, the software engineer makes the software available to its users. During the maintenance stage, the software engineer makes changes to the software to fix any bugs or to add new features.2.3 What is the Spiral Model?The spiral model is a software development process that follows a cyclical approach. It is an iterative process where each stage is repeated multiple times until the desired result is achieved. The stages of the spiral model are: requirements analysis, design,implementation, testing, deployment, and maintenance. During the requirements analysis stage, the software engineer collects information from stakeholders and users to determine the scope and requirements of the software product. During the design stage, the software engineer creates a plan for the software product. During the implementation stage, the software engineer codes the software according to the plan created during the design stage. During the testing stage, the software engineer verifies that the software works as expected. During the软件工程第四版齐治昌课后答案deployment stage, the software engineer makes the software available to its users. During the maintenance stage, the software engineer makes changes to the software to fix any bugs or to add new features. The spiral model allows the software engineer to quickly make changes and adjustments to the software product as needed.。
软件工程课后题答案
第一章1 简述软件的发展过程。
共经历了四个阶段;第一阶段:(20世纪50年代初期到60年代初期的十余年)计算机系统开发的初期。
第二阶段:(20世纪60年代中期到70年代中期的十余年)软件产品和“软件作坊”的概念开始出现。
软件开发人员不再像早期阶段那样只因个人工作需要而开发,而是为了用户更好地使用计算机。
第三阶段:(20世纪70年代中期到80年代末期)分布式系统嵌入“智能”;硬件价格下降,软件价格急剧上升,导致了软件危机的加剧。
第四阶段:(20世纪80年代末期开始)强大的桌面系统和计算机网络迅速发展。
2 简述软件的定义和特点。
定义:软件是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。
特点:(1)是一种逻辑实体,具有抽象性;(2)软件的生产不存在明显的制造过程;(3)在软件的运行和使用的过程中,不会存在像硬件那样的机械磨损及老化问题;(4)由于对计算机系统的依赖性,对软件的通用性造成了一定的影响;(5)软件的开发方式还没有完全脱离手工开发方式,还不能完全采用组装的方式进行软件开发;(6)作为提高工作效率的逻辑产品,本身具有复杂性;(7)成本相当昂贵;(8)相当多的软件工作设计社会因素。
3 软件有哪些种类1. 按功能特征进行划分(1)系统软件。
(2)支撑软件。
(3)应用软件2. 按规模大小进行划分微型、小型、中型、大型、甚大型、、极大型4 什么是软件危机?答:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
5 什么是软件工程?有哪些本质特性?怎样用软件工程消除软件危机?答:是指导计算机软件开发和维护的一门工程学科。
特性略。
技术措施和管理措施消除软件危机。
6 软件工程的三要素;方法、工具和过程。
7. 结合自己的亲身经历,谈谈软件工具在软件开发过程中的作用。
使软件开发更加模式化,工程化,从而提高软件开发的效率和封装性。
8. CASE 的研究和CASE 产品的开发是近年来软件工程领域的特点之一。
软件工程课后习题(含答案)
第一章练习题一、填空题1、软件工程三要素是:方法、工具、过程。
2、软件开发方法是指软件开发过程中所应遵循的方法和步骤。
二、名词(术语)解释:1、可靠性---是指在给定的时间间隔内,程序成功运行的概率。
可靠性是衡量软件质量的一个重要目标。
2、可理解性---指系统具有清晰的结构,能直接反映问题的需求。
可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植和重用。
三、问答题1、面向对象方法的优点是什么?答:(1)将现实世界问题向面向对象解空间直接映射,实现对现实世界的直接模拟。
(2)以数据为中心,而不是基于对功能的分解,使得软件结构相对稳定,软件的重用性、可靠性、可维护等特性都较好。
2、可视化开发方法的优点有哪些?答:(1)简化了图形用户界面的设计和编码工作,将开发的注意力主要集中在程序的执行逻辑和工作流程上。
(2)软件开发简单,易学、易上手。
(3)专业或非专业人员都能参与软件开发活动。
第二章练习题一、填空题:1、软件工程过程是:为获得软件产品,在软件工具支持下由软件人员完成的一系列软件工程活动。
2、一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程经历的生存过程称为软件生存期或叫生命期。
3、软件生命周期的阶段划分为3个时期是:定义时期、开发时期、维护时期。
4、软件工程标准的5个层次是:国际标准、国家标准、行业标准、企业规范、项目规范。
二、简答题:1、瀑布模型的优点有哪些?答:1、强迫开发人员采用规范的技术方法;2、严格地规定了每个阶段必须提交的文档;3、每个阶段结束前必须正式进行严格的技术审查和管理复审。
2、瀑布模型的缺点是什么?答:1、在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。
2、在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。
3、作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活性,对开发过程中很难发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护。
软件工程课后习题参考答案
软件工程课后习题参考答案软件工程课后习题参考答案1.简答题1.1 什么是软件工程?软件工程是一门研究和应用如何以系统化、规范化、可量化的方式开发和维护软件的学科,涉及到软件的设计、构建、测试、部署和维护等全生命周期的过程。
1.2 软件工程的目标是什么?软件工程的目标是提高软件开发过程的效率和质量,确保软件项目按时、按需求交付,并且能够满足用户的期望。
1.3 软件生命周期有哪些阶段?常见的软件生命周期包括需求分析、系统设计、详细设计、编码、测试、部署和维护等阶段。
1.4 什么是软件需求?软件需求是指对于软件系统所需满足的问题或需求的描述,包括功能需求、性能需求、接口需求等。
1.5 软件开发过程有哪些模型?常见的软件开发过程模型包括瀑布模型、迭代模型、螺旋模型、敏捷开发等。
2.客观题2.1 软件测试的目的是什么?a) 发现软件中的错误和缺陷b) 验证软件是否符合需求和规格c) 提高软件的可靠性和质量d) 以上皆是答案:d) 以上皆是2.2 瀑布模型的特点是什么?a) 瀑布模型是一种线性顺序的软件开发过程模型b) 各个开发阶段是相互独立的c) 开发过程按照需求分析、设计、编码、测试等顺序进行d) 以上皆是答案:d) 以上皆是2.3 敏捷开发的原则是什么?a) 个体和交互胜过流程和工具b) 可工作的软件胜过详尽的文档c) 客户合作胜过合同谈判d) 响应变化胜过遵循计划e) 以上皆是答案:e) 以上皆是3.计算题3.1 请计算以下代码的覆盖率:(假设代码行数为100行,已执行代码行数为80行)覆盖率 = 已执行代码行数 / 代码行数 100% = 80 / 100 100% = 80%3.2 请计算以下缺陷密度的值:(假设代码行数为1000行,代码中的缺陷数为10个)缺陷密度 = 缺陷数 / 代码行数 1000 = 10 / 1000 1000 = 103.3 请计算以下代码的复杂度:(假设代码中包含的判断语句有20个,循环语句有5个)复杂度 = 判断语句数 2 + 循环语句数 3 = 20 2 + 5 3 = 40 + 15 = 554.附件本文档涉及附件:无5.法律名词及注释本文涉及的法律名词及注释:无。
软件工程课后参考答案完整版
软件工程课后参考答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】第一章课后参考答案1.什么是软件危机它们有哪些典型表现为什么会出现软件危机“软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。
这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。
它们有以下表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。
出现软件危机的主要原因(1)与软件本身的特点有关(2)与软件开发和维护过程中使用的方法不正确有关2.假设自己是一家软件公司的总工程师,当把图给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”时在引入变动,当然付出的代价更高。
一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。
3.什么是软件工程它有哪些本质特征怎么用软件工程消除软件危机软件工程是指导知道计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
软件工程课后题答案大全(详细)
软件工程习题解答第一章概述1.软件产品的特性是什么?a.软件产品是一种逻辑产品。
b.软件产品的生产主是研制,软件产品的成本主要体现在软件的开发和研制上,软件开发完成后,复制就产生了大量软件产品。
c.软件产品不会用坏,不存在磨损、消耗问题。
d.软件产品的生产主要是脑力劳动,还未完全摆脱手工开发方式,而且碰分是"定做"的。
e.软件费用不断增加,成本相当昂贵。
2.软件产品有几个阶段?各有何特征?阶段 A.程序设计时代(1946-1956) B.程序系统时代(1956-1968) C.软件工程时代(1968-今)生产方式个体手工劳动作坊式小集团合作生产工程化的生产工具机器语言、汇编高级语言数据库、开发工具、开发环境、网络、分布式、面向对象技术开发方法追求编和技巧,追求程序运行效率个人技巧,开始提出结构化方法硬件特征价格贵、存储容量小、运行可靠性差速度、容量、工作可靠性有明显提高,价格降低,销售有爆炸性增长向超高速、大容量、微型化以及网络化方软件特征只有程序、程序设计概念,不重视程序设计方法程序员数量猛增,已意识到软件开发的重要性,开发技术没有新的突破,大量软件开发的需求已提出,开发人员的素质和工程兵的开发技术不适应规模大、结构复杂的软件开发,产生了尖锐矛盾,导致软件危机的产生开发技术有很大进步,但未能获得突破性进展,软件价格不断上升,没有完全摆脱软件危机3.什么是软件危机?其产生的原因是什么?软件危机:软件发展第二阶段的末期,由于计算机硬件技术的进步。
一些复杂的、大型的软件开发项目提出来了,但,软件开发技术的进步一直未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。
主要表现在以下几个方面:a.经费预算经常突破,完成时间一再拖延。
b.开发的软件不通满足用户要求。
c.开发的软件可维护性差。
d. 开发的软件可靠性差。
软件危机产生的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的:a.软件的规模越来越大,结构越来越复杂。
软件工程课后习题答案
习题答案习题一答案一、选择题1. 软件的主要特性是(A B C)。
A) 无形 B) 高成本C) 包括程序和文档D) 可独立构成计算机系统2. 软件工程三要素是(C D)。
A) 技术、方法和工具B) 方法、工具和过程C) 方法、对象和类D) 过程、模型、方法3. 包含风险分析的软件工程模型是(A)。
A) 螺旋模型 B) 瀑布模型C) 增量模型 D) 喷泉模型4. 软件工程的主要目标是(C)。
A) 软件需求B) 软件设计C) 风险分析D) 软件实现5. 下列属于面向对象开发方法的是(A B C D)。
A) Booch B) UML C) Coad D) OMT6. 软件危机的主要表现是(B D)。
A) 软件成本太高B) 软件产品的质量低劣C) 软件开发人员明显不足D) 软件生产率低下7. 软件开发方法的主要工作模型有(A B C)A) 螺旋模型B) 循环模型C) 瀑布模型D) 专家模型8. 软件工程的目标有(A B C)。
A) 易于维护B) 低的开发成本C) 高性能D) 短的开发期9. 软件工程学的目的和意义是( )。
A) 应用科学的方法和工程化的规范管理来指导软件开发B) 克服软件危机C) 作好软件开发的培训工作D) 以较低的成本开发出高质量的软件二、判断题1. 软件就是程序,编写软件就是编写程序。
(×)2. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。
(×)3. 结构化方法的工作模型是使用螺旋模型进行开发。
(×)4. 结构化方法和JSP方法都不适合于大型软件的开发。
(√)5. 原型化开发方法包括生成原型和实现原型两个步骤。
(×)6. 面向对象的开发方法包括面向对象的分析、面向对象的设计和面向对象的程序设计。
( √)7. 软件危机的主要表现是软件的需求量迅速增加,软件价格上升。
(×)8. 软件工具的作用是为了延长软件产品的寿命。
(×)9. 软件工程过程应该以软件设计为中心,关键是编写程序。
软件工程课后题答案
软件工程课后题答案1. 简答题1.1 软件过程模型软件过程模型是一种描述软件开发过程中活动、任务和工作产品之间关系的抽象模型。
常见的软件过程模型包括瀑布模型、迭代模型、增量模型和敏捷开发模型等。
每种模型都有其适用的场景和特点。
1.2 软件需求软件需求是指用户对软件系统的功能、性能等方面的要求和约束。
需求分析是软件开发过程中非常重要的一步,它包括需求获取、需求分析、需求规格说明等活动。
需求分析的目标是理解用户需求,为软件开发提供指导。
1.3 需求规格说明需求规格说明是对软件需求进行详细描述和说明的文档。
它包括功能需求、性能需求、界面需求以及其他约束条件等。
需求规格说明的编写要求准确、清晰、可验证,并且要与用户和开发人员达成一致。
1.4 软件设计原则软件设计原则是指在软件设计过程中应该遵循的一些基本原则,以提高软件系统的可维护性、可扩展性和可重用性。
常见的软件设计原则包括单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则和迪米特法则等。
2.1 敏捷开发方法敏捷开发是一种迭代、逐步开发软件的方法。
它强调快速响应用户需求的变化,通过频繁发布可用的软件版本来获得反馈,并根据反馈进行调整。
敏捷开发方法更加灵活,适用于需求变化频繁的项目。
2.2 结构化程序设计结构化程序设计是一种通过模块化和流程控制来组织程序的方法。
它强调程序应该具有清晰的结构,模块之间的耦合度应该尽量低。
结构化程序设计可以提高程序的可读性和可维护性,减少错误引入的可能性。
2.3 UML建模UML是一种用于面向对象系统开发的建模语言。
它提供了一套丰富的图形符号和建模工具,用于描述系统的结构、行为和交互。
UML建模可以帮助开发人员清晰地表达设计意图,提高沟通效率,并且可以生成可执行代码。
2.4 软件测试技术软件测试是评估软件质量的过程,旨在发现软件中的缺陷和错误。
常见的软件测试技术包括黑盒测试和白盒测试。
黑盒测试关注软件功能是否符合需求,白盒测试则关注程序内部的逻辑结构和代码覆盖率。
软件工程课后习题参考答案
软件工程课后习题参考答案软件工程课后习题参考答案1·软件工程概述1·1 软件工程的定义和特点软件工程是一门研究和应用如何以系统化、规范化、可量化的方法开发和维护软件的学科。
其特点包括软件开发的目标性、可度量性、可管理性和可预测性。
1·2 软件生命周期模型常见的软件生命周期模型包括瀑布模型、迭代模型、螺旋模型和敏捷模型等。
每个生命周期模型都有其适用的场景和优缺点。
2·软件需求工程2·1 软件需求获取软件需求获取方法包括面谈、问卷调查、用户场景模拟等。
需求获取的目的是明确软件系统的功能、性能和约束条件。
2·2 软件需求分析与规格说明软件需求分析的目标是识别和定义系统的需求,包括功能需求、非功能需求和约束条件。
规格说明是将需求转化为精确、清晰和易于验证的文档。
3·软件设计3·1 结构化设计结构化设计将系统分解为模块,确定模块之间的接口和关系,实现模块化、高内聚、低耦合的设计原则。
3·2 面向对象设计面向对象设计将系统抽象为对象,定义对象的属性和方法,并确定对象之间的关系。
常用的面向对象设计方法有UML(统一建模语言)。
4·软件测试4·1 测试基本概念软件测试是通过运行软件来发现错误和缺陷的过程。
测试的基本概念包括测试用例、测试套件、测试目标和测试覆盖度等。
4·2 测试方法和技术常见的软件测试方法和技术有黑盒测试、白盒测试、灰盒测试、单元测试、集成测试和系统测试等。
每种方法和技术都有其适用的场景和优缺点。
5·软件维护与配置管理5·1 软件维护软件维护是指对已有的软件进行修改、优化、修复错误和适应环境变化的过程。
维护活动包括需求分析、设计、实现、测试和文档更新等。
5·2 软件配置管理软件配置管理是指在软件开发和维护过程中,对软件配置项进行识别、控制、追踪和审查,确保软件可以按需发布、升级和回溯。
软件工程课后习题参考答案
软件工程课后习题参考答案1.简述软件开发的本质答: 软件开发的本质就是实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。
P192.简述实施软件开发的基本途径。
答: 实施软件开发的基本途径是系统建模。
所谓系统建模,是指运用所掌握的知识,通过抽象,给出该系统的一个结构——系统模型。
P193.简述何谓模型以及软件开发中所涉及的模型。
答: 模型是一个抽象。
该抽象是在意图所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述。
软件开发中所涉及的模型可分为两大类,一类称为概念模型,描述了系统是什么;另一类统称为软件模型,描述了实现概念模型的软件解决方案。
4.简述软件开发所涉及的两大类技术。
答: 软件开发所涉及的两大类技术为: 一是求解软件的开发逻辑,二是求解软件的开发手段。
5、简述需求与需求规约的基本性质。
答:需求的基本性质:1) 必要的,该需求是用户所要求的。
2) 无歧义的,该需求只能用一种方式解释。
3) 可测的,该需求是可进行测试的。
4) 可跟踪的,该需求可从一个开发阶段跟踪到另一个阶段。
5) 可测量的,该需求是可测量的。
需求规约的基本性质:1) 重要性和稳定性程度: 按需求的重要性和稳定性,对需求进行分级。
2) 可修改的: 在不过多地影响其他需求的前提下,可以容易地修改一个单一需求。
3)完整的:没有被遗漏的需求。
4)一致的:不存在互斥的需求。
6、简述软件需求的分类答:软件需求可以分为两大类:一类是功能需求,一类是非公能需求,而非公能需求可分为性能需求,外部接口需求、功能需求7、举例说明功能需求和非功能需求之间的基本关系。
答:非功能需求可作用于一个或多个功能需求,例如非功能需求可作用于一个或多个功能需求其中,非功能需求1作用于功能需求1和功能需求3等;非功能需求2作用于功能需求2等。
P248、有哪几种常用的初始需求发现技术?答:有5种常用的需求发现技术:自悟、交谈、观察、小组会和提炼。
软件工程教程课后参考答案
软件工程教程课后参考答案第1章一、选择题(1)D (2)B (3)C (4)D (5)D (6)A (7)D二、简答题(1)什么是软件危机?软件危机表现在哪些方面?答:具体来说,软件危机出现的原因可以概括如下。
①忽视软件开发前期的需求分析。
②开发过程缺乏统一的、规范化的方法论指导。
③文档资料不齐全或不准确。
④忽视与用户之间、开发组成员之间的交流。
⑤忽视测试的重要性。
⑥不重视维护或由于上述原因造成维护工作的困难。
⑦从事软件开发的专业人员对这个产业的认识不充分,缺乏经验。
⑧没有完善的质量保证体系。
具体地说,软件危机的表现形式可以概括如下。
①软件开发费用和进度失控。
②软件系统实现的功能与实际需求不符。
③软件的可靠性差。
④软件难以维护。
⑤软件通常没有适当的文档资料。
⑥软件成本在计算机系统总成本中所占的比例居高不下,且逐年上升。
⑦软件生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
(2)简述软件和软件工程的定义以及软件工程的形成过程。
答:软件是计算机系统中与硬件相对应的另一部分,是一系列程序、数据及其相关的文档集合。
在这里,程序是按照特定顺序组织的计算机数据和指令的集合;数据是使程序能正常执行的数据结构;文档是是开发、使用和维护程序所需要的图文资料。
软件工程是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度,实现满足用户要求的软件产品的定义、开发、发布和维护的工程或进行研究的学科。
软件工程的发展经历了以下四个阶段。
① 20世纪70年代。
为了解决软件项目失败率高、错误率高以及软件维护任务重等问题,人们提出了软件生产工程化的思想,希望使软件生产走上正规化的道路,并努力克服软件危机。
人们发现将传统工程学的原理、技术和方法应用于软件开发,可以起到使软件生产规范化的作用。
② 20世纪80年代。
面向对象的方法与技术受到了广泛的重视,maltalk-80的出现标志着面向对象的程序设计进入了实用和成熟阶段。
软件工程--理论、方法与实践课后习题答案
B. 适用于客户需求难以清楚定义的情况
C. 最适合于大规模团队开发的项目
D. 很难产生有意义产品的一种冒险模型
7. 演进式软件过程模型(
)。(D)
A. 本质上是迭代的
B. 可以很容易适应需求的变化
C. 通常不会抛弃所产生的系统
D. 以上所有选项
8. 螺旋模型(
)。(C)
A. 在软件产品发布时结束
B. 比增量模型更加混乱
(4) 形式化方法模型 项目举例:某公司开发一个汽车防抱死刹车控制系统。 选用分析:由于该系统对安全性和可靠性要求极高,需要在系统运行之前进行相关性能的检 验,因此适合采用形式化方法开发该系统。 阶段说明:略。
(5) 基于组件的开发模型 项目举例:某公司开发企业管理 ERP 系统,包括销售、库存、生产、财务、物流、人力资 源等部分,在系统实施过程中不同的企业具有一定的需求差异。 选用分析:企业 ERP 系统具有组件化的结构,在不同企业实施时应该尽量重用已有的组件, 因此适合采用基于组件的开发模型开发该系统,在直接应用或者修改使用的基础上,最终进 行组件开发和系统集成。 阶段说明:略。
)准则。(E)
A. 从来不为个人获利而窃取数据
B. 从来不散布或出售项目中自己工作的信息
C. 从来不故意毁坏或修改别人的程序、文件或数据
D. 从来不侵犯个人、小组或组织的隐私
E. 以上所有选项
[练习题]
1.
软件与其他工程学科所产生的制品有什么根本区别?
答案要点: (1) 软件是人类思维和智能所延伸的产物,其数据、状态和逻辑关系的组合以及人类思维的 复杂性和不确定性导致它本身具有极高的复杂性; (2) 软件具有不可见性,它是抽象的,形式化和逻辑化的。 (3) 软件具有可变性,有用的软件需要不断地修改和扩展,但是频繁的修改可能导致软件的 退化;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章:1.1 简述软件的定义、软件的特点和软件危机的表现。
软件的定义:软件是由计算机程序、数据和文档组成的。
软件的特点:1)抽象性,2)软件生产无明显的制造过程,3)无磨损性,4)对计算机系统的依赖性,5)软件的手工开发方式,6)软件本身复杂性,7)软件的高成本软件危机的表现:1)软件开发周期大大超过规定日期,2)软件开发成本严重超标,3)软件质量难于保证。
1.2 什么是软件工程和软件工程化?软件工程:软件工程化:把软件工程理论应用到软件开发组织中,以改进软件产品开发的时间(T)、质量(Q)、成本(C)和服务(S)。
1.3简要说明软件工程三要素与质量关注点之间的关系。
软件工程的三要素:方法、工具和过程。
关系看P41.4如何构造软件过程?软件过程构造时首先应建立一个公共过程框架,其中定义了少量可用于所有项目的框架活动;再给出各个框架活动的任务集合,使得框架活动能够适合于项目的特点和项目组的需求;最后是保护性活动。
1.5什么是软件生存周期?软件生存周期分为哪几个阶段?各阶段的任务是什么?软件生存周期:是软件产品或软件系统从设计、投入使用到被淘汰的全过程。
软件生存周期:定义、开发、维护。
1)定义:包括问题定义、可行性研究和需求分析。
2)开发时期包括设计、编码和测试。
3)维护时期包括维护阶段。
1.6常用的软件工程方法和开发模型各有哪些?软件工程方法:生命周期法(又称传统方法或结构化方法)、面向对象方法和原型法。
软件开发模型:瀑布模型、快速原型模型、演化模型、面向对象模型、形式化方法模型。
1.7什么是软件工具、软件开发环境和软件工程环境?软件工具:是用来辅助软件开发、运行、维护、管理和支持等过程中活动的软件。
1.8软件工程的基本原理:1)按软件生存期分为阶段制定计划并认真实施。
2) 坚持进行阶段评审。
3)坚持严格的产品控制。
4)使用现代程序设计技术。
5)明确责任,使得工作结果能够得到清楚的审查。
6)人员应少而精。
7) 不断改进开发过程。
第二章:2.3软件文档可分为哪几类?各包括哪几类文档?软件文档可分3类。
为1)开发文档,2)管理文档,3)用户文档。
2.5软件质量的特性有哪些?各特性的含义是什么?软件质量的六大特性包括:功能性、可靠性、易使用性、效率、可维护性、可移植性。
功能性:是一组功能及其指定的性质有关的一组属性。
可靠性:是与在规定的一段时间和条件下,软件维持其性能水平的能力有关的一组属性。
易使用性:是一组规定或潜在的用户为使用软件所需做出的努力和对这样的使用所作的评价有关的一组属性。
效率:是与在规定的条件下,软件的性能水平与所使用资源量之间关系有关的一组属性。
可维护性:是与进行指定的修改所需的努力有关的一组属性。
可移植性:是与软件可从某一环境转移到另一环境的能力有关的一组属性。
2.6什么是软件质量保证?软件质量保证:是确保软件产品从诞生到消亡为止的所有阶段的质量活动,即为确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。
2.8 软件过程标准:为了能协调好开发项目的各个阶段和各个部分之间的联系和衔接问题,需要一系列的统一的约束和规定。
2.9 软件文档在产品的开发过程中起重要的作用:1)提高软件开发过程的能见度。
2)实现对软件开发的工程管理。
3)提高开发效率。
4)便于协调以后的软件开发、使用和维护工作。
2.11 ISO系列标准的主导思想:1)强调质量并非在产品检验中得到,而是形成于生产的全过程。
2)必须使影响产品质量的全部因素在生产全过程中始终处于受控状态。
3)企业具有持续提供符合要求产品的能力。
4)质量管理必须坚持进行质量改进。
2.12 软件过程工程化的实施步骤:总体上可分为1)实施前的准备工作,2)实施工作,3)实施结束与持续改进工作。
第三章:3.1什么是项目和项目管理?项目:是指在一定的资源约束下完成既定目标的一次性任务。
项目管理:是指通过项目经理和项目开发组织机构运用系统理论和方法对项目及其资源进行计划,组织,协调,控制,旨在实现项目的特定目标的管理方法体系。
项目管理的三要素:目标、成本、进度。
3.2软件项目管理的职责是什么?软件项目经理应具备什么能力?软件项目管理的职责:1)制定计划:规定要完成的任务和要求,安排资源,人员和进度等。
2)建立组织:建立分工明确的实施计划的责任制机构,以保证任务的完成。
3)配备人员:根据任务要求在各岗位上任用各种层次的技术人员和管理人员。
4)协调或追踪与指导:时刻跟踪项目的进展情况,协调,指导和激励各种人员完成所分配的任务。
5)控制或检验:对照计划和标准,监督和检验项目实施的情况。
软件项目经理人员的能力要求:1)综合问题的能力。
2)总结和表达问题。
3)沟通能力。
3.6软件配置管理的目的是什么?1)标识变更;2)控制变更;3)确保变更正确的实现;4)向其他有关的人报告变更。
第四章:4.1什么是系统工程和需求工程?计算机系统工程:是一个问题求解活动,其目的是揭示,分析所有基于计算机的系统功能和性能等要求,并把它们分配到基于计算机系统的各个单独的系统元素中去,确定它们的约束条件和接口。
需求工程:提供适当的机制以了解用户想要什么。
分析需要,评价可行性,协调合理的解决方案,无歧义地规约解决方案,确认方案以及它们转换到可运行系统时对管理的需求。
4.4需求获取方法有几种?各有什么优缺点?需求获取的方法:1)访谈和倾听,2)问卷调查,3)收集和研究现有文档,4)观察工作流程。
1)访谈倾听方法的优点是可以通过当面沟通获得比较准确的需求;可以通过被访谈者的表情或形体获得一些难以表达得信息。
其缺点是需要被访谈者有专门的时间,成本较高;也可能被被访谈者有所顾忌而有所保留2)问卷调查方法的优点是因为通常是匿名,意见比较充分;容易收取,列表和分析,因而成本低。
时间短而调查氛围大。
其缺点是反馈率可能会比较低,会损失一些难以表达的信息,没法收集模糊或不完整的回答,需要较长的准备时间,数据信息比较万元归纳。
3)收集和研究文档的优点是成本很低和信息稳定;缺点是范围有限,可能找不到最有意义的文档,很大程度上存在分析员的个人偏见,难以获得新数据。
4)观察方法的优点是高度可靠,准确地看到所发生的情况,也可以对工作进行实时测量,成本也相对低。
其缺点是被观察时的工作状态可能与平时不同,难以观察到较大难度或需要长时间的工作,不易于做计划,经常会被中断。
第五章:5.1可行性研究的任务是什么?1)识别用户需求2)设计并推荐系统实现方案3)评价系统可行性4)建立成本和进度限制5)编写文档并提交审查5.3什么是技术、法律、用户操作和经济可行性?①技术可行性:主要包括风险、资源和技术分析。
②法律可行性:指的是侵权和责任问题,如是否违反专利法、著作权法和软件保护条例等法律,是否涉及信息安全和个人隐私等问题。
③用户操作可行性:首先要分析用户类型,如外行型、熟练型或专家型,然后从操作习惯、使用单位计算机使用情况和相关的规章制度等方面进行分析,判断当系统交付使用后使用单位是否有能力保证系统的正常运行和使用。
④经济可行性:目的是从经济角度评价开发一个新的系统是否可行。
第六章:6.1需求分析任务、步骤、内容是什么?需求分析的任务:是准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么,用需求规格说明书规范的形式准确地表达用户的需求。
需求分析的步骤:是问题分析,问题评估和方案综合、建模、规约和复审。
需求分析的内容:获取的用户需求可分为功能性需求和非功能性需求。
功能性需求定义系统做什么,描述系统必须支持的功能和过程;非功能性需求定义系统工作时的特性,描述操作环境和性能目标等。
两类需求包括如下内容:功能需求,性能需求,环境需求,界面需求,用户或人的因素,文档需求,数据需求,资源需求,安全保密需求,软件成本消耗与开发进度需求,质量保证。
6.2如何建立软件系统的逻辑模型?软件系统的逻辑模型:首先确定目标系统与当前系统的逻辑差别;然后将变化部分看作是新的处理步骤,对功能图及对象图进行调整;最后由外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型。
通常用数据流图、数据字典和主要的处理算法描述这个逻辑模型6.3如何画数据流图?1)画顶层图:确定源和宿,确定加工,确定数据流,顶尘土通常没有文件。
2)画出系统内部:分解、确定加工,确定数据流,确定文件,确定源和汇点。
3 )画出加工内部.4)重复第三步,直到每个加工都足够简单。
6.4总体设计和详细设计的任务分别是什么?总体设计的任务:是确定软件的结构以及各组成成分之间的相互关系。
详细设计的任务:是确定模块内部的算法和数据结构,产生描述各模块程序过程的详细文档6.6人机界面设计的过程是什么?为什么要遵循各种设计指南和原则?1)用户、任务和环境分析及建模;2)界面设计;3)界面构造和界面确认,包括在设计的早期要不定期进行评估,以便逐步完善。
6.7需求规格说明书:是需求分析阶段要完成的文档。
作为需求分析任务的成果,详细描述功能、性能、行为等目标系统的各种需求。
第九章:9.1软件测试的目标和原则是什么?目标:为了发现错误而执行程序的活动过程。
原则:必须伴有质量保证活动,软件测试是软件质量保证的关键活动,代表了规约、设计和编码的最终检查。
9.2测试方法包括哪几类?分别有什么特点?测试方法可分为静态测试方法和动态测试方法。
静态测试方法有计算机辅助静态分析和人工测试等方法;动态测试方法有白盒测试和黑盒测试等方法。
9.3测试可分为哪几个步骤?它们的测试内容分别是什么?1)单元测试:又称为模块测试,检验每个模块能否单独工作。
2)集成测试:可分为子系统和系统集成测试,以需求规格说明书为检验尺度。
3)确认测试:可分为内部确认和验收测试,以需求规格书为检验尺度。
4)系统测试:综合检验软件与整个计算机系统的测试。
9.4如何用黑盒法中的等价划分法法、边界值分析法和错误推测法设计测试用例?等价划分法:把所有可能的输入或者输出数据(有效的和无效的)划分成若干个等价的子集,称为等价类,使得每个子集中的一个典型值在测试中的作用与这一子集中所有其他值的作用相同,可从每个子集中选取一组数据来测试程序。
边界值分析法:软件错误分为两类:一类是计算错误;另一类是域错误。
上述等价划分法是针对计算错误的测试方法,而针对域错误的测试方法称为便捷值分析法,用于测试域边界划定的正确性。
错误推测法是根据经验来设计测试用例以找出可能存在但尚未发现错误的方法。
9.5如何用白盒:法中的逻辑覆盖法、基本路径法和结构分析法设计测试用例?逻辑覆盖法主要考察使用测试数据运行被测程序时对程序逻辑的覆盖程度。
通常希望选择最少的测试用例来满足所需的覆盖标准,主要的覆盖标准有语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,条件组合覆盖,路径覆盖,点覆盖和边覆盖。