软件工程知识总结_第1页
软件工程知识总结_第2页
软件工程知识总结_第3页
软件工程知识总结_第4页
软件工程知识总结_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

软件是⑴能够完成预定功能和性能的可执行指令⑵使得程序能够适当的操作信息的数据结构⑶描述程序的操作和使用的文档;软件的特点:⑴是逻辑产品,非物理产品⑵由开发或工程化而形成,无明显的制造过程⑶存在退化问题,必须维护软件。软件发展历史:程序设计阶段程序系统阶段软件工程阶段强大的桌面系统和计算机网络迅速发展的时期软件工程是研究和应用如何以系统化,规范化,可度量的方法去开发,运行和维护软件,即把工程化应用到软件中。衡量软件质量的主要特征有可维护性,可适用性,可使用性。软件工程的三要素:工具方法过程还有一个质量焦点软件工程过程是进行一系列有组织的活动,从能够合理和及时的开发出软件。软件危机:软件在开发和维护过程中遇到的一系列严重问题。软件危机包含两层含义:如何开发软件如何维护数量不断膨胀的已有软件。表现:(1)软件开发的进度难以控制,经常出现经费超预算、完成期限一再拖延的现象。(2)软件需求在开发初期不明确,导致矛盾在后期集中暴露,从而对整个开发过程带来灾难性的后果。(3)由于缺乏完整规范的资料,加之软件测试不充分,从而造成软件质量低下,运行中出现大量问题。(4)软件的可维护性差(5)软件文档资料不完整、不合格(6)软件价格昂贵,软件成本在计算机系统总成本中所占的比例逐年上升。原因:①用户对软件需求的描述不精确,可能有遗漏、有二义性、有错误,甚至在软件开发过程中,用户还提出修改软件功能、界面、支撑环境等方面的要求。②软件开发人员对用户需求的理解与用户的本来愿望有差异,这种差异必然导致开发出来的软件产品与用户要求不一致。③大型软件项目需要组织一定的人力共同完成,多数管理人员缺乏开发大型软件系统的经验,而多数软件开发人员又缺乏管理方面的经验。各类人员的信息交流不及时、不准确、有时还会产生误解。④软件项目开发人员不能有效地、独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误。⑤缺乏有力的方法和工具方面的支持,过分地依靠程序人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化。⑥软件产品的特殊性和人智力的局限性,导致人们无力处理“复杂问题”。所谓“复杂问题”的概念是相对的,一旦人们采用先进的组织形式、开发方法和工具提高了软件的开发效率和能力,新的、更大的、更复杂的问题又摆在人们面前。软件工程学原则:抽象,信息隐藏,模块化,局部化,一致性,完整性和可验证性。软件生存周期阶段:可行性研究,需求分析,概要设计,详细设计,编码,测试,维护。软件开发模型:边做边改模型,瀑布模型,快速原型模型,增量模型,螺旋模型。瀑布模型:是将软件生存各个活动规定为依线性顺序联接的若干阶段的模型。它包括可行性分析、项目开发计划、需求分析、概要设计、详细设计、编码、测试和维护。它规定了由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。本质:工序线性化。10软件开发的基本策略:复用,分而治之,优化与折中。11可行性研究的任务:经济,技术,运行,法律和开发方案可行性。需求的概念:⑴用户解决问题或达到目标所需的条件或能力⑵系统或系统部件要满足合同,标准,规范或其他正式文档规定的条件和能力⑶一种满足⑴或⑵所描述的条件或能力的文档说明。数据字典是对系统所用到的所有数据项和结构的定义,以确保开发人员使用统一的数据定义。系统流程图:是描述物理系统的传统工具,它用图形符号来表示系统中的各个元素,例如人工处理、数据处理、数据库、文件、设备等。它表达了系统中各个元素之间的信息流动的情况。需求工程的基本活动:需求的获取,分析,传递,认可,进化。需求管理:包括变更控制、版本控制和需求跟踪等活动需求层次:业务需求:描述了组织结构或客户对系统的高层次的目标要求。用户需求:描述了用户使用产品必须要完成的任务,使用实例模型描述。功能需求:定义了开发人员实现的软件的功能。非功能需求:描述系统的约束和限制条件。需求错误的原因:缺乏足够用户的参与、用户需求不断增加、需求模棱两可、添加不必要的特性、规格说明过于简单、忽略了用户分类结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止结构化程序设计的主要思想:(1)自顶向下、逐步求精的程序设计方法(2)使用3种基本控制结构、单入口、单出口来构造程序。结构化分析过程是创建数据模型E-R图、功能模型DFD图和行为模型STD图的过程结构化分析方法使用工具:ERDSTD数据流图数据词典判定表与判定树、结构化英语概要设计的任务:设计软件结构;设计数据结构和数据库;编写概要设计文档;评审;概要设计的说明书。软件设计原则:抽象化自顶向下,逐步细化模块化程序结构结构划分软件过程信息隐蔽程序结构的深度:程序结构的层次数称为结构的深度。结构的深度在一定意义上反映了程序结构的规模和复杂程度程序结构的宽度:层次结构中同一层模块的最大模块个数称为结构的宽度。扇出表示一个模块直接调用(或控制)的其他模块数目。扇入则定义为调用(或控制)一个给定模块的模块个数。多扇出意味着需要控制和协调许多下属模块。而多扇入的模块通常是公用模块模块的独立性:指软件系统中每个模块只涉及具体的子功能,而和系统中其他模块的接口是简单的。模块的属性:功能,逻辑,状态。内聚分为:功能,信息,通信,过程,时间,逻辑和巧合内聚;耦合分为:非直接,数据,标记,控制,外部,公共和内容耦合。(都是高到低)变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。详细设计的任务:确定模块算法,选择适当工具表达算法;确定模块的数据结构;确定模块接口的细节;为模块设计测试用例。详细设计的描述工具:图形工具表格工具语言工具结构化程序设计采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。测试分为:动态测试(黑盒,白盒)和静态测试(代码审查,静态分析)。黑盒测试(功能测试)方法:等价分类法,边界值分析,错误推测,因果图。白盒测试(结构测试)方法:语句,判定,条件,判定/条件,条件组合覆盖。点,边,路径覆盖。路径覆盖:指设计足够的测试用例,覆盖被测程序中所有可能的路径。判定/条件覆盖:指设计足够的测试用例,使得判定表达式中的每个条件的所有可能取值至少出现一次,并使每个判定表达式所有可能的结果也至少出现一次。条件组合覆盖:是指设计足够的测试用例,使的每个判定表达式中条件的各种可能的值的组合都至少出现一次,条件组合覆盖是比较强的覆盖标准。条件覆盖:是指设计足够的测试用例,使得判定表达式中每个条件的各种可能的值至少出现一次。满足条件覆盖并不一定满足判定覆盖。软件测试的目的:测试是为了发现程序中的错误而执行程序的过程;好的测试方案是极有可能发现迄今尚未发现的尽可能多的错误的测试;成功的测试是发现了迄今尚未发现的错误的测试。测试步骤:模块,系统集成和确认测试。黑盒测试(功能测试)方法:等价分类法,边界值分析,错误推测,因果图。软件测试的基本原则:1.应当把“尽早和不断的测试”作为开发者的座右铭2.程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。3.设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。4.一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。5.对测试错误结果一定要有一个确认的过程,一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。6.制定严格的测试计划,并把测试时间安排的尽量宽松,不要希望在极短的时间内完成一个高水平的测试。7.回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错误出现的现象并不少见。8.妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。软件开发过程是一个自顶向下,逐步细化的过程软件计划阶段定义软件作用域软件需求分析建立软件信息域、功能和性能需求、约束等软件设计建立软件体系结构和模块实现的算法。把设计用某种程序设计语言转换成程序代码测试过程是依相反顺序安排的自底向上,逐步集成的过程。软件开发过程是一个自顶向下,逐步细化的过程软件计划阶段定义软件作用域软件需求分析建立软件信息域、功能和性能需求、约束等软件设计建立软件体系结构和模块实现的算法。把设计用某种程序设计语言转换成程序代码测试过程是依相反顺序安排的自底向上,逐步集成的过程。软件可靠性:程序在给定的时间间隔内,按照规格说明书的规定能成功运行的概率调试策略:跟踪法,演绎法,归纳法,试探法,回溯法和对分查找法。维护概念:为了改正错误或满足新需要而修改软件的过程。目的是满足用户对已开发产品的性能与运行环境不断提高的要求,延长软件寿命。分为:完善性,适应性,纠错性和预防性维护。影响可维护的因素:可理解性,可测试性,可修改性。维护的副作用:代码,数据和文档副作用。软件维护特点从三个方面理解:结构化维护和非结构化维护,维护的代价,维护的问题。面向对象方法是运用对象、类、继承、封装、聚合、消息传递、多态性等概念来构造系统软件开发方法。对象:是系统中用来描述客观事物的一个实体,是系统的基本单位,由属性和服务组成。类:是具有相同属性和服务的一组对象的集合。封装性:把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位,尽可能隐蔽对象的内部细节(信息隐蔽)多态性:指相同的操作或函数、过程可作用于多种类型的对象上并获得不同结果。不同的对象,收到同一消息可以产生不同的结果继承性是特殊类的对象拥有一般类的全部属性和服务,称作特殊类对一般类的继承消息:对象之间进行通信的构造面向对象的特点:建立的模型与客观世界一致便于理解;适应变化的需要修改局限在模块中;具有可复用性。重用:同一事物不经修改或稍加修改就可以多次重复使用的性质。可行性研究:按照各种有效的方法和工作程序对搭建工程项目在技术上的先进性,适应性,经济上的合理性,法律可行性是否有必要去解决,以及项目的实施等方面进行深入的系统分析。白盒测试:按照程序的内部逻辑结构,检验程序中的每条通路是否能够按照规格说明书上的规范正确工作,即把程序看成是装在一个透明的盒子里,完全了解程序的结构和处理过程,又称结构测试。视图:视图用来表示被建模系统的各个方面,视图由多个图构成,他不是一个图片,而是在某一个抽象层上对系统的抽象表示。如果要为系统建立一个完整的模型图,只需定义一定数量的视图,每个视图表示系统的一个特殊的方面。5种视图,用例视图:用于描述系统内部应该具有的功能集,它是系统的外部用户所能观察到的系统功能的模型图。逻辑视图:展示了系统内部如何提供系统的功能,它利用系统的静态结构和动态行为来刻画系统功能。构建视图:用来显示代码构件的组织方式,他描述了实现模块和他们之间的依赖关系。并发视图:用来显示系统的并发工作状况。部署视图:用来显示系统的物理架构,及系统的物理部署。UML中包含用例图,类图,对象图,状态图,顺序图,协作图,活动图,构件图,部署图共九种。用例图:系统的功能需求。类图:类与类之间的静态关系。对象图:类图的一个实例,反映系统执行到某处时系统的工作状况。状态图:类的所有对象可能具有的状态以及引起状态变化的事件。顺序图:反映若干个对象之间的动态协作关系,显示对象之间发送消息的顺序,对象之间的交互。协作图:动态协作,除了显示消息变化外,协作图还显示了对象和它们之间的关系(上下文有关)。活动图:一个连续的活动流。常用于描述某个操作执行时的活动状况。构件图:反映代码的物理结构。部署图用来显示系统中软件和硬件的物理架构。什么是软件的可维护性?软件的可维护性与哪些软件质量的特性有关?如何提高软件的可维护性?为什么在软件开发过程中,要特别重视软件的可维护性?解:①(2分)软件的可维护性指软件能够被理解、校正、适应及增加功能的容易程度。②(2分)软件的可维护性与软件质量的下列特性有关:可理解性、可测试性、可修改性、可靠性、可移植性、可使用性和效率。③(2分)提高软件的可维护性方法有:

要建立明确的软件质量目标:要程序满足可维护性的7个指标是不现实的,对于不同性质软件,质量重点不一样。强调哪个质量特性,视情况而定。

要利用先进的软件开发技术和工具:能大大提高软件质量和减少软件费用。例如面向对象方法开发的软件系统,稳定性好,比较容易修改,比较容易理解,易于测试和调试,因此可维护性好。

建立明确的质量保证:有4类检查(在检查点进行检查、验

温馨提示

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

评论

0/150

提交评论