(完整版)软件工程课后习题答案
软件工程---课后习题答案.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. 什么是软件工程?软件工程是一种应用工程原理和方法的学科,目的是开发高质量的软件。
软件工程包括以下几个方面:•需求分析:确定用户的需求,并将其转化为可执行的软件功能。
•设计:设计软件的架构和模块,并确定各个模块的功能和关系。
•编码:实现软件的设计,将设计的模块通过编程语言编写成可执行的代码。
•测试:通过不同的测试方法和技术对软件进行验证,确保软件的质量和可靠性。
•维护:对软件进行改进和修复,以适应用户需求的变化和修复软件中的错误。
2. 软件工程的目标是什么?软件工程的目标是开发高质量的软件,以满足用户的需求。
具体目标包括:•可靠性:软件应该能够正常运行并处理各种输入情况,不会崩溃或导致系统故障。
•可维护性:软件应该易于理解和修改,以适应用户需求的变化和修复软件中的错误。
•可扩展性:软件应该能够在不改变其基本架构的情况下,方便地添加新的功能模块。
•可重用性:软件应该能够被多个项目和团队复用,以提高开发效率。
•可测试性:软件应该易于测试,以确保其功能和性能符合预期。
3. 软件开发生命周期有哪几个阶段?软件开发生命周期通常包括以下几个阶段:1.需求分析和定义阶段:在这个阶段,软件工程师与用户沟通,了解用户的需求和期望。
然后,设计师将这些需求转化为软件规格说明。
2.软件设计阶段:在这个阶段,设计师根据需求规格说明书设计软件的架构和模块,并确定模块之间的关系和功能。
3.编码阶段:在这个阶段,开发人员根据设计文档编写代码,实现软件的功能。
4.测试阶段:在这个阶段,测试人员使用不同的测试方法和技术对软件进行验证,以确保软件的质量和可靠性。
5.部署和维护阶段:在这个阶段,软件工程师将软件部署到实际的运行环境中,并根据用户的反馈进行改进和修复。
4. 什么是软件需求?软件需求是对系统或软件功能和性能的描述,它描述了用户的需求和期望。
软件需求通常包括以下几个方面:•功能需求:描述软件应该具有的功能,以及这些功能如何满足用户的需求。
软件工程课后习题答案

第一章习题参考答案1﹑软件产品的特性是什么?答:软件产品特性:⑴是一种逻辑产品,与物质产品有很大的区别。
⑵软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。
⑶软件产品不会用坏,不存在磨损,消耗。
⑷生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是"定做"的⑸开发软件的费用不断增加,致使生产成本相当昂贵。
2﹑软件生产有几个阶段?各有何特征?答:⑴程序设计时代:这个阶段生产方式是个体劳动,使用的生产工具是机器语言,汇编语言。
⑵程序系统时代:这个阶段生产方式是小集团合作生产,使用的生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。
⑶软件工程时代:这个阶段生产方式是工程化的生产,使用数据库﹑开发工具﹑开发环境﹑网络﹑分布式﹑面向对象技术来开发软件。
3﹑什么是软件危机?产生原因是什么?答:软件开发技术的进步未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
产生原因:⑴软件规模越来越大,结构越来越复杂。
⑵软件开发管理困难而复杂。
⑶软件包开发费用不断增加。
⑷软件开发技术落后。
⑸生产方式落后,仍采用手工方式。
⑹开发工具落后,生产率提高缓慢。
4﹑什么是软件工程?它目标和内容是什么?答:软件工程就是用科学的知识程和技术原理来定义,开发,维护软件的一门学科。
软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
软件工程内容:研究内容包括开发技术和开发管理两个方面。
开发技术主要研究:软件开发方法,开发过程,开发工具和环境。
开发管理主要研究:软件管理学,软件经济学,软件心理学。
5﹑软件工程面临的问题是什么?答:软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。
软件工程SW课后练习试题答案

软件工程SW课后练习试题答案一、选择题1. 以下哪项不是软件工程的基本目标?A. 提高软件的生产效率B. 提高软件的可维护性C. 降低软件的开发成本D. 提高软件的稳定性答案:D2. 软件工程的三要素不包括以下哪项?A. 工具B. 方法C. 知识D. 程序答案:D3. 以下哪种编程范式不属于面向对象编程?A. 面向过程编程B. 面向对象编程C. 函数式编程D. 响应式编程答案:A二、填空题1. 软件生命周期包括:需求分析、设计、编码、______、______。
答案:测试、维护2. 结构化分析方法的主要工具是:数据流图(DFD)、______、______。
答案:实体关系图(ER图)、状态转换图(STD)3. 软件设计的主要任务包括:总体设计、______、详细设计。
答案:模块设计三、判断题1. 软件工程的基本原则之一是模块化,这意味着软件应该被分解为若干个相互独立的模块。
()答案:正确2. 在软件测试阶段,测试用例的设计应该基于需求规格说明书。
()答案:正确3. 面向对象编程的主要特点是封装、继承、多态。
()答案:正确四、简答题1. 简述软件工程的定义及目的。
答案:软件工程是一门应用计算机科学、数学原理与工程实践来设计、开发、测试和评估软件和系统以确保其高质量、高效能、可靠性和可维护性的学科。
软件工程的目的在于提高软件的生产效率,降低软件开发成本,提高软件的可维护性和可靠性。
2. 简述软件生命周期模型的分类及特点。
答案:软件生命周期模型主要分为以下几类:(1)瀑布模型:将软件生命周期划分为线性顺序的几个阶段,每个阶段有明确的任务和成果,适用于需求明确、规模较小的项目。
(2)迭代模型:将软件生命周期划分为多个迭代周期,每个周期包括分析、设计、编码、测试等阶段,适用于需求变化较大、规模较大的项目。
(3)原型模型:通过构建原型来逐步完善软件系统,适用于需求不明确或需求变化频繁的项目。
(4)敏捷模型:强调快速迭代、持续交付、客户参与和团队协作,适用于需求变化快、竞争激烈的项目。
软件工程(习题与参考答案)

第1章概述〔习题与参考答案〕[判断题]1. 由于今天个人计算机不断开展壮大,人们不再采用软件团队的开发方式。
〔×〕2. 由于软件是产品,因此可以应用其他工程制品所用的技术进展生产。
〔×〕3. 购置大多数计算机系统所需的硬件比软件更昂贵。
〔×〕4. 大多数软件产品在其生命周期中不需要增强功能。
〔×〕5. 大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。
〔√〕6. 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。
〔×〕[选择题]1. 〔〕因素促使计算机系统越来越复杂。
〔D〕A. 计算机内存和存储容量上的巨大增长B. 外部输入/输出选项的更加多样性C. 计算机体系构造方面的深刻变化D. 以上所有选项2. 下面的〔〕不再是现代软件工程师关注的问题。
〔A〕A. 为什么计算机硬件的本钱这么高?B. 为什么软件需要很长时间才能完成?C. 为什么开发一个软件的本钱这么高?D. 为什么不能在产品发布前去除软件错误?3. 软件会逐渐退化而不会磨损,其原因在于〔〕。
〔C〕A. 软件通常暴露在恶劣的环境下B. 软件错误通常发生在使用之后C. 不断的变更使组件接口之间引起错误D. 软件备件很难订购4. 大多数软件仍然是定制开发的,其原因在于〔〕。
〔C〕A. 软件组件重用是十分普遍的B. 可重用的组件太昂贵而无法使用C. 软件在不使用其他组件的情况下很容易构造出来D. 商业组件在很多应用领域中可以得到5. 下面的〔〕说法是正确的。
〔C〕A. 软件危机在20世纪70年代末期全面爆发B. 当前先进的软件工程方法已经解决了软件危机的问题C. 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题D. 软件危机是指在软件产品中存在一系列的质量问题6. 软件工程的根本目标是〔〕。
〔B〕A. 消除软件固有的复杂性B. 开发高质量的软件C. 努力发挥开发人员的创造性潜能D. 更好地维护正在使用的软件产品7. 〔〕是将系统化的、标准的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。
软件工程课后题答案大全(详细)

软件工程课后题答案大全(详细)软件工程课后题答案大全(详细)现代社会中,软件工程越来越重要,因为它在各个行业中扮演着关键的角色。
而在学习软件工程课程时,完成课后题是提高理解和掌握程度的重要途径。
本文将为您提供一份全面且详细的软件工程课后题答案大全,希望能够帮助您更好地学习与应用软件工程知识。
1. 什么是软件工程?软件工程是指应用系统化的、规范化的、可量化的方法来开发和维护软件的学科。
它涵盖了各种软件开发阶段,包括需求分析、设计、编码、测试和维护,并借鉴了工程学的原则和方法。
2. 软件工程的原则有哪些?软件工程遵循一系列原则来保证软件开发和维护的质量和效率,如下:- 需求管理原则:明确需求,确保项目目标的准确性和一致性。
- 分阶段原则:将软件开发过程划分为不同的阶段,有序进行。
- 风险管理原则:评估和管理项目中的风险,降低项目失败的可能性。
- 适应性原则:根据不同的项目需求和情况,选择合适的软件开发方法和工具。
- 团队合作原则:加强团队协作,促进良好的沟通和信息共享。
3. 软件生命周期有哪些阶段?软件生命周期包括需求分析、设计、编码、测试和维护等多个阶段。
- 需求分析:明确软件系统的功能和性能要求,了解用户需求。
- 设计:定义软件系统的整体结构和组件之间的关系,确定使用的技术和工具等。
- 编码:根据设计方案,将代码实现为可以执行的程序。
- 测试:验证软件系统的功能和性能是否满足需求,并进行错误修复。
- 维护:对软件进行修复和改进,确保系统的长期可用性。
4. 软件需求分析的方法有哪些?软件需求分析是保证软件项目成功的关键步骤,以下是几种常用的分析方法:- 面谈法:直接与用户沟通,了解他们的需求和期望。
- 文档分析法:研究和分析相关文档,如需求规格说明书、用户手册等。
- 原型法:创建一个初步的系统原型,供用户参观和测试,获取反馈。
- 视频录制法:录制用户正在进行的工作流程,以便更好地了解他们的需求。
5. 软件项目管理中的风险管理包括哪些步骤?风险管理是确保软件项目成功的重要环节,步骤如下:- 风险识别:识别和描述可能影响项目目标实现的风险。
软件工程课后参考答案完整版
软件工程课后参考答案 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】第一章课后参考答案1.什么是软件危机它们有哪些典型表现为什么会出现软件危机“软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。
这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。
它们有以下表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。
出现软件危机的主要原因(1)与软件本身的特点有关(2)与软件开发和维护过程中使用的方法不正确有关2.假设自己是一家软件公司的总工程师,当把图给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”时在引入变动,当然付出的代价更高。
一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。
3.什么是软件工程它有哪些本质特征怎么用软件工程消除软件危机软件工程是指导知道计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
软件工程课后习题及其答案
软件工程习题CH1一、填空题1、软件工程需要解决的问题包括:费用、可靠性、可维护性、生产率和重用。
2、到目前为止,软件生产的发展经历了三个阶段,即程序设计、程序系统和软件工程。
3、计算机科学中的研究曾国均可用于软件工程,但计算机科学侧重于原理和理论,而软件工程侧重于软件系统构造。
4、软件工程有用管理科学的方法和原理进行软件生产的管理。
5、软件工程是用科学知识和技术原理来定义、开发、维护软件的一门科学。
6、软件工程研究的主要内容包括软件开发技术和软件开发管理技术两个方面。
在软件开发技术方面,主要研究开发方法、开发过程、开发工具。
在软件开发管理技术方面主要研究管理学、经济学、心理学。
7、作为一门交叉学科,软件工程具有很强的综合性,它涉及计算机科学、工程科学、管理科学、数学等领域。
8、软件生产周期是指一个软件从提出开发要求开始直到该软件报废为止的整个时期。
通常包括问题定义、可行性研究、需求分析、总体设计、详细设计、编码、测试、维护等活动,可以将这些活动以适当方式分配到不同阶段去完成。
9、开发软件工具的主要目的是为了提高软件生产效率和改善软件的质量。
10、描述软件开发过程中各种活动如何执行的模型称为周期模型。
11、从软件工程诞生以来,已经提出了多种软件开发方法,如结构化方法、面向数据的方法、面向对象的方法,它们对软件工程及软件产业的发展起到了不可估量的作用。
12、结构化方法由结构化分析、结构化设计和结构化程序设计构成。
它是一种面向数据流的开发方法。
13、增量模型是一种非整体开发方法的模型。
软件在该模型中是“逐渐”开发出来的,开发一部分向用户展示一部分,可让用户及早看到部分软件,及早发现问题。
或者先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。
14、喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。
它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。
软件工程(原书第九版)课后练习第一章答案
第一章课后练习(P15)1.解释为什么专业化软件不仅仅包括为用户所开发程序?专业化软件在开发上与在与软件就有所不同。
专业软件通常是由团队开发而非个人,除了开发者外还有其他的用户使用。
如果你的软件有别的用户,别的工程师会去修改的话,你就必须提供除了程序源码之外的其它附带信息。
因此,系统通常除了包含一些单独的程序还有用于这些程序的配置文件,可能还包括描述系统结构的系统文档和解释如何使用该系统的用户文档,以及告知用户下载最新产品的Web站点。
2.通用软件产品开发和定制软件开发直接有什么不同?这在实际应用中对通用软件产品用户意味着什么?(1)重要区别为:在通用软件的开发过程中,详细说明(规格说明书)由产品开发者来制定,在定制软件产品开发过程中,详细说明(规格说明书)由客户来制定开发者必须按客户要求进行开发。
(2)意味着通用软件很难满足通用软件客户的特殊需求。
如可靠性、安全性、快捷性。
3.软件产品应该具有与的4重要属性是那些?另外列举出4个可能有意义的属性。
重要属性:可维护性、可依赖性和安全性、有效性和可用性。
可能有意义的属性:可复用性、可分发性、可移植性和互用性。
4.除了异质性挑战、业务和社会的变革、安全和可信,说出软件工程在21世纪的可能面临的其它问题和挑战。
交付上的挑战:许多传统的软件工程技术需要耗费大量的时间,用于提高软件质量。
而今天的软件制作必须响应快、更换迅速,支持软件也必须同样快地进行更换。
交付上的挑战是:在不损及系统质量的前提下,缩短大型、复杂系统的移交时间。
5.参论的应用类型,照1.1.2节讨举例介绍为什么设计和开发不同类型的应用需要专门的软件技术。
如汽车上年的嵌入式控制系统对安全性要求极高,在车上安装是要烧制到ROM中在这里的交互在这里是很少的(或许根本就没有)。
基于Web式系统更适合用于迭代式开发和交互。
而基于Web的系统编程使用的如Ruby一类的脚本语言,完全不适合嵌入式系统工程。
软件工程课后题答案
软件工程课后题答案1. 简答题1.1 软件过程模型软件过程模型是一种描述软件开发过程中活动、任务和工作产品之间关系的抽象模型。
常见的软件过程模型包括瀑布模型、迭代模型、增量模型和敏捷开发模型等。
每种模型都有其适用的场景和特点。
1.2 软件需求软件需求是指用户对软件系统的功能、性能等方面的要求和约束。
需求分析是软件开发过程中非常重要的一步,它包括需求获取、需求分析、需求规格说明等活动。
需求分析的目标是理解用户需求,为软件开发提供指导。
1.3 需求规格说明需求规格说明是对软件需求进行详细描述和说明的文档。
它包括功能需求、性能需求、界面需求以及其他约束条件等。
需求规格说明的编写要求准确、清晰、可验证,并且要与用户和开发人员达成一致。
1.4 软件设计原则软件设计原则是指在软件设计过程中应该遵循的一些基本原则,以提高软件系统的可维护性、可扩展性和可重用性。
常见的软件设计原则包括单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则和迪米特法则等。
2.1 敏捷开发方法敏捷开发是一种迭代、逐步开发软件的方法。
它强调快速响应用户需求的变化,通过频繁发布可用的软件版本来获得反馈,并根据反馈进行调整。
敏捷开发方法更加灵活,适用于需求变化频繁的项目。
2.2 结构化程序设计结构化程序设计是一种通过模块化和流程控制来组织程序的方法。
它强调程序应该具有清晰的结构,模块之间的耦合度应该尽量低。
结构化程序设计可以提高程序的可读性和可维护性,减少错误引入的可能性。
2.3 UML建模UML是一种用于面向对象系统开发的建模语言。
它提供了一套丰富的图形符号和建模工具,用于描述系统的结构、行为和交互。
UML建模可以帮助开发人员清晰地表达设计意图,提高沟通效率,并且可以生成可执行代码。
2.4 软件测试技术软件测试是评估软件质量的过程,旨在发现软件中的缺陷和错误。
常见的软件测试技术包括黑盒测试和白盒测试。
黑盒测试关注软件功能是否符合需求,白盒测试则关注程序内部的逻辑结构和代码覆盖率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章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.提供高质量的工程支撑软件工程项目的质量与开销直接取决于对软件工程所提供的支撑质量和效用。
4.重视软件工程的管理仅当软件过程予以有效管理时,才能实现有效的软件工程。
1.6软件工程生存周期分哪几个阶段?分别简述各个阶段的任务。
1. 计算机系统工程计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机系统元素之间的关系,进行成本估算,作出进度安排,并进行可行性分析。
2. 需求分析需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面等要求,生成软件需求规约(也称软件需求规格说明)。
3. 设计系统设计的任务是设计软件系统的体系结构,详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法。
4. 编码编码阶段的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。
5.测试测试阶段的任务是发现并纠正软件中的错误和缺陷。
1.7简述CMM的5个等级。
1. 初始级2. 可重复级3. 已定义级4. 已管理级5. 优化级1.8简述CMMI的连续式模型和阶段式模型。
1.阶段式模型的结构类同于软件CMM,它关注组织的成熟度,CMMI-SE/SW/IPPD 1.1版中有5个成熟度等级:初始的、已管理的、已定义的、定量管理的、优化的。
2.连续式模型关注每个过程域的能力,CMMI中包括6个过程域能力等级:未完成的、已执行的、已管理的、已定义的、定量管理的、优化的。
1.9简述各类软件过程模型的特点。
1. 瀑布模型:上一阶段的活动完成并经过评审才能开始下一阶段的活动,接受上一阶段活动的结果作为本阶段活动的输入,依据上一阶段活动的结果实施本阶段应完成的活动,对本阶段的活动进行评审。
2. 演化模型:从结构初始的原型出发,逐步将其演化成最终软件产品的过程。
演化模型特别适用于对软件需求缺乏准确认识的情况。
3. 增量模型:将软件的开发过程分为若干个日程时间交错的线性序列,融合了瀑布模型的基本成分(重复地应用)和演化模型的迭代特征,特别适用于需求经常发生变化的软件开发。
4. 原型模型:开发人员和用户在“原型”上达成一致,缩短了开发周期,加快了工程进度,降低成本。
5. 螺旋模型:将原型实现的迭代特征与瀑布模型中控制的和系统化的方面结合起来,不仅体现了这两种模型的优点,而且增加了风险分析。
6. 喷泉模型:各个阶段没有明显的界限,开发人员可以同步进行开发,可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
7. 基于构件的开发模型:利用预先包装的构件来构造应用系统。
8. 形式化方法模型:易于发现需求的歧义性、不完整性和不一致性,易于对分析模型、设计模型和程序进行验证。
1.10敏捷软件开发的特点是什么?1. 个体和交互胜过过程和工具2. 可以工作的软件胜过面面俱到的文档3. 客户合作胜过合同谈判4. 响应变化胜过遵循计划1.11简述敏捷软件开发的价值观。
1.个人和交互高于过程和工具2.可运行软件高于详尽的文档3.与客户协作高于合同(契约)谈判4.对变更及时作出反应高于遵循计划1.12简述敏捷软件开发的原则。
1.最优先的是通过尽早地和不断地交有价值的软件来使客户满意。
2.即使到了开发的后期,也欢迎改变需求。
3.以几周到几个月为周期,尽快、不断地发布可运行软件。
4.在整个项目过程中,业务人员和开发人员必须天天一起工作。
5.以积极向上的员工为中心建立项目组,给予他们所需要的环境和支持,对他们的工作予以充分的信任。
6.项目组内效率最高、最有效的信息传递方式是面对面的交谈。
7.测量项目进展的首要依据是可运行的软件。
8.敏捷过程提倡可持续的开发,项目发起者、开发者和用户应能长期保持恒定的速度。
9.应时刻关注技术上的精益求精和好的设计,以增强敏捷性。
10.简单化是必不可少的,这是尽可能减少不必要工作的艺术。
11.最好的构架、需求和设计出自于自我组织的团队。
12.团队要定期反思怎样才能更有效,并据此调整自己的行为。
1.13通过本章学习,请对敏捷软件开发作简要评价。
(略)1.14简述CASE工具和环境的重要性。
CASE已被证明可以加快开发速度,提高应用软件生产率并保证应用软件的可靠品质。
计算机专业人员利用计算机使他们的企业提高了效率,企业的各个部门通过使用计算机提高了生产率和效率,增强了企业的竞争力并使之带来了更多的利润。
第二章2.1简述系统工程的任务1.识别用户的要求识别用户对基于计算机的系统的总体要求,标识系统的功能和性能范围,确定系统的功能、性能、约束和接口。
2.系统建模和模拟一个基于计算机的系统通常可考虑建立以下模型:硬件系统模型、软件系统模型、人机接口模型、数据模型。
3.成本估算及进度安排开发一个基于计算机的系统需要一定的资金投入和时间约束(交互日期),需进行成本估算,并作出进度安排。
4.可行性分析主要从经济、技术、法律等方面分析所给出的解决方案是否可行。
5.生成系统规格说明作为以后开发基于计算机的系统的依据。
2.2基于计算机的系统由哪些元素组成?1.软件2.硬件3.人员4.数据库5.文档6.规程2.3简述可行性分析的任务1.经济可行性a)成本b)效益c)货币的时间价值d)投资的回收期e)纯收入2.技术可行性a)风险分析b)资源分析c)技术分析3.法律可行性4.方法的选择和折衷第三章3.1需求工程的重要性是什么?可以确定客户需求帮助分析人员理解问题评估可行性协商合理的解决方法无歧义的规约方案、确认规约以及将规约转换到可运行的系统时的管理要求。
3.2需求工程具体包括哪些步骤?每个步骤的具体任务是什么?1.需求获取:系统分析人员通过与用户的交流、对现有系统的观察及对任务进行分析。
2.需求分析与协商:分析每个需求与其他需求的关系以检查需求的一致性、重叠和遗漏的情况,并根据用户的需求对需求进行排序。
3.系统建模:通过合适的工具和符号系统地描述需求。
4.需求规约:给出对目标软件的各种需求。
5.需求验证:对功能的正确性、完整性和清晰性以及其他需求给予评价。
6.需求管理:对需求工程所有相关活动的规约和控制。
3.3一个系统分析员应该具备哪些思想素质和基本知识?请说明理由。
1.能够熟练地掌握计算机硬、软件的专业知识,具有一定的系统开发经验。
2.善于进行抽象的思维和创造性的思维,善于把握抽象的概念,并把它们重新整理成为各种逻辑成分,并给出简明、清晰的描述。
3.善于从相互冲突或混淆的原始资料中抽出恰当的条目来。
4.善于进行调查研究,能够很快学习用户的专业领域知识,理解用户的环境条件。
5.能够倾听他人的意见,注意发挥其它人员的作用。
6.具有良好的书面和口头交流表达能力。
3.4列出在制定需求获取策略时的3种主要考虑因素。
1.功能需求。
考虑系统要做什么,在何时做,在何时及如何修改或升级。
2.性能需求。
考虑软件开发的技术性指标。
3.用户或人对因素。
考虑用户的类型。
3.5(略)3.6举例说明一个系统的3个不同类型的非功能需求答:非功能性需求是指软件产品为满足用户业务需求而必须具有且除功能需求以外的特性。
软件产品的非功能性需求包括系统的性能、可靠性、可维护性、可扩充性和对技术和对业务的适应性等。
例如在银行管理系统中,由于银行数据量的庞大以及对银行账户的管理需求,用户对系统的性能、可靠性、可维护性要求很高。
安全性是对银行用户个人信息保密的基本要求;在使用系统时,由于用户庞大,要求能快速安全的执行要求,这就对系统的性能有高需求;银行的用户的变动比较大,需求高要求的系统维护。
3.7(略)3.8软件需求分析的操作性原则和需求工程的指导性原则是什么?需求分析的操作性原则:必须能够表示和理解问题的信息域。
●必须能够定义软件将完成的功能。
●必须能够表示软件的行为(作为外部事件的结果)。
●必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节。
●分析过程应该从要素信息转移向细节信息需求工程的指导性原则:●在开始建立分析模型之前应当先理解问题。
如果问题没有很好理解就急于求成,常常会产生一个解决错误问题的完美的软件。
●强力推荐使用原型。
这样做可以使用户了解将如何与计算机交互,而人们对软件质量的认识常常是基于对界面“友好性”的切身体会。
●记录每一个需求的起源和原因。
这是建立对用户要求的可追溯性的第一步。
●使用多个视图,建立系统的数据、功能和行为模型。
这样做可帮助分析员从多方面分析和理解问题,减少遗漏,识别可能的不一致之处。
●给需求赋予优先级。
因为过短的时限会减少实现所有软件需求的可能性。
因此,对需求排定一个优先次序,标识哪些需求先实现,哪些需求后实现。
●注意消除歧义性。
因为大多数需求都是以自然语言描述,存在叙述的歧义性问题造成遗漏和误解。
采用正式的技术评审是发现和消除歧义性的好方法。
3.9软件需求规约主要包括哪些内容?1.引言2.信息描述3.功能描述4.行为描述5.检验标准6.参考书目7.附录3.10需求验证应该有哪些人参加?分析人员、用户、开发部门的管理者、软件设计、实现、测试的人员。