软件工程期末总结.doc_第1页
软件工程期末总结.doc_第2页
软件工程期末总结.doc_第3页
软件工程期末总结.doc_第4页
软件工程期末总结.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

软件工程期末总结 今天视频看完了,可是没有总结。还是感觉不会总结。一想到50讲的课,怎么总结呢?开始听的时候,是真不知道从哪里下手,因为开始看的时候有种迷迷糊糊的感觉。软件工程,我期待的一门课就这么听完了一遍。很有些囫囵吞枣的感觉,不过收获还是很多的,至少知道了软件工程的阶段不是只有需求分析、编程和测试维护。当然这个很早之前就知道,只是以前根本没有什么概念。 第一个阶段,计划阶段,要首先对用户的要求进行了解,对软件的性能等进行了解。然后进行可行性分析研究,在各种可行性研究中,对于软件开发人员来说,技术可行性研究最重要。之后就是需求分析阶段了,需求分析阶段也是计划阶段的最后一部分。需求分析定义了要做什么。把现实的需要用程序语言表达出来。但是这一阶段并不解决怎么做。 解决怎么做的是下一个阶段设计阶段。设计阶段分为概要设计和详细设计。概要设计把每个组成部分的功能都给出意义明确的模块,每个模块都和一部分需求相对应。但是不考虑细节。详细设计,把每个模块的功能实现详细的表示出来,为源程序的编写打下基础。然后就是编程阶段,我们一般最初接触的就是编程,所以编程阶段比较了解,由于前期文档已经做的很详细,功能的实现数据和算法都已经清楚了,所以编程是比较简单的。 编程完了就是测试阶段了,测试阶段的费用是最多的。测试阶段是发现错误的阶段,改错是调试阶段。然后就是交付用户使用,及维护。 以上几点是软件工程的生命周期的六个阶段。软件工程过程和软件工程生命周期也不能等同。 软件工程过程如下: 软件规格说明:规定软件的功能及其运行的限制 软件开发:产生满足规格说明的软件: 软件的确认:确认软件能够完成客户提出的要求: 软件演进:为满足客户的变更要求。软件必须在使用的过程中演进。 pdca 软件工程过程与软件生存期相对应。软件规格说明对应计划阶段,软件开发对应设计、编程阶段,软件的确认对应测试调试阶段,软件演进对应运行维护阶段。 软件开发的每个过程都有相关文档,用老师们的话说叫做以文档为驱动。文档的好坏直接影响到软件开发的进度和软件的质量。而文档中最多的是使用图表,dfd图,sc图。数据流程图、过程流程图、系统流程图等各种图表。还是那句话,一张好的图表胜过一千句话。 在软件生存周期的各个部分都有各自要注意的地方,过着说是各自的重点(或者是知识点)。 今天已经是22号了,文档还没写。先写文档了。唉,又落后了。 软件工程期末总结篇2 第一章概述 1.什么是软件: 计算机软件是指与计算机系统操作有关的程序、规程、规则及任何与之有关的数据和文档资料。 2.软件三要素:3.软件的特点: 1软件是逻辑实体,始终不会自然变化,只是其载体可变,它并不是物理实体;2软件是一种创造性的思维活动3软件是可以长期运行的,它不会因时间长短而磨损、老化4软件 的研制过程主要是脑力劳动的过程,在本质上是无形的、不可见的和难以控制的5程序是指令序列,即使每条指令都正确,但由于在执行时其逻辑组合状态千变万化,其不一定完全正确6软件中系统的数学模型是离散型的,其输入在合理范围内微小的变化可能引起输出的巨大变化,7对软件的生产过程进行严格的控制,可得到完全一致的产品8软件中不可靠的问题基本是由于开发过程中的人为差错所造成的缺陷而引起的9软件在使用过程中出现故障后,必须修改原产品以解决问题,若修改时未引起新问题,其可靠性就会增长10软件维护通常涉及软件更改,软件更改通常会对其他部分造成影响11软件的冗余设计应确保冗余软件相异,否则不仅不能提高可靠性反而增加复杂性,降低可靠性 4.软件的分类: 按功能:系统软件、支撑软件按工作方式:实时处理软件、嵌入软件按规模:小型程序、中型程序、大型程序按使用频度:常用软件、不常用软件按服务对象:专用软件、通用软件按软件失效性:一般性软件、高可靠性软件 5.软件工程:是指导计算机软件开发和维护的工程学科6软件工程的三要素:过程、工具、方法7.软件工程的目标、原则目标: 付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能按时完成开发任务及时交付使用开发的软件可靠性高 原则:抽象、信息隐蔽、模块化、局部化、一致性、完全性、可验证性8.产生软件危机的原因: 用户对软件需求的描述不精确,可能有遗漏、有二义性、有错误 软件开发人员对用户需求的理解与用户本来的愿望有差异大型软件项目需要组织一定的人力共同完成,多数管理人员缺乏开发大型软件系统的经验,而多数软件开发人员又缺乏管理方面的经验软件项目开发人员不能有效地、独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误缺乏有力的方法学和工具方面的支持,过分地依靠程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化软件产品的特殊性和人类智力的局限性,导致人们无力处理“复杂问题” 第二章过程与生命周期 1.生命周期定义:软件从定义开始,经过开发、使用和维护,直到最终退役的全过程。2三个阶段:软件定义、软件开发、软件运行维护3.每个阶段有哪些步骤: 软件定义:可行性研究、需求分析软件开发:概要设计、详细设计、实现、集成测试、确认测试软件运行维护:使用与维护、退役 4.每个步骤的主要内容:5.模型有哪些 以软件需求完全确定为基础的瀑布模型;在开发初期仅给出基本需求的渐进式模型,如原型模型、螺旋模型、v模型等;基于知识的智能模型等等。 6.模型各自的特点 瀑布模型:适用于需求明确的小型系统的开发体现了推迟实现的观点前一个阶段的结束是下一个阶段的开始没个阶段要形成相应的文档,并对文档进行复审(线性顺序模型)原型模型:快速开发工具循环低成本种类:渐进型和抛弃型增量模型:(是核心部分产品)每个增量的开发可用瀑布或快速原型模型。和原型模型不一样的是,增量模型虽然也具有“迭代”特征,但是每一个增量都发布一个可操作的产品,不妨称之为“产品扩充迭代”。它的早期产品是最终产品的可拆卸版本,每一个版本都能够提供给用户实际使用。螺旋模型:沿螺线自内向外每旋转一圈便开发出更为完善的一个新的软件版本。对于高风险的大型软件,螺旋模型是一个理想的开发方法。半径与风险成反比半径与成本成正比v模型:是瀑布模型的一种变体 第三章可研 1.什么是可研:就是按照各种有效的方法和工作程序,对拟建项目在技术上的先进性、 适用性、经济上的合理性、盈利性,以及项目的实施等方面进行深入的系统分析,并评论总体方案(系统目标)的可能性,必要性。 2.可研的内容: 技术可行性经济可行性操作可行性(组织管理可行)社会可行性(法律可行性)抉择 3.可研报告如何编写 简要步骤:定义问题,分析问题,导出试探性的解法。复查、改进所提出的解法,并确定解法。提出符合系统目标的高层逻辑模型。设想出各种可能的物理系统。从技术、经济和操作等各方面,分析物理系统的可行性。提出一个推荐的行动方针,提交用户和使用部门负责人审批详细步骤:(1)复查确认系统目标、规模访问关键人员阅读有关材料确认问题及约束条件(2)研究目前正在使用的系统工作流程实地考察阅读系统有关的文档资料和使用手册了解系统能做什么,不能做什么。理解、记录系统的接口(3)导出新系统高层逻辑模型在了解目标系统应具有的基本功能和约束的基础上,用数据流图和数据字典,定义新系统的高层逻辑模型,以描述对新系统的设想。(4)重新定义问题与用户一起确认系统的逻辑模型,直到与用户达成共识(5)导出和评价供选择的解决方案提出若干个比较抽象的解决方案,然后从技术、经济、操作等方面进行评价。(6)推荐可行的方案确定是否继续项目。?选择一种最好的方案,并说明理由。(7)草拟开发计划工程进度表所需的开发人员、资源成本(8)编写可行性研究报告,送审可行性分析报告(供用户和使用部门的负责人审查、决策) 第四章需求 1.需求:是指用户对目标软件在功能、行为、性能、设计、约束等方面的期望2.需求的分类、内容有哪些: 分类:功能性需求:定义了系统做什么(描述系统必须支持的功能和过程)非功能性需求(技术需求):定义了系统工作时的特性(描述操作环境和性能目标)内容:功能、性能、环境、界面、用户或人的因素、文档、数据、资源、安全保密、软件成本消耗与开发进度、质量保证 优秀的需求所具有的特性:完整性、正确性、可行性、必要性、划分优先级性、无二义性、可验证性 3.获取需求的方法:采用原型、访谈、问卷调查、参与用户工作、参考遗留系统4.分几个阶段:问题分析、需求描述、需求评审5.需求分析报告如何编写:(p47) (应该先了解宏观的问题,再了解细节的问题)引言、任务概述、需求规定、运行环境设定、缩写词表、参考文献 6.dfd的基本元素:数据流、加工、文件、源头或终点7.如何画:(思想:抽象与自顶向下的逐层分解)和掌握pdl语言 了解dfd的特性:只描述数据的流动、dfd分成多层(子图、父图概念)表示,从而逐步展开数据流和功能的细节 8面向对象以及uml面向对象的几个主要概念:对象、属性、操作类、封装、继承消息、关系、多态 对象:一个对象就是一个独立存在的客观事物,它由一组属性和对属性进行操作的一组操作构成。属性和操作:属性是对象静态特征的描述,操作是对象动态特征的描述。对象同时具备静态特征和动态特征。类:是具有相同属性和相同操作(服务)的对象的集合。它包括属性和操作(注:类的服务和操作只是叫法上的区别)。封装:封装是指按照信息屏蔽的原则,把对象的属性和操作结合在一起,构成一个独立的对象。封装的作用在于,它保护了类的具体实现,隐藏了用户无需关心的细节,同时对用户体现出来相同的接口(即操作方法),从而提高了可复用性。继承:继承表达了对象的一般与特殊的关系。特殊类的对象具有一般类的全部属性和服务消息:向某个对象发出的服务请求称作消息。结构与连接关系:一个系统一般由很多对象组成,对象之间并不是互相孤立的,而是存在着各种各样的关系。这些关系可以分为:部分与整体的关系、一般与特殊的关系、实例连接的关系、消息连接的关系。多态性:多态性是指一般类中定义的属性和服务,在特殊类中不改变其名字,但通过各自不同的实现后,可以具有不同的数据类型或具有不同的行为。 9.9中uml图是干什么的,每种图的基本元素准确识别 uml的组成:基本构造块事物、图、关系?公共机制?规则用例图(usecasediagram):描述系统功能;类图(classdiagram):描述系统的静态结构;对象图(objectdiagram):描述系统在某个时刻的静态结构;时序图(sequencediagram):按时间顺序描述系统元素间的交互协作图(collaborationdiagram):按照时间和空间顺序描述系统元素间的交互和它们之间的关系;状态图(statediagram):描述了系统元素的状态条件和响应;活动图(activitydiagram):描述了系统元素的活动;构件图(ponentdiagram):描述了实现系统的元素的组织;部署图(deploymentdiagram):描述了环境元素的配置,并把实现系统的元素映射 到配置上。 10.uml图中的关系(组合、聚合、泛华|继承、依赖、实现、包含、扩展) 泛化:泛化关系也称为继承关系,这种关系意味着一个元素是另一个元素的特例依赖:表示一个元素以某种方式依赖于另一个元素实现:实现关系描述一个元素实现另一个元素聚合:表示“整体”与“部分”关系,“部分”元素是“整体”元素的一部分组合:表示强烈的”整体“与”部分“关系,”部分“不能独立于”整体“存在。包含:包含是指基本用例(baseusecase)会用到包含用例(inclusion),具体地讲,就是将包含用例的事件流插入到基础用例的事件流中。包含用例是可重用的用例多个用例的公共用例。扩展:扩展用例的行为是否被执行要取决于主事件流中的判定点 11.类图与程序的互相转换;识别类图以及关系 类图主要描述系统中类的静态结构。在类图中不仅需要定义系统中的类,详细表示类的内部结构,如类的属性和方法。另一方面还需要详细表示类与类之间的联系,如关联、依赖、聚合等。类图描述的是一种静态关系,在系统的整个生命周期都是有效的。识别类图:识别实体类:实体类都是系统中存在的对象,我们可以分析人员、组织、设备、事件和外部系统等识别边界类:关注系统的边界:系统的硬件接口(打印机、窗体等),每个参与者与用例的交互。识别控制类:关注用例图中的动词及事件。关系:类、关联、接口、依赖、泛化、实现关系。 第五章设计 1.设计分几个阶段:从工程管理角度来看分为:概要设计和详细设计2.概要设计(总体设计):根据软件需求,设计软件系统结构和数据结构,确定程序的组 成模块及模块之间的相互关系。概括地说,“系统应该如何实现?” 3详细设计(过程设计):确定模块内部的算法和数据结构;选定某种过程的表达形式来 描述各种算法;产生精确描述各模块程序过程的详细文档,并进行评审。 4.设计的主要内容:体系结构设计、模块设计、数据结构与算法设计、用户界面设计 如何编写总体设计:1)软件的总体结构和模块外部设计。2)软件处理流程设计。2)确定软件的功能并分配。3)数据结构设计。4)网络及接口设计。5)运行设计。7)出错处理设计。8)性能可靠性及安全保密设计。9)维护设计。 5.设计原理:模块化、抽象、逐步求精、信息隐蔽和局部化、模块独立6.模块独立性7耦合7内聚(思想:采取自顶向下的方式,逐层把软件系统划分成若干 可单独命名和可编址的部分“模块”每个模块完成一个特定的子功能;所有模块按某种方法组成一个整体,完成整个系统所要求的功能。(软件系统就是通过这些模块的组合来实 现。)衡量模块独立性的两个准则:耦合性和内聚性设计要求:低耦合,高内聚改进原则:高内聚、低耦合耦合:无直接耦合、数据耦合、控制耦合、外部耦合、特征耦合、公共环境耦合、内容耦合内聚:功能内聚、顺序内聚、通讯内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚 7.别结构化设计的基本结构过程的设计工具:图形、表格、语言8.读懂程序流程图、盒图、pad图、判定表、pdl,会使用 程序流程图、n-s图、pad图都不易清楚的描述含有多重嵌套的条件选择。判定表可以清晰的表示复杂的条件组合与其对应的处理之间的关系。 第六章编码 1.编码的内容:程序设计语言、结构化程序编程、编程的标准和原则、编程风格、程序效 率 2.编码的基本结构、原则、风格 结构:顺序、选择、循环原则:编写易于修改和维护的代码、编写易于测试的代码、编写详细的程序文档、编程中采用统一的标准和约定,降低程序的复杂性、分离功能独立的代码块,形成新的模块风格:从软件工程学的角度:体现在程序代码逻辑清晰,易读、易理解、易维护,能高效利用系统资源等各个方面。编码风格强调“清晰第一” 第七章测试 1.为什么测试 通过软件测试,可以发现软件中绝大部分潜伏的错误,从而可以大大提高软件产品的正确性、可靠性,进而可显著提高产品质量。 2.测试的过程 3.黑白盒以及分类,每种类别的含义 动态测试(程序执行):黑盒(测试功能)和白盒(测试结构)测试种类:功能测试、接口测试、健壮性测试、强度测试、压力测试、性能测试、用户界面测试、安全测试、可靠性测试、安装/反安装测试、文档测试、恢复测试、兼容性测试、回归测试、测试、测试?静态测试是采用人工检测和计算机辅助静态分析的方法对程序进行检测。主要检测变量是否用错、参数是否匹配、循环嵌套是否有错、是否有死循环和永远执行不到的死代码等等。同时,它还可对程序的特性进行分析。?动态测试是指事先设计好一组测试用例,然后通过运行程序来发现错误。?黑盒测试,又称为功能测试把被测的程序模块看成一个黑匣子,即完全不考虑程序的内部结构和处理过程,测试仅在程序的接口上进行。按规格说明书要求的

温馨提示

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

评论

0/150

提交评论