软件工程基础_期末复习概要

上传人:我** 文档编号:114337761 上传时间:2019-11-10 格式:DOCX 页数:12 大小:36.83KB
返回 下载 相关 举报
软件工程基础_期末复习概要_第1页
第1页 / 共12页
软件工程基础_期末复习概要_第2页
第2页 / 共12页
软件工程基础_期末复习概要_第3页
第3页 / 共12页
软件工程基础_期末复习概要_第4页
第4页 / 共12页
软件工程基础_期末复习概要_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《软件工程基础_期末复习概要》由会员分享,可在线阅读,更多相关《软件工程基础_期末复习概要(12页珍藏版)》请在金锄头文库上搜索。

1、软件工程基础期末复习一 绪论1、软件工程的来源和研究内容 软件工程的来源和软件产业的发展密不可分,同软件开发的实际工作密不可分。软件工程这门学科,是从实践中碰到的各种问题中产生的,又反过来指导软件开发工作的实践。 软件工程这门学科的主要研究内容包括:(1)软件开发的理论。任何一门学科发展到一定程度,都会形成一定的理论。软件开发的理论当然是整个软件开发实践的一些经验总结,并且是从这些经验中抽象出来的关于软件开发的一些基本概念、原则、思想等等。(2)软件开发的方法。在一些公认的理论的指导下,不同的软件开发人员和研究人员,都提出了各种各样的具体方法,这些方法各有优势,也各有不足。但是大多数都已经在实

2、际运用中取得了比较好的效果。(3)软件开发的标准。任何一个产业,要能够实现工业化的、大批量的生产,必需有一定的大家共同承认和共同遵守的标准。在技术领域,标准的来源主要有两种,一种是由各种标准化组织制定的(包括国际的、国家的、行业的),另一种是由在这个产业里居主导地位的生产厂商事实上形成的,当然,这种标准也会根据市场情况逐渐地被标准化组织所采纳。2、软件的定义和特点 软件是指计算机系统中与硬件相互依存的另一部分,包括程序、数据及相关文档的完整集合。 软件的主要特点为:(1)软件不是物理实体,而是一种特殊的逻辑实体;(2)软件的开发和设计过程是以人为主的,是通过设计将人的智力成果转化成软件;(3)

3、软件设计的结果是没有误差概念;(4)软件一旦开发成功,它不会随着时间的流逝老化;(5)软件的开发过程和生产过程是统一在一起的,开发过程的结束也就是生产过程的结束;(6)软件完成后有一个较长时期的维护工作。3、软件工程的产生背景: 在本世纪60年代末由于缺乏对软件开发工作的研究,缺乏正确的理论和方法导致的“软件危机”,表现在:(1)软件的质量难以达到用户的要求,并且极易发生故障,可靠性差;(2)开发一个软件的成本和进度难以预测,也难以控制;(3)开发出来的软件维护困难;(4)软件开发工作难以管理。(5)软件的成本逐年上升。 造成“软件危机”的原因首先是由于软件开发产业的发展时间不长,积累的经验还

4、没有上升成为能够指导实践的理论;但是,从最早的程序员开发软件的方式中遗留下来的很多错误观念,也是使软件开发工作难以跟上整个计算机技术发展水平的重要原因,这些错误观念包括:(1)开发软件就是编程。(2)只要向用户提交了程序,并且可以运行,软件开发工作即告结束。(3)软件是灵活的,可以很容易修改。(4)增加人员可以加快进度。 正是因为面对着软件开发中的各种各样的问题,在上世纪60年代末提出了“软件工程”这一概念。4、软件工程的定义和基本目标:“软件工程”的定义(IEEE):将系统的、规范的可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。软件工程研究的目标:在有限的时间、人力、

5、物力、财力的基础上,生产出符合用户需求的软件产品,提高软件生产率。软件工程的组成:方法、工具和过程。5、软件工程的七条基本原理: 任何一门学科,例如数学、物理等学科都有一些基本的原理,实际上就是一些公理。软件工程的7条基本原理是:(1)用分阶段的生命周期计划严格管理;(2)坚持进行阶段评审;(3)实行严格的产品控制;(4)采用现代程序设计技术;(5)结果应能清楚地审查;(6)开发小组的人员应该少而精;(7)承认不断改进软件工程实践的必要性。二 软件工程的生命周期方法学1、 软件生命周期定义和阶段划分: 软件工程认为:任何一个软件,都有产生、发展、消失(灭亡)的过程。这个过程就叫做软件的“生命周

6、期”。它是软件工程的基本概念,软件工程的各种理论和方法都是以软件的生命周期为基础。 软件生命周期的阶段划分为四大阶段:需求分析(问题定义和可行性分析)、设计(概要设计、详细设计、实现与测试)、应用和维护(灭亡)。2、软件工程生命周期方法学的定义和特点 软件工程的生命周期方法学是指严格按照软件的生命周期,采用分阶段、有计划和控制,以及顺序实施的步骤,以结构化分析与设计(Structured Analysis,SA; Structured Design,SD)或面向对象分析与设计(Object-Oriented Analysis,OOA;Object-Oriented Design,OOD)为主的

7、软件开发过程。 生命周期方法学的特点是:(1)分阶段计划;(2)瀑布式开发模式;(3)阶段性的技术审查和管理复审基线;(4)在各个阶段采用结构化技术 / 面向对象技术。结构化技术是指采取自上而下,逐步求精,单入口,单出口的模块化的分析与设计的模型。面向对象技术是指在客观世界映射到信息世界时,采用人们认识客观世界的过程中普遍运用的思维方法,直观、自然地描述客观世界中的有关事物类与对象,并通过抽象性、封装性、继承性、多态性和消息机制等设计类与对象,并建立他们之间关系的分析与设计的模型。3、生命周期方法学的阶段划分:(1)问题定义(2)可行性研究(3)需求分析(4)概要设计(5)详细设计(6)编码(

8、7)测试(8)应用与维护 按照软件工程思想,采用生命周期方法学,则上述的某些阶段,可以简化和合并,但是不能够完全取消,或者破坏瀑布模型的从上至下的流程。三 问题定义和可行性分析1、问题定义阶段的任务、步骤和文档 问题定义阶段的主要任务是:明确要解决的问题究竟是什么。 问题定义的步骤可以分为三步:(1)问题定义:系统分析员与用户方的项目负责人交谈,并对现场情况进行调研,然后根据所收集到的资料,写出软件的开发目标报告书草稿。(2)需求描述:系统分析员以开发目标报告书草稿为基础,一方面交用户审阅,一方面与用户的项目负责人、使用负责人、其他有关人员进行详细的讨论,澄清双方认识上不一致的地方和报告中描述

9、模糊的地方,最后对开发目标报告书进行修改,写出正式的开发目标报告书。(3)需求评审:系统分析员将正式的开发目标报告书提交用户审阅,经用户方负责人签字认可后问题定义阶段结束。 问题定义阶段结束提交的文档为软件开发目标报告书,内容包括:(1)软件系统名称;(2)软件系统目标;(3)软件开发和运行环境;(4)软件开发背景;(5)软件开发的成本和进度限制。2、描绘系统逻辑模型的图形工具2.1 数据流图 数据流图(DFD)纯粹是从系统数据流动的角度来描绘系统的逻辑模型。 数据流图的基本符号只有数据的源点/终点、变换数据的处理、数据存储和数据流线四种。强调一点:DFD中带箭头的线段表示数据的流动,而不是控

10、制的转移。2.2 数据字典数据字典是表达系统逻辑模型中所有数据元素详细情况的工具,它严格定义整个系统逻辑模型中所涉及到的基本数据、数据结构、文件形式,每一个元素作为一个词条,在词条解释中对该元素的定义、描述、使用特点、与其他数据元素的关系等等都进行了准确详细的表达。数据字典的形式定义包括:表格、范式(定义式)、Wornior图等形式。 在编辑数据字典的时候,要注意这样几个问题:(1)完整性:在DFD中的数据流名称在DD中必定有相应的名称。(2)一致性:在DFD中的数据流名与在DD中定义的数据语义必须一致。(3)正确性:数据定义真实描述用户领域的数据、结构、文件等信息。四 需求分析1、需求分析的

11、主要任务 需求分析的主要任务是分析出软件开发目标中的所有具体要求,主要包括:(1)功能需求:系统实现什么功能?(2)性能需求:包括速度、存储、数据量、安全性和可靠性等指标。(3)领域需求:包括与领域相关的保密性、可扩展性等。(4)其它需求:如预防性维护需求、版权、政策等。2、需求分析与建模(1)问题定义:功能和性能(约束条件),注意问题说明和定义的一致性和完整性;(2)结构化分析方法按照结构化的思想,采取从总到分,逐步求精的过程。按照面向对象的思想,采取类-对象分析、属性、方法、服务、主题层分析。(3)需求建模:数据建模、功能建模、行为建模(4)修正开发计划 对在可行性研究阶段制定的开发计划进

12、行仔细的修订,对人员的配备、设备的要求、进度安排、费用分配都进行进一步的研究。3、需求分析的文档4、需求分析阶段使用的图形工具l ER图;l DFD:要注意分解前后数据流图的一致性。l STD:l 判定树、判定表;l PDL描述:算法描述工具有结构化分析语言、判断树、判定表等。五 软件设计基础1、软件设计的概念和原理模块的独立性由模块化、抽象和信息隐藏共同体现。(1)模块化 模块化是结构化设计的基本理论之一。模块是指具有输入、输出、逻辑功能、内部数据这四个基本属性的指令集合。模块化的目的就是为了降低软件自身的复杂度,减少开发所需的工作量。在模块数量适中的某一个值时,软件开发的总工作量最少,成本

13、也最低。(2)抽象 抽象是一个方法论的名词,抽象是指从客观事物中抽取它们共同特征,并对其进行概括和总结;对于它们在其他细节上的差异暂时忽略。在软件设计中,采用抽象的方法也就是采用结构化的思想。(3)信息隐藏和局部化信息隐藏:每一个模块内部与其他模块无关的数据,其他模块都没有办法访问;每个模块只完成一个相对对立的功能;模块之间交换的仅是为了实现系统功能而必须交换的信息。局部化:是指应该把可能互相作用的过程和数据尽量放在一个模块内。 信息隐藏和局部化的意义都在于降低模块之间接口的复杂度,提高模块的独立性。(4)模块独立 模块之间的独立程度的度量方式是模块的耦合和内聚。1、耦合 耦合是对一个软件结构

14、内不同模块之间互连程度的度量。按照由弱至强的顺序,模块间的耦合关系有这样几种:l 非直接耦合:模块之间没有直接的调用关系;l 数据耦合:信息交换仅发生在接口上;l 特征耦合:交换的信息是一个复合的数据结构;l 控制耦合:交换的信息是控制信息;l 公共耦合:交换的公共的数据环境;l 内容耦合:模块之间的叠加。 对于良好的结构化设计,应该是:尽量使用数据耦合、少用控制耦合,限制公共耦合范围,坚决不用内容耦合。2、内聚: 内聚是指一个模块内的处理和数据之间的关联程度。一个模块的内聚方式按照内聚程度的由低到高排列,有以下几种:l 偶然内聚:模块内部是松散的关系(如节约内存等);l 逻辑内聚:逻辑上相关

15、,例如都是输入或者输出操作,用参数区别;l 时间内聚:在同一时间内上运行,或者在逻辑上有先后顺序;l 过程内聚:按照过程描述自上而下组织任务,如“打开 / 关系”l 通信内聚:模块内部操作同一数据区域 / 结构;l 顺序内聚:同一功能、按顺序执行;l 功能内聚:模块是一个整体,完成一个独立的功能。2、启发式规则(1)改进软件结构提高模块独立性;(2)模块规模应该适中;(3)深度、宽度、扇出和扇入都应该适中;(4)模块的作用域应该在控制域之内;(5)力争降低模块接口的复杂程度;(6)设计单入口、单出口的模块;(7)模块功能应该可以预测;(8)内聚高的指标不能绝对;(9)根据关键任务优化模块划分。“先让系统正确运行起来,再让系统好起来!”六 总体设计1、总体设计的目标总体设计的目标从根本上来说,就是要确定软件的总体实现方案和总体结构。总体设计分为:结构设计、系统数据设计和

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号