- 相关推荐
软件工程期末总结
今天视频看完了,可是没有总结。还是感觉不会总结。一想到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 的组成:基本构造块 事物、图、关系 ? 公共机制 ? 规则 用例图(use case diagram) :描述系统功能; 类图(class diagram) :描述系统的静态结构; 对象图(object diagram) :描述系统在某个时刻的静态结构; 时序图(sequence diagram) :按时间顺序描述系统元素间的交互 协作图(collaboration diagram) :按照时间和空间顺序描述系统元素间的交互和它 们之间的关系; 状态图(state diagram) :描述了系统元素的状态条件和响应; 活动图(activity diagram) :描述了系统元素的活动; 构件图(component diagram) :描述了实现系统的元素的组织; 部署图(deployment diagram) :描述了环境元素的配置,并把实现系统的元素映射
到配置上。
10.uml 图中的关系(组合、聚合、泛华|继承、依赖、实现、包含、扩展)
泛化:泛化关系也称为继承关系,这种关系意味着一个元素是另一个元素的特例 依赖:表示一个元素以某种方式依赖于另一个元素 实现:实现关系描述一个元素实现另一个元素 聚合:表示“整体”与“部分”关系,“部分” 元素是 “整体”元素的一部分 组合:表示强烈的”整体“与”部分“关系,”部分“不能独立于”整体“存在。 包含:包含是指基本用例(base use case)会用到包含用例(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.黑白盒以及分类,每种类别的含义
动态测试(程序执行) : 黑盒(测试功能)和白盒(测试结构) 测试种类:功能测试、接口测试、健壮性测试、强度测试、压力测试、性能测试、用 户界面测试、安全测试、可靠性测试、安装/反安装测试、文档测试、恢复测试、兼容 性测试、回归测试、α 测试、β 测试 ? 静态测试是采用人工检测和计算机辅助静态分析的方法对程序进行检测。主要检测 变量是否用错、参数是否匹配、循环嵌套是否有错、是否有死循环和永远执行不到 的死代码等等。同时,它还可对程序的特性进行分析。 ? 动态测试是指事先设计好一组测试用例,然后通过运行程序来发现错误。 ? 黑盒测试,又称为功能测试——把被测的程序模块看成一个黑匣子,即完全不考虑 程序的内部结构和处理过程,测试仅在程序的接口上进行。按规格说明书要求的输 入数据与输出数据的对应关系设计测试用例,是根据程序外部特征进行测试。 ? 白盒测试——把被测的程序看成一个透明的白匣子,即完全了解程序的内部结构和
详细的处理过程,测试是在程序的内部结构上进行。即要求针对每一条逻辑路径都 要设计测试用例,检查每一个分支和每一次循环的情况。
4.软件缺陷的集群现象:
第八章 维护
1.维护:指在软件运行/维护阶段对软件产品所进行的修改,就是所谓的维护。 2.维护的分类(区别、识别) :纠错性维护、适应性维护、改善性维护/扩充与完善性维
护、预防性维护 每种类的含义: 纠错性维护:为改正软件系统中潜藏的错误而进行的活动。 适应性维护:为适应软件运行环境的变化而修改软件的活动。 改善性维护:根据用户在软件使用过程中提出的建设性意见而进行的维护活动。 预防性维护(软件再工程) :为了进一步改善软件系统的可维护性和可靠性,并为以后 的改进奠定基础。预防性维护可以采取逆向工程和重构工程方式
3.维护的副作用:代码副作用、数据副作用、文档的副作用
代码副作用大多数可在回归测试中发现。 数据副作用是由于修改数据结构带来的副作用。设计文档化有助于抑制数据副作用, 由于程序修改而没有对文档进行相应的修改引起文档的副作用。 必须保持文档和程序的 一致性
第九章 项目管理
1.项目:是为提供某项独特产品、服务或成果所做的临时性努力。 2.三要素:时间、质量、费用 3.特点:临时性、独创性、渐进明细 4.项目组织结构:职能型、项目型和矩阵型组织结构类型 5. 5 大过程 9 大知识:
5 大过程:启动、计划、执行、控制、结束过程 9 大知识体系:项目集成管理、项目范围管理、项目时间管理、项目费用管理、项目质量 管理、项目人力资源管理、项目沟通管理、项目风险管理、项目采购管理。
【软件工程期末总结】相关文章:
软件工程期末考试试卷(附答案)08-23
软件工程实习总结模板06-22
软件工程实习总结范文08-05
期末总结06-28
期末的总结07-27
关于期末教学总结 期末教学总结与反思10-29
期末总结范文05-27
期末自我总结05-27
期末大会总结06-18