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