版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程期末复习资料 考试时间:2015-06-29(18周 星期一13:30-15:30考试地点:中心 205座位号:10监考:丁家满 王晓东考试题型第一部分 选择题(20分,共 10题第二部分 判断题(10分,共 10题第三部分 简答题(40分,共 5题第四部分 设计题(30分,共 1题学院:信息工程与自动化学院专业班级:计科 122班姓名:邹华宇学号:2012104052042015年 6月 27日考点一 软件及其特点1.软件的定义(软件=程序+数据+文档丁家满:软件是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。 姜瑛:计算机软件指计算机系统中的程序及其文档。我:软件是计
2、算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关 文档的完整集合 。 软件是一种产品, 包含下面三方面的含义:在运行中能够提供所希望的功 能和性能的指令集(即程序;使程序能够正确运行的数据结构;描述程序开发、维护和使。 编写程序只是软件开发过程数据 中的一个阶段,一般来说,其工作量仅是软件开发全部工作量的 10%-20%。2.软件的特点(课本 P2软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算; 软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但 其维护的工作量大;软件的使用没有硬件那样的机械磨损和老化问题。丁家满:软件的本质特
3、性:复杂性 :软件在规模上可能比任何由人类创造的其他实体都要复杂, 复杂性是软件的本 质特性。软件的复杂性是必要属性,开发问题也会增加复杂性;一致性 :软件必须遵从人为的惯例并适应已有的技术和系统。 软件需要随接口的不同而 改变, 随时间的推移而变化, 而这些变化是不同的人设计的结果。 许多复杂性来自保持与其 他接口的一致,对软件的任何再设计,都无法简化这些复杂特性;可变性 :软件产品扎根于文化的母体中,如各种应用、用户、自然及社会规律、计算机 硬件等, 后者持续不断地变化着, 这些变化无情地强迫着软件随之变化。 所有成功的软件都 会发生变更。 人们总是认为软件是容易修改的, 但忽视了修改所带
4、来的副作用, 不断的修改 最终导致软件的退化;不可见性 :软件是不可见的和无法可视化的,软件的客观存在不具有空间的形体特征, 定义 “需要做什么” 成为软件开发的根本问题。 人们一直试图使用不同的技术进行软件可视 化(控制流程、数据流、依赖关系、UML但这些技术仍然无法给出准确的、完整的描述, 软件仍然保持着无法可视化的固有特性, 从而剥夺了一些具有强大功能的概念工具的构造思路。这种缺憾不仅限制了个人的设计过程,也严重地阻碍了相互之间的交流。我:抽象性 :逻辑实体。 可记录。 看不到, 开发过程可视化程度低, 开发结果难以直观表示; 可复制性 :与开发成本相比,复制成本很低;无折旧 :软件不会
5、被用坏、不存在磨损和消耗,但会过时;受硬件制约 :软件的开发和运行常受到计算机硬件的限制, 对计算机硬件有着不同程度 的依赖性;未完全摆脱手工工艺 :是脑力创造的结果,大部分是“定做”;开发费用高 :软件生产成本集中在研制阶段,生产与维护费用不断增加。3.(补充软件分类丁家满:按适用范围分:通用软件(产品软件:通用软件是由软件开发组织开发,面向市场用户公开销售 的独立运行系统,有时也被称为套装软件。举例:操作系统、数据库系统、字处理软件等。 定制软件(项目软件:定制软件是由某个特定客户委托,软件开发组织在合同的 约束下开发的软件。举例:企业 ERP 系统、卫星控制系统、空中交通指挥系统等姜瑛:
6、按软件功能分:系统软件:位于计算机系统中最靠近硬件的一层, 其它软件一般都通过系统软件发 挥作用,它与具体的应用领域无关。如操作系统、编译程序等。支持软件:支持软件的开发和维护的软件。如数据库管理系统、网络软件、软件开 发环境等。应用软件:特定应用领域专用的软件。如实时软件、嵌入式软件、科学和工程计算 软件、事务处理软件、人工智能软件等。姜瑛:按工作方式分:(1实时软件处理;(2分时软件;(3交互式软件;(4 批处理软件;(5嵌入式软件。4.(补充软件的发展过程(120世纪 50年代60年代初:程序设计阶段特点:个性化;只有程序清单;以硬件发展为主。硬件通用,软件专用;程序规模小, 编写者和使
7、用者为同一人(同组人。(220世纪 60年代初70年代初:程序系统阶段特点:作坊式;软件数量剧增;软件维护费用惊人;提出“软件工厂”概念,出现软件 危机。(370年代90年代:软件工程阶段软件开发成为一门新兴的工程学科软件工程。软件成本剧增,硬件技术日趋成熟。 (490年代至今:现代信息技术飞速发展(并行计算机处理、三层处理模式、数据仓 库、多媒体技术、网络技术、电子商务等称为:网络时代。考点二 软件危机丁家满:软件危机出现于 20世纪 60年代末。 软件危机是指在计算机软件的开发和维护 过程中遇到的一系列严重问题。软件开发的成本和进度难以准确估计,延迟交付甚至取消项目的现象屡见不鲜; 软件存
8、在着错误多、性能低、不可靠、不安全等质量问题;软件维护极其困难,而且很难适应不断变化的用户需求和使用环境。姜瑛:许多软件项目不能满足客户的要求,许多软件项目超出预算和时间安排。我:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题 。 主要表现:成本高;软件质量得不到保证;进度难以控制,维护非常困难。主要是两个问题:(1 如何开发软件, 以满足对软件的不断增长、 日趋复杂的需求; (2 如何维护数量不断膨胀的已有软件。产生原因:逻辑产品,不同于物理产品;复杂性高;规模大;影响软件生产率和质量的 因素比较复杂(人员的能力和水平,团队合作;缺乏有力的方法学和工具的支持。考点三 软件工
9、程1.软件工程的定义(课本 P5(重点,预测简答题(工程化思想运用到软件开发软件工程=技术+管理丁家满:IEEE:软件工程是:(1将系统性的、规范化的、可定量的方法应用于软件 的开发、运行和维护,即工程化应用到软件上;(2对(1中所述方法的研究。姜瑛:计算机科学技术百科全书:软件工程是:应用计算机科学、数学及管理科学等原 理, 开发软件的工程。 软件工程借鉴传统工程的原则、 方法, 以提高质量、 降低成本为目的。 我:软件工程是用科学知识、技术、原理来定义、开发和维护软件的一门学科。概括地说,软件工程是知道软件开发和维护的一门工程学科。其根本要求是:采用工程的概念、 原理、技术和方法来开发与维
10、护软件,把好的管理技术和开发技术结合起来,追求可靠性、 可维护性、满足用户需求、提高开发效率 。用工程学科中的观点进行费用估算、进度控制、 制定计划和方案; 用管理科学中的方法和原理进行软件生产过程的管理; 用数学的方法建立 软件开发中的各种模型和算法。选择题预测:针对“软件危机”1968年 NATO 会议上提出了(软件工程,希望用工程 化的方法来进行软件的开发。简答题:什么是软件工程?软件生存周期分哪几个阶段?分别简述各个阶段的任务。2.(补充软件工程的发展(1传统软件工程管理:希望实现软件开发过程的工程化。 这方面最为著名的成果就是提出了大家都很熟 悉的“瀑布式”生命周期模型。它是在 60
11、年代末“软件危机”后出现的第一个生命周期模 型。如下所示:分析设计编码测试维护后来,又有人针对该模型的不足,提出了快速原型法、螺旋模型、喷泉模型等对“瀑布 式”生命周期模型进行补充。现在,它们在软件开发的实践中被广泛采用。方法:侧重与对软件开发过程中分析、设计的方法的研究。这方面的重要成果就是在 70年代风靡一时的结构化开发方法,即 PO(面向过程的开发或结构化方法以及结构化的 分析、设计和相应的测试方法。(2现代软件工程管理:从企业管理的角度提出的软件过程管理。 即关注于软件生存周期中所实施的一系 列活动并通过过程度量、 过程评价和过程改进等涉及对所建立的软件过程及其实例进行不断 优化的活动
12、使得软件过程循环往复、 螺旋上升式的发展。 其中最著名的软件过程成熟度模型 是美国卡内基梅隆大学软件工程研究所建立的 CMM(CapabiliMaturity Model,即能力 成熟度模型。方法:面向对象的分析、设计方法(OOA和 OOD的出现使传统的开发方法发生了翻天 地覆的变化。随之而来的是面向对象建模语言(以 UML 为代表、软件复用、基于组件的软 件开发等新的方法和领域。软件工程包括两个方面的内容:软件开发技术:软件开发方法学、软件工具和软件工程环境。软件管理技术:包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划 等。软件工程技术有两个明显的特点:第一,强调规范化。第二
13、,强调文档化。3.(补充软件工程的框架(课本 P6姜瑛:软件工程的框架可概括为 。:生产具有 以及 的产品。过程 :生产一个最终满足需求且达到工程目标的软件产品所需要的步骤。原则 :选取适宜的开发模型;采用合适的设计方法;提供高质量的工程支持;重视软件 工程的管理。4.软件工程的三要素(重点软件工程的关注焦点:软件质量与软件成本。判断题预测:运行正确的软件就是高质量的软件。 解析:软件除了提供用户所需的功能 以外,还应该具有一系列反映质量的属性,包括可维护性、可依赖性、有效性和可用性等。过程:支持软件生命周期的所有活动;方法:为软件开发过程提供“如何做”的技术;工具:为软件开发方法提供自动的或
14、半自动的软件支撑环境。软件工程是目标,软件过程是步骤,方法和工具是辅助。5.(补充软件生存周期软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生 存周期。(从无到有,再到丢弃软件生存周期大体可分为如下几个活动:计算机系统工程、需求分析、软件设计、编 考点四 软件过程的定义(课本 P8(重点丁家满:软件过程是指开发软件产品的一组活动及其结果 。软件过程的四个基本活动规格说明:定义软件功能以及对其使用的限制;软件开发:设计和实现满足规格说明的软件;软件确认:验证软件以保证能够满足客户的要求;软件演化:改进软件以适应不断变化的需求。姜瑛:软件过程指软件生存周期中的一系列相关
15、的过程。 过程是活动的集合, 活动是任 务的集合。它规定了完成各项任务的步骤。软件过程有三层含义:个体含义:即指软件产品或系统在生存周期中的某一类活动的集合,如软件开发过程, 软件管理过程等。整体含义:即指软件产品或系统在所有上述含义下的软件过程的总体。工程含义:即指解决软件过程的工程, 它应用软件工程的原则、 方法来构造软件过程模 型, 并结合软件产品的具体要求进行实例化, 以及在用户环境下的运作, 以此进一步提高软 件生产率,降低成本。考点五 过程模型各自的特点及应用范围(课本 P16-P21(重点,预测选择题丁家满:对实际过程的抽象描述。包括软件过程的活动、软件产品以及参与人员的不同角色
16、。常见的软件过程模型:瀑布模型;快速原型模型;增量模型;形式化方法模型;基于组 件的开发模型。姜瑛:软件开发模型是描述软件开发过程中各种活动如何执行的模型。 因此又称为软件 过程模型或软件生存周期模型。典型的软件过程模型有:瀑布模型、演化模型(增量模型、原型模型、螺旋模型、喷 泉模型、基于构件的开发模型、形式方法模型。(1瀑布模型(需求不能变化,比较稳定,缺乏灵活性(试图一次就获得正确产品,太过理想化(需求是可变的,需求是模糊的,用户与开发者难于沟通需求定义与分析软件设计软件实现软件测试软件运行与维护开发阶段严格按照线性方式进行, 每一个阶段具有相关的里程碑和交付产品, 每一个阶段需要确认和验
17、证,强调文档的作用。适用:在开发的早期阶段软件需求被完整确定。挑战:实际的项目开发很少是线性的过程,客户很难明确地描述软件需求。 缺点:各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;缺 乏灵活性, 开发过程中很难响应客户的变更要求; 早期的错误可能要等到开发后期的测试阶 段才能发现,进而带来严重的后果,维护代价大。我:特点:瀑布模型具有 阶段任务结 束形成文档,并审核后方能进行设计任务,将程序的实现推迟进行。 文档评审,避免错误积累与放大效应。 致命缺点是只有做出精确的需求分析,才能取得预期的结果 。由于各种客观、主观的 原因,需求分析往往不很精确,常常给日后的开发带来隐
18、患。(2快速原型模型(需求不好获取丁家满:快速原型需要迅速建造一个可以运行的软件原型, 以便理解和澄清问题, 使开发人员与用户达成共识。(快速开发工具,循环,低成本 目的:减少开发风险和需求不确定性。缺点:原型系统的内部结构可能不好; 开发人员需要掌握建立快速原型开发技术和工具。 适用:小型或中等规模的交互式系统;大型系统的某些部分,例如用户界面;生命周期 较短的系统。(3增量模型(需求经常变化的软件开发基本思想:要开发一个大的软件系统, 先开发其中的一个核心模块或子系统, 然后再开发其他模块或子系统,这样一个个的增加,就像搭积木一样,直到整个系统开发完毕为止。采用瀑布模型或快速原型模型开发软
19、件, 目标都是一次就把一个满足所有需求的产品提 交给用户。增量模型则与之相反,它分批地逐步向用户提交产品非整体性开发。 增量模型强调每一个增量都发布一个可运行的产品 。优点:可以同时进行多个部件的开发, 效率高; 整个产品被分解成若干个构件逐步交付, 用户可以不断地看到所开发软件的可运行中间版本; 将早期增量作为原型有助于明确后期增 量的需求;降低开发风险;重要功能被首先交付,从而使其得到最多的测试。分阶段地交付 产品不需要大的资金支出。需求经常变化,增量模型的灵活性使其具有更加优越的适用性。缺点:需要软件具备开放式的体系结构, 方便构件的加入; 需求难以在增量实现之前详 细定义, 因此增量与
20、需求的准确映射以及所有增量的有效集成可能会比较困难; 容易退化为 边做边改方式,使软件过程的控制失去整体性。我:特点:。软件在该模型中是“逐渐”开发出来的,开发出 一部分, 向用户展示一部分, 让用户及早看到部分软件, 及早发现问题。 或者先开发一个 “原 型”软件,完成部分主要功能,展示给用户征求意见,然后逐步完善,最终后的满意的软件 产品。(迭代的思路该模型具有较大的灵活性, 适合于软件需求不明确、 设计方案有一定风险的软件项目 。 缺点:要求软件具有开放的结构 是这种模型固有的困难,可能会导致 设计差、效率低、 维护难 。(4螺旋模型(强调风险分析(瀑布模型 +快速原型 +风险分析该模型
21、将开发划分为制定计划(确定软件目标, 选定实施方案,弄清项目开发的限制 、 风险分析(分析所选方案,考虑如何识别和消除风险、实施工程(实施软件开发和客户 评估(评价开发工作,提出修正建议四类活动。 每个阶段之前:确定目标,可供选择的办法及其限制条件;风险分析。 每个阶段之后:评估,计划下一阶段。 丁家满:优点:关注软件的重用;关注早期错误的消除;将质量目标放在首位;将开发 阶段与维护阶段结合在一起。 缺点:契约开发通常需要事先指定过程模型和发布产品;需要风险评估的经验。我:优点:允许并且鼓励用户反馈信息;在项目早期就消除严重的曲解;通过测试和质 量保证,作出客观的评估;在项目早期就发现不一致的
22、问题;在第一次迭代就开始测试;在 早期就找出并关注风险。缺点:需要具有相当丰富的风险评估经验和专门知识, 在风险较大的项目开发中, 如果 未能够及时标识风险, 势必造成重大损失。 并非所有的风险都能规避, 要求用户接受和相信 这种风险分析, 并做出相关反应是不容易的。 风险驱动既是优点也是缺点, 螺旋模型仅适合 大型软件,如果风险分析大大影响利润时,进行风险分析便毫无意义。 (5喷泉模型(支持面向对象开发的模型(补充软件开发方法软件开发方法可分为两大类:(1面向过程的开发方法:结构化开发方法;面向数据结构的开发方法;原型化开发方法。(2面向对象的开发方法(补充软件开发工具与环境在软件工程活动中
23、, 软件工程师和管理员按照软件工程的方法和原则, 借助于计算机及 其软件工具的帮助,开发、维护、管理软件产品的过程,称为计算机辅助软件工程(CASE, Computer Aided Software Engineering。为支持软件开发、维护、管理而研制的计算机程序系统称为软件工具 。软件工具种类繁多,涉及面广,如编辑、编译、正文格式处理,静态分析、动态跟踪、 需求分析、设计分析、测试、模拟和图形交互等。集成型开发环境是一种把支持多种软件开发方法和过程模型的软件工具集成到一起的 软件开发环境。集成型开发环境由环境集成机制和工具集组成。考点六 系统工程(课本 P28(明确系统整体要求系统工程的
24、主要任务:(1识别用户的要求;(2系统建模和模拟;(3成本估算 及进度安排;(4可行性分析;(5生成系统规格说明。1.(补充基于计算机的系统所谓基于计算机的系统是指:通过处理信息来完成某些预定义目标而组织在一起的元素 的集合。组成基于计算机系统的元素主要有:软件、硬件、人员、数据库、文档和规程。 软件:指计算机程序、数据结构和相关的工作产品,它们被用于实现所需的逻辑方法、 规程或控制硬件:指提供计算能力的电子设备、使能数据流动的互连设备(如网络交换器、电信设 备和提供外部世界功能的电子机械设备(如传感器、马达等人员:指硬件和软件的用户和操作者数据库:指通过软件访问并持久存储的大型的有组织的信息
25、集合文档:指描绘系统的使用和/或操作的描述性信息(如模型、规格说明、硬复制手册、 联机帮助文件、Web 站点规程:指定义每个系统元素或其外部相关流程的具体使用步骤2.可行性分析(课本 P29开发一个基于计算机的系统通常都受到资源(人力、财力、设备等和时间上的限制, 可行性分析主要从经济、 技术、 法律等方面分析所给出的解决方案是否可行, 能否在规定的 资源和时间的约束下完成。可行性分析的 。 可行性分析的 含义 :按照各种有效的方法和工作程序, 对拟建工程项目在技术上的先进 性、适用性,经济上的合理性、盈利性,以及项目的实施等方面进行深入的系统分析。 可行性分析的 目的 :要用最小的代价在最短
26、的时间内确定该项目是否值得去解决,是否 存在可行的解决方案。(1经济可行性分析经济可行性主要进行成本效益分析,从经济角度,确定系统是否值得开发。(2技术可行性分析技术可行性主要根据系统的功能、 性能、 约束条件等, 分析在现有资源和技术条件下系 统能否实现。技术可行性分析通常包括风险分析、资源分析和技术分析。风险分析:分析在给定的约束条件下设计和实现系统的风险。 风险分析的 目的 是找 出风险,评价风险的大小,并有效地控制和缓解风险。资源分析:论证是否具备系统开发所需的各类人员、 软件、 硬件等资源和相应的工 作环境。技术分析:分析当前的科学技术是否支持系统开发的各项活动。 技术可行性分析时
27、通常需进行系统建模,必要时可建造原型和进行系统模拟。(3法律可行性分析研究系统开发过程中可能涉及到的合同、侵权、责任以及各种与法律相抵触的问题 可行性分析的结论:可以立即开始进行;需要推迟到某些条件落实之后才能开始进行; 需要对开发目标进行某些修改之后才能开始进行;因为某种原因不能进行。简答题:简述可行性分析的任务。考点七 需求分析(课本 P33(做什么:whatto do本书将软件需求工程细分为:需求获取、需求分析与协商、系统建模、需求规约、需求 验证和需求管理六个阶段。1.需求分析的定义(重点 需求分析是对收集到的需求进行提炼、分析和认真审查,以确保所有的项目相关人员 都明白其含义,并找出
28、其中的错误、遗漏或其它不足的地方,形成完整的分析模型 。 需求分析的核心在于建立分析模型。模型是现实世界某些重要方面的表示,是一项经过验证且被广为接受的工程技术。 分析模型详细定义了系统需求而没有局限于具体技术。 常用的需求分析方法:面向数据流的结构化分析方法 (SA面向数据结构的分析方法面向对象的分析方法 (OOA需求分析的任务:准确地定义未来系统的目标, 确定为了满足用户的需求系统必须 做什 么 。用“需求规格说明书”规范的形式准确地表达用户的需求。2.需求获取方法与策略 定义了系统做什么(描述系统必须 支持的功能和过程;(2非功能性需求(技术需求:定义了系统工作时的特性(描述操作环境和性
29、能目标 需求获取的常用方法:建立顺畅的通信途径;访谈与调查;观察用户操作流程;组成联合小组;用况(UseCase。(重点用况(UseCase :当需求作为非正式会议、Fast 的一部分而收集起来之后, 分析员就可以创建一组标识一串待建造系统的使用场景。创建用况模型的主要步骤如下:(1确定谁会直接使用该系统,即参与者(Actor;(2选取其中一个参与者;(3定义该参与者希望系统做什么,参与者希望系统作的每件事将成为一个用况;(4对每件事来说,何时参与者会使用系统,通常会发生什么,这就是用况的基本过 程;(5描述该用况的基本过程3.需求规格说明书(SRS需求规格说明(SRS,Software Re
30、quirement Specification精确地阐述一个软件系 统必须提供的功能和性能以及它所要考虑的限制条件 。作用:成为用户、 分析人员和设计人员之间进行理解和交流的手段; 支持系统测试活动; 用于规划和控制系统的开发过程。应该包括在 SRS 中的内容功能:软件应该提供什么功能?外部接口:软件如何与人、系统硬件和其他系统等进行相互作用?性能:软件系统在运行速度、可用性、响应时间、恢复时间等方面有什么要求? 特性:软件系统在可移植性、可维护性、安全性等方面有什么考虑?设计约束:是否存在必要的标准、开发语言、数据库、资源限制、运行环境等因素 的影响和策略?需求规格说明的质量特性可验证性:需
31、求规格说明中描述的需求都可运用一些可行的手段对其进行验证和确认。 一致性:需求规格说明对各种需求的描述不能存在矛盾, 如术语使用冲突、 功能和行为 特性方面的矛盾以及时序上的不一致等。致。可跟踪性:每一项需求都能与其对应的来源、设计、源代码和测试用例联系起来。在软件需求分析阶段,所创建的模型,要着重于描述系统要做什么,而不是如何去做。 目标软件的模型不应涉及软件实现细节。需求验证是检验需求能否满足客户的意愿。需求验证的技术:需求评审:由不同代表(如分析员、客户、设计人员、测试人员组成的评审小组 以会议形式对需求进行系统性分析。原型评价:客户和用户在一个可运行的系统模型上实际检验系统是否符合他们
32、的真 正需要。测试用例生成:通过设计具体的测试方法,发现需求中的许多问题。需求验证主要围绕需求规格说明的质量特性展开。需求管理是分析变更影响并控制变更的过程, 主要包括变更控制、 版本控制和需求跟踪等活动。需求跟踪有两种方式,正向跟踪与逆向跟踪。 考点八 软件设计(课本 P46(怎么做:howto do软件需求分析解决“做什么”的问题, 软件设计过程则解决“怎么做”的问题 。1.软件设计的定义 和详细设计两个阶段。常用的软件设计方法:结构化设计方法(SD:以数据流图为基础构造模块结构面向数据结构的设计方法(JSD方法:Jackson方法面向对象的设计方法(OOD:以对象、类、继承和通信为基础丁
33、家满:使用一种设计方法, 软件分析模型中通过数据、 功能和行为模型所展示的软件 需求的信息被传送给设计阶段,产生数据/类设计、体系结构设计、接口设计、部件级设计。 我:将分析阶段获得的需求说明转换为计算机中可实现的系统,完成系统的结构设计, 包括数据结构和程序结构,最后得到软件设计说明书。(1抽象化与逐步求精抽象 ,是在软件设计的规模逐渐增大的情况下,控制复杂性的基本策略。抽象的过程是从特殊到一般的过程 ,上层概念是下层概念的抽象,下层概念是上层概 念的精化和细化。软件工程过程的每一步都是对较高一级抽象的解作一次具体化的描述。把问题的求解过程分解成若干步骤或阶段, 每步都比上步更精化, 更接近
34、问 题的解法抽象使得设计者能够描述过程和数据而忽略低层的细节, 而求精有助于设计者在设计过 程中揭示低层的细节。(2模块化思想(课本 P49模块化 , 即把软件按照规定原则, 划分为一个个较小的, 相互独立的但又相互关联的部 件,实际上是系统分解和抽象的过程。模块是数据说明、 可执行语句等程序对象的集合, 它是单独命名的, 并且可以通过名字 来访问。(3信息隐藏每个模块的实现细节对于其它模块来说应该是隐蔽的。块中所包含的信息(包括数据和过程不允许其它不需要这些信息的模块使用。通过信息隐蔽,则可定义和实施对模块的过程细节和局部数据结构的存取限制。(4模块独立(重点(目标:高内聚,低耦合模块独立
35、:模块完成独立的功能并且与其他模块的接口简单, 符合信息隐蔽和信息局部 化原则,模块间关联和依赖程度尽可能小。模块独立的重要性:功能被划分,并且接口被简化,所以具有有效模块化的软件更易于开发。由于因设计和编码修改引起的副作用受到局限, 错误传播被减小, 并且模块复用成为可 能,所以独立的模块更易于维护和测试。内聚是一个模块内部各个元素彼此结合的紧密程度的度量 。(1巧合内聚(偶然内聚:将几个模块中没有明确表现出独立功能的相同程序代码 段独立出来建立的模块称为巧合内聚模块。(2逻辑内聚:指完成一组逻辑相关任务的模块,调用该模块时,由传送给模块的控 制型参数来确定该模块应执行哪一种功能。(3时间内
36、聚:指一个模块中的所有人物必须在同一时间段内执行。例如初始化模块 和终止模块。(4过程内聚:指一个模块完成多个任务,这些任务必须按指定的过程(procedural 执行。(5通信内聚:指一个模块内所有处理元素都集中在某个数据结构的一块区域中。(6顺序内聚:指一个模块完成多个功能,这些功能又必须顺序执行。(7功能内聚:指一个模块中各个部分都是为完成一项具体功能而协同工作,紧密联 系,不可分割的。耦合是模块之间的相对独立性(互相连接的紧密程度的度量 。 (1内容耦合:如果一个模块直接访问另一个模块的内部数据;或者一个模块不通过 正常入口转到另一模块内部; 或者两个模块有一部分程序代码重迭; 或者一
37、个模块有多个入 口,则两个模块之间就发生了内容耦合。(2公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公 共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。 (3 外部耦合:指模块间通过软件之外的环境联结 (如 I/O将模块耦合到特定的设备、 格式、通信协议上时,称为外部耦合。(4控制耦合:如果一个模块传送给另一个模块的参数中包含了控制信息,该控制信 息用于控制接收模块中的执行逻辑,则称为控制耦合。(5标记耦合:两个模块之间通过参数表传递一个数据结构的一部分(如某一数据结 构的子结构,就是标记耦合。(6数据耦合:两个模块之间仅通过参数表传递简单数
38、据,则称为数据耦合。(7非直接耦合:如果两个模块之间没有直接关系,即它们中的任何一个都不依赖于 另一个而能独立工作,这种耦合称为非直接耦合。简答题:简述内聚度与耦合度的概念,如何用这两个指标来衡量功能独立性强的模块。软件体系结构设计:主要定义了软件的主要结构元素及其之间的联系, 也包括体系结构 模式(风格和设计模式以及影响体系结构实现方式的约束。模式:特定问题的解决方案体系结构模式(风格:定义软件的整体结构,体现了子系统和软件构件之间的关系, 并定义了说明体系机构元素(类、包、构件、子系统之间关系的规则。常见的软件体系结构风格:数据为中心体系结构; 数据流风格的体系结构; 调用和返回 风格的体
39、系结构;面向对象风格的体系结构;层次式风格的体系结构。顶部有较高的扇出数,在底部有较高的扇入数。深度:表示软件结构中从顶层模块到最底层模块的层数; 程序结构的层次数称为结构的 深度。结构的深度在一定意义上反映了程序结构的规模和复杂程度。宽度:表示控制的总分布;层次结构中同一层模块的最大模块个数称为结构的宽度。 扇出数:指一个模块直接控制下属的模块个数;扇出表示一个模块直接调用(或控制 的其它模块数目。多扇出意味着需要控制和协调许多下属模块。扇入数:指一个模块的直接上属模块个数。扇入则定义为调用(或控制一个给定模块 的模块个数。而多扇入的模块通常是公用模块。(1让用户拥有控制权:1交互模式的定义
40、不能强迫用户进入不必要的或不希望的动作的方式;2提供灵活的交互;3允许用户交互可以被中断和撤销;4当技能级别增长时可以使交互流水化并允许定制交互;5使用户隔离内部技术细节。(2减少用户的记忆负担1减少对短期记忆的要求;2建立有意义的缺省;3定义直觉性的捷径;4界面的视觉布局应该基于真实世界的隐喻;5以不断进展的方式揭示信息。(3保持界面一致1允许用户将当前任务放在有意义的语境中;2在应用系列内保持一致性;3不要改变用户已经熟悉的用户交互模型。考点九 编码实现编码阶段的任务是根据详细设计说明书编写程序。 程序设计语言的特性和程序设计风格 会深刻地影响软件的质量和可维护性。 为了保证程序编码的质量
41、, 程序员必须深刻理解、 熟 练掌握并正确地运用程序设计语言的特性。 此外, 还要求源程序具有良好的结构性和良好的程序设计风格。为一个特定的开发项目选择编程语言时, 通常要考虑如下因素:应用领域; 算法和计算 复杂性;软件运行环境;用户需求,特别是性能需求;数据结构的复杂性;软件开发人员的 知识水平;可用的编译器与交叉编译器。项目所属的应用领域常常是首要的标准 。若有多种语言都适合于某项目的开发时,也 可考虑选择开发人员比较熟悉的语言。:,开发和维护高级语言程序比开发和 高级语言程序经编译后所产生的目标程 序的功效要比完成相同功能的低级语言程序低得多, 所以在有些情况下会部分或全部使用低 级语
42、言。使用低级语言的情况:对运行时间和存储空间有过高要求的项目, 如电子笔记本中的软 件; 在某些不能提供高级语言编译程序的计算机上开发程序, 如单片机上的软件; 大型系统 中对系统执行时间起关键作用的模块。简答题:针对你学过的编程语言,简述应如何在软件开发中选择编程语言?2.程序设计风格(代码清晰,适当的注释,合适的语句结构编程的依据是详细设计的结果, 因此程序的质量主要取决于设计, 但编程的质量也在很 大程度上影响着程序的质量编程风格主要包括 :(1源程序中的内部文档 :在源程序中可包含一些内部文档,以帮助阅读和理解源程 序。 标识符的命名 :选择含义明确的名字, 使其能正确提示标识符所代表
43、的实体; 名字 不要太长,太长会增加打字量,且易出错。必要时可使用缩写。不用相似的名字,相似的名 字容易混淆,不易发现错误;不用关键字作标识符;同一个名字不要有多个含义;名字中避 免使用易混淆的字符(如:数字 0与字母 O ,数字 1与字母 I 。 程序的注释 :程序中的注解用来帮助人们理解程序, 绝不是可有可无的。 注解分为 序言性注解(通常置于每个程序模块的开头部分和功能性注解(通常嵌在源程序体内,主 要描述程序段的功能。 程序的视觉组织 :通过在程序中添加一些空格、 空行和缩进等技巧, 帮助人们从视觉上看清程序的结构;自然的程序段之间可用空行隔开。(2数据说明 :为了使程序中数据说明更易
44、于理解和维护,可采用以下风格:数据说 明的次序应当规范化;说明语句中变量安排有序化;使用注解说明复杂数据结构。(3语句构造 :在一行内只写一条语句;程序编写首先应当考虑清晰性;程序要能直 截了当地说明程序员的用意。(4输入/输出 :系统能否被用户接受,有时就取决于输入和输出的风格。考点十 测试测试:目的:发现程序的错误 ;任务:通过执行程序,暴露潜在的错误。纠错:目的:定位和纠正错误;任务:消除软件故障,保证程序的可靠运行。测试的特性:挑剔性:抱着为证明程序有错的目的去测试;复杂性:设计合适的测试用例;(重点不彻底性 :程序测试只能证明错误的存在,但不能证明错误不存在。(1静态分析(不执行程序
45、:静态分析器;代码复审(CodeReview。(2动态分析(执行程序白盒测试(测试程序结构黑盒测试(测试程序功能动态测试方法与静态分析方法的区别是:需要通过选择适当的测试用例, 上机执行程序 进行测试。3.白盒测试(又称为结构测试把测试对象看作一个透明的盒子, 测试人员根据程序内部的逻辑结构及有关信息设计测 试用例,检查程序中所有逻辑路径是否都按预定的要求正确地工作。白盒测试主要用于对模块的测试, 包括:程序模块中的所有独立路径至少执行一次; 对所有逻辑判定的取值(“真”与“假”都至少测试一次;在上下边界及可操作范围内运行 所有循环;测试内部数据结构的有效性等。逻辑复盖测试法是一种基本的白盒测
46、试。用流程图来设计测试用例。逻辑复盖测试的 5种标准发现 错 误 的 能 力 弱强语句覆盖 每条语句至少执行一次判定覆盖 每一判定的每个分支至少执行一次条件覆盖每一判定中的每个条件, 分别按 “真” 、 “假” 至少各执行一次判定/条件覆盖 同时满足判定复盖和条件复盖的要求条件组合覆盖求出判定中所有条件的各种可能组合值, 每一 可能的条件组合至少执行一次路径测试法:着眼于程序执行路径的测试方法(点覆盖;边覆盖;路径覆盖4.黑盒测试(又称行为测试把测试对象看做一个黑盒子, 测试人员完全不考虑程序内部逻辑结构和内部特性, 只依 据需求规格说明书,检查功能是否符合需求。黑盒测试可用发现以下类型的错误
47、:不正确或遗漏的功能;接口错误,如输入/输出参 数的个数、类型等;数据结构错误或外部信息(如外部数据库访问错误;性能错误;初始化 和终止错误。(等价类划分方法;边界值分析方法;错误推测方法。简答题:什么是黑盒测试?什么是白盒测试?两者有什么区别?5. 测试和 测试(课本 P273如果软件是为一个客户开发的, 那么, 最后由客户进行验收测试, 以使客户确认该软件 是他所需要的。如果软件是给许多客户使用的 (如市场上销售的各种软件 , 那么让每个客户做验收测 试是不现实的。 大多数软件厂商都使用一种称为 测试和 测试的过程, 来发现那些似乎只有 最终用户才能发现的错误。测试是由一个用户在开发者的场
48、所进行的, 软件在开发者对用户的 “ 指导下 ” 进行测试。 经 测试后的软件称为 版软件。测试是由软件的最终用户在一个或多个用户场所进行的, 与 测试不同, 开发者通常不 在测试现场,因此, 测试是软件在一个开发者不能控制的环境中的“活的”应用,用户记 录所有在 测试中遇到的(真正的或想象的问题,并定期把这些问题报告给开发者,在接 到 测试的问题报告后,开发者对软件进行最后的修改,然后着手准备向所有的用户发布最 终的软件产品。6. 系统测试(课本 P274系统测试是对整个基于计算机的系统进行的一系列测试系统测试的种类很多, 每种测试都有不同的目的, 它们从不同的角度测试计算机系统是 否被正常地集成,并完成相应的功能。安全保密性测试 (也称安全测试 用来验证集成在系统中的保护机制能否实际保护系统 不受非法侵入。在安全测
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电动机检修工风险评估与管理测试考核试卷含答案
- 河北省衡水市街关中学2026-2027年高三上9月月考语文试卷(含答案)
- 异丁烯装置操作工岗前核心技能考核试卷含答案
- 天文学家研究绩效考核表
- 福建泉州科技中学2025-2026学年高一上学期第一次月考模拟英语试题(含答案无听力音频及听力原文)
- T/ZZFSA 004-2024食用调味油
- 铝电解综合工安全行为能力考核试卷含答案
- 焦化装置操作工岗中协同配合考核试卷含答案
- 移栽机操作工安全生产知识强化考核试卷含答案
- 塑料浇铸工班组管理测试考核试卷含答案
- L25J101-2建筑工程做法(下册)
- 彩钢顶屋面维修工程维修施工方案
- 普通动物学题库-普通动物学习题及答案
- 大学室长培训
- 雨课堂学堂在线学堂云《神经网络理论及应用(北工商)》单元测试考核答案
- 2025重庆日报报业集团所属企业招聘3人笔试历年典型考点题库附带答案详解试卷3套
- 雨课堂在线学堂《走进医学》作业单元考核答案
- 人教版二年级数学上册第二单元1~6的表内乘法达标测试卷(含答案)
- 义乌商贸城租房合同范本
- 医药代表开发医院经验分享
- 《网评员管理办法》
评论
0/150
提交评论