软件工程导论复习资料(汇总).pdf
《软件工程导论复习资料(汇总).pdf》由会员分享,可在线阅读,更多相关《软件工程导论复习资料(汇总).pdf(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 1 第一章第一章 概述概述 1.IEEE 为软件下的定义是:计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必需的数据的完整集合 2.程序是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。 3.文档是软件开发活动的记录,主要供人们阅读,既可用于专业人员和用户之间的通信和交流,也可以用于软件开发过程的管理和运行阶段的维护。 4.软件的特点: 软件是一种逻辑产品,无法看到软件本身的形态。 软件产品的生产主要是开发研制,没有明显的制造过程。 软件产品在使用过程中,不存在磨损、消耗、老化等问题。 软件产品的开发主要是脑力活动,还未完全摆脱手工开发方式,大部分产品是
2、“定做的” ,生产效率低。 软件产品的成本昂贵,软件费用不断增加。 软件对硬件和环境有不同程度的依赖性。 软件是复杂的。 5.软件的分类: 传统意义上从计算机系统角度看,软件分为两大类:系统软件和应用软件。 从计算机软件用途来划分三类,大致分为服务类、维护类和操作管理类。 6.6.软件危机软件危机(重点)(重点) : 如何开发软件以满足软件日益增长的需求如何开发软件以满足软件日益增长的需求 如何维护数量不断增长的已有软件。如何维护数量不断增长的已有软件。 7.软件危机表现形式: 对软件开发成本和研制进度的估计常常很不精确。 “已完成”的软件不能满足用户的要求。 软件产品质量差,可靠性得不到保证
3、。 软件产品可维护性差 软件成本在计算机系统总成本中所占的比例逐年上升。 软件开发生产率提高的速度远远跟不上计算机应用速度普及深入的趋势。 8.产生软件危机的原因 软件是计算机系统中的逻辑部件。 软件开发的管理困难。 软件开发费用不断增加,维护费用急剧上升 软件开发技术落后。 生产方式落后 开发工具落后,生产效率缓慢 9.解决软件危机途径 对计算机软件有正确认识,清除“软件是程序”的错误观念 使用好的开发技术和方法,并且要不断研究探索更好更有效的技术和方法 有良好的组织、严密的管理,各类人员要相互配合,共同完成任务 开发和使用好的软件工具。 10.软件工程的定义:是为了经济地获得可靠的且能在实
4、际机器上有效地运行的软件,而建立和使用完善的工程原理。 2 11.软件工程基本目标: 降低软件开发成本 满足用户要求的全部软件功能 符合用户要求,令用户满意的软件性能 具有较好的易用性、可重用性和可移植性 较低的维护成本,较高的可靠性 按合同要求完成开发任务,及时交付用户使用 12.软件工程的研究内容的基本原理: 软件开发技术: 主要研究软件开发方法、 软件开发过程、 软件开发工具和技术。 软件开发过程管理:主要研究软件工程经济学和软件管理学。 13.软件工程的基本原理: 用分阶段的生存周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组人
5、员应该少而精 承认不断改进软件工程实践的必要性 14.软件工程的发展史: 程序设计时代 程序系统时代:IBMDE 360OS=转折点 软件工程时代 15.软件过程的定义:把输入转化为输出的一组彼此相关的资源和活动 16.软件生存周期的定义:某一软件项目从被提出并着手实现开始,直到该软件报废或停止使用为止所经历的时间 17.软件生存周期: 计划时期: (1)问题定义(2)可行性研究 开发时期: (1)需求分析(2)概要设计(3)详细设计(4)编码(5)测试 运行时期: (1)维护 18.软件开发模型的定义:为整个软件建立的模型 19.软件开发模型及优缺点和应用范围: (1) 瀑布模型: A、定义
6、:存周期各个活动规定为依线性顺序连接的若干阶段的模型。 B、适用范围:适合于需求明确的软件项目的开发。 C、优点:使开发过程可以在分析设计、编码、测试和维护的框架下进行。过程具有系统性,可控性。克服了软件开发的随意性。 D、缺点:a.开始阶段用户很难精确的提出产品需求,修改需求十分普遍。b.项目开发晚期才能得到程序的运行版本, 这时修改软件需求和开发中的错误代价很大。c.采用线性模型组织项目开发经常发生开发小组人员“堵塞状态”特别是项目的开始和结束 3 (2)快速原型模型: A、适用范围:用户有时间和精力参与原型的开发并与开发者之间进行频繁交流的项目,而且项目容易进行模块化 B、优点:增进软件
7、开发人员和用户对系统服务的理解,用户最容易获取信息和发表自己的意见 C、缺点 a、对于大型软件项目,原型模型需要足够的人力资源以建立足够的原型组。 b、原型模型要求开发者和客户在一段时间内共同完成原型系统的开发,如果任何一方没有实现承诺,会导致原型开发的失败。 c、如果系统难以模块化,建造原型所需构件就有问题。 (3)增量模型: A、适用范围:适合于软件要求不明确,设计方案有一定风险的软件项 目 。 B、优点:增量模型具有较大的灵活性 C、缺点:与新增量构件集成到现在软件中时,所形成的产品必须是可测试的 (4)螺旋模型: A、适用范围:适合于大规模高风险的软件项目开发 B、优点:使开发人员和用
8、户都能更好的了解每个螺旋周期演化存在的风险,从而做出相应的对策 C、缺点:由于它是风险驱动的,因此使用该模型需要有相当丰富的风险评估经验和这方面的专门技术 (5)喷泉模型,统一过程(RUP)模型,变换模型,净室模型 (6)基于构件的开发模型 (7)统一过程(RUP)模型 (8)基于形式化的开发模型 20.传统软件工程方法步骤: 采用结构化分析、结构化设计和结构化实现完成软件开发的各项任务 把软件生存周期划分成若干个阶段,然后按顺序完成各个阶段的任务 每一个阶段的开始和结束都有严格标准,前一阶段结束的标准是后一阶段工作开始的标准 在每一阶段结束之前,必须正式地进行严格的技术审查和管理复审 21.
9、面向对象软件工程开发过程的特点: 开发阶段界限模糊, 开发过程逐步求精,开发活动反复迭代 22.传统软件工程和面向对象软件工程的分析方法对比: 开发思想对比,传统软件工程:以功能划分为导向;面向对象开发方法是以对象作为整个问题分析的中心,围绕对象展开系统的分析与设计工作。 开发过程方面, 传统软件工程开发过程包括需求设计、 总体设计、 详细设计、面向过程的编码和测试;面向对象软件工程开发过程包括需求分析与对象抽取、对象详细设计、面向对象的编码和测试。 4 第二章第二章可行性研究可行性研究 2.1(重点) 可行性研究的目的: 用最小的代价再尽可能短的时间内确定问题是否能够解决。 评价可行性的四个
10、方面:经济、技术、操作、法律。评价可行性的四个方面:经济、技术、操作、法律。 经济可行性: 首先要进行成本-效益分析。 从开发所需的成本和资源,潜在的市场前景等方面进行估算,确定要开发的项目是否值得投资开发,既要分析再整个软件生存周期中所花费的代价与得到的效益之间的度量。 技术可行性:对要开发的项目的功能、性能和限制条件进行分析,评价系统所采用的技术是否先进,使用现在的技术能否实现系统达到的目的,现在技术人员的技术水平是否具备等。 操作可行性:系统的操作方式再这个应用范围内是否行得通。 法律可行性:新系统的开发会不会在社会上或政治上引起侵权,可能导致的责任,有无违法问题:应从合同的责任、专利权
11、、版权、等一系列权益方面予以考虑。 2.2 可行性研究步骤: (7 步) 1.复查并确定系统规模和目标 2.研究目前正在使用的系统 3.建立新系统的高层逻辑模型 4.导出和评价各种方案 5.推荐可行方案 6.草拟初步的开发计划 7.编写可行性研究报告提交审查 2.3(重(重点点) 系统流程图基本符号(系统流程图基本符号(5 5 种)及常见的种)及常见的 1111 种其他系统符号,详见种其他系统符号,详见 P19P19(要认(要认识)识) P20 例题 2.1; 系统流程图习惯画法目的:使信息在图中自顶向下或从左向右流动。 2.4 成本-效益分析目的:从经济角度评价开发一个新的软件项目是否可行。
12、 系统成本包括 1.开发成本。2.运行维护成本。 系统效益包括:有形效益 1.货币的时间价值。2 投资回收期。3 纯收入。 无形的社会效益 货币时间价值例题货币时间价值例题 P20P20、2121 F=P*(1+n*i) F=P*(1+n*i) 计算计算 求:求:1.1.货币时间价值。货币时间价值。2.2.投资投资 P=F/(1+n*i) P=F/(1+n*i) 回收期。回收期。3.3.纯收入纯收入 2.5 可行性研究报告的主要内容 P21 1.引言。 2.可行性研究前提。 3.对现有系统的分析。 4.对所建设系统的分析(1.经济可行性分析。2.技术可行性分析。3.社会因素的可行性分析) 5.
13、其他与设计有关选择方案。 6.其他与设计有关的专门问题。 7.结论意见 5 第三章第三章 软件需求分析软件需求分析 3.1 1需求分析的任务是: 确定系统必须完成哪些工作, 也就是对目标系统提出完整、准确、清晰而且具体的要求。 2需求分析是:完整地、严密的、描述应当“做什么”的一种过程。 3需求分析具体任务:1、确定对系统的综合要求 2、分析系统的数据需求 3、建立软件的逻辑模型 4、编写软件需求规格说明书 5、需求分析评审 4需求分析步骤:1、需求获取:调查研究 2、需求提炼:分析建模 3、需求描述:编写 SRS 4、需求验证 3.2 1获取需求的方法 1、客户访谈 2、建立联系分析小组 3
14、、问题分析与确认 2Andriole 提出、判断是否用原型法来帮助获取需求 1、需求已经建立,并且可以预见是相当稳定吗? 2、软件开发人员和用户已经理解了目标系统的应用领域吗? 3、问题是否可被模型化? 4、用户能否清楚地确定基本的系统需求? 5、有任何需求是含糊的吗? 6、已知的需求中存在矛盾吗? 3.3 1功能分解方法体现了“自顶向下,逐步求精”的思想; 本质上是用过程抽象的观点来看待需求,符合传统程序设计人员的思维特征。 2四种需求分析方法 1、功能分解方法 2、结构化分析方法 3、信息建模方法 4、面向对象方法 3.4(重点!考点!) 6 1结构化分析定义:结构化分析就是使用数据流图、
15、数据字典、结构化语言、判定树和判定表等工具,来建立一种新的称为结构化说明书的目标文档。 2 2SASA 描述工具:描述工具: 1 1、数据流图、数据流图 2 2、数据字典、数据字典 3 3、描述加工逻辑的结构化语言、判定表和判定树、描述加工逻辑的结构化语言、判定表和判定树 3数据流图(数据流图(DFDDFD) (必须会画) (必须会画 必须认识) :必须认识) : 1、DFD 定义:数据流图是 SA 方法中用于表示系统逻辑模型的一种工具。它以直观的图形清晰地描述系统数据的流动和处理过程, 图中没有任何具体的物理元素,主要强调的是数据流和处理过程,即使不是计算机专业技术人员也很容易理解。数据流图
16、是软件开发人员和用户之间很好的通信工具。 2、DFD 各种符号意义: 箭头 表示数据流 圆或椭圆 表示变换数据的处理 方框 表示数据的三远点或终点 = 双杠或单杠 表示数据存储(文件) * 星号 表示数据之间的关系(同时存在)_ + 加号 表示“或”关系 + 表示只能从中选一个(互斥的关系) 3、DFD 基本原则 (1)数据流图中所有的符号必须是前面所述的 4 种基本符号和附加符号 (2)数据流图的主图(顶层)必须含有前面所述的 4 种符号,缺一不可 (3)数据流图主图上数据流必须封闭在外部实体之间(外部实体可以是一个, 也可以是多个) (4)加工(变换数据处理)至少有一个输入数据流和一个输出
17、数据流,反映出次加工数据的来源与加工的结果 (5)任何一个数据流子图必须与它父图上的一个加工相对应, 父图中有几个加工。就可能有几张子图,两者的输入数据流和输出数据流必须一致,即所谓“平衡” (6)图上的每个元素都必须有名字(流向数据存储或从数据存储流出的数据流除外) 4、DFD 步骤 (1)先找外部实体(可以是人、物或其他软件系统),找到了外部实体,则系统与外部世界的界面就得以确定,系统的源点和终点也就找到了; (2)找出外部实体的输入和输出数据流; (3)在图的边上画出系统的外部实体; (4)从外部实体的输出流(源点)出发,按照系统的逻辑需求,逐步画出一系列变换数据的加工,知道找到外部实体
18、处所需的输入流(终点),形成数据流的封闭 (5)按照上述步骤画出所有子图 5、DFD 注意事项 7 (1)画数据流图时,只考虑数据流的静态关系,不考虑其动态关系(如启动、停止等与时间有关的问题),也不考虑出错处理问题 (2)画数据流图时,只考虑常规状态,不考虑异常状态,这两点一般留在设计阶段解决。 (3)画数据流图不是画程序流程图,二者有本质的区别。数据流图只描述”做什么”,不描述“怎么做”和做的顺序,而程序流程图表示对数据进行加工的控制和细节 (4)不能期望数据流图一次画成,而是要经过各项反复才能完成 (5)描绘复杂系统的数据流图通常很大, 对于画在几张纸上的图很难阅读和理解、一个比较好的方
19、法就是分层的描绘这个系统。在分层细画时,必须保持信息的连续性,父图和子图要凌恒,每次只细画一个加工。 4DD(数据字典) (1)DD 定义:DD 是对数据流图中所包含元素的定义集合 (2)DD 作用:主要作用是供人查阅,并应以一种准确的,无二义性的说明方式为系统的分析、设计及维护提供有关元素的一致的定义和详细的描述。 (3)DD 内容:由 4 类条目的定义组成:数据流、数据流分量(数据基本项)、数据存储(文件)和加工(处理) (4)DD 符号: A.=: 表示被定义为或等价于或由.组成 B.+: 表示“与”(和),用来连接两个数据元素 C.|: 表示“或” ,对 中列举的数据元素可任选其中一项
20、 D.: 表示“重复” ,对内容可以重复使用 E.m|n 或者mn或者nm 表示中内容至少出现 m 次,最多出现 n 次。其中 n,m 为重复次数的上、下限。 F.() 表示“可选” ,对()中的内容可选、可不选。 5加工逻辑描述加工逻辑描述(p34)(p34)-重点重点 1 1、结构化语言、结构化语言 2 2、判定表、判定表 3 3、判定树、判定树 3.5 三种圆型工具:层次方框图、维纳图、IPO 图(能认识、分辨、区别) 8 第四章第四章 软件总体设计软件总体设计 4.1 软件总体设计的目标和任务 总体设计基本目标: (1)总体设计阶段的基本目标就是回答“概括的说,系统应该如何实现?”这个
21、问题。 (2)总体设计的另一项任务是设计软件的总体结构,即确定系统中的每个程序是由哪些模块组成的,每个模块的功能及模块和模块之间的接口、调用关系等,但所有这些都不要求涉及模块内部过程的细节。 4.2 软件结构设计准则 A、软件设计体系结构准则: (1)体系结构是对复杂失误的一种抽象。 (2)体系结构在一定的时间内保持稳定。 (3)良好的体系结构意味着普通、高效和稳定。 B、软件模块设计准则: (1)降低模块之间的耦合性,提高模块的内聚性。 (2)模块结构的深度、宽度、扇出和扇入应适当。 (3)模块作用范围应该再控制范围内。 (4)模块接口设计要简单,以便降低复杂程度和冗杂度。 (5)设计功能可
22、预测并得到验证的模块。 (6)适当划分模块规模,以保证其独立性。 C、深度、宽度、扇出、扇入的定义(重点) :深度、宽度、扇出、扇入的定义(重点) : 深度指软件结构中模块的曾次数;深度指软件结构中模块的曾次数; 宽度指同一层次中最大的模块个数;宽度指同一层次中最大的模块个数; 扇出指一个模块直接调用的模块数目;扇出指一个模块直接调用的模块数目; 扇入指有多少个上级模块直接掉用它。扇入指有多少个上级模块直接掉用它。 4.3 软件设计的概念和原理 A、模块的定义: 模块是软件结构的基础,是软件元素,是能够单独命名、独立完成一定功能的程序语句的集合,如高级语言中的过程、函数、子程序等。 B、模块化
23、的定义、目的、致力于: (1)模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。 (2)模块化的目的是为了降低软件复杂度,使软件设计、测试、维护等操作变得简易。运用模块化技术还可以防止错误蔓延,从而提高系统的可靠性。 (3) 软件模块化的过程必须致力于降低模块与外部的联系, 提高模块的独立性,才能有效降低软件复杂性,使软件设计、测试、维护等工作变得简单和简易。 C、模块的两个特征及特征的定义(重点) :模块的两个特征及特征的定义(重点) : (1)模块最重要的两个特征两个特征有两个:一是抽象,二是信息隐蔽。 (2)抽象抽象就是抽出事物本质的共同的特征而暂时忽略它们之间的细
24、节差异; 信息隐蔽信息隐蔽原理设计和确定模块原则应该使得包含在模块内的信息 (过程和 数据) ,对于不需要这些信息的模块是不能访问的。 D、局部化的定义: 局部化就是指把一些关系密切的软件元素物理地放得彼此靠近。 在模块中使用局 9 部量就是局部化的一个例子。显然局部化有助于信息隐蔽。 E、6 6 种种耦合和耦合和 6 6 种内聚及其详细解释、作用等: (重点!考点!多多理解)种内聚及其详细解释、作用等: (重点!考点!多多理解) 耦合: (1)无直接耦合:如果两个模块分别从属于不同模块的控制和调用,它们之间不传递任何信息,没有直接的联系,相互独立,称无直接耦合。 (2)数据耦合:如果两个模块
25、之间有调用关系,相互传递的信息以参数的形式给出,而且传递的信息仅仅是简单的数据,则称为数据耦合。 (3)标记耦合:如果两个模块之间传递的是数据结构,而且被调用模块不需要作为参数传递过来的整体数据结构,只需要使用数据结构其中一部分数据元素,则称为标记耦合。 (4)控制耦合:当一个模块调用另一个模块时,传递的信息控制了该模块的功能,则称为控制耦合。 (5)公共环境耦合:两个或多个模块共用一个数据环境,称为公共环境耦合。 (6)内容耦合:一个模块直接访问另一个模块的内部数据,一个模块 不通过正常入口而转入另一个模块内部,一个模块有多个入口,这都属于内容耦合。 内聚: (1)偶然内聚:模块内的元素之间
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 导论 复习资料 汇总
限制150内