软件工程开放大学考试复习资料_第1页
软件工程开放大学考试复习资料_第2页
软件工程开放大学考试复习资料_第3页
软件工程开放大学考试复习资料_第4页
软件工程开放大学考试复习资料_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程开放大学考试复习资料前言各位同学,大家好。随着信息技术的飞速发展,软件工程作为一门指导计算机软件开发和维护的工程学科,其重要性日益凸显。本复习资料旨在帮助大家系统梳理软件工程的核心概念、基本原理、主流方法和实践技能,为即将到来的考试做好充分准备。请务必结合教材、课堂笔记以及实际案例进行理解和记忆,注重知识的融会贯通。一、软件工程概述1.1软件的概念与特点软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合。理解软件,我们需要把握其几个主要特点:*逻辑实体而非物理实体:软件看不见摸不着,它以程序和数据的形式存在,通过计算机硬件的运行来体现其功能。*开发成本高,生产周期长:软件开发涉及复杂的脑力劳动,从需求分析到设计、编码、测试,每个阶段都需要大量的人力和时间投入。*不存在磨损和老化问题,但存在退化现象:与硬件不同,软件不会因为使用时间过长而产生物理损耗,但随着用户需求的变化、运行环境的升级以及自身潜在缺陷的暴露,软件需要不断修改和维护,若维护不当,其质量可能会逐渐下降,即出现“软件退化”。*可复用性:好的软件设计和实现可以提炼出可复用的模块或组件,从而提高后续开发的效率和质量。1.2软件工程的定义与目标软件工程的定义多种多样,但核心思想是一致的:软件工程是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化方法应用于软件。软件工程的目标可以概括为“高质量、高效率、高可靠性地开发出满足用户需求的软件产品”。具体来说,包括:*达到用户需求:软件产品必须准确地实现用户所期望的功能和性能。*保证软件质量:软件应具有正确性、可靠性、易用性、效率、可维护性和可扩展性等质量特性。*控制开发成本:在满足需求和质量的前提下,尽可能降低开发和维护的成本。*按时交付产品:按照预定的项目计划,准时将软件产品交付给用户。1.3软件工程的基本原理虽然软件工程的具体方法和工具在不断发展,但一些基本原理是相对稳定和普适的,例如:*用分阶段的生命周期计划严格管理:将软件生命周期划分为若干阶段,每个阶段都有明确的任务和交付物,并进行严格的评审和管理。*坚持进行阶段评审:在软件开发的每个阶段结束时进行正式的评审,以便尽早发现和纠正错误,减少后期修改的成本。*实行严格的产品控制:在软件开发过程中,需求可能会发生变化,必须通过规范的变更控制流程来管理这些变化,以保证软件产品的稳定性。*采用现代程序设计技术:积极采用经过实践验证的优秀设计方法和编程技术,如面向对象、模块化、组件化等。*结果应能清楚地审查:软件开发过程中的各种文档和代码都应清晰、规范,便于审查和理解。*开发小组的人员应该少而精:小而精干的团队更容易沟通协作,提高工作效率。*承认不断改进软件工程实践的必要性:软件工程是一个不断发展的学科,从业人员需要持续学习和实践新的理论、方法和工具。1.4软件危机与软件工程的诞生回顾软件工程的发展历程,软件危机是催生软件工程学科的直接原因。软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题,主要表现为:*开发进度难以控制,经常出现延期。*软件成本不断攀升,超出预算。*软件质量低下,缺陷和错误较多,可靠性差。*软件维护困难,维护成本高昂。*用户对已完成的软件产品不满意。为解决软件危机,1968年在德国召开的“NATO软件工程会议”上,首次提出了“软件工程”的概念,标志着软件工程学科的正式诞生。其目的就是倡导以工程化的思想和方法来组织软件生产,克服软件危机。复习要点与常见题型提示*概念辨析:软件与程序的区别与联系;软件工程的核心思想。*简答题:简述软件的特点;简述软件工程的目标;什么是软件危机?其主要表现有哪些?*理解题:为什么说软件工程是一门交叉学科?(结合计算机科学、数学、管理学、心理学等)二、软件生命周期与开发模型2.1软件生命周期(SoftwareLifeCycle,SLC)软件生命周期是指软件产品从提出、实现、使用维护到停止使用退役的整个过程。通常,我们将软件生命周期划分为若干个阶段,每个阶段都有明确的任务和活动。典型的软件生命周期包括:*问题定义与可行性研究:确定“做什么”,即明确软件的开发目标和范围,并从技术、经济、操作、法律等方面分析项目的可行性。*需求分析:深入理解用户需求,确定软件必须具备哪些功能、性能、接口等,并编写《需求规格说明书》。*软件设计:将需求转化为软件的具体设计方案,包括概要设计(系统架构、模块划分)和详细设计(模块内部实现细节)。*编码(实现):根据详细设计说明书,选择合适的编程语言将设计方案转化为可执行的程序代码。*软件测试:通过有计划、有步骤地执行软件,发现软件中的错误和缺陷,确保软件质量。*软件运行与维护:将测试通过的软件部署到用户环境中运行,并在运行过程中对软件进行必要的修改和完善,以解决使用中出现的问题、适应新的需求或环境变化。2.2常见的软件过程模型软件过程模型是对软件生命周期内各种活动如何组织的一种结构化描述。它为软件开发提供了一个框架,定义了开发过程中应完成的主要活动、任务、阶段以及它们之间的顺序和相互关系。2.2.1瀑布模型(WaterfallModel)瀑布模型是最早出现的、也是最经典的软件过程模型。它将软件生命周期的各个阶段顺序连接,如同瀑布流水,逐级下落。*阶段:通常包括:计划(可行性研究与项目计划)、需求分析、概要设计、详细设计、编码、测试、运行与维护。*特点:*线性化开发,阶段分明,各阶段任务明确。*强调文档的完整性和规范性,每个阶段结束时都需要提交正式的文档。*上一阶段的输出是下一阶段的输入,阶段间的评审至关重要。*优点:简单直观,易于理解和掌握;过程管理比较容易,阶段划分清晰。*缺点:灵活性差,难以适应需求的变化;开发周期长,用户在开发后期才能看到产品雏形;风险控制能力较弱,早期的错误可能在后期才被发现,修改成本高。*适用场景:需求明确且稳定,变更较少的项目;规模不大,技术成熟的项目。2.2.2快速原型模型(RapidPrototypeModel)快速原型模型的核心思想是:在获取初步需求后,快速构建一个能够反映用户主要需求的原型系统,让用户试用并提出反馈意见,开发人员根据反馈不断修改和完善原型,直至用户满意后,再据此开发最终产品。*特点:*强调用户参与和反馈。*原型是“可抛弃的”或“演化的”。“可抛弃型”原型仅用于需求验证,之后会重新开发;“演化型”原型则会逐步演化为最终产品。*优点:能快速响应用户需求,提高用户满意度;降低需求理解偏差带来的风险;缩短开发周期,提高开发效率。*缺点:如果原型被误认为是最终产品,可能导致用户对质量产生不切实际的期望;快速开发原型可能忽略某些重要的设计约束和质量属性;若原型迭代次数过多,可能导致项目失控。*适用场景:需求不明确或需求动态变化的项目;探索性、创新性较强的项目。2.2.3增量模型(IncrementalModel)增量模型将软件产品分解为一系列增量构件,每个构件都实现一部分用户需求。先开发核心构件,然后逐步增加功能构件,分批次提交给用户。*特点:*软件产品是逐步构建和交付的。*每个增量的开发过程可以采用瀑布或其他模型。*用户可以尽早使用部分功能,获取价值。*优点:能快速交付可用的核心产品,用户反馈及时;风险分散,每个增量的开发和维护相对独立;有利于资源的合理分配和管理。*缺点:各个增量构件之间的接口设计较为复杂;需要良好的模块划分和封装性;如果增量划分不合理,可能导致后期增量开发困难。*适用场景:需求可以分阶段实现的大型复杂项目;资源有限,需要分阶段投入的项目。2.2.4螺旋模型(SpiralModel)螺旋模型综合了瀑布模型的系统性、阶段性和原型模型的迭代性、风险驱动特性,尤其强调风险分析。它将开发过程描绘成一个不断旋转的螺旋,每个螺旋周期代表一个开发阶段,每个阶段都包括:目标设定、风险评估与规避、开发与验证、计划调整。*特点:*以风险为导向,每个周期都进行风险评估和缓解。*迭代式开发,每一圈螺旋都可能产生一个可交付的中间产品。*随着螺旋的推进,项目规模和复杂度不断增加。*优点:风险控制能力强,能及早发现和处理潜在风险;灵活性高,可根据风险评估结果调整开发策略;适用于大型复杂项目的开发。*缺点:过程复杂,对开发人员的风险评估能力要求高;管理成本高,需要大量的文档支持;周期较长。*适用场景:内部开发的大型软件项目;高风险、高投入的项目;需求不明确且技术难度大的项目。2.2.5其他模型简介除上述模型外,还有许多其他模型,如:*喷泉模型:典型的面向对象开发模型,体现了迭代和无缝的特性,各个阶段没有明显的界限,如同喷泉中的水,循环往复。*敏捷开发模型:(后续章节详述)强调快速响应变化、客户合作、迭代增量开发和可工作软件的交付。如Scrum、XP(极限编程)等。复习要点与常见题型提示*概念理解:软件生命周期各阶段的主要任务;各种过程模型的核心思想和图形表示。*比较分析题:对比瀑布模型、原型模型、增量模型、螺旋模型的优缺点及适用场景。这是考试的重点。*应用题:根据给定的项目特点(如需求明确性、项目规模、技术风险等),选择合适的软件过程模型,并说明理由。三、软件需求分析需求分析是软件开发过程中至关重要的一步,它直接关系到软件产品的成败。“做正确的事”比“正确地做事”更为关键。3.1需求分析的任务与目标需求分析的基本任务是准确地定义新系统的目标,回答“系统必须做什么?”的问题,并生成完整、准确、清晰、具体的需求规格说明书。其主要目标包括:*获取用户需求:通过各种方法(访谈、问卷、观察、原型等)全面、准确地收集用户对软件的功能、性能、安全、界面等方面的期望和要求。*分析与建模需求:对收集到的原始需求进行分析、整理、归纳、抽象,去除模糊、冲突和冗余的部分,并使用适当的建模工具(如数据流图、用例图、状态图等)进行形式化或半形式化描述。*编写需求规格说明书(SRS):将经过分析和建模的需求文档化,形成规范的需求规格说明书,作为后续设计、编码、测试和验收的依据。*需求验证:确保需求规格说明书准确、完整地反映了用户的真实意图,并且是可实现、可测试、可维护的。需求验证通常通过评审、原型演示等方式进行。3.2需求的分类软件需求可以从不同角度进行分类:*功能需求:描述软件必须完成的具体功能,即“做什么”。例如,用户登录、数据查询、订单处理等。*非功能需求:描述软件在功能实现时应满足的质量特性和约束条件,即“做得怎么样”。常见的非功能需求包括:*性能需求:响应时间、吞吐量、并发用户数等。*可靠性需求:软件在规定条件下和规定时间内完成规定功能的能力,如平均无故障时间(MTBF)。*可用性需求:用户学习、操作和理解软件的难易程度。*安全性需求:保护软件和数据不被未授权访问、使用、修改或破坏的能力。*可维护性需求:软件被修改(纠错、改进或适应环境变化)的难易程度。*兼容性需求:软件与其他系统或组件的兼容能力。*接口需求:描述软件与外部系统(如硬件设备、其他软件、用户)之间的交互方式和协议。*数据需求:描述软件需要处理的数据类型、格式、数据量、数据来源和去向等。3.3需求获取的方法需求获取是需求分析的基础,常用的方法有:*用户访谈:开发人员与用户进行直接、面对面的交流。可以是结构化访谈(按预定问题提问)或非结构化访谈(自由讨论)。*用户问卷:通过设计标准化的问卷,向大量用户收集需求信息,适用于需求初步调研和统计分析。*现场观察:开发人员深入用户工作现场,观察用户的实际操作流程和工作习惯,发现潜在需求。*原型法:快速构建原型,让用户在试用中提出意见和建议。*会议讨论:组织用户代表、开发团队、领域专家等进行集中讨论,共同梳理需求。例如,联合应用开发(JAD)会议。*文档分析:研究现有的相关文档,如用户手册、业务流程说明书、旧系统的需求文档等,从中提取有用信息。在实际项目中,往往需要综合运用多种需求获取方法,以确保需求的全面性和准确性。3.4需求分析的常用工具与技术为了更好地理解和表达需求,需要借助一些分析工具和技术:*结构化分析方法(SA):一种面向数据流的需求分析方法,通过自顶向下、逐层分解的方式,用图形和文字工具来描述系统。其核心工具包括:*数据流图(DFD):从数据传递和处理的角度,以图形方式描述系统的逻辑功能。它由外部实体、处理(加工)、数据流和数据存储四种基本符号组成。*数据字典(DD):对DFD中出现的所有数据元素、数据结构、数据流、数据存储和处理逻辑进行详细定义和说明,是DFD的补充和解释。*判定表与判定树:用于描述复杂的条件逻辑和相应的动作。*面向对象分析方法(OOA):一种以对象为中心,以类和继承为构造机制

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论