当前位置:文档之家› 软件工程1

软件工程1

软件工程1
软件工程1

软件是程序、数据及相关文档的集合。

软件工程方法学:方法、工具、过程。

软件工程方法学:传统方法学和面向对象方法学。

软件生命周期:软件定义、开发、维护。

软件定义时期:问题定义、可行性分析、需求分析。

喷泉模型特点:迭代、无缝。

数据流程图是一种图形化技术,描绘信息流和数据从输入移动到输出的过程中所经受的变换。

数据流的基本目的是利用它作为交流信息的工具。数据流的另一个主要用途是作为分析和设计的工具。

数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合,对数据流程图的解释说明。

数据字典包括:数据流分量、数据存储、处理。

数据元素组成数据的方式:顺序、选择、重复、可选。

数据字典是分析阶段的工具。

结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。

快速建立软件原型是最准确、最有效、最强大的需求分析技术。

快速原型应该具备的特性是快速、容易修改。

为了快速构建和修改原型,有3种方法和工具:第四代技术。可重用的软件构件、形式化规格和说明和原型环境。

结构化分析实际上是一种创建模型的活动。

模块独立的概念是模块化、抽象、信息隐藏和局部化概念的直接结果。内聚和耦合度量模块的独立程序。

耦合是对一个软件结构内不同模块之间互联程度的度量。

模块之间耦合程序强烈影响着系统的可理解性、可测试性、可靠性、可维护性。

内聚标志着一个模块内各个元素彼此结合的紧密程度,他是信息隐藏和局部化概念的自然扩展。

层次图很适于在自顶向下设计软件的过程中使用。

总体设计阶段的基本目的是用比较抽象概括的方式确定系统如何完成预定的任务。

层次图和结构图是描绘软件结构设计的常用途径。

自顶向下逐步求精是进行软件结构设计的常用途径。

描述程序处理过程的工具称为过程设计的工具,他们可以分为图形、表格和语言。

程序流程图又称为程序框图。

程序流程图一直是软件设计的主要工具,优点是对控制流程的描绘很直观,便于初学者的掌握。

通常把编码和测试统称为实现。

测试的正确定义是为了发现程序中的错误而执行程序的过程。

Alpha测试是在受控的环境中进行的。

Beta测试由软件最终用户们在一个或多个客户场所进行的。Bate测试时软件在开发者不能控制的环境中的“真实”应用。

错误推测法在很大程度上靠直觉和经验进行的。

调试(也成为纠错)作为成功测试的后果出现。

集成测试是测试和组装软件的系统化技术。

确认测试也称验收测试,目标是验证软件的有效性。

调试途径:①蛮干法(强制性的每句话之后都输出,找到软件错误的原因的最低效的方法)

②回溯法(从后向前找,调试小程序时这种方法有效)③原因排除法(对分查法、归纳法、演绎法)

软件的可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功的运行的概率。

软件的可用性是程序在给定的时间点,按照规格说明书的规定,成功的运行的概率。

所谓的软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。

.4项基本维护工作:①改正性维护②适应性③完善性④预防性。

?为了纠正在使用过程中暴露出错误而进行的改正性维护;为了改进原有的软件而进行的完善性维护;以及为了改进将来的可维护性和可靠性而进行的预防性维护。

?软件的可理解性、可测试性、可修改性的基本因素,软件重用技术是能从根本上提高软件可维护性的重要技术。

面向对象方法学的基本出发点和基本原则是尽可能模拟从人类习惯的思维方式,使用开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程。

变换流;沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。

事物流:数据沿输入通路到达一个处理下,这个处理根据输入数据的类型在若干个动作序列中选出来执行。

?用面向对象方法开发软件,通常需要建立:描述系统数据结构的对象模型,描述系统控制结构的动态模型,描述系统功能的功能模型。

软件危机:指在计算机软件的开发过程中所遇到的一系列严重问题。软件危机主要有一下表现:①对软件成本和进度的估计常常很不准确②用户对“已完成的”软件系统不满意的现象经常发生③软件产品的质量往往靠不住。④软件是常常不可维护的⑤软件通常没有适当的文档资料⑥软件成本在计算机系统总成本中所占的比例逐年上升⑦软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势。

软件工程是指导计算机软件开发和维护一门工程学科。采用工程的概念、原理、技术和方法来开发与维护的软件,把经过实践考验而证明正确的管理技术和当前能够得到最好技术方法结合起来,以经济地开发出高质量的软件并有效地维护。

软件工程本质特性:①软件工程关注于大型程序的构造②软件工程的中心课题是控制复杂性③软件经常变化④开发软件的效率非常重要⑤和谐的合作是开发软件的关键⑥软件必须有效的支持它的用户⑦在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。

软件工程的7条基本原理:①用分阶段的生命周期计划严格管理②坚持进行阶段评审③实行严格的产品控制④采用现代化程序设计技术⑤结果应能清楚地审查⑥开发小组的人员应该少而精⑦承认不断改进软件工程实践的必要性。

软件工程方法学:方法、工具、过程。

软件工程方法学:传统方法学、面向对象方法学。

传统方法学也称为生命周期方法学或结构化范型它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用设当的软件工具或软件工程环境来支持结构化技术的运用。这种方法学把软件的生命周期的全过程依次划分为若干个阶段,然后顺序地完成每一个阶段的任务。

面向对象方法学的出发点和基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可接近认识世界,解决问题的方法与过程,从而使描述问题的问题空间与实现解决俄解空间(也成为求解域)在结构上尽可能一致。

软件生命周期:软件定义、软件开发、运行维护、软件定义、问题定义、可行性研究、需求分析。

软件生命生命周期的基本任务:①问题定义②可行性研究③需求分析④总体设计⑤详细设计⑥编码和单元测试⑦综合测试⑧软件维护。

可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否解决。

可行性研究过程:①复查系统规模和目标②研究目前正在使用的系统③

导出新系统的高层逻辑模型④进一步定义问题⑤导出和评价供选择的解法⑥推荐行动方针⑦草拟开发计划⑧书写文档提交审查

系统流程图是概括地描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件。系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,它时物理数据流程图不是程序流程图。

第1章_软件工程学概述练习题

第一章练习题 一、判断题 1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动。(√) 2..软件是指用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,软件开 发实际上就是编写程序代码。(X) 3.在面向对象的软件开发方法中,每个类都存在其相应的对象,类是对象的实例,对象是 生成类的模板。(X) 4.快速原型模型可以有效地适应用户需求的动态变化。(√) 5.类是关于对象性质的描述,由方法和数据组成。(√) 6.如果把软件开发所需的资源画成一个金字塔,人是最基本的资源。(√) 二、名字解释: 1.软件:完成特定功能的程序+数据结构+文档。 2.软件危机:软件危机指在计算机软件的开发和维护过程中,所遇到的一系列严重问题。 3.软件工程:指导计算机软件开发和维护的一门工程学。 4.软件生命周期:一个软件从定义、开发、使用和维护直至最终被废弃,要经历的漫长时 期。 5.软件过程:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任 务的工作步骤。 6.瀑布模型:是将软件生存各个活动规定为依线性顺序联接的若干阶段的模型。它包括可 行性分析、项目开发计划、需求分析、概要设计、详细设计、编码、测试盒维护。它规定了由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。 7.快速原型模型:是快速建立起来的可以再计算机上运行的程序,它所能完成的功能往往 是最终产品能完成的功能的一个子集。 8.增量模型:是在项目的开发工程中以一系列的增量方式开发系统。增量方式包括增量开 发和增量提交。增量开发是指在项目开发过程中以一定的时间间隔开发部分工作软件; 增量提交是指在开发周期内,以一定的时间间隔增量方式向用户提交工作软件及相应文档。增量开发和增量提交可以同时使用,也可以单独使用。 9.螺旋模型:是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模 型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。 对象。

软件工程概述习题及答案

第一章软件工程概述 一. 填空题 1. 软件的发展过程, , , . 2. 基于软件的工作方式,软件可以划分为, , , . 3. 在软件发展的第四阶段计算机体系结构迅速地从环境转变为环境. 4. 在计算机系统中,软件是, 而硬件是. 5. 软件危机是在软件发展第阶段末期,随着第代计算机和诞而产生。 6. 文档一般可分为面向的文档,面向的文档,面向的文档和面向的文档。 7. 软件生存期若分为三个大的阶段,,. 8. 它是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。 9. 在软件的生存周期开发阶段要经三个步骤, , 。 10. 瀑布模型是以文档为驱动、适合于的软件项目的模型。 11. 螺旋模型将开发过程分为几个螺旋周期,在每个螺旋周期内为,, 和四个步骤。 12. 软件开发的螺旋模型综合了瀑布模型和演化模型的优点,还增加了____。采用螺旋模型时,软件开发沿着螺线自内向外旋转,每转一圈都要对____ 进行识别和分析,并采取相应的对策。螺旋线第一圈的开始点可能是一个____ 。从第二圈开始,一个新产品开发项目开始了,新产品的演化沿着螺旋线进行若干次迭代,一直运转到软件生命期结束。 13. 软件开发模型, , , , , . 14. 软件工程面临的问题有, , , . 15. 面向对象方法学把客观世界的事物或实体都看成对象,把对象作为分析设计的元素,把所有对象都划分成对象类,类可以派生和. 16.基于软件的功能划分可以把软件划分为, ,和。 17.计算机系统发展的早期所形成的一系列错误概念和做法,已经严重地阻碍了计算机软件的开发,甚至有的根本无法维护,只能提前报废,造成大量人力、物力的浪费,从而导致软件危机。为了研究解决的方法,计算机科学技术领域中的一门新兴的学科逐步形成了,这就是。18.软件工程是指导的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。 19.为了开发出低成本高质量的软件产品,软件工程学应遵守以下基本原则:, ,和, 。 20.原型模型是从需求分析开始。软件开发者和用户在一起定义,说明需求,并规划出定义的区域。然后快速设计软件中对用户/客户可见部分的表示。快速设计导致了原形的建造,原形由用户/客户评估,并进一步求精。

(完整版)软件工程第一二三章习题参考答案

第一章软件工程概述 软件是计算机程序及其有关的数据和文档的结合。 软件危机是指在计算机软件开发和维护时所遇到的一系列问题。 软件危机主要包含两方面的问题:一是如何开发软件以满足对软件日益增长的需求;二是如何维护数量不断增长的已有软件。 软件工程是软件开发、运行、维护和引退的系统方法。 软件工程是指导计算机软件开发和维护的工程学科。软件工程采用工程的概念、原理、技术和方法来开发与维护软件。软件工程的目标是实现软件的优质高产。 软件工程学的主要内容是软件开发技术和软件工程管理。 软件开发方法学是编制软件的系统方法,它确定软件开发的各个阶段,规定每一阶段的活动、产品、验收的步骤和完成准则。常用的软件开发方法有结构化方法、面向数据结构方法和面向对象方法等。 习题参考答案: 1.什么是软件危机?为什么会出现软件危机? 答:软件危机是指在计算机的开发和维护过程中所遇到的一系列严重问题。这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。 出现软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。软件不同于硬件,它是计算机系统中逻辑件而不是物理部件。管理和控制软件开发过程相当困难。软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。目前相当多的软件专业人员对软件开发和维护还有不少糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这是使软件问题发展成软件危机的主要原因。总结如下: 1)取得正确的用户需求和正确地描述需求很困难 2)开发人员对需求的正确理解也有困难 3)常常在没有正确理解之前就仓促开始编程 4)软件项目缺乏有效的组织、管理和内部交流 5)缺乏软件开发方法、模型和工具的支持 6)软件维护的困难性 2.假设你是一家软件公司的总工程师,当你把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意你的观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”你怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件已经完成时再引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。 3.什么是软件工程?它有哪些本质特性?怎样用软件工程消除(至少是缓解)软件危机? 答:软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。

第01章软件工程概述

第一章软件工程概述 我们知道,计算机软件是整个计算机系统中具体实现各种功能和操作的核心部分。软件工程即采用工程的概念、原理、技术和方法来开发和维护软件,将工程管理技术成功的经验和思想与具体软件的开发过程、研究技术相结合,形成一整套适合于计算机软件开发的方法、规范和技术。因此,软件工程这门课程,对于从事软件开发研究的专业人员,特别是高层次的管理、分析、开发人员,显得比以往更加重要。 1.1 软件工程的基本概念、特点、分类 1.1.1软件的概念、特点 计算机软件是程序、数据及相关文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列,数据是使程序能正常操纵信息的数据结构,文档是与程序开发、维护和使用有关的图文材料。 要深入进行计算机软件的开发和研究,首先要了解计算机软件的特点和计算机软件开发的规律。计算机软件可归结具有如下几个共同特点: 1、软件是一种逻辑实体,而不是具体的物理实体。因此,它具有抽象性。 2、软件的生产与硬件不同,软件是由开发或工程化而形成的,它没有明显的制造过程。对软件的质量控制,必须立足于软件开发方面。软件成为产品之后,其制造只是简单的拷贝而已。 3、任何机械、电子设备在运行和使用过程中,其失效率大致遵循如图1-1所示的U型曲线(即浴盆曲线)。软件的情况与此不同,它不存在磨损和老化问题。然而,它存在退化问题,设计人员必须多次修改(维护)软件,图1-2(a)给出了软件故障率的理想曲线,图1-2(b) 给出了实际的软件故障率曲线。

4、软件的开发和运行往往受到计算机系统的限制,对计算机系统有着不同程度的依赖性。为了解除这种依赖性,在软件开发中提出了软件移植的问题。 5、迄今为止,软件的开发尚未完全摆脱手工艺的方式。 6、软件本身是复杂的。软件的复杂性可能来自它所反映的实际问题的复杂性,也可能来自程序逻辑结构的复杂性。 7、软件的成本相当昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它投入的成本是比较高的。 8、相当多的软件工作涉及到社会因素。许多软件的开发和运行涉及机构设置、体制运作及管理方式等问题,甚至涉及到人们的观念和心理,这些因素直接影响到项目的成败。 9、从市场上买到的软件,它本身就是一个完整的软件,而不能作为构件再组装成新的程序。但目前已有大量的支持“软件复用”的软件和中间件作为相对独立的构件。

第一讲软件工程概述.doc

第一讲:软件工程概述 软件的定义 软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。 程序是按事先设计的功能和性能要求执行的指令序列 数据是使程序能正常操纵信息的数据结构 文档是与程序开发,维护和使用有关的图文材料 软件危机 软件危机是指计算机软件开发和维护过程中所遇到的一系列严重问题。概括的说即为:能否满足对软件日益增长的需求?能否维护数量日益增长的现有软件? 软件工程的定义 B o e h m:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料 I E E E:软件工程是开发、运行、维护和修复软件的系统方法 F r i t z B a u e r:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法 软件工程要素 三要素:方法、工具和过程(缺乏一个过程,洗厕所的都有方法和工具,但没有一个好的过程)软件工程方法为软件开发提供了“如何做”的技术 软件工具为软件工程方法提供了自动的或半自动的软件支撑环境 软件生命周期(Life Cycle) 软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生命周期 软件生存期的六个步骤,即制定计划、需求分析、设计、实现、测试及运行维护 软件生命周期:制订计划 确定要开发软件系统的总目标 给出功能、性能、可靠性以及接口等方面的要求 完成该软件任务的可行性研究 估计可利用的资源(硬件,软件,人力等)、成本、效益、开发进度 制定出完成开发任务的实施计划,连同可行性研究报告,提交管理部门审查 软件生命周期:需求分析 对用户提出的要求进行分析并给出详细的定义,得到系统逻辑模型,可用数据流程图、数据字典和简要算法加以表示。 编写软件需求说明书或系统功能说明书及初步的系统用户手册 提交管理机构评审 软件生命周期:软件设计 概要设计—把各项需求转换成软件的体系结构。结构中每一组成部分都是意义明确的模块,每个模块都和某些需求相对应。 详细设计—对每个模块要完成的工作进行具体的描述,为源程序编写打下基础。通常用的H I P O (层次图加输入/处理/输出图)或P D L(过程设计语言)描述。 编写设计说明书,提交评审。 软件生命周期:实现编码

习题-1-软件工程概述

第一章习题 一、选择题 1、1968年北大西洋公约组织的计算机科学家召开国际会议,讨论问题,这次会议上正式使用了软件工程这个名词。 (A)系统设计(B)软件危机(C)设计模式(D) 软件开发 2、下面哪些不属于软件工程学的内容是: A、软件开发方法 B、软件环境 C、成本估算 D、人员配置 3、下面哪个途径属于摆脱软件危机的方法:() A、多安排软件人员进行编程 B、招聘编程水平高的人员 C、采用必要的组织管理措施 D、提高计算机硬件的配置 4 下面哪个是开发原型系统的目的: (A)检验设计方案是否正确(B)画出系统的逻辑模型 (C)给出系统的最终用户界面(D)系统是否可行 5、在下列工具与环境中()属于较早期的CASE。 A.基于信息工程的CASE B.人工智能CASE C.集成CASE环境 D.交互编程环境 6、软件复杂性主要体现在() A.数据的复杂性 B.程序的复杂性 C.控制的复杂性 D.问题的复杂性 7、用于设计阶段,考核实现方案是否可行的是()原型。 A.探索型 B.演化型 C.实验型 D.增量型 8、具有风险分析的软件生存周期模型是() A.瀑布模型 B.喷泉模型 C.螺旋模型 D.增量模型 9、软件工程管理的具体内容不包括对_________管理。 A.开发人员B.组织机构 C.过程D.设备 10、在RUP开发过程模型的主要特征是_________。 A.迭代和原型 B.增量和原型 C.迭代和增量 D.瀑布和原型 二、问答题 1.在你平时开发软件时,遇到过类似于“软件危机”的现象吗?你通常是怎么解决的?2.通过对本章内容的学习,你认为软件工程主要研究哪些问题。谈谈你对这些问题的理解。3.假如你的客户需求很模糊,或者他不是很了解软件开发的一些概念,这时,你拟采取什么过程模型?为什么? 4. 假设你开发一个软件,它的功能是把73624.9385这个数开平方,所得到的结果应该精确到小数点后4位,一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种生命周期模型,请说明理由。

软件工程概论复习题(答案)[1]汇编

软件工程概论复习题答案 一、单选题 1.软件工程的纵向分解是把软件开发分为几个(B) A.模块B.阶段C.子系统D.过程 2.McCall软件质量度量模型中属于面向软件产品操作的是(D) A.适应性B.可重用性C.可测试性D.可用性 3.快速原型模型中,用于及早向用户提交一个原型系统的是(D) A.实验型原型B.探索型原型C.提交型原型D.演化型模型4.软件维护中,因重新初始化控制标志或指针而引起的错误是以下哪一项的副作用(B)A.文档B.数据C.编码D.设计 5.软件维护费用高的主要原因是(B) A.生产率高B.生产率低C.人员多D.人员少 6.根据对软件开发机构调查的结果可知,各类维护活动所占的比重是(A)A.完善性占50%,适应性占25%,校正性占21%,其他维护占4% B.完善性占25%,适应性占50%,校正性占21%,其他维护占4% C.完善性占21%,适应性占25%,校正性占50%,其他维护占4% D.完善性占21%,适应性占50%,校正性占25%,其他维护占4% 7.下列属于用白盒技术设计测试用例的是(B) A.错误推测B.逻辑覆盖C.等价类划分D.因果图 8.有助于培养良好的编程风格并且第一个体现了结构化编程思想的程序设计语言的是(A) A.PASCALB.FORTRAN C.DL/1D.C 9.在软件详细设计过程中不采用的工具为(C) A.判定表B.PDL C.数据流图D.IPO图 10.根据输入输出的数据结构产生程序结构的设计方法是(B) A.PARNAS方法B.JACKSON方法C.WIRTH方法D.DIJKSTRA方法11.在软件设计中,为解决一个大而复杂的问题把软件系统划分为一个个完成某一特定的子功能的方法称为(C) A.细化B.结构化C.模块化D.抽象化 12.结构化方法在建立软件系统的结构模块时按照以下哪种方法进行?(B) A.由底向上B.自顶向下C.随机D.回归 13.两个模块之间传递的是同一个数据结构的地址,这种耦合方式称为(C ) A.控制耦合B.公告耦合C.标记耦合D.数据耦合 14.结构化设计是以哪个阶段产生的DFD图为基础,按一定的步骤映射成软件结构?(B)A.可行性分析B.需求分析C.概要设计D.详细设计 15.结构化方法的基本原则是功能的分解和( C ) A.模块化B.信息隐藏C.抽象D.细化 16.数据字典和数据流图共同构成了系统的(B) A.物理模型B.逻辑模型C.原型D.目标模型

相关主题
文本预览
相关文档 最新文档