软件工程复习:第一章:软件危机软件工程的目标、内容、原则、面临的问题请举例说明软件危机的一些表现,以及按照软件工程方法开发软件的意义所谓软件危机是指在计算机软件的开发和维护过程所遇到的一系列严重问题。
软件危机主要是指如何开发软件,怎样满足对软件日益增长的需求,如何维护数量不断膨胀的现有软件。
软件危机的表现:1.对于软件开发的成本和进度的估计很不准确。
2.开发的软件产品不能满足完全满足用户需求。
3.开发的软件可靠性差。
4.软件通常没有适当的文档。
5.软件的可维护性差。
6.软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。
软件工程定义:将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。
软件工程由方法、工具和过程三部分组成。
软件工程内容:1.结构化理论与方法。
2.模块技术与数据抽象。
3.软件测试与程序正确性证明。
4.软件分析与设计方法、工具与环境。
5.软件工程管理与质量评价。
软件工程的目标是在给定成本、进度的前提下,开发具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。
软件工程研究的主要内容是指软件开发技术和软件开发管理两方面。
软件工程的原则:抽象、信息隐藏、模块化、局部化、一致性、完整性和可验证性。
软件工程面临的问题:软件费用、软件可靠性、软件可维护性、软件生产率、软件重用。
按照软件工程方法开发软件的意义:软件工程方法是完成软件工程项目的技术手段。
它支持项目计划和估算、系统和软件分析、软件设计、编码、测试和维护。
软件工程使用的软件工具是人类在开发软件的活动中智力和体力的扩展和延伸,它自动或半自动地支持软件的开发和管理,支持各种软件文档的生成。
软件工程贯穿于软件开发的各各环节。
管理者在软件工程中,要对软件开发的质量、进度、成本进行评估、管理和控制,包括人员组织、计划跟踪与控制、成本估算、质量保证和配置管理等。
第二章:软件生命周期瀑布模型、原型模型、增量模型结构化开发方法,面向对象的开发方法:题目示例:开发一个制衣厂的生产管理系统,你会选择什么样的模型?为什么?软件生命周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。
划分为问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试和维护8个阶段。
1.瀑布模型:以文档作为驱动,适合于需求很明确的软件项目开发的模型。
严格1软件生命周期各个阶段进行开发。
在开发前均可完整、准确、一致和无二义性地定义其目标、功能和性能等,如编译系统、数据库管理系统和操作系统。
2.原型模型:利用原型法技术快速实现系统的初步模型,供开发人员用户进行交流,采用逐步求精方法使原型逐步完善,避免在瀑布模型冗长的开发过程看不到产品锥形的现象。
适合不能预先确切定义需求的软件开发,项目组成员不能很好协同配合、交流或通讯上存在问题的情况,要有快速建立系统模型的软件工具和环境。
3.增量模型:将整个软件一部分一部分地开发,在需求难以完全明确的情况下,快速分析并构造一个小的原型系统,满足用户的某些要求后,使用户在使用过程中受其启发,逐步确定各种需求。
增量构造模型、演化提交模型、快速原型模型。
结构化开发方法:总的指导思想是自顶向下、逐步求精。
它是一种面向数据流的开发方法。
它的基本原则是功能的分解和抽象。
它是软件工程中最早出现的开发方法,特别适合于数据处理领域的问题。
简单实用,应用较广,相应的支持工具较多,技术成熟。
但它不适应于规模大以及特别复杂的项目,难以解决软件重用问题,难以适应需求变化的问题,难以彻底解决维护问题。
面向对象的开发方法:是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。
包括面向对象分析、面向对象设计和面向对象实现。
第三章:可行性研究的主要任务和步骤:任务:技术可行性、经济可行性、社会可行性、操作可行性。
步骤:系统定义、对于现行系统进行分析研究、导出新系统的逻辑模型、设计方案、推荐可行的方案、编写可行性研究报告。
第四章:需求分析的任务和方法需求分析阶段使用的工具。
需求分析难点:数据流图数据字典。
请写出学生证的数据流条目。
给出一段文字说明,画出流程图。
需求分析是指开发人员要进行细致的调查分析,准确理解用户的需求。
需求分析的任务:问题明确定义、导出软件的逻辑模型、编写文档。
需求分析的方法:功能分析方法、结构化分析方法、信息建模方法、面向对象的分析。
需求分析的工具:1.数据流图和数据词典(结果化分析方法)2.E-R图(面向对象的分析)3.EAR(数据库系统的结构)4.判定表、判定树、结构化语言需求分析的难点:需求易变性、问题的复杂性、交流障碍、不完备性和不一致性。
数据流图(DFD)::描述系统的逻辑模型。
箭头、圆、方框、双杠。
P71数据字典(DD):定义数据流图中的各个成分的具体含义。
符号=被定义为+与m..n界域(两个点)学生证=姓名+学号+学院+卡号学号=“0000000001”..“9999999999”卡号=“000001”..“999999”学院=[“计算机学院”|“建筑学院”|“。
”|…]流程图:DFD第五章:耦合、内聚变换分析和事务分析设计。
要求能根据流程图画出模块结构图。
模块:将需求分析的结构映射为模块,是软件结构设计的基础。
模块化:解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。
模块的耦合:表示软件结构内不同模块之间相互依赖的紧密程度,是度量软件模块结构质量好坏的度量,是对模块独立性的之间衡量指标。
数据耦合、控制耦合、公共环境耦合、内容耦合。
模块的内聚:标志一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。
高内聚:功能内聚、信息内聚中内聚:通信内聚、过程内聚低内聚:时间内聚、逻辑内聚、偶然内聚变换分析设计:数据流图到程序结构图的转换。
1.确定数据流图中的变换中心、逻辑输入和逻辑输出2.设计软件结构的顶层和第一层3.设计中、下层模块4.设计的优化事务分析设计:事务数据流图到程序结构的变换。
1.确定数据流图中的事务中心和加工路径2.设计软件结构的顶层和第一层3.进行事务结构中、下层模块的设计、优化等工作根据数据流图画出模块结构图:输入,变换中心(主模块)、输出了解对象、类、属性、服务、继承、多态性、主动对象的概念。
要求:能举例说明这些概念。
对象:是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。
一个对象由一组属性和一组服务构成。
属性:用来描述对象静态特征的一个数据项。
服务:用来描述对象动态特征的一个操作序列。
特例:1.有属性,没有服务,如信息系统中的人员信息、物质信息2.有服务,没有属性,如操作系统中的屏幕中断:disable()类:类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的对象描述,其内部包括属性和服务两个主要部分。
一个对象又称做类的一个实例。
属性:是一个类中对象所具有的数据值。
一个属性应是纯数据值,而不是一个对象。
名字、年龄和性别是人对象的属性。
服务:服务是一种功能或一种转换,它应用于类中对象使用。
一个类中所有对象共享相同的服务。
打开、关闭、隐藏和重新显示是在窗口类上的服务。
封装:是把对象的属性、服务结合成为一个独立的系统单位,并尽可能隐蔽对象的内部细节。
继承:特殊类的对象拥有一般类的全部属性和服务,就是称做特殊类对一般类的继承。
如class E-DATE:public DA TE单一继承把类组织成为树,多重继承把类组织成为有向无循环图。
消息:是向对象发出的服务请求,包含:提供服务的对象标识、服务标识、输入信息和回答信息。
多态性:是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。
这使得一个属性或服务在一般类及各个特殊类中具有不同的语义。
重载、动态绑定、类属。
主动对象:主动对象是一组属性和一组服务的封装体,其中至少有一个服务不需要接收消息就能主动执行。
一般-特殊结构:描述对象间继承关系整体-部分结构:描述对象间组成关系实例连接:描述对象间静态联系消息连接:描述对象间动态联系第八章:了解建立模型在软件开发中的意义或作用。
软件开发需要模型解决以下问题:1.复杂的系统不能直接了解2.模型是复杂系统早期抽象的重用结构模型的目的:1.了解问题2.介入的工作者相互沟通3.找出错误4.规划和设计5.产生程序代码了解面向对象的分析的主要工作步骤。
有哪些方法可以帮助我们发现对象?发现对象:1.正确地运用抽象原则2.策略与启发:考虑问题域、考虑系统边界、考虑系统责任3.审查和筛选:舍弃无用的对象、对象的精简、推迟到OOD考虑的对象4.识别主动对象面向对象分析的工作步骤 1.发现对象2.对象标识3.定义属性4.定义服务第十章:能举例说明整体-部分结构、一般特殊结构、实例连接、消息连接关系,以及如何在面向对象的语言中实现这些关系。
能从工作步骤、目的、最后的要建立的模型、工作中的难点等方面对面向对象的需求分析和面向结构的需求分析做一个比较。
整体-部分结构:如果对象a是对象b的一个组成部分,则b为a的整体对象,a为b的部分对象,并把b和a之间的关系称做整体-部分关系。
实现:1.把整体对象之间的这个属性变量定义成指向部分对象的指针,或定义成不分对象的对象标识,运行时动态创建部分对象,并使整体对象中的指针或对象标识指向它。
2.用部分对象的类作为数据类型,静态地声明整体对象中这个代表部分对象的属性变量。
一般-特殊结构:如果类A具有类B的全部属性和全部服务,而且具有自己特有的某些属性或服务,则A叫做B的特殊类,B叫做A的一般类。
实现:OOA中通过一种继承机制实现这一功能,只需指明一个类是另一个类的特殊类,继承机制将保证特殊类自动地拥有一般类的全部属性与服务。
实例连接:又称为链,表达对象之间的静态关系。
所谓静态关系是指最终可通过对象属性来表示的一个对象对另一个对象的依赖关系。
实现:一般可用对象指针来实现。
即在被连接的两个类中选择其中一个,在它的对象中设立一个指针类型的属性,用于指向另一个类中与它有连接关系的对象实例。
消息连接:描述对象之间的动态联系,即若一个对象在执行自己的服务时,需要请求另一个对象为它完成某个服务。
消息连接是有向的,从消息发送者指向消息接收者。
第十三章根据书中的人机界面设计准则,提出对某一个具体问题界面设计说明。
比如教学管理系统中的学生成绩录入。
第十六章:要求能对MCCALL的质量模型做一个简单的介绍。
如果你是一个经理,负责提高一个较大型的软件公司的软件开发质量(考试的时候具体提出有哪些问题,不如总是不能做好需求,或者不能按照进度完成等),可以做哪些工作?McCall的质量模型认为软件质量由12个特性组成,分别面向软件产品的运行、修正、转移。