最新《软件工程——理论与实践》重点问
- 格式:pdf
- 大小:32.52 KB
- 文档页数:5
软件工程的理论与实践研究第一章:引言软件工程是一个在计算机科学领域中非常重要的领域,其目的是开发出高质量的软件系统。
软件工程是一个以工程化的方式来管理和开发软件的过程,其目标是提高软件开发效率和质量。
本文将对软件工程的理论与实践进行研究,分析其优势与不足,并提出一些改善建议。
第二章:软件工程的定义和重要性软件工程是一种应用工程技术进行软件开发的方法。
软件工程包括软件开发过程中所需的各种管理、设计和开发技术。
软件工程的目的是实现高质量、可靠的软件系统。
软件工程是保证软件开发的可靠性、高效性和稳定性的必要手段。
由于软件系统的复杂性和规模不断增加,软件开发的难度也不断增加。
软件错误在应用中的影响还可能对用户造成巨大的损失。
为了应对这些问题,软件工程显得尤为重要。
软件工程管理着软件开发的整个过程,控制软件开发过程中的风险,以确保最终交付的软件系统质量稳定可靠。
第三章:软件工程的过程软件开发过程是软件工程的核心。
软件开发过程可以用水平、瀑布和迭代等多种方式进行。
这些过程在现代软件工程领域中得到广泛应用,并且都有自己的优点和不足。
1. 线性过程(瀑布模型)瀑布模型是软件开发过程中最常用的一种模型。
它包括需求分析、系统设计、实现、测试和维护等五个主要步骤。
因为这种方法的所有步骤都是串行的,每个步骤完成后才会进入下一个重要的步骤。
因此,瀑布模型也被称为线性过程模型。
瀑布模型的优点是清晰明确、易于理解、易于控制和管理,可执行性较高。
然而,由于这种模型只考虑开始到结束的总体进程,缺乏面向过程的变更机制和灵活性,导致在应对变化时往往显得很被动。
2. 迭代过程敏捷和迭代模型是在针对复杂性、求快与灵活的基础上演化出来的两种特殊的软件开发过程。
迭代过程是一个重复性质的过程,就是说在每一个迭代周期内完成一部分工作,而每一轮的细节方案在下一次的迭代中得到修正和完善。
迭代模型的优点在于保持了开放性和可变性。
它具有明确的细化步骤和技术评估方式。
1、完善性维护一个已有的库存清单系统,新增一个能在每天送给采购员一份订货报表的功能。
新增该功能共投资了5000元,系统维护后能及时订货,消除零件短缺问题,每年可节约2500元,若系统生存期为5年,年利率为5%,请计算:①.货币的时间价值;②纯收入。
注:不计复利。
2、假设某软件生命周期为5年。
现在投资20万,年利率为3%。
从每一年年底收入5万元,请计算该项目的①.货币的时间价值;②投资回收期(保留小数点后两位)。
注:不计复利。
3、某计算机系统投入使用后,5年内每年可节省人民币 2O0O元,假设系统的投资额为5000元,年利率为 12%。
试计算投资回收期和纯收入。
(保留小数点后两位)。
注:要求计算复利。
4、某计算机系统共投资了5.5万元,系统投入使用后每年可节约2万元,若系统生存期为4年,年利率为5%,请计算:①.货币的时间价值;②.投资回收期;③.纯收入。
注:要求计算复利。
5、画出下面用PDL写出的程序的PAD图。
WHILE P DOIF A >O THEN A1 ELSE A2 ENDIF;S1;IF B>0 THEN B1;WHILE C DO S2;S3 ENDWHILE;ELSE B2ENDIF;B3ENDWHILE;6、画出下面用PDL写出的程序的PAD图WHILE C DOIF A>0A1;ELSEA2;ENDIFIF B>0B1;IF C>0C1;ELSEC2;ENDIFELSEB2;ENDIFB3;ENDWHILE;7、根据伪码画出PAD图。
STARTSWITCH PCASE 1: A; break;CASE 2: B; break;CASE 3: C; break;Default;STOP8、请画出求1 + 3 + 5 +…+ n的PAD图。
9、请使用PAD图描述在数组A(1)~A(10)中找最大数的算法。
10、某商场在“五一”期间,顾客购物时收费有4种情况:普通顾客一次购物累计少于100元,按A类标准收费(不打折),一次购物累计多于或等于100元,按B类标准收费(打9折);会员顾客一次购物累计少于1000元,按C类标准收费(打8折),一次购物累计等于或多于1000元,按D类标准收费(打7折)。
1.软件危机的概念,内容,原因及消除的途径;概念:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
内容:软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护不断膨胀的已有软件。
具体地说,软件危机主要有以下一些典型表现:(1)对软件开发成本和进度的估计常常很不准确;(2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件产品的质量往往靠不住;(4)软件常常是不可维护的;(5)软件通常没有适当的文档资料;(6)软件成本在计算机系统总成本中所占的比例逐年上升;(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势;原因:在软件开发和维护的过程中存在这么多严重问题:一方面与软件本身的特点有关;另一方面也和软件开发与维护的方法不正确有关。
(1)软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。
(2)软件不同于一般程序,它的一个显著特点是规模庞大,而且程序复杂性将随着程序的规模的增加而呈指数上升。
(3)目前相当多的软件专业人员对软件开发和维护还有不少糊涂概念,在实践过程中或多或少地采用了错误的方法和技术,这可能是使软件问题发展成软件危机的主要原因。
(4)对用户要求没有完整准确的认识就匆忙着手编写程序是许多软件开发工程失败的主要原因之一。
2.软件工程的定义,基本原理;定义:软件工程是指导计算机软件开发和维护的一门工程学科。
基本原理:软件工程的7条基本原理:(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性3.软降工程方法学的基本概念、内容;基本概念:把在软件生命周期全过程中使用的一整套开发和管理技术方法的集合成为软件工程方法学,也称为范型。
软件工程方法学包含3个要素:方法、工具和过程。
《软件工程——理论与实践》(第2 版)习题答案习题答案习题一答案一、选择题1. 软件的主要特性是(A B C)。
A) 无形B) 高成本C) 包括程序和文档D) 可独立构成计算机系统2. 软件工程三要素是(B)。
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 D)。
A) 应用科学的方法和工程化的规范管理来指导软件开发B) 克服软件危机C) 作好软件开发的培训工作D) 以较低的成本开发出高质量的软件二、判断题1. 软件就是程序,编写软件就是编写程序。
(×)2. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。
(×)3. 结构化方法的工作模型是使用螺旋模型进行开发。
(×)4. 结构化方法和OO 方法都是一种面向过程的软件开发方法。
(×)5. 原型化开发方法包括生成原型和实现原型两个步骤。
(×)6. 面向对象的开发方法包括面向对象的分析、面向对象的设计和面向对象的程序设计。
( √)7. 软件危机的主要表现是软件的需求量迅速增加,软件价格上升。
(×)8. 软件工具的作用是为了延长软件产品的寿命。
软件工程的基本理论和实践应用软件工程是计算机科学的一个重要分支领域,它涉及软件设计、开发、测试、维护等多个方面。
在当今信息技术高度发展的时代,软件工程的理论和实践应用变得越来越重要,对于提高软件开发效率、保证软件质量、提高软件安全性等方面都有着十分重要的意义。
本文将从理论与实践两个方面分别探讨软件工程的基本概念、方法和应用。
一、软件工程的基本概念1. 软件工程的定义:软件工程是一门系统性的、规范性的、可量化的、应用跨学科知识与经验的软件开发方法学。
2. 软件工程的特点:软件工程具有高度规范性、可量化性、可重复性和可维护性等特点。
它以软件作为对象,通过系统性的方法对软件开发过程进行管理与控制,以达到提高软件质量、降低软件开发成本、提高开发效率、提高软件安全性的目的。
3. 软件工程的原则:软件工程的开发过程需要遵循一系列的原则和规范。
其中包括需求分析、设计、编码、测试、维护和管理等方面,以及软件工程的质量保证、变更管理和项目管理等方面的规范。
二、软件工程的基本方法1. 软件工程的生命周期:软件工程的生命周期是指软件从需求分析到软件维护整个过程的完整过程。
它由软件需求分析、软件设计、软件编码、软件测试和软件维护等阶段组成。
2. 软件需求分析:需求分析是软件工程的开发过程中的第一阶段,其主要工作内容是了解用户需要和问题,分析用户需求,并将其转换为软件功能需求和用户界面规范等详细说明文档。
3. 软件设计:软件设计是指将需求分析所得到的软件功能需求进一步转化为软件架构、模块分派、接口设计、数据结构和算法设计等系统设计文档。
4. 软件编码:软件编码是将设计文档中的相关内容转化为可执行的源代码,是软件工程中实际开发的核心环节。
5. 软件测试:软件测试是针对编码结果进行动态检测和评价的过程。
测试包含黑盒测试、白盒测试、性能测试、压力测试、安全测试和兼容性测试等多个方面。
6. 软件维护:软件维护是指在软件产品交付后,为了使其能够符合用户需求,根据需要进行更新和修正,并确保软件的稳定性和功能完备性。
《软件工程——理论与实践》(第2版)习题答案习题答案习题一答案一、选择题1. 软件的主要特性是(A B C)。
A) 无形B) 高成本C) 包括程序和文档D) 可独立构成计算机系统2. 软件工程三要素是(B)。
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 D)。
A) 应用科学的方法和工程化的规范管理来指导软件开发B) 克服软件危机C) 作好软件开发的培训工作D) 以较低的成本开发出高质量的软件二、判断题1. 软件就是程序,编写软件就是编写程序。
(×)2. 瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。
(×)3. 结构化方法的工作模型是使用螺旋模型进行开发。
(×)4. 结构化方法和OO方法都是一种面向过程的软件开发方法。
(×)5. 原型化开发方法包括生成原型和实现原型两个步骤。
(×)6. 面向对象的开发方法包括面向对象的分析、面向对象的设计和面向对象的程序设计。
( √)7. 软件危机的主要表现是软件的需求量迅速增加,软件价格上升。
(×)8. 软件工具的作用是为了延长软件产品的寿命。
软件工程中的理论与实践研究软件工程是一个涉及到计算机科学和工程学的学科,它的主要目标是为了提高软件开发的质量和效率。
在软件工程领域中,随着技术不断的发展,理论与实践研究也在不断的进行着。
下面将从软件工程中的理论和实践研究两个方面来进行分析。
一、软件工程中的理论研究软件工程的理论研究主要探究软件开发的原则和规范,是软件工程发展过程中的一个重要组成部分。
软件工程的理论研究包括软件需求分析、软件设计,构造和测试等方面。
在软件需求分析方面,研究人员提出了一些重要的原则和方法,如需求分析过程中必要的沟通和谈判,领域建模,用例建模和场景建模等方法。
这些方法突出了软件需求分析过程中与客户之间的协作和沟通。
在软件设计方面,研究人员提出了面向对象设计,设计模式,软件框架等方面的理论,这些理论可以帮助软件设计人员更加高效地完成软件设计。
而在软件构造和测试方面,软件工程的理论研究也取得了很大的成果,例如敏捷方法和测试驱动开发(TDD)等,这些方法可以用来解决传统软件开发的一些问题。
总的来说,软件工程中的理论研究可以帮助软件开发人员更好地理解和掌握软件开发过程中的一些规范和方法,提高软件开发的质量和效率。
二、软件工程中的实践研究软件工程中的实践研究主要探究如何在实际开发中应用软件工程理论。
软件工程的实践研究包括软件开发过程的改进、团队协作和项目管理等方面。
在软件开发过程改进方面,研究人员提出了一些改进方法,如精益软件开发和敏捷软件开发方法等。
这些方法都强调在软件开发过程中,需求变更是常态,实践团队需要快速地适应需求变化,提高软件的可维护性。
在团队协作方面,研究人员提出了一些协同开发工具,如版本控制系统和协同开发平台等,这些工具可以有效地提高团队协作和沟通的效率,降低软件开发成本。
在项目管理方面,软件工程的实践研究也得到了很好的发展,人们提出了敏捷式项目管理和项目管理知识区域(PMBOK)等方法,以解决软件项目管理中的一些难题。
软件工程的理论与实践随着科技的不断发展,像计算机软件、互联网等信息技术已经在我们的生活中占据了很重要的地位。
而软件工程就是这一领域里的重要科学。
软件工程是一门将计算机科学中的理论和方法应用到各种软件开发和维护过程中的工程学科。
它是一种追求高质量、高效率的软件生产和维护方法。
软件工程的理论和实践已经成为了计算机科学的一个重要分支,对于实现高质量的软件产品具有非常重要的意义。
软件工程的核心理论包括:软件过程、软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理以及软件工程管理等。
在软件开发的过程中,开发人员需要结合这些理论进行综合地应用,以达到完善的软件开发流程和高效的开发质量。
软件过程是指软件开发的具体流程,包括计划、需求分析、设计、编码、测试、交付、维护和更新。
软件工程师需要根据具体项目的不同需求来制定相应的软件开发计划,并在开发过程中不断地补充完善需求和设计,以保证整个开发过程的高效性和可靠性。
而软件设计则需要根据客户或项目经理的需求,进行设计理念的确认、技术方案选择、数据结构的设计以及模块的设计等过程。
软件构造则是软件编写的过程,它需要比较全面的应用软件工程的技术和方法。
根据需求、设计图纸和开发人员的实际经验,编写出符合标准的程序代码和相关的文档。
而软件测试则是验证软件是否符合需求和标准的一种过程。
软件测试有白盒测试和黑盒测试两种模式。
白盒测试检查的是测试代码的正确性和效率,而黑盒测试则关注的是程序的指令是否符合需求,也就是判断程序是否有不符合开发目标的地方。
软件维护则是对已经开发出来的软件进行维修和更新的过程,将排除现存漏洞或者提高程序性能指导客户满意的新版本。
软件维护是一个非常重要的软件工种环节,它的好坏将会直接影响到软件的质量和用户满意度。
软件配置管理则是对软件开发过程中各种元素(程序代码,设计文档,测试用的数据,加注了注释和中文的代码等)的版本进行控制。
它管理各个版本之间的关系,以便在对软件进行更改的时候,能够确保各个版本的一致性。
第一章1、软件概念:由计算机程序,数据,软件文档组成软件的特点:无法直接观察它的物理形态,只能通过观察他的是实际运行情况来了解他的功能特性和质量等;人们在分析设计开发测试过程以及软件开发项目的管理过程中渗透了大量的人类的脑力劳动;不存在磨损和老化但存在缺陷维护和技术更新的问题;开发运行依赖一定的计算机系统环境;具有可复用性软件的分类:按功能分:系统支撑应用软件;按服务对象:通用定制软件;按规模:大中小型软件;按工作方式:实时分时交互式批处理2、软件危机:是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件的开发与维护过程中出现一系列严重问题的现象。
主要表现:●开发人员开发的软件产品不能完全满足用户的需求;●软件产品的质量难以得到保障;●开发周期开发经费和维护费用很难被准确估计从而给项目的管理带来很多麻烦;●随着技术的更新,用户的扩大,已有的软件产品不能灵活地适应环境的改变;●软件文档不完备并且存在文档内容与软件产品不符的情况。
原因:①软件开发是一项复杂的工程,需要用科学的工程化思想来组织和指导软件开发的各个阶段②没有完善的质量保证体系③软件文档的重要性没有得到软件开发人员和用户的足够重视④从事软件开发的专业人员对这个产业认识不够充分缺乏经验⑤软件独有的特点也给软件的开发和维护带来困难3、软件工程是指应用计算机科学与技术,数学和管理学的原理,运用工程学理论方法和技术,研究和指导软件开发和演化的一门交叉学科。
软件工程的目标:●使软件开发的成本控制在预计的合理范围内;●使软件产品的各项功能和性能能够满足用户需求;●提高软件产品的可靠性;●使生产出来的软件产品易于移植维护升级和使用;●使软件产品的开发周期能够控制在预计的合理时间范围内。
软件工程学科内容:●软件工程原理过程方法模型管理度量环境应用。
软件工程的基本原则:●将软件的生命周期划分为多个阶段,对各个阶段实施严格的项目管理;●坚持阶段评审制度已确保软件产品的质量;●实施严格的产品控制以适应软件规格的变更;●采用现代程序设计技术;开发出来的产品应该能够清楚地被审查;●合理地安排软件开发小组人员并且开发小组的人员要少而精;●不断改进软件工程的实践。
《软件工程——理论与实践》(第2 版)习题答案
简答题
1. 什么是软件危机?其产生的原因是什么?
答:“软件危机”(Software Crisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。
而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不
能适应软件发展的需要。
致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,
而在开发过程中就夭折。
软件危机主要表现在两个方面:
(1) 软件产品质量低劣,甚至开发过程就夭折。
(2) 软件生产率低,不能满足需要。
2. 有哪些主要的软件开发方法?
答:主要的软件开发方法有:结构化开发方法、原型化开发方法和面向对象的开发方法。
3. 软件生存周期各阶段的主要任务是什么?
答:软件生存周期按瀑布模型分为 6 个阶段:
●可行性研究与计划(确定系统的目标和规模,分析项目的可行性);
●需求分析与规格说明(明确系统的规格和要求);
●设计(包括概要设计和详细设计,将系统分解为模块);
●编程(用程序语言实现每个模块,简单容易);
●测试(发现并改正错误,分为模块测试、集成测试和系统联调三级);
●运行维护(扩充功能、纠错等)。
4. 原型化方法的核心是什么?它具有哪些特点?
答:原型化方法的核心是,花费少量代价建立一个可运行的系统,使用户及早获得学
习的机会。
强调软件开发人员与用户的不断交互,通过原型的演进不断适应用户任务改变的需求。
它是一个循环的模型。
速成原型法按以下步骤循环执行:
①快速分析。
②构造原型。
③运行和评价原型。
④修改与改进。
5.简述抽取需求的主要方法,并比较它们的特点。
⑴面谈法。
这是一种重要而直接简单,随时可使用的发现和获取需求的方法。
面谈的
对象主要有用户和领域专家:与用户面谈主要了解和提取需求,与领域专家面谈,是一个
对领域知识的学习和转换过程。
使用该方法时应注意面谈前要充分准备,面谈后认真分析总结,同时注意掌握面谈的人际交流技巧,才能取得好的效果。
⑵问卷法调查法。
通过采用向用户发问卷调查表的方式,达到彻底弄清项目需求的一
种需求获取方法。
这是一种从多个用户处收集需求信息的有效方式,是对面谈法的补充。
⑶会议讨论法。
所谓会议讨论法,是指开发方和用户方召开若干次需求讨论会议,达
到彻底弄清项目需求的一种需求获取方法。
这种方法适合于开发方不清楚项目需求的情况。
⑷原型法。
对于某些试验性、探索性的项目,更是难于得到一个准确、无二义性的需
求。
而原型化方法(Prototyping Method)是获取这一类项目需求的有效方法。
⑸面向用例的方法。
分析建立“用例”的过程,也就是提取需求的过程。
在实际应用中,常常将以上方法进行综合应用。
6. 如何画分层数据流图?有哪些基本原则?
答:总的原则是:至顶而下,逐层分解(画分层数据流图)。
逐层分解的画法可以控制每一层的复杂度。
顶层:将整个系统作为一个加工,描述系统边界(输入与输出)。
中间层:将某个加工分解为一组子加工,其中的子加工还需进一步分解。
底层:由不再进行分解的基本加工组成。
画分层数据流图的基本原则有:①数据守恒与数据封闭原则。
②加工分解的原则。
③子图与父图“平衡”的原则。
④合理使用文件的原则。
7. 胖客户模型和瘦客户模型的区别是什么?它们分别被应用在什么样的场合?
答:在胖客户模型中,客户端应用负责用户界面和应用逻辑部分,因此它的工作比较
繁重。
一般的数据库应用都是属于这种结构。
而与此相反,在瘦客户模型中,服务器负责
了更多的工作,而客户端的工作就变得非常单纯。
浏览器/Web服务器结构就属于瘦客户结构,而且常被称为B/S (Browser/Server)结构。
8.模块分解的最终目的是什么?
答:模块分解的目的是将系统“分而治之”,以降低问题的复杂性,使软件结构清晰,
易阅读、易理解,易于测试和调试,因而也有助于提高软件的可靠性。
9. 模块分解应该遵循什么样的标准?
答:按照“降低块间联系,提高块内联系”的设计总则对模块进行分解。
具体从以下方面
考虑:
(1) 尽可能建立功能模块;
(2) 消除重复功能;
(3) 模块的作用范围与控制范围,即当作用范围为控制范围的子集时,才能获得较低的块间联系;
(4) 模块的大小适当;
(5) 模块的扇入/扇出数不宜太多。
也可以用软件独立性的两个定性指标来度量模块分解的标准:
一是耦合性。
用于描述模块之间联系的紧密程度。
从三个方面衡量块间联系大小:①
方式(直接或间接)②类型(数据型、控制型、混合型)③数量(数量越大,块间联系越
紧密。
二是内聚性。
用于描述模块内部联系的紧密程度。
它是从功能的角度来度量模块内的
联系。
显然,块内联系愈紧,即内聚性愈强,模块独立性愈好。
功能型模块独立性最好。
10.比较面向对象方法与结构化方法的特点,说明为什么面向对象方法比结构化方法更加
优越。
答:结构化方法是以数据流和数据封闭性为基础的,由SA、SD 和SP 三部分构成。
该方法:
①无法实现从问题空间到解空间的直接映射。
开发方法求解过程是先对应用领域(问
题空间)进行分析,建立起问题空间的逻辑模型,再通过一系列复杂的转换和算法,构造。