软件工程知识点总结(共15页).docx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《软件工程知识点总结(共15页).docx》由会员分享,可在线阅读,更多相关《软件工程知识点总结(共15页).docx(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上一、软件工程概述1软件特点软件:计算机程序、方法、规则、相关的文档资料,以及计算机程序运行时所需要的数据。软件是计算机系统中的逻辑成分,具有无形性。其主要内容包括:程序、配置文件、系统文档、用户文档等。2软件分类(1)按功能划分:系统软件、支撑软件、应用软件。(2)按工作方式划分:实时处理软件、分时处理软件、交互式软件、批处理软件。(3)按规模划分:微型软件、小型软件、中型软件、大型软件。(4)按服务对象划分:通用软件、定制软件。3软件发展阶段(1)程序设计时代(20世纪50年代)。(2)程序系统时代(20世纪60年代)。(3)软件工程时代(20世纪70年代起)。4软
2、件危机(1)危机现象:软件开发成本与进度估计不准确,软件产品与用户要求不一致,软件产品质量可靠性差,软件文档不完整不一致,软件产品可维护性差,软件生产率低。(2)危机原因:软件的不可见性,系统规模庞大,生产工程化程度低,对用户需求关心不够,对维护不够重视,开发工具自动化程度低。5软件工程软件工程:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必须的相关文件资料。软件工程是一门关于软件开发与维护的工程学科,它涉及软件生产的各个方面,能够为经济、高效地开发高质量的软件产品提供最有效的支持。(1)工程方法:结构化方法、JSD方法、面向对象方法。(2)软件工具:具有自动化特征
3、的软件开发集成支撑环境。(3)工程过程:在软件工具支持下的一系列工程活动,基本活动是软件定义、软件开发、软件验证、软件维护。(4)工程管理:项目规划,项目资源调配,软件产品控制。(5)工程原则:分阶段生命周期计划,阶段评审制度,严格的产品控制,采用先进的技术,成果能清楚地审查,开发队伍精练,不断改进工程实践。(6)工程目标:开发成本较低,软件功能能满足用户需求,软件性能较好,软件可靠性高,软件易于使用、维护与移植,能按时完成开发任务并及时交付使用。(7)工程文化:包括工程价值、工程思想和工程行为三个方面的内容。二、软件工程过程模型1软件生命周期如同任何事物都有一个发生、发展、成熟直至衰亡的全过
4、程一样,软件系统或软件产品也有一个定义、开发、运行维护直至被淘汰这样的全过程,我们把软件将要经历的这个全过程称为软件的生命周期。它包含:软件定义、软件开发、软件运行维护三个时期,并可以细分为可行性研究、项目计划、需求分析、概要设计、详细设计、编码实现与单元测试、系统集成测试、系统确认验证、系统运行与维护等几个阶段。软件定义期软件定义是软件项目的早期阶段,主要由软件系统分析人员和用户合作,针对有待开发的软件系统进行分析、规划和规格描述,确定软件是什么,为今后的软件开发做准备。这个时期往往需要分阶段地进行以下几项工作。1软件任务立项软件项目往往开始于任务立项,并需要以“软件任务立项报告”的形式针对
5、项目的名称、性质、目标、意义和规模等作出回答,以此获得对准备着手开发的软件系统的最高层描述。2项目可行性分析在软件任务立项报告被批准以后,接着需要进行项目可行性分析。可行性分析是针对准备进行的软件项目进行的可行性风险评估。因此,需要对准备开发的软件系统提出高层模型,并根据高层模型的特征,从技术可行性、经济可行性和操作可行性这三个方面,以“可行性研究报告”的形式,对项目作出是否值得往下进行的回答,由此决定项目是否继续进行下去。3制定项目计划在确定项目可以进行以后,接着需要针对项目的开展,从人员、组织、进度、资金、设备等多个方面进行合理的规划,并以“项目开发计划书”的形式提交书面报告。4软件需求分
6、析软件需求分析是软件规格描述的具体化与细节化,是软件定义时期需要达到的目标。需求分析要求以用户需求为基本依据,从功能、性能、数据、操作等多个方面,对软件系统给出完整、准确、具体的描述,用于确定软件规格。其结果将以“软件需求规格说明书”的形式提交。在软件项目进行过程中,需求分析是从软件定义到软件开发的最关键步骤,其结论不仅是今后软件开发的基本依据,同时也是今后用户对软件产品进行验收的基本依据。软件开发期在对软件规格完成定义以后,接着可以按照“软件需求规格说明书”的要求对软件实施开发,并由此制作出软件产品。这个时期需要分阶段地完成以下几项工作。1软件概要设计概要设计是针对软件系统的结构设计,用于从
7、总体上对软件的构造、接口、全局数据结构和数据环境等给出设计说明,并以“概要设计说明书”的形式提交书面报告,其结果将成为详细设计与系统集成的基本依据。模块是概要设计时构造软件的基本元素,因此,概要设计中软件也就主要体现在模块的构成与模块接口这两个方面上。结构化设计中的函数、过程,面向对象设计中的类、对象,它们都是模块。概要设计时并不需要说明模块的内部细节,但是需要进行全部的有关它们构造的定义,包括功能特征、数据特征和接口等。在进行概要设计时,模块的独立性是一个有关质量的重要技术性指标,可以使用模块的内聚、耦合这两个定性参数对模块独立性进行度量。2软件详细设计设计工作的第二步是详细设计,它以概要设
8、计为依据,用于确定软件结构中每个模块的内部细节,为编写程序提供最直接的依据。详细设计需要从实现每个模块功能的程序算法和模块内部的局部数据结构等细节内容上给出设计说明,并以“详细设计说明书”的形式提交书面报告。3编码和单元测试编码是对软件的实现,一般由程序员完成,并以获得源程序基本模块为目标。编码必须按照“详细设计说明书”的要求逐个模块地实现。在基于软件工程的软件开发过程中,编码往往只是一项语言转译工作,即把详细设计中的算法描述语言转译成某种适当的高级程序设计语言或汇编语言。为了方便程序调试,针对基本模块的单元测试也往往和编码结合在一起进行。单元测试也以“详细设计说明书”为依据,用于检验每个基本
9、模块在功能、算法与数据结构上是否符合设计要求。4系统集成测试所谓系统集成也就是根据概要设计中的软件结构,把经过测试的模块,按照某种选定的集成策略,例如渐增集成策略,将系统组装起来。在组装过程中,需要对整个系统进行集成测试,以确保系统在技术上符合设计要求,在应用上满足需求规格要求。5系统确认验证在完成对系统的集成之后,接着还要对系统进行确认验证。系统确认验证需要以用户为主体,以需求规格说明书中对软件的定义为依据,由此对软件的各项规格进行逐项地确认,以确保已经完成的软件系统与需求规格的一致性。为了方便用户在系统确认期间能够积极参入,也为了系统在以后的运行过程中能够被用户正确使用,这个时期往往还需要
10、以一定的方式对用户进行必要的培训。在完成对软件的验收之后,软件系统可以交付用户使用,并需要以“项目开发总结报告”的书面形式对项目进行总结。软件运行与维护期软件系统的运行是一个比较长久的过程,跟软件开发机构有关的主要任务是对系统进行经常性的有效维护。软件的维护过程,也就是修正软件错误,完善软件功能,由此使软件不断进化升级的过程,以使系统更加持久地满足用户的需要。因此,对软件的维护也可以看成为对软件的再一次开发。在这个时期,对软件的维护主要涉及三个方面的任务,即改正性维护、适应性维护和完善性维护。2瀑布模型瀑布模型诞生于20世纪70年代,是最经典的并获得最广泛应用的软件过程模型。瀑布模型中的“瀑布
11、”是对这个模型的形象表达,即山顶倾泻下来的水,自顶向下、逐层细化。(1)特点:线性化模型、阶段具有里程碑特征、基于文档的驱动、阶段评审机制。(2)作用:为软件项目按规程管理提供了便利,为其他过程模型的推出提供了一个良好的拓展平台。(3)局限性:主要适合于需求明确且无大的需求变更的软件开发,但不适合分析初期需求模糊的项目。3原型模型(1)快速原型方法:是原型模型在软件分析、设计阶段的应用,用来解决用户对软件系统在需求上的模糊认识,或用来试探某种设计是否能够获得预期结果。(2)原型进化模型:针对有待开发的软件系统,先开发一个原型给用户使用,然后根据用户的使用意见,对原型不断修改,使它逐步接近,并最
12、终到达开发目标。4增量模型增量模型结合了瀑布模型与原型进化模型的优点。在整体上按照瀑布模型的流程实施开发,以方便对项目的管理。但在软件的实际创建中,则将软件系统按功能分解为许多增量构件逐个地创建与交付,直到全部构件创建完毕,并都被集成到系统之中交付使用。比较瀑布模型、原型进化模型,增量模型具有非常显著的优越性。但增量模型对软件设计有更高的技术要求。5螺旋模型螺旋模型是一种引入了风险分析与规避机制的过程模型,是瀑布模型、快速原型方法和风险分析方法的有机结合。其基本方法是,在各个阶段创建原型进行项目试验,以降低各个阶段可能遇到的项目风险。6喷泉模型喷泉模型是专门针对面向对象软件开发方法而提出的。“
13、喷泉”一词用于形象地表达面向对象软件开发过程中的迭代和无缝过渡。7组件复用模型组件复用方法是最近几年发展起来的先进的软件复用技术,在基于组件复用的软件开发中,软件由组件装配而成,这就如同用标准零件装配汽车一样。因此,组件复用模型能够有效地提高软件生产率。三、项目分析与规划1.计算机系统分析(1)计算机系统计算机系统是一个非常复杂并具有智能特性的开发系统,包括:硬件系统、软件系统、网络通信系统、人工操作系统等诸多子系统。(2)系统分析系统分析是对软件项目的高层分析,需要获取的是有关系统的框架描述,并需要使系统从它所处的环境中分离出来,为划分系统边界与确定系统构架提供依据。(3)系统分析模型分析模
14、型是指采用作图方式对系统进行直观的描述。系统前期分析过程中经常使用的图形模型有系统框架图和系统流程图。其中,系统框架图用于说明系统的基本构造框架,而系统流程图则用于表现系统的基本加工流程。2.项目可行性分析(1)意义以少量的费用对项目能否实施尽早作出决断。根据项目条件限制,对系统的体系构造、工作模式等作出高层抉择。其结果可作为一个高层框架被用于需求分析之中。(2)分析内容技术可行性:从技术与技术资源这两个方面作出可行性评估。经济可行性:从项目投资和经济效益这两个方面作出可行性评估。应用可行性:从法律法规、用户操作规程等方面作出可行性评估。(3)分析过程建立系统模型。进行可行性评估。撰写可行性研
15、究报告。3.项目成本效益分析(1)项目成本估算方法:基于软件规模的成本估算;基于任务分解的成本估算。(2)项目效益分析指标:纯收入;投资回收期;投资回收率。4.项目规划(1)项目开发计划项目开发计划涉及的内容包括:开发团队的组织结构,人员组成与分工。项目成本预算。项目对硬件、软件的资源需求。项目任务分解和每项的任务里程碑标志。基于里程碑的进度计划和人员配备计划。项目风险计划。项目监督计划。(2)项目进度表项目进度是基于里程碑制定的,可以使用进度图表来描述项目进度。甘特图表是一种常用的项目进度图表,可以直观地描述项目任务的活动分解,以及活动之间的依赖关系、资源配置情况、各项活动的进展情况等。四、
16、软件需求分析1.需求分析任务(1)用户需求用户需求是用户关于软件的一系列意图、想法的集中体现,是用户关于软件的外界特征的规格表述。(2)系统需求系统需求是比用户需求更具有技术特性的需求陈述,是提供给开发者或用户方技术人员阅读的,并将作为软件开发人员设计系统的起点与基本依据。主要包括:功能、数据、性能、安全等诸多方面的需求问题。2.需求分析过程需求分析是对软件系统的后期分析,需要进行的活动包括:分析用户需求、建立需求原型、分析系统需求和进行需求验证等。3.用户需求获取(1)用户调查是最基本的用户需求信息收集方法,比较常用的调查方法包括:访谈用户、开座谈会、问卷调查、跟班作业、收集用户资料。(2)
17、需求原型可被用来解决用户对软件系统在需求认识上的不确定性。一般情况下,开发人员将软件系统中最能够被用户直接感受的那一部分东西构造成为原型。例如,界面、报表或数据查询结果。4.结构化分析建模所谓模型,就是对问题所做的一种符号抽象。可以把模型看作为一种思维工具,利用这种工具可以把问题规范地表示出来。主要的分析模型包括:(1)功能层次模型。它使用矩形来表示系统中的子系统或功能模块,使用树形连线结构来表达系统所具有的功能层级关系。(2)数据流模型。用于描述系统对数据的加工过程,其图形符号是一些具有抽象意义的逻辑符号,主要的图形符号包括:数据接口、数据流、数据存储和数据处理。可以依靠数据流图来实现从用户
18、需求到系统需求的过渡。结构化分析就是基于数据流的细化实现的,它是结构化分析方法的关键。(3)数据关系模型。也称为ER图,是应用最广泛的数据库建模工具。需要通过数据实体、数据关系和数据属性这三类图形元素建立数据关系模型。(4)系统状态模型。通过系统的外部事件、内部状态为基本元素来描绘系统的工作流程,这种建模方式比较适合于描述一些依赖于外部事件驱动的实时系统。5.需求有效性验证需求有效性验证是指对已经产生的需求结论所要进行的检查与评价。一般需要对需求文档草稿从有效性、一致性、完整性、现实性、可检验性等几个方面进行有效性验证。比较常用的需求有效性验证方法与工具包括:需求评审、需求原型评价和基于CAS
19、E工具的需求一致性分析。6.需求规格定义需求规格说明书是需求分析阶段需要交付的基本文档,将成为开发者进行软件设计和用户进行软件验证的基本依据,涉及引言、术语定义、用户需求、系统体系结构、系统需求等有关软件需求及其规格的诸多描述与定义。五、软件概要设计1设计过程与任务概要设计中首先需要进行的是系统构架设计,然后是软件结构、数据结构等方面的设计。主要有以下几个方面的设计任务:制定规范、系统构架设计、软件结构设计、公共数据结构设计、安全性设计、故障处理设计、可维护性设计、编写文档、设计评审。2系统构架设计(1)集中式结构集中式系统由一台计算机主机和多个终端设备组成。其具有非常好的工作稳定性和安全保密
20、性。但系统建设费用、运行费用比较高,灵活性不够好,结构不便于扩充。(2)客户机/服务器结构客户机/服务器结构依靠网络将计算任务分布到许多台不同的计算机上,但通过其中的服务器计算机提供集中式服务。其优越性是结构灵活、便于系统逐步扩充。(3)多层客户机/服务器结构两层结构:将信息表示与应用逻辑处理都放在了客户机上,服务器只需要管理数据库事务。三层结构:将两层结构的客户机上的容易发生变化的应用逻辑部分提取出来,并放到一个专门的“应用服务器”上。B/S结构:是Web技术与客户机/服务器结构的结合。其优点是不需要对客户机进行专门的维护。(4)组件对象分布式结构通过组件进行计算分布。它依赖于对象中间件建立
21、,具有灵活的构架,系统伸缩性好,能够给系统的功能调整与扩充带来便利。3软件结构设计软件结构设计是对组成系统的各个子系统的进一步分解与规划。主要设计内容有:确定模块元素、定义模块功能、定义模块接口、确定模块调用与返回、进行结构优化。(1)模块概念模块化:使用构造程序,可使软件问题简化。抽象化:概要设计中的模块被看成是一个抽象化的功能黑盒子。信息隐蔽:每个模块的内部实现细节对于其他模块来说是隐蔽的。(2)模块的独立性软件系统中每个模块都只涉及自己特定的子功能,并且接口简单,与软件中其他模块没有过多的联系。一般采用耦合和内聚这两个定性的技术指标进行度量。耦合用来反映模块相互关联程度,模块间连接越紧密
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 知识点 总结 15
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内