您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程(第六版)考试重点
1、什么是软件?软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、各种相关的文档和数据的集合。a)程序:能以预期的性能执行预期功能的一段指令;b)数据:便于程序操纵信息的数据结构;c)文档:与程序开发、维护和使用有关的图文材料。例如:用户手册软件=程序+数据结构+文档2、软件的特点1)软件是逻辑产品,不是具体的物理实体,所以它具有抽象性。2)软件的生产与硬件不同,在它的开发过程中没有明显的制造过程。3)软件运行和使用期间没有硬件那样的机械磨损和老化问题。4)软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。5)软件的开发资金尚未摆脱手工开发方式。决定了软件的进度、成本各不相同。6)软件本身是复杂的。1)实际问题的复杂性2)程序逻辑结构的复杂性7)软件的开发和维护成本高,成本昂贵。8)相当多的软件工作涉及到社会因素。3、软件的分类a系统软件指能与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效的工作的软件。包括:操作系统,设备驱动程序,通信处理软件,编译软件,数据库管理系统等b应用软件是在特定领域内开发,为特定目的服务的软件。包括:商业数据处理软件,工程和科学计算软件,计算机辅助设计/制造软件,系统仿真软件,办公自动化软件,电子商务软件,计算机辅助教学软件c支撑软件是协助用户开发软件的工具性软件。包括:文本编辑程序,文件格式化程序,磁盘向磁带做数据传输程序,程序库系统,支持需求分析、设计、实现、测试和支持管理的软件d可复用软件通常是由计算机厂商提供的系统软件的一部分。典型的例如:各种标准函数库,可复用类库,可复用应用程序库4、软件危机?a定义:开发软件所需的高成本同产品的低质量之间有着尖锐的矛盾,这种现象就是“软件危机”,也即是无法开发符合预算和进度要求的高可靠性和可用性软件。b软件危机包括两方面的问题:一是如何开发软件,怎样才能满足软件日益增长的需要;二是如何维护数量不断膨胀的软件产品。c具体体现(1)软件开发成本及进度难以预测(2)用户对已完成的软件系统不满足(3)软件产品质量无法保证(4)软件产品难以维护(5)软件通常缺少适当的文档资料(6)软件成本逐年提高(7)软件开发生产率提高的速度,远远跟不上计算机应用技术的迅速普及。d原因概述:硬件生产率大幅提高,软件生产规模增大、复杂度增大,软件生产率很低,硬、软件供需失衡,矛盾引发“软件危机”e解决危机的途径:(1)为了解决软件危机就要从技术和组织管理两个方面去研究,不断总结经验教训,提高软件产品的生产效率,降低软件开发和维护的成本。(2)开发软件选用最好的开发工具是至关重要的,工具选用的好,它可以“放大”人的智力,大大加快软件开发速度,提高软件质量。(3)为了解决软件危机,人们开始探索用工程化的方法进行软件开发,软件开发工程化的概念和方法应运而生,由此诞生了一门新兴学科——软件工程学。5、软件生存期由软件分析、软件开发和运行维护三个时期组成。每个时期又划分为若干个阶段(问题定义,可行性研究,需求分析,总体设计,详细设计,编码,测试,运行与维护)可行性研究:技术可行性,使用现有的技术能实现这个系统吗?经济可行性,这个系统的经济效益能超过它的开发成本吗?法律可行性,这个系统是否合法?操作可行性,系统的操作方式在这个用户组织内行的通吗?6、维护的分类,按工作量从大到小排列,依次为:(1)完善性维护:指在使用软件系统的过程中为满足用户提出的新功能和性能要求而进行的维护活动。它约占总维护活动的50%。(2)纠错性维护诊断和改正在使用过程中发现的软件错误。这部分维护工作约占全部维护活动的25%。(3)适应性维护由于计算机技术的飞速发展,外部设备和其他系统元素经常改进和变化,为适应变化的环境而修改软件的活动称之为适应性维护。它占总维护活动的18%~21%。(4)预防性维护为进一步改进软件的可维护性、可靠性而进行的维护活动,约占4%。7、软件的过程(开发)模型:瀑布模型:瀑布模型即软件生命周期模型,是软件工程的典型模型。软件生命周期的各个阶段如同瀑布流水般逐级下落,形成自上而下,相互衔接的固定次序。瀑布模型采用结构化方法开发,包括结构化分析、结构化程序设计和结构化测试方法。瀑布模型是一次开发就将一个包含全部功能的产品交付用户使用。优点:(1)奠定了软件工程方法的基础;(2)流水依赖,便于分工协作;(3)推迟物理实现,易于修改文档,有复审质量保证;不足:与用户见面晚,成功率低,一般为25%思想:从制作时间上按工序把问题简化,将功能实现与制作分开便于分工协作。适用范围:适用于系统要求明确的系统8、(1)ERD:entityrelationdiagram实体关系图,描述与系统有关的各类主体(即实体,或者是数据对象)之间的关系,用于数据建模(2)DFD:dataflowdiagram数据流图,描述数据在系统中如何被传送或者变化,及描述如何对数据流进行变换的功能,用于功能建模(3)STD:statetransitiondiagram状态迁移图,描述系统对外部事件如何响应和动作,用于行为建模(4)DD:datadictionary数据词典是核心,以词条方式详细定义在数据流图中出现的所有被命名的图形元素。练习:画银行取款过程的数据流图外部实体:储户,日历系统或时钟系统加工:检验用户信息的系统,登陆系统,付款系统数据潭:用户存折和用户帐卡数据流传输描述:检验系统检验储户的取款单、存折和帐卡,若检验出了问题则将问题反馈给储户;若是检验通过,则将用户的取款信息传入登陆系统让储户登陆,同时通知日历系统记下登陆时间;登陆完成后将付款信息传给付款系统,同时修改用户的存折和帐卡资料(即记录扣款信息和扣款时间);付款系统付现款给储户9、基本加工逻辑说明如果能写出每一个基本加工的全部详细逻辑功能,再自底向上综合,就能完成全部逻辑加工。在写基本加工逻辑的说明时,要表达“做什么”而不是“怎样做”,应满足如下的要求:对数据流图的每一个基本加工,必须有一个加工逻辑说明加工逻辑说明必须描述基本加工如何把输入数据流变换为输出数据流的加工规则加工逻辑说明必须描述实现加工的策略而不是实现加工的细节加工逻辑中说明中包含的信息应是充足、完备、有用的,没有重复的多余的信息10、目前用于写加工逻辑说明的工具:结构化语言,决策表,决策树11、软件设计的目标与准则目标:一般来说是从需求规格说明书中选择重要的质量属性作为设计目标,如性能目标、可靠性目标等。准则:性能准则,可靠性准则,成本准则,维护准则,最终用户准则11、软件设计的任务概要设计过程中需要完成的工作:制定规范软件系统结构的总体设计处理方式设计数据结构设计可靠性设计编写概要设计阶段的文档概要设计评审详细设计过程中需要完成的工作:确定软件各个组成部分内的算法以及各部分的内部数据组织选定某种过程的表达形式来描述各种算法进行详细设计的评审12、模块化:将程序划分成独立命名且可独立访问的模块,不同模块通常具有不同的功能或职责。模块(Module):一般把用一个名字就可调用的一段程序称为模块。它具有三个基本属性:功能:描述该模块实现什么功能。这里所说的模块功能,应是该模块的功能加上它所调用的所有子模块的功能。逻辑:描述模块内部怎么做。状态:该模块使用时的环境和条件。13、创建良好的设计原则114典型的数据流类型和系统结构:典型的数据流类型有变换流型和事务流型(1)变换流型变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据(2)在事务流型系统结构图中,事务中心模块按所接受的事务的类型,选择某一个事务处理模块执行。各个事务处理模块是并列的,依赖于一定的选择条件,分别完成不同的事务处理工作变换流型数据流图:事务流型系统结构图例:15结构化程序设计的方法:(1)程序流程图PDF(2)N-S图(3)问题分析图PAD(4)程序设计语言PDL(5)判定表16、极限编程方法(ExtremeProgramming—XP主要宗旨有:交流、简单、反馈和勇气(1)交流:开发人员之间或者开发人员与客户之间从“以文档交流”变为“面对面交流”。(2)简单:XP主张不要过分构件系统,当前面对的一定要是当前最简单的系统,不要管额外的需求,当新需求出现时再做打算。(3)反馈:“结对编程”,“测试优先”,“现场客户”。(4)勇气:有勇气顶住压力,有勇气拥抱变化,有勇气放弃。17、编程语言的分类(1)第一代——机器语言:机器语言是计算机可以识别的语言。(2)第二代——汇编语言:汇编语言是在使用助记符来编写程序。(3)第三代——高级语言:面向过程的,面向对象的(4)第四代语言(4GL):语言的抽象层次又提高了,不需要写出具体的算法过程。分三类:a、查询语言,如SQLb、程序生成器c、其他4GL,如判定支持语言18、软件测试的定义(验证程序的错误性)(1)在规定的条件下运行系统或构件的过程:此过程中观察和记录结果,并对系统或某些构件的某些方面给出评价;(2)分析软件项目的过程:检测现有状况和所需状况之间的不同(bug),并评估软件项目的特性。19、单元测试内容:模块接口的测试项目,局部数据结构测试,路径测试,错误处理测试,边界测试。驱动模块:构造最小运行调度系统,用于模拟被测模块的上一级模块。桩模块:模拟实现单元接口,即单元函数需调用的其他函数接口单元测试策略:自顶向下,自底向上,孤立测试,综合测试测试依据:详细设计说明书集成测试的依据:需求规格说明书、概要设计及详细设计说明书。集成策略:非增值式和增值式(自顶向下,自底向上)集成测试计划:确定集成测试对象和测试范围;确定集成测试阶段性时间进度;确定测试角色和分工;考虑外部技术支援的力度和深度,以及相关培训安排;初步考虑测试环境和所需资源;集成测试活动风险分析和应对;定义测试完成标准;系统测试;将已经集成好的软件系统,作为整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试系统测试过程要经历以下几个阶段:制定系统测试计划、设计系统测试、实施系统测试、执行系统测试和评估系统测试20、黑盒测试:把测试对象看做一个黑盒子,检查程序的功能是否符合它的功能说明。测试人员不用了解程序内部的逻辑结构和内部特性黑盒测试用例设计方法:等价类划分,边界值分析,判定表法,因果图白盒测试作为结构测试方法,是按照程序内部的结构测试程序,对软件的过程性细节做细致的检查,测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例。白盒测试用例的设计方法:逻辑覆盖(以程序的内部逻辑结构为基础,分为语句覆盖、判定覆盖、判定-条件覆盖、条件组合覆盖等)基本路径测试(在程序控制流程的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例)21、软件维护的定义:):在交付以后,修改软件系统与部件以排除故障,改进性能或其他属性或适应变更了的环境的过程。维护的类型:改正性维护(改正之前没发现的隐藏性的错误);适应性维护(使软件适应运行环境等变化);完善性维护(满足用户提出的新功能或性能要求);预防性维护(采用先进的软件工程方法对需要维护的软件或软件中的某一部分重新进行设计);编制和测试(以提高软件的可维护性、可靠性等)维护的常见问题:1、理解别人写的程序困难,困难程度随软件配置成分减少而迅速增加;2、要维护的软件往往没有合适的文档或资料不全;3、绝大多数软件设计时没有考虑将来的修改;4、软件维护不是一项吸引人的工作;5、软件人员经常流动,维护不能依靠原开发人员;6、追踪软件的建立过程非常困难,或根本做不到。软件维护的策略:改正性维护:通常不可避免,但可减少适应性维护:不可避免,但可控制22、提高可维护性的方法:建立明确的软件质量目标和优先级,使用提高软件质量的技术和工具,进行明确的质量保证审查,选用可维护的程序设计语言,改进程序的文档(系统开发日志,错
本文标题:软件工程(第六版)考试重点
链接地址:https://www.777doc.com/doc-1899109 .html