软件工程复习重点.doc

上传人:jian****018 文档编号:9309076 上传时间:2020-04-04 格式:DOC 页数:12 大小:184.50KB
返回 下载 相关 举报
软件工程复习重点.doc_第1页
第1页 / 共12页
软件工程复习重点.doc_第2页
第2页 / 共12页
软件工程复习重点.doc_第3页
第3页 / 共12页
点击查看更多>>
资源描述
第1章 软件工程学概述软件危机(软件萧条、软件困扰):是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。实际上,几乎所有软件都不同程度地存在这些问题。软件危机包含下述两方面的问题:如何开发软件,满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。产生软件危机的原因;与软件本身的特点: 有关软件是逻辑部件。 软件不会被“用坏”,如果发现了错误,很可能是开发时期引入。 软件规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上。 与软件开发与维护的方法不正确有关与软件开发与维护的方法不正确有关: 忽视软件需求分析的重要性。 认为软件开发就是写程序并设法使之运行。 轻视软件维护。消除软件危机的途径 1 对计算机软件有正确的认识。 2认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。 3应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。 4应该开发和使用更好的软件工具。 5总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。怎样用软件工程消除软件危机软件工程以软件产品化、系列化、工程化、标准化为特征。采用工程化方法和工程途径来研制与维护软件。摆脱软件危机的途径就是软件工程生成的过程消除软件危机,既要有技术措施又要有必要的组织管理措施软件工程:是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 本质特征:1关注于大型程序的构造2中心课题是控制复杂性3软件经常变化4开发软件的效率非常重要5和谐的合作是开发软件的关键6软件必须有效的支持它的用户7 在软件工程领域中通常由一种具有文化背景的人替另一种具有文化背景的人创造产品基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性基本原则:1局部化 要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块之间具有松散的耦合,模块内部具有较强的内聚。这有助于控制解的复杂性。2确定性 软件开发过程中所有概念的表达应是确定的、无歧义性的、规范的。3一致性 整个软件系统的各个模块应使用一致的概念、符号和术语。程序内部接口应保持一致。软件和硬件、操作系统的接口应保持一致。系统规格说明与系统行为应保持一致。用于形式化规格说明的公理系统应保持一致。4完备性 软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程度。为了保证系统的完备性,在软件开发和运行过程中需要严格的技术评审。5可验证性 开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解应遵循系统 。易于检查、测试、评审的原则,以确保系统的正确性软件工程包括技术和管理两方面的内容。管理:通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程。技术(软件工程方法学):通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。软件工程方法学包括:传统方法学(生命周期方法学或结构化范型)强调自顶向下 面向对象方法学强调主动地多次反复迭代传统方法学:采用结构化的技术来完成软件开发的各项任务,并用适当的软件工具或软件工程环境来支持结构化技术的运用。面向对象方法:把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。(对象,类,继承,消息)面向对象方法学的优点: 1 面向对象方法学的尽量模拟人类习惯的思维方式,使开发软件的方法与过程 尽可能接近人类认识世界解决问题的方法与过程。 2 面向对象方法学开发软件的过程,是一个主动地多次反复迭代的演化过程, 保证了在各项开发活动之间的平滑过渡。 3 促进了软件重用。 软件工程方法学3要素: 工具:是为运用方法而提供的自动的或半自动的软件工程支撑环境;(CAse工具) 方法:是完成软件开发的各项任务的技术方法,回答“怎样做”的问题; 三个时期:八个阶段:软件生命周期软件定义软件开发软件维护问题定义可行性研究需求分析概要设计详细设计编码和单元测试综合测试运行维护系统设计系统实现 过程:需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤软件工程过程内容:软件规格说明书,软件开发,软件确认,软件演进软件工程过程特性:1)可理解性; 2)可见性;3)可支持性; 4)可接受性;5)可靠性; 6)健壮性;7)可维护性; 8)速度。软件生命期; 一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程称为软件生存期或叫生命期。生命期的划分:制定计划需求分析和定义软件设计程序编写软件测试运行/维护开发阶段定义阶段 维护阶段软件生存期模型:瀑布,快速原型,增量,螺旋,喷泉,构件组装,统一过程模型,第四代技术瀑布模型特点: . 1. 阶段间具有顺序性和依赖性 (前一阶段的输出文档就是后一阶段的输入文档。) 2. 推迟实现的观点 (规模较大的软件项目往往开始编码的时间越早,最后。) 3. 质量保证的观点 (每个阶段必须完成规定的文档,并对文档进行审核)瀑布模型优点; 1.可强迫开发人员采用规范的方法; 2.严格地规定了每个阶段必须提交的文档; 3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。瀑布模型缺点: 只能通过文档了解产品,不经过实践的需求是不切实际的。 实际项目很少按照该模型给出的顺序进行; 用户常常难以清楚地给出所有需求; 用户必须有耐心,等到系统开发完成瀑布模型适用于: 需求是预知的; 软件实现方法是成熟的; 项目周期较短。快速原型模型: 是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。快速原型模型特点 : 快速原型模型不带反馈环,软件产品的开发基本上是线性顺序进行的。 快速原型的本质是“快速”。应该尽可能快地建造出原型系统,以加速软件开发过程,节约成本。根据原型的不同作用,有三类原型模型:探索型原型,实验型原型,演化型原型。快速原型模型的运用方式: 抛弃策略,附加策略增量模型 增量模型把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能增量模型的优点 人员分配灵活,刚开始不用投入大量人力资源。 当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品。增量模型的难点: 软件体系结构必须是开放的。 模型本身是自相矛盾的。整体独立构件。 不同的构件并行地构建有可能加快工程进度,但是冒无法集成到一起的风险。增量模型适用于: 适用于需求经常改变的软件开发过程。 在项目既定的商业要求期限之前不可能找到足够的开发人员。螺旋模型螺旋模型的基本思想:使用原型及其他方法来尽量降低风险。把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。螺旋模型的优点: 主要优势在于它是风险驱动的。 对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标; 减少了过多测试或测试不足所带来的风险; 维护只是模型的另一个周期,维护和开发之间没有本质区别。螺旋模型的缺点: 采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中, 如果未能够及时标识风险,势必造成重大损失。 过多的迭代次数会增加开发成本,延迟提交时间。 螺旋模型适用于: 特别适用于庞大、复杂并具有高风险的系统。 适用于内部开发的大规模软件项目。喷泉模型;是典型的面向对象生命周期模型。喷泉模型的优点:该模型的各个阶段没有明显的界限,开发人员可以同步进行开发。多次反复地增加或明确目标系统,而不是本质性的改动,降低错误的可能性。喷泉模型的缺点:由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,不利于项目的管理。要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。喷泉模型适用于:适用于面向对象的软件开发过程。第2章 可行性研究目的: 用最小的代价在尽可能短的时间内确定问题是否能够解决。研究哪些可行性:技术可行性,经济可行性,操作可行性,从法律社会效益等更广的方面。根本任务:对以后的行动方针提出建议研究过程;1、复查系统规模和目标2、研究目前正在使用的系统3、导出新系统的高层逻辑模型4、进一步定义问题5、导出和评价供选择的解法6、推荐行动方针7、草拟开发计划8、书写文档提交评审系统流程图:概括的描述物理系统的传统工具,用图形符号以黑盒子形式描绘组成系统的每个部件(程序、文档、数据库、人工过程等)。表达的是数据在系统各部件之间的流动情况,而不是对数据进行加工处理的控制过程。因此尽管系统流程图某些符号和程序流程图的符号形式相似,但他却是物理数据流图而不是程序流程图。常用符号:数据流图(DFD)数据流图是描述数据处理过程的工具,它从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程.是系统逻辑功能的图形表示图中没有具体的物理元素,只是描绘信息在系统中流动和处理的情况。数据流图分层:在多层数据流图中,顶层流图仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据底层流图是指其加工不需再做分解的数据流图,它处在最底层中间层流图则表示对其上层父图的细化。它的每一加工可以继续细化,形成子图。数据流图绘制步骤 首先确定系统的输入和输出,画出顶层数据流图 然后从输入端开始,根据业务工作流程,画出数据流流经的各加工框,逐步画到输出端,得到第一层数据流图 对数据流图进行检查和修改。数据流图的用途 交流信息的工具 分析和设计的工具 进一步设计的依据数据流图和程序流程图的区别:数据流图是业务分析用的,主要在分析阶段,经过事务性分析可以转换为概要设计,程序流程图和N-S框图一样是用作详细设计的。数据流图没有控制结构,基本是一种静态结构,没有语法控制。程序流程图是动态的程序状态的描述数据字典:数据字典是关于数据的信息的集合,即对数据流图中包含的所有元素的定义的集合数据词典与数据流图配合,能清楚地表达数据处理的要求数据字典的作用:在软件分析和软件设计过程中给人提供关于数据的描述信息。 作为分析阶段的工具 数据字典包含的每个元素的控制信息是很有价值的 数据字典是开发数据库的第一步,而且是很有价值的一步。 数据字典是把数据模型,功能模型和行为模型黏合在一起的“黏合剂”, 是分析模型的核心定义元素:数据流,数据流分量,数据储存,处理数据流词条描述 数据流名:订单别名:简述:顾客订货时填写的项目来源:顾客去向:加工1“编辑订单”定义:编号+订货日期+顾客编号+地址+ 电话+银行帐号+货物名称+规格+数量数据流量:1000份/每周数据元素词条描述数据元素名:别名:简述:类型:数字(离散值,连续值),文字(编码类型)长度:取值范围:相关的数据元素及数据结构:数据存储(文件)词条描述:数据存储名:别名:简述:存放的是什么数据定义:数据结构存储方式:顺序,直接,关键码存取频率或查询要求:加工词条描述:加工名:检查订单编号:1.3输入数据流:订单输出数据流:可满足订单、不能满足订单加工逻辑:根据商品库存需求分析:基本任务:准确的回答:“系统必须做什么”这个问题,确定系统的逻辑功能。任务:仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整,准确,清晰,具体 的要求。 1,确定对系统的综合要求:功能需求,性能需求,可靠性和可用性需求,出错处理需求,接口需求,约束,逆向需求,将来可能提出的需求 2,分析系统的数据要求 3,导出系统的逻辑模型 4,修正系统开发计划需求分析的原则:1,深入浅出的原则。就是说,需求获取要尽可能全面,细致。获取的需求是个全集,目标系统真正实现的是个子集。2,以流程为主线的原则。与用户交流过程中,应该用流程将所有的内容串起来,如信息,组织结构,处理规则等。这样便于交流沟通。流程的描述既有宏观描述,也有微观描述。获取需求分析的方法:1)与用户沟通获取需求分析:1,访谈,2,结构化分析方法(面向数据流自顶向下求精)。3,简易的应用规格说明书4,快速建立软件模型2) 功能分析法3) 信息建模法4) 面向对象分析法5) 结构化分析方法分析建模需求分析过程应该建立3种模型,数据模型,功能模型和行为模型。实体联系图(E-R图):数据对象,属性,联系,实体联系图符号。第五章总体设计:设计过程:1,设想供选择的方案2,选取合理的方案3,推荐最佳方案4,功能分解5,设计软件结构6,设计数据库7,制定测试计划8,书写文档(系统说明,用户手册,测试计划,详细的实现计划,数据库设计结果)9,审查和复审设计原理: 1.模块化 模块化就是把程序划分为独立命名且可独立访问的模块,每个模块完成一个子功能。 1尽管模块分解可以简化要解决的问题,但模块分解不是越小越好。2,模块数量增加时,模块之间的复杂程度也会增加,设计模块间借口所需的工作量也将增加。 2.模块独立:模块化,抽象,信息隐藏和局部化概念的直接结果。 3.抽象 模块:模块是程序对象有名字的集合 模块独立性: 软件系统结构中每个模块只涉及软件要求的具体子功能,而和软件系统中的其他模块接口是简单的。 为什么模块独立性重要:1,有效模块化的软件比较容易开发2,独立的模块比较容易测试和维护 定性标准度量:耦合,内聚。耦合 块间联系,对一软件结构内不同模块之间互连程度的度量。耦合的强弱 模块接口的复杂程度,一模块对另一模块的引用,以及通过接口的数据量。(高-低) 内容耦合,公共耦合,外部耦合,控制耦合,标记耦合,数据耦合,非直接耦合内聚 块内联系,标志着一个模块内各个元素彼此结合的紧密程度内聚(高-低)功能内聚,顺序内聚,通信内聚,过程内聚,时间内聚,逻辑内聚,偶然内聚(3个低内聚,两个中内聚,两个高内聚)模块划分要高内聚,低耦合启发规则:1,改进软件结构提高模块独立化,2模块规模应该适中,3深度宽度,扇出和扇入都应适当(顶层扇出比较高,中层扇出比较少,底层模块有高扇入)4,模块作用域应在控制域之内5,力争降低模块接口复杂度6,设计单入口,单出口的模块7,模块功能应该可以预测描绘软件结构的图形工具:层次图和HIPO图(带编号的层次图),结构图,数据流:数据流类型:变换型:具有顺序处理的特点事务型:具有平行分别处理的特点。 数据沿输入通路到达一个处理T,这个数据根据输入数据的类型在若干个动作序列中选择一个来执行事物中心任务: 接收输入输出数据 分析每个事务以确定类型 根据事务类型选取一条活的通路面向数据流的设计方法:目标:给出设计软件结构的一个系统化的途径。变换型数据流图基本模型 事务型数据流图基本模型变换分析设计:把具有变换流特点的数据流图按预先确定的模式映射成软件结构。不具有显著的事务特点。虽然在任何情况下都可以使用变换分析方法设计软件结构,但是在数据流具有明显的事务特点时,也就是有一个明显的“发射中心”(事务中心)时,还是以采用事务分析方法为宜。两者的主要差别仅在于由数据流图到软件结构的映射方法不同。第6章 详细设计:详细设计的基本任务:为每个模块进行详细的算法设计(用某种图形、表格、语言等工具将每个模块处理过程的详细算法描述出来。)为模块内的数据结构进行设计对数据库进行物理设计,即确定数据库的物理结构编写详细设计说明书评审目标:不仅是逻辑上正确地实现每个模块的功能,还应使设计出的处理过程清晰易读结构化程序设计是实现该目标的关键技术之一过程设计的工具:程序流程图,盒图,PAD图,判定表,判定树。结构程序设计基本控制结构:顺序结构:先执行A再执行BIFThenelse结构,DO-While结构。第七章:实现 编码:把软件设计结果翻译成用某种程序语言书写的程序。 测试:软件测试的目的是在软件投入生产性运行前,尽可能多的发现软件中的错误。 软件测试:为发现程序中的错误而执行程序的过程。 软件测试的准则(尽早和不断的测试、彻底测试的不可能、软件测试是有风险的行为、并 非 所有的软件错误都能恢复、反向思维逻辑、由小到大的测试范围、避免检查自己的代码、追 溯至用户需求) 测试方法(黑盒测试和白盒测试) 测试步骤(模块测试、子系统测试、系统测试、验收测试、平行运行) 白盒法又称为逻辑覆盖法,其测试用例选择,是按照不同覆盖标准确定的。 调试(也称为纠错)作为成功测试的后果出现,也就是说,调试是在测试发现错误之后排除错误的过程。 调试目标:都是寻找软件错误的原因并改正错误。3种调试途径:蛮干法,回溯法,原因排除法软件可靠性的定义:对于软件可靠性有许多不同的定义,其中多数人承认的一个定义是:软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率 软件可用性的一个定义: 软件可用性是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。第7章 软件维护软件维护是指软件系统交付使用以后,为了改正错误或满足新的需求而修改软件的过程。按照不同的维护目的,维护工作可分成4类。 1完善性维护(Perfective Maintenance):扩充原有系统的功能,提高原有系统的性能,满足用户的实际需要。 2纠错性维护(Corrective Maintenance):对在测试阶段未能发现的,在软件投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。 3适应性维护(Adaptive Maintenance): 要使运行的软件能适应运行环境的变动而修改软件的过程。 4预防性维护(Preventive Maintenance):为了进一步改善软件的可靠性和易维护性,或者为将来的维护奠定更好的基础而对软件进行修改。第9章 面向对象方法学其他概念:类(Class)类又称对象类(Object Class),是一组具有相同属性和相同操作的对象的集合。在一个类中,每个对象都是类的实例(instance) ,它们都可以使用类中提供的函数。类具有属性,用数据结构来描述类的属性,类具有操作,它是对象的行为的抽象,操作实现的过程称为方法(method) ,方法有方法名,方法体和参数。决定软件可维护性的因素:1,可理解性2,可测试性3,可修改性4,可移植性,5,可重用性面向对象设计的准则:1.模块化 2.抽象 3.信息隐藏 4.弱耦合 5.强内聚 6.可重用人机界面设计:用户界面应具备的特性:1.可使用性(最重要、最基本的目标) 使用的简单性 用户界面中的术语标准化和一致性 拥有HELP帮助功能 快速的系统响应和低的系统成本 用户界面应具有容错能力2.灵活性 用户界面应能够满足不同用户的要求 用户可以根据需要制定和修改界面方式 能够按照用户的希望和需要,提供不同详细程度的系统响应信息 与其它软件系统应有标准的界面3、复杂性和可靠性 用户界面的规模和组织的复杂程度就是界面的复杂性。 在完成预定功能的前提下,应当使得用户界面越简单越好。但不是把所有功能和界面安排 成线性序列就一定简单。为使用户界面具有一定的灵活性,需要付出代价,而且有可能降低软件系统的运行效率。 用户界面的可靠性是指无故障使用的间隔时间。 用户界面应能保证用户正确、可靠地使用系统,保证有关程序和数据的安全性界面设计的黄金原则:1,置用户于控制之下2,减少用户的记忆负担3,保持界面一致
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 建筑资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!