软件工程期末复习.docx





《软件工程期末复习.docx》由会员分享,可在线阅读,更多相关《软件工程期末复习.docx(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程期末复习软件工程期末复习 一 基本概念 1简述1983年IEEE为软件下的定义。计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据。2简述软件危机的表现有哪些?以及解决软件危机的途径有哪些? 软件危机的主要表现包括: (1) 软件开发进度难以预料,开发成本难以限制,导致超预算、超时; (2) 产品功能难以满意用户需求; (3) 软件产品质量无法保证; (4) 软件缺少适当的文档资料,维护困难; (5) 软件成本超过硬件成本; (6) 软件开发生产率的提高速度跟不上计算机应用普及深化的趋势; 解决软件危机的途径有: 1管理措施:项目管理、配置管理、过程管理、质量限
2、制 2技术措施:开发过程、开发技术与方法和开发工具 3 软件工程的定义 1993年IEEE给出的定义:软件工程是: 系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件; 探讨中提到的途径。” 软件工程是围绕软件开发的一门交叉学科: 软件工程=计算机科学+工程学+管理学 4 软件工程的10个学问领域 软件工程过程 ( Software Engineering Process) 软件工程工具和方法 ( Software Engineering Tools and Methods ) 软件需求(Software Requirement)l 软件设计 (Software
3、 Design ) 软件构造 (Software Construction) 软件测试 (Software Testing) 软件维护 (Software Maintenance) 软件配置管理 (Software Configuration management) 软件工程管理 ( Software Engineering management ) 软件质量 ( Software Quality) 5 软件工程的目标是什么,软件工程的三要素都是什么? 软件工程的目标:软件工程必需以有组织的质量保证为基础,进行全面质量管理,不断地过程改进使软件工程方法走向成熟。软件工程的三要素包括:过程、方法
4、和工具 过程为刚好合理地开发出满意用户需求的计算机软件而进行一系列有组织的活动。过程定义了技术方法的采纳、工程产品(包括模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证和变更的管理。方法为软件开发供应“如何做”的技术,它涵盖了项目安排、需求分析、系统设计、程序实现、测试与维护等一系列的开发活动如何来做。开发方法经验了从面对结构、面对对象、面对组件到面对服务的发展工程。 工具为过程和方法供应自动的或半自动的支持。这些软件工具被集成起来,建立起一个支持软件开发的系统,称之为计算机协助软件工程 (CASE ,Computer Aided Software Engineering)。
5、6 软件工程的七条基本原理 美国闻名的软件工程专家巴利玻姆(Barry Boehm) 提出了软件工程的七条基本原理: 1用分阶段的生命周期安排严格管理; 2坚持进行阶段评审; 3实行严格的产品限制; 4接受现代程序设计技术; 5结果应能清晰地审查; 6开发小组的人员应少而精; 7承认不断改进软件工程实践的必要性。 7 简述软件过程的定义,软件过程又可以分为那几个类型? 软件过程(Software Procedure)是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。 软件过程可概括为基本过程、支持过程和组织过程等三种类型。其中,基本过程包括:获得过程、供应过程、开发过程、
6、运作过程和维护过程。支持过程包括:文档编制过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程和问题解决过程等过程。组织过程包括:管理过程、基础设施过程、改进过程和培训过程。 8 里程碑( Mile Stone )思想 阶段工作的目标进行总结、评审、调整和部署下一个里程碑。目的:合理安排,细化管理“粒度”,降低项目风险。 9 基线思想 基线是指一个(或一组)配置项在项目生命周期的不同时间点的一种状态,各阶段有各阶段的基线:需求基线、设计基线、测试基线等。基线一旦建立后改变须要受限制。 10 简述软件生存周期的概念,说明软件生存周期划分为那几个主要时期?每个时期有包括哪些主要阶段?
7、 软件生存周期是指软件产品从定义到开发、运用和维护,直到最终被弃用的时期,称为生存周期。 生存周期的可划分为安排时期、开发时期和运行时期等三个主要时期。其中安排时期包括问题定义和可行性探讨两个阶段。开发时期包括需求分析、总体设计、具体设计和实现等四个阶段。运行时期的又称为运行和维护阶段。11 简述教材中介绍了那些软件开发模型?这些模型各有什么特点? 教材中重点介绍了瀑布、原型、增量、螺旋四个传统模型和RUP、XP两个现代模型。其中,瀑布模型严格根据生存周期开发软件,每个阶段必需完成规定的、完整、精确的合格文档,前一阶段的输出文档就是后一阶段的输入文档。其主要特点包括:活动间具有依次性和依靠性;
8、推迟实现的观点;质量保证的观点; 快速原型模型法是开发人员在一个基本的需求的基础上快速开发出一个软件原型,然后由用户运用和评价原型、开发人员依据用户看法再修改原型,然后再运用评价再修改、直至将原型进化为最终产品。快速原型模型的特点包括: 做出系统原型,及早向用户展示系统要实现的界面及功能,增加用户的合作信念; 直观化的表达,简单沟通,消退理解上的歧义; 修改集中在前期的原型确认上,较大程度削减后期实施中的返工。 入手快,加快开发进度; 增量模型是一种演化模型,先完成一个系统子集的开发,再按同样的开发步骤增加子集,如此递增下去直至满意全部系统需求。每个增量可按快速原型法进行。增量模型的特点包括:
9、 无须等待获得完整需求就可入手,尽快见到成果,增加双方信念; 分步开发,降低困难性和难度,削减技术风险,并可并行开发; 边开发边投入,可及早发觉问题,削减投资风险; 各个子集是渐渐并入已有的系统中,加入子集不能破坏已构造好的部分,这须要软件具备开放式的体系结构; 适用于需求不完整的软件开发,指的是需求渐渐摸清、逐步完善,并非随意变更,需求变更过大会导致整体性失控。后面要介绍的XP(极限编程)属于该模型。螺旋模型(Spiral model)是一种融合了瀑布模型、快速原型模型和增量模型的演进模型,并引入风险分析机制。适合大型困难的系统开发。螺旋模型特点 包括:多种模型结合的一种演进模型,融合了瀑布
10、模型、快速原型和增量模型的全部特点,融进了循环往复、迭代演进的思想; 增加风险分析,一旦风险成立,原方案应终止、修订,力求风险可控 客户始终参加每个阶段的开发,每个阶段的成果需客户确认,避开错误的积累。 统一过程RUP (Rational Unified Process)是由Rational 公司在推出统一建模语言UML后,推出的一个软件开发框架RUP,称为软件统一开发过程。 12 统一过程RUP定义了那几个主要阶段? l 初始阶段(Inception):主要完成商业需求,确定项目边界。里程碑是生命周期目标(Lifecycle Objective),评价项目基本的生存实力。 l 细化阶段(El
11、aboration):主要完成领域问题分析和软件设计。获得用户需求(功能和非功能需求),建立需求模型;进一步确立体系结构和设计软件结构等工作。里程碑是生命周期结构(Lifecycle Architecture)。 l 构造阶段(Construction):主要完成系统实现、测试,里程碑是初始功能(Initial Operational),产品版本常被称为“beta”版。 l 交付阶段(Transition):重点是确保软件对最终用户是可用的。里程碑:产品发布(Product Release) 13 统一过程RUP工作流 1 6个核心过程工作流(Core Process Workflows) l
12、 商业建模(Business Modeling):弄清项目边界和约束,做出安排。 l 需求(Requirements):描述系统应做什么,开发人员和用户达成需求基线。 l 分析和设计(Analysis Design):将需求转化成计算机可以实现的模型。l 实现(Implementation):用程序设计语言将设计模型组织成可执行的文件、数据。l 测试(Test):是发觉软件中的错误,在试验环境下验证全部的需求是否被正确的实现。l 部署(Deployment):将软件分发给最终用户,安装在真实的环境下,由用户操作运行。2 3个核心支持工作流(Core Supporting Workflows)是
13、对核心过程工作流的配套支持和管理,保障核心过程工作流顺畅、高效运行。l 配置和变更管理:工作文档的管理,在版本更新、需求变更中做到各类文档刚好、同步跟踪,保证各文档内容完整、一样。 l 项目管理(Project Management):资源配置、评估监控、风险限制、安排调整等管理工作,目的效益最大化。 l 环境(Environment):软件开发环境,包括人员、设备、过程和工具,以及各种规范、指导手册和保障措施。 14 简述rup模型中基线与里程碑的概念,二者之间的关系。 基线,是软件文档或源码(或其它产出物)的一个稳定版本,它是进一步开发的基础,也可以理解成为一个阶段的起点并已经制定了相应的
14、工作标准,并且只有经过授权后才能变更这个标准。里程碑,是安排中确定的阶段性工作完成目标,要求提交阶段交付物,作为阶段评估的标准。基线和里程牌的关系:基线是为了建立参照点,是阶段的起点;里程牌是建立阶段性目标,是阶段终点,最终的里程牌可能是一次迭代的终结。15 简述软件安排的目标和主要工作. 软件安排的目标:探讨项目的可行性,探讨合理地运用软件项目开发所需的资源 、经费,驾驭开发进度,限制项目开发过程按此安排进行。主要工作包括:确定项目实施范围、定义递交的工作成果、评估实施过程中主要的风险、制定项目实施的时间安排、成本和预算安排、人力资源安排等。 16软件安排的活动有哪些?这些活动的内容是什么?
15、 软件安排主要活动包括:问题定义,可行性探讨,项目安排。 这些活动的内容是: 问题定义:确定项目实施范围,回答项目“做什么?”的问题。可行性探讨:项目的必要性和可能性。制定项目安排:编制项目开发安排。 17 简述问题定义的目的和主要任务。 问题定义的目的:弄清要计算机解决的根本问题所在(要解决的问题是什么?),确定新系统的作用域,以及项目所需的资源、工期和经费。问题定义的主要任务:编写项目报告提交审查,作为可行性分析的依据。 18 简述可行性分析的目的、任务和内容。 可行性分析的目的:确定项目的必要性和可能性。 可行性分析的任务包括:可行性分析;写可行性探讨报告;编制开发安排。可行性分析的内容
16、包括:技术 、经济和社会三个方面的可行性: 19简述需求分析的目的、必要性和参加角色 需求分析的目的是:弄清用户对系统的细微环节要求,完整、精确、清楚、详细地回答目标系统“做什么”。精确地理解用户提出的软件功能、性能及其环境的要求。需求分析的必要性:用户与开发者的学问领域不同,产生歧义;软件开发失败50%是需求不合理,早期错误易放大。 参加角色:开发方包括分析师、设计师和架构师。用户方包括领域专家、用户和部门负责人。 20 需求开发的任务有哪些? 需求开发的任务包括 需求获得:收集用户对目标软件系统在功能、性能、行为、设计约束等方面的期望。 需求分析:通过符号和文字说明描述系统模型,运用户和开
17、发者间建立共同语言基础,消退理解上的歧义的过程。需求说明:既编写需求文档,也称编写需求规格说明书。需求说明书是需求分析阶段的最终成果,也是需求分析阶段复审的依据;是用户领域专家、软件分析师、软件设计师共同沟通的途径和媒介;是交付给用户文档的一部份; 需求验证:即需求评审。依据需求说明书,分析师、设计师、客户会审文档,对需求的正确性、一样性、完整性、无二义行进行评审、确认。21 需求的层次 软件需求包括三个不同的层次:业务需求、用户需求、功能需求,也包括非功能需求。1业务需求(business requirement) 业务需求是反映企业/组织对软件系统的高层次目标要求,即软件系统的建设目标。
18、业务需求通常是“问题定义”或“可行性探讨”阶段获得的内容;在需求规格说明书中反映在项目背景、系统目标或任务概述的描述中。 获得的主要对象是客户方的高管、专家、部门负责人。 2用户需求(user requirement) 用户需求:用来描述用户运用产品必需要完成的任务; 运用业务领域的术语描述,采纳开发者与用户都能理解的语言和图形表达。 用户需求是经过调查、归纳后双方认同的结果。 获得的主要对象是部门负责人、软件的操作者或称终端用户。 3. 功能需求(functional requirement) 功能需求定义了开发人员必需实现的软件功能,结果在需求规格说明书中;功能需求用软件行业术语表达:通常
19、是需求建模的结果即目标系统的逻辑模型,如结构化的功能模型、数据模型、行为模型,面对对象的类模型等。4. 非功能需求 特性是指一些非功能需求,是满意业务需求的性能要求。如界面的交互性、数据的平安性、数据的事务性、用户的并发性、响应的快速性、操作的实时性、错误与异样的复原性、软件的容错性等等。项目的失败或拖延一般不是在功能上,而恰恰倒是在性能要求上,因为这些性能与软件的体系结构有关,与构成系统的网路与硬件环境等底层技术有关,往往超越一般开发人员的技术实力。 22 需求获得的一般方法 需求获得方法以采访、视察、座谈、对从前的系统版本的测试等。必要时采纳快速原型法。 先集中在运用者对系统的观点上,以收
20、集用户原始资料,数据、工作方式、工作流程、运用要求等为工作起点,深化到部门、车间、班组,做好原始纪录; 然后依据对问题及环境的理解与开发阅历,改正用户需求的模糊、歧义和不一样性要求,解除用户的不合理要求,挖掘用户尚未提出但具有价值的潜在需求,运用户需求逐步精确化、一样化和完全化; 需求获得非一次完成:须要往复进行、逐步深化。 需求获得的内容:写进“需求规格说明书”,确认。 23需求获得的策略 按部就班的策略; 确定优先级:先进行重点的需求调研,有助于识别出重大的风险,并为制定迭代安排供应指导; 不要陷入技术:需求未明确,应回避对技术问题探讨。 挖掘用户需求: “诱导式”就是挖掘用户需求。客户并
21、非IT专业人士,需求的概念是模糊的、笼统的,而且尺度难以把握,预料潜在需求。 区分不必要的需求:客户对有些需求提不出来,自然也会提出一些不必要的需求。 24 简述概要设计和具体设计的内容。 软件设计包括概要设计和具体设计。概要设计又分为体系结构设计和领域问题结构设计。体系结构设计:是支撑和管理软件运行的环境设计。由于现代的软件是处在操作系统、网络、各种服务器共同搭建的环境下运行,并且具有并发、平安、事务等多方面的管理,是软件设计优先考虑的问题。领域问题结构设计:满意需求的软件功能设计,核心所在。将领域问题的分析模型细化成软件结构模型,也就是划分软件的模块结构及确定模块之间的关系。具体设计又分为
22、如下三个部分: l 对模块内部的过程和数据结构进行设计。也就是对模块内进行算法分析和程序设计。l 人机交互界面的详细设计,还有与其它外部系统接口设计。l 完成对数据库的物理设计 概要设计是依据需求确定软件和数据的总体框架;具体设计是进一步精化成软件的算法和数据结构。25 25 简述衡量软件模块独立性的度量标准有哪些? 模块独立性是指模块能够完成独立的功能;模块符合信息隐藏和信息局部化原则;模块间关连和依靠程度尽量小。衡量软件模块独立性的度量标准的指标有取决于模块的内部特征的指标内聚度和取决于模块的外部特征的指标耦合度。内聚度:一个模块内部各个元素间(语句和程序段)彼此的紧密程度的度量。耦合度:
23、指软件结构中各模块间相互联系紧密程度的一种度量。26 简述内聚度的七个等级? 内聚度表示一个模块内部各成分之间彼此结合的紧密程度。内聚度按其凹凸程度可分为七级,高内聚度模块独立性强,设计尽可能提高模块内聚度。 偶然性内聚:是指一个模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系,也很松散。 逻辑性内聚:模块内完成的诸任务逻辑上相关。该类内聚的缺点是执行中要从模块外引入用 作推断的开关量,从而 增加了块间偶合(限制偶合)。 时间性内聚:假如一个模块包含的诸任务必需在同一时间段内执行,则称之为时间性内聚 过程性内聚:模块的过程性内聚度是指模块内成份彼此相关,并且必需按特定的次序在本模
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 期末 复习

限制150内