《河南理工大学软件工程复习资料》由会员分享,可在线阅读,更多相关《河南理工大学软件工程复习资料(19页珍藏版)》请在金锄头文库上搜索。
1、第1章 软件工程学概述基本概念软件危机、软件工程、软件工程方法学、软件生命周期、软件过程、RUP、敏捷过程软件危机的表现、产生的原因、怎样消除结构化范型和面向对象范型的要点、优缺点软件生命周期的组成及各阶段的基本任务各类软件生命周期模型的优缺点、适应范围第2章 可行性研究基本概念可行性研究、数据流图、数据字典可行性研究的目的、任务数据流图工具的实际应用第3章 需求分析需求分析的原因、目的通常软件系统有哪些需求?结构化分析方法建立的3种模型:数据模型、功能模型、行为模型。怎样建立?各种图形工具的实际应用。第5章 总体设计 软件设计阶段的任务软件设计过程中应该遵循的基本原理和启发规则模块独立的优点
2、衡量模块独立性的标准:耦合和内聚如何提高模块独立性涉及到的原理、概念面向数据流的设计方法把数据流图转换成软件结构第6章 详细设计什么是结构程序设计?人机界面的设计问题过程设计的工具程序流程图、盒图、PAD图、判定树、判定表、PDL面向数据结构的设计方法Jackson图 流图和McCabe环路复杂度第7章 实现编码风格软件测试的概念、目的、方法单元测试、集成测试、系统测试、验收测试白盒测试技术:逻辑覆盖和路径覆盖黑盒测试技术:等价类划分和边界值分析、错误推测法测试与调试的区别软件可靠性的概念第8章 维护软件维护的定义和4类活动软件可维护性、怎样提高软件产品的可维护性第9章 面向对象方法学引论面向
3、对象方法学的要点、优点面向对象方法学与传统方法学的区别与联系面向对象的一些基本概念对象、类、实例、消息、方法、属性、封装、继承、多态、重载结构化分析方法建立的3种模型:对象模型、动态模型、功能模型。建立这些模型时主要使用哪些符号/工具?单项选择(每小题2分)判断对错(每小题1分)简答综合题软件工程中的方法技术的应用第一章软件危机概念:指在计算机软件的开发和维护过程中,所遇到的一系列严重问题。P1软件危机表现:P21.对软件开发成本和进度的估计常常很不正确2.用户对“已完成的”软件系统不满意的现象经常发生3.软件产品的质量往往靠不住4.软件常常是不可维护的5.软件通常没有适当的文档资料6.软件成
4、本在计算机系统总成本中所占的比例逐年上升7.软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势软件危机原因:P31.与软件本身的特点有关 2.与软件开发与维护的方法不正确有关软件开发尚未完全摆脱手工开发方式。软件成本相当昂贵,主要依靠大量复杂的、高强度的脑力劳动。 软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。怎样消除软件危机:P41 、彻底消除“软件就是程序”的错误观念。2 、充分认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目,不是个人 独立的劳动。 3 、推广和使用在实践中总结出来的软件开发的成功技术和方法。 4 、开
5、发和使用更好的软件工具软件工程概念:P5概括地说,软件工程是指导计算机软件开发和维护的一门工程学科。.p5软件工程方法学:P9通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学也称为范型。结构化范型和面向对象范型的要点:P91采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务; 2把软件生命周期划分为若干个阶段,按顺序完成每个阶段的任务; 3每个阶段开始和结束都有严格的标准,对任何两个相邻的阶段而言,前一个阶段的结束标准就是后一阶段的开始标准; 4每一个阶段结束之前都必须进行正式严格的技术审查和管理复审传统方法学的优点:P10分解任务,分工合作,降低整个
6、软件开发工程的困难;采用科学的管理技术和良好的技术方法对每个阶段成果都进行严格的审查。保证了软件的质量。 传统方法学的缺点:P10把数据和操作人为地分离成两个独立的部分,增加了软件开发与维护的难度。面向对象范型的要点:P101把对象(object )作为融合了数据及在数据上的操作行为的统一的软件构件。 2功能分解对象分解把所有对象都划分成类(class )。3按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。 4对象彼此间仅能通过发送消息互相联系。优点:P11降低了软件产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作。促进了
7、软件重用。软件生命周期:指软件孕育、诞生、成长、成熟、衰亡的生存过程。软件生命周期的组成P11,及各阶段的基本任务:软件生命周期由软件定义(系统分析),软件开发(具体设计和实现前一个时期定义的软件),运行维护(使软件持久的满足用户的需要)3个时期组成,每个阶段任务1-7P11最下面软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的自工作步骤。P14瀑布模型(开发需求明确的软件)P15优点:可强迫开发人员采用规范的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段的所有产品都必须经过质量保证小组的仔细验证; 缺点:无法解决软件需求不明确或不准确的问题;可能导致最
8、终开发的产品不能真正满足用己户需要。 瀑布模型比较适合开发需求明确的软件。快速原型模型(需求不太明确)P16优点:1 、通常能反映用户真实需求;2 、软件产品的开发基本上是线性顺序进行的。增量(渐增)模型P17优点:能在较短的时间内,提供可完成部分工作的初步产品给用户; 用户有较为充裕的时动间学习和适应新产品。缺点:对开发人员技术能力要求较高,要求能从系统整体出发正确划分增量构件,并进行分手别开发,最后能很好 地集成这些构件。螺旋模型(适合大型软件开发)P19优点:强调可选方案和约束条件,有利于已有软件的重用,也有助于把软件质量作为软件开丰发的一个重要目标; 减少了过多测试(浪费资金)或测试不
9、足(产品故障多)所带来的风衣险; 维护是一个周期,与开发并没有本质区别缺点:需要开发人员具有相当丰富的风险评估经验和专门知识;进行风险分析的费用可能较足大。RUP概念:P22称RUP 或UP基于构件(component),在UML基础上发展起来的,“用例驱动,以架构为核食心,迭代并且增量”。在某种程度上,统一过程尝试从传统软件过程中挖掘最好的特征和性懒质,但是以敏捷开发中许多好的原则来实现。敏捷过程概念:P25敏捷过程是针对传统的瀑布开发模式的弊端而产生的一种新的开发模式,目标是提高开发效惰率和响应能力。根据下述4个价值观提出的软件过程统称为敏捷过程1开发人员的素质及相互间的交互与协作比过程和
10、工具更重要2可以工作的软件比面面俱到的文档更重要3与客户的合作比合同谈判更重要4及时响应变化比死板地遵循计划更重要第二章可行性研究:开发一个基于计算机的系统通常都受到资源(人力、财力、设备 等)和时间上的限制,可是行性研究主要从经济、技术、法律等方面分析所给出的解决方案是否可行,能否在规定的资大源和时间的约束下完成。可行性研究目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。 不是解决问忌题,而是确定问题是否值得去解决。P35可行性研究的任务:P351. 技术可行性:使用现有的技术能实现这个系统吗?主要考虑:开发风险;资源;相关技术的发展2. 经济可行性:这个系统的经济效益能超过它的开
11、发成本吗?系统经济效益=新系统增加的收入新系统节省的费用考虑:成本/效益分析、长期的公司经营策略、对其他单位或产品的影响、开发所需的成本和资源、潜在的市场前景 3. 操作可行性:系统的操作方式在用户组织内行得通吗?用户使用可能性;时间进度可行性;组织和文化上的可行性4. 其他:法律可行性、社会效应、管理问题等可行性研究的主要任务是“了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。可行性研究的最根本任务是对软件开发以后的行动方针提出建议。可行性研究所需要的时间长短取决于工程的规模。数据流图描绘系统的逻辑模型,图中无具
12、体的物理元素,只是描绘信息在系统中流动和处理的情况,是一种图形化技术P40数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。P47数据流图工具的实际应用(看书例子)P44第三章软件需求指用户对所开发的软件在功能、性能、环境、可靠性等各方面的要求。需求分析主要回答待开发的系统必须“做什么”,并用 软件需求规格说明书 的形式准确、详细、规范 地表达出来。可以说需求分析是做系统之前必做的。软件系统有哪些需求:P56 功能需求。 性能需求。 可靠性和可用性需求。 出错处理需求。 接口需求。 约束。逆向需求。将来可能提出的要求。结构化分析是面向数据流进行分析的方法,主要建立以
13、下几种模型: 实体-联系图(Entity-Relationship Diagram, E-R图)来创建数据模型,描述系统中所有重要的数据对象。 数据流图(Data Flow Diagram, DFD):用来创建功能模型,描述了信息流和数据转换。 状态转换图(State-Transition Diagram,STD)用来创建行为模型,描述系统状态如何响应外部事件,而进行转换。各种图形工具的实际应用。和第3章的习题ER图P64 状态转换图P66-67 数据流图例P44第五章软件设计两个阶段的任务P91第一阶段:概要设计(总体设计)1方案设计,设想各种可能方案,分析选出最佳方案并制定相应的实现计划。
14、2软件体系结构设计,确定软件系统中每个程序是由哪些模块组成的,以及它们之间的关系第二阶段:详细设计(过程设计)过程设计设计软件体系结构中所包含的每个模块的实现算法.1数据设计,设计软件中所需要的数据结构。2接口设计,设计软件内部各模块之间、软件与协作系统之间以及软件与使用它的人之间的通信方式软件设计过程中应该遵循的基本原理P941模块化2抽象3逐步求精4信息隐蔽和局部化5模块独立模块化的优点:模块化是软件解决复杂问题所具备的手段,可降低软件复杂性,减少开发工作量,从而降低开发成本,提高软件生产率,是模块化的依据。P97有效的模块化的软件比较容易开发出来.独立的模块化比较容易测试和维护.衡量模块
15、独立性的两个准则:耦合性(coupling ) 衡量不同模块彼此间互相依赖(连接)的紧密程度。内聚性(cohesion )衡量模块内部各个元素彼此结合的紧密程度。P97提升模块独立性改进原则的方法:高内聚,低耦合!P99启发规则: 改进软件结构,提高模块独立性 模块规模适中 深度、宽度、扇出和扇入适中 将模块的影响限制在控制范围内 降低模块接口的复杂性 设计单入口单出口的模块 模块功能应该可预测P99面向数据流的设计方法:面向数据流设计(DFOD)是与数据流分析(DFA)对应的结构化软件设计技术。 面向数据流的设计将得到以数据流图为基础的软件模块结构图P104 (区别) 变换型数据流基本模型:特点:具有明确的传入、变换(或称主加工)和传出界面的DFD事务型数据流基本模型:事务型数据流图中存在一个事务中心(也就是数据处理、加工中心)它将输入分离成若干个发散的数据流,形成许多活动路径,并根据输入值选择其中一条路径