版权声明:本文版权归05112114、05112125 所有,未经许可,任何任何媒体均不得改变其形式,进行转载或摘录,违者必究!软件工程期末考试复习资料一(仅参考)拟订人:超越吉他手、朱古力、哖_少オ輕狂第一章:软件工程的产生和发展有关复习资料一、软件工程的定义:1、软件危机的产生:软件危机的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。
2、软件危机主要表现:两个方面:①软件产品质量低劣,甚至开发过程就夭折②软件生产率低,不能满足需要3、软件工程的三要素:①方法:完成软件开发各项任务的技术方法②工具:研究支撑软件开发方法的工具③过程:为开发高质量软件所规定的各项任务的工作步骤4、软件工程研究的标准及目标:标准:分为4个层次,国际标准、行业标准、企业规划、项目规划目标:以较少的投资获取高质量的软件。
有易于维护、低的开发成本、高性能、缩短开发期5、软件工程研究的主要内容:以下两个方面:①软件开发方法、技术;软件开发工具及环境②软件管理技术、软件规范(国际规范)7、软件工程学的目的:①以较少的投资获取高质量的软件②运用科学的方法和工程化的规范管理来指导软件开发③克服软件危机8、软件工程的基本原则:如下4条基本原则①必须认识软件需求的变动性,采取适当措施来保证结果产品能忠实地满足用户需求②稳妥的设计方法大大地方便了软件开发,以达到软件工程的目标③软件工程项目的质量与经济开销直接取决于对它所提供的支撑的质量与效用④有效的软件工程只有在对软件过程进行有效管理的情况下才能实现9、软件工程过程及特性:是指在软件工具的支持下,所进行的一系列软件工程活动包括4类基本过程:1)软件规格说明书2)软件开发3)软件确认4)软件演进特性:可理解性、可见性、可靠性、可支持性、可维护性、可接受性、开发效率和健壮性等。
二、软件与软件生存周期1、软件的概念和特点1)概念:软件是程序以及开发使用维护程序所需的所有文档2)软件的构成:由应用程序、系统程序、面向用户的文档及面向开发者的文档4部分构成即:软件=程序+文档3)特点:①软件是一种逻辑实体,不是具体的物理实体②软件产品的生产主要是研制③软件具有复杂性,开发和运行常受到计算机系统的限制、④软件成本昂贵,开发方式还没完全摆脱手工生产方式⑤软件不存在老化和磨损,存在在退化问题2、软件的分类1)按照软件功能划分①系统软件②支撑软件③应用软件2)按照软件规模划分微型、小型、中型、大型、甚大型、极大型3)按照软件工作方式划分实时处理软件、交互式软件、批处理软件4)按照软件服务对象的范围划分项目软件、产品软件3、软件结构及结构图衡量软件结构的有关指标:1)深度2)宽度3)扇出数扇入数软件结构的形态准则:顶部宽度小,中部宽度大,底部宽度次之;在顶部有较高的扇出数底部有较高的扇入数软件结构:1)模块(构成软件系统结构的基本元素)2)模块化3)软件的层次结构4)树状结构:特点是是程序的主模块、整个结构只有一个顶层模块、也只有一个上级模块、同一层模块之间没有横向联系5)网状结构:特点是任何两个模块之间有双向的关系、都是平等的结构图的构成:主要有模块、调用、数据4、软件生存期有关资料1)定义:是指从软件开始开发到报废的全过程,亦称软件生存期(l i f e c y c l e)。
一般用经典的瀑布模型来描述。
2)软件生存周期的阶段:分为7个阶段①可行性研究和项目开发计划②需求分析③概要设计④详细设计⑤编码⑥测试⑦维护3)生存周期模型瀑布模型(计划时期、开发时期、运行时期)、循环模型、增量模型、螺旋模型(4个工作步骤:制定计划、风险计划、实施工程、客户评估)、喷泉模型、智能模型第二章:软件需求分析有关复习资料一、软件需求分析有关资料1、需求分析的任务:1)基本任务:是准确地定义新系统的目标,获得需求规格说明书2)具体任务:①确定系统的综合要求②分析系统的数据要求③导出系统的逻辑模型④修正系统的开发计划2、需求分析的过程:1)问题识别2)分析与综合3)编写文档4)分析评审3、需求分析的原则:1)能够表达和理解问题的信息域和功能域2)能够对问题进行分解和不断细化,建立问题的层次结构3)需要给出系统的逻辑视图和物理视图4、需求分析的方法:1)功能分析方法2)结构化分析方法3)信息建模法4)面向对象分析方法(OOA法)5、需求分析的目的:1)进一步确定用户的需求2)解决系统是做什么的问题6、需求分析中存在的问题:1)明确问题域和系统责任2)充分交流的问题3)需求的不断变化4)考虑复用要求二、软件的开发方法有关资料1、软件的开发方法有关资料1)软件开发方法可分为两大类:面向过程的开发方法、面向对象的开发方法2)面向过程的开发方法分为:①JACKSON方法:由JSP(主要体现程序结构的设计)和JSD(解决I/O结构冲突的问题)方法构成;JACKSON有三种典型动作(顺序、选择、循环);JACKSON设计过程包括建立数据库、建立相应的程序结构图;JACKSON方法的优点是结构清晰、易理解、易修改;缺点是当系统规模及复杂度大时,确定数据库有点困难。
②结构化开发方法:1)是一种面向数据流的开发方法2)基本原则是功能的分解与抽象3)主要特点是快速、自然、方便4)指导思想是自顶向下、逐步求精5)由结构化程序设计方法SP法、结构化设计方法SD法(设计准则是模块内聚性强、模块之间耦合性低)、结构化分析方法SA法构成(其步骤为:建立当前系统的具体模型、抽象出当前系统的逻辑模型、建立目标系统的逻辑模型、设计人机界面问题),其描述的工具有数据流图、数据词典、结构化语言、判定表和判定树③原型化方法:1)又称速成原型法2)又可以分为快速建立需求规格原型和快速建立渐进原型3)基本思想是花费少量代价建立一个可运行的系统4)主要优点在于是一种支持用户的方法,使得用户在系统生存周期的设计阶段起到积极的作用,能减少系统的开发风险5)速成原型法适合于开发大型科学计算、探索型系统、实验型系统信息管理系统、进化型系统、CAI系统、软件系统等6)软件原型可分为:废气型、追加型7)工作模型的步骤有:①快速分析②构造分析③运行和评价模型④修正与改进还分为HIPO、IDEF法3)面向对象的开发方法分为:OOSD法:由OOA法(要建立三种模型:对象模型、状态模型、处理模型)、OOD法、OOP法三部分组成2、数据流图有关资料1)四种基本图形符号:①数据流②加工③数据存储④数据源点或终点2)画DFD图的四步骤:1)确定外部实体2)确定分解顶层的加工3)确定使用的文件4)用数据流将各部分连接起来,形成数据封闭3)画分层DFD图的基本原则:①数据守恒和数据封闭②加工分解的原则③子图与父图的平衡4)数据词典的条目:数据流条目、文件条目、数据项条目、加工条目5)加工逻辑说明的三种描述方式:①结构化语言:特点:简单,易学,少二义性②判定表:特点:可处理较复杂的组合条件,但不易理解.不易输入计算机③判定树:特点:描述一般组合条件较清晰,易理解。
不易输入计算机6)DFD图分类:中心变换型、事物处理型第三章:软件设计及编码有关复习资料一、软件设计有关资料1、软件设计的任务和目标1)任务:将分析阶段获得的需求说明转换为计算机中可实现的系统,完成系统的结构设计,包括数据结构和程序结构,最后得到软件设计说明书。
2)任务分为三部分:①划分模块,确定软件结构②确定系统的数据结构③设计用户界面3)设计的目标:①软件实体有明显的层次结构,利于软件元素间控制②软件实体应该是模块化的,模块具有独立功能③软件实体与环境的界面清晰④设计规格说明清晰、简洁、完整和无二义性2、软件设计:分两步,总体设计和详细设计3、详细设计有关资料1)任务:详细设计阶段的任务是开发一个可以直接转换为程序的软件表示,即对系统中每个模块的内部过程进行设计和描述2)常用的描述方法工具:流程图、结构化流程图(N-S图)、PAD图—问题分析图、PDL 语言二、模块有关资料1、模块的基本属性:有三个基本属性:功能、逻辑、状态2、模块的独立性:1)定义:是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模块的接口是简单的2)模块的基本特征:①内部特征(局部数据、代码)②外部特征(输入/输出、功能)3)度量标准:①耦合性:用于描述模块之间联系的紧密程度②内聚性:用于描述模块内部联系的紧密程度4)耦合性的类型:内容耦合、公共耦合、控制耦合、复合耦合、数据耦合5)内聚性的类型:偶然型、逻辑型、瞬时型、通信型、顺序型、功能型6)模块结构图的改进:①尽可能建立功能模块②消除重复功能③模块的作用范围与控制范围④模块的大小适当⑤模块的扇入扇出数不宜太多三、用户界面设计和程序编码有关资料1、用户界面的特性:1)可使用性2)灵活性3)界面的复杂性与可靠性2、用户界面设计的任务:1)用户特性分析(建立用户模型)2)用户界面任务分析(建立任务模型)3)确定用户界面模型3、用户界面的基本类型:问题描述语言、数据表格、图形与图表、菜单’对话框、窗口等4、数据输出界面设计:1)显示内容选择的原则2)安排显示结构的规则5、提高输入效率的方法:1)尽量减少输入工作量2)输入屏幕与输入格式匹配3)遵循数据输入的一般原则(确定输入、交互动作、确定删除、提供反馈数据6、编码阶段的任务:是为每个模块编写程序。
即是将详细设计的结果转换为用某种计算机语言写的程序7、选择程序设计语言的一般准则:1)项目的应用领域:应尽量选取适合某个应用领域的语言2)算法和计算复杂性:要根据不同语言的特点,选取能够适应软件项目算法和计算复杂性的语言3)软件的执行环境:要选取机器上能运行且具有相应支持软件的语言4)性能因素:应结合工程具体性能来考虑,例如实时系统要求速度,就应选择汇编语言5)数据结构的复杂性:要根据不同语言构造数据结构类型的能力选取合适的语言6)软件开发人员的知识水平以及心理因素知识水平包括: 专业知识,程序设计能力。
心理因素如对某种语言或工具的熟悉程度,受外界的影响8、设计语言的特性:具有很强的过程功能和数据结构功能,并提供结构化的逻辑构造9、程序设计风格:从以下几个方面来考虑设计风格1)源程序文件:⑴符号名的命名⑵源程序中的注释⑶注意源程序的书写格式2)语句构造方法3)数据说明方法4)输入/输出技术10、程序效率:包括代码效率、存储效率、I/O效率第四章:面向对象技术有关复习资料一、面向对象方法概述有关资料1、面向对象:面向对象=对象+类+继承+通信2、面向对象方法的主要特点:1)按照人类习惯的思维方法,对软件开发过程所有阶段进行综合考虑2)软件生存期各阶段所使用的方法、技术具有高度的连续性3)软件开发各个阶段有机集成,有利于系统的稳定性4)具有良好的重用性3、面向对象的基本概念:1)对象:①对象通过其运算所展示的特定行为称为对象行为②对象本身的性质称为属性③对象将它自身的属性及运算“包装起来”,称为“封装”④对象是面向对象的最基本的元素,是分析问题、解决问题的核心⑤对象的基本特征是封装2)类:①类又称对象类是指一组具有相同属性和运算的对象的抽象,一组具有相同数据结构和相同操作的对象的集合②类具有属性,用数据结构来描述类的属性,类具有操作,它是对象的行为的抽象③类具有独立性,是一个独立的封装体3)继承:①是父类和子类之间共享数据结构和方法的机制,这是类之间的关系②子类的公共属性和操作归属于基类,并为每个子类共享③子类继承了基类的特征④继承又分为:单重继承、多重继承4)多态性:①指相同的操作、函数或过程作用于多种类型的对象上并获得不同的结果②多态性允许每个对象以适合自身的方式去响应共同的消息5)消息:①指对象之间在交互中所传送的通信信息②一个消息应该包含以下信息:消息名、接收消息对象的标识、服务标识、消息和方法、输入信息、回答信息6)方法:①类中的操作实现的过程称为方法②方法描述了类与对象的行为二、面向对象的分析与设计有关资料1、面向对象分析的特点及构成:特点:1)有利于对问题及系统责任的理解2)有利于对人员之间的交流3)对需求变化有较强的适应性4)支持软件复用构成:由对象、分类、继承性和消息的通信构成2、分析的基本任务及分析过程:1)基本任务:是完成对所求解问题的分析,确定系统作什么,并建立系统的模型2)分析过程:①论域分析:抽取和整理用户需求并建立问题域精确模型的过程。