您好,欢迎访问三七文档
第1章软件工程学概述软件危机、产生原因、解决途径软件、软件工程、软件生命周期、各阶段主要任务软件过程模型:瀑布模型、快速原型模型等软件概念-软件软件(Software)是计算机系统中与硬件相互依存的另一部分,它是包括程序(Program),数据(Data)及其相关文档(Document)的完整集合。软件=程序+数据+文档软件概念-软件的特点抽象性软件是逻辑实体,没有明显的制造过程,运行和使用没有磨损与老化问题。依存性软件开发和运行依赖于计算机系统。工艺性软件开发至今尚未完全摆脱手工工艺的开发方式。复杂性软件逻辑结构、开发技术、项目管理复杂。成本高开发成本、维护成本高。风险大软件项目的成功率低。维护难维护不能依靠原开发者,理解软件代码难,维护也是开发,维护成本高软件工作涉及各种社会因素政策规章、管理思想、文化背景、信息素养、技术水平、系统接口等。软件的复杂性逻辑复杂软件的逻辑结构非常复杂开发复杂成本难以估算、进度难以控制、人员素质要求、质量得不到保证软件危机软件危机是计算机软件开发和维护过程中所遇到的一系列严重问题。主要包括下列两个方面的问题:如何开发软件,以满足对软件的日益增长的需求;如何维护不断增多的已有软件。软件危机的典型表现对软件开发成本和进度的估计常常很不准确;用户对交付的软件经常不满意;软件产品的质量往往达不到要求;开发出来的软件通常难以维护;软件产品文档资料不适用和不完善;软件成本在整个系统总成本中所占比例逐年上升;软件开发生产率的提高不能满足对软件需求的增长;………产生软件危机的原因与软件本身的特点有关成本高、风险大、难于维护、逻辑复杂。软件是计算机系统中的逻辑实体而不是物理实体,软件生产与硬件不同,在它的开发过程中没有明显的制造过程。软件是通过人们的智力活动,把知识与技术转化成信息的一种产品。在软件的运行过程中,没有“用坏”的问题。软件维护意味着修正原来的设计,较为困难。与软件开发与维护的方法不正确有关软件专业人员对软件开发和维护存在糊涂观念,在实践过程中采用了错误的方法和技术。如忽视软件需求分析的重要性;轻视软件维护。消除软件危机的途径正确认识“软件”软件≠程序,软件是相关程序、数据及文档的集合。正确认识“软件开发”软件开发不是个体劳动,而主要是一种有组织的团队活动。研究软件开发的技术手段在软件开发中使用已证明行之有效的技术,研究和探索新的技术。更好地使用软件工具,建立一个良好的软件工程支撑环境。研究软件开发的管理方法在软件开发中使用已证明行之有效的工程管理方法。组织良好、管理严密,使各类人员协同配合,共同完成软件开发的工程项目。软件工程学的产生软件工程学的是由于“软件危机”的出现和加重而产生的,研究用工程的方法来管理软件的开发。开发一个具有一定规模和复杂性的软件系统与编写一个简单的程序不一样。大型、复杂软件系统的开发是一项工程,必须按照工程化的方法组织软件的生产和管理,必须经过分析、设计、实现、测试、维护等一系列软件过程和活动软件工程概念软件工程是指导计算机软件开发与维护的一门工程学科。采用工程的概念、原理、方法和技术来开发和维护软件。将经过时间和实践考验而证明正确的管理方法和最好的技术手段结合起来,经济有效地开发和维护软件。软件工程是一门不断发展的学科。软件工程的本质特性关注于大型程序的构造控制软件复杂性适应软件的经常变化性提高软件开发的效率和谐合作开发软件使软件有效地支持它的用户需求软件是有一种文化背景的人为另一种文化背景的人开发的产品。软件工程的基本原理用分阶段的生命周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应该少而精承认不断改进软件工程实践的必要性软件工程方法学软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。通常把在软件生命周期全过程中使用的一整套技术方法的集合称为软件工程方法学(methodology),也称为范型(paradigm)软件工程方法学包含3个要素:方法、工具和过程。软件生命周期一个软件定义、开发、使用和维护,直到最终被废弃,要经历的漫长的时期,称为软件的生命周期。软件生命周期基本阶段的任务(1)软件定义时期总目标的确定,可行性,采用策略,系统功能,所需资源与成本,工程进度表,也称为系统分析时期,分为所定义,可行性研究和需求分析。(2)开发时期具体设计和实现前面所定义的软件。分为:总体设计,详细设计,编码和单元测试,综合测试。(3)维护时期使软件尽量地满足用户需要,纠错,适应新环境,满足新需求软件生命周期的阶段(具体)1.问题定义要解决的问题是什么?2.可行性研究问题能够解决吗?3.需求分析为了解决问题需要做什么?4.总体设计为了解决问题,大概怎样做?5.详细设计为了解决问题,具体怎样做?6.编码和单元测试编程实现,并测试每一个程序模块,验证程序达到设计要求。7.综合测试集成测试、压力测试、验收测试,验证系统满足需求。8.软件维护改正性维护、适应性维护、完善性维护、预防性维护,保障系统持久性满足用户的要求。软件过程软件过程是为了获得高质量的软件需要完成的一系列任务的框架,规定了完成各项任务的工作步骤。软件过程定义了软件工程的阶段、应用方法的顺序、应交付的文档、保证软件质量的措施、标志软件开发各阶段的里程碑。常用软件过程模型(具体见课件)(1)瀑布模型(WaterfallModel)(2)快速原型模型(RapidPrototypeModel)(3)增量模型(IncrementalModel)(4)螺旋模型(SpiralModel)(5)面向对象模型(喷泉模型、可重用组件模型)(6)统一软件开发过程(IBMRUP)(7)敏捷(灵活)过程与极限编程(8)微软过程(MicrosoftSolutionFramework)瀑布模型的优缺点瀑布模型适合于用户需求明确、完整、无重大变化的软件项目开发。瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型。“瀑布模型是由文档驱动的”,这个事实是它的一个主要缺点。实际项目很少按照该模型给出的顺序进行;用户常常难以清楚地给出所有需求;用户必须有耐心,等到系统开发完成。快速原型模型快速原型法是一种新型的软件开发方法,它使用交互的,快速建立起来的原型取代了形式的、僵硬的大量的规格说明,用户通过在计算机上实际运行和试用原型系统而向开发者提供真实的反馈意见。原型模型存在的问题⑴为了使原型尽快的工作,没有考虑软件的总体质量和长期的可维护性。⑵为了演示,可能采用不合适的操作系统、编程语言、效率低的算法,这些不理想的选择成了系统的组成部分。⑶开发过程不便于管理。有效的使用原型模式建造原型仅是为了定义需求,之后就被抛弃(或被部分抛弃),实际的软件在充分考虑了质量和可维护性之后才被开发。增量模型是一种渐进地开发逐步完善的软件版本的模型增量模型优点在较短时间内向用户提交可完成部分工作的产品,并分批、逐步地向用户提交产品。从第一个构件交付之日起,用户就能做一些有用的工作。整个软件产品被分解成许多个增量构件,开发人员可以一个构件一个构件地逐步开发。逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报。增量模型的困难在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。开发人员既要把软件系统看作整体。又要看成可独立的构件,产生观念上的矛盾。多个构件并行开发,具有集成的风险。螺旋模型软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。对于复杂的大型软件,开发一个原型往往达不到要求。螺旋模型将瀑布模型和增量模型结合起来,加入了风险分析。在该模型中,软件开发是一系列的增量发布,早期的迭代中,发布的增量可能是一个纸上的模型或原型,在以后的迭代中,逐步产生系统更加完善的版本。螺旋模型的基本思想是降低风险。螺旋模型的优点和特点螺旋模型的优点对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标减少了过多测试或测试不足维护和开发之间并没有本质区别螺旋模型的特点风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大主要适用于内部开发的大规模软件项目,随着过程的进展演化,开发者和用户能够更好的识别和对待每一个演化级别上的风险随着迭代次数的增加,工作量加大,软件开发成本增加面向对象-喷泉模型喷泉模型(FountainModel)是面向对象模型。主要用于支持面向对象开发过程,体现了软件创建所固有的迭代和无间隙的特征面向对象-构件集成模型构件(components)也称为组件,是一段实现一系列有确定接口的程序体,具有自己的功能和逻辑,能同其他构件集成起来协调工作。该模型(又称为可重用部件组装模型)支持软件重用(Reusability),对缩短软件开发周期、降低项目成本有重要的现实意义。同时,建造符合某应用领域体系结构标准的构件,可以用来搭建分布式的、跨越不同操作平台(集成化软件开发环境(ISEE))的软件,扩展了软件的应用前景,促进了软件标准化、商品化的发展。在此基础上专家们又提出了“基于构件的软件工程”(CBSE)。第2章可行性研究可行性研究的主要任务和过程数据流图和数据字典的实际应用可行性研究的目的用最小的代价在尽可能短的时间内确定问题是否能够解决。可行性研究不是解决问题,而是确定问题是否值得去解决。可行性研究的任务可行性研究的主要任务是“了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。”可行性研究的最根本任务——对软件开发以后的行动方针提出建议。可行性研究的内容可行性分析(1)技术可行性(2)经济可行性(3)操作可行性(4)社会条件可行性(如法律可行性)效益分析社会效益经济效益解决方案选择导出系统的逻辑模型,对多种可能的解决方案分析可行性,选择方案可行性研究过程1.复查系统规模和目标确切了解要做的事情。2.研究目前正在使用的系统现有系统能做什么?不能做什么?有什么缺陷?3.导出新系统的高层逻辑模型使用形式化工具(数据流图、数据字典等)描述系统高层模型。4.进一步定义问题以系统高层模型为基础,与用户一起进一步问题的定义、系统规模和目标,修改模型,使其符合系统建设目标。5.导出和评价供选择的解法以最后提出的系统模型为基础,导出物理解决方案(可能多个),分析技术、操作、经济等可行性,制定进度表。6.推荐行动方针确定是否继该项工作,选择解决方案,进行成本效益分析。7.草拟开发计划估算进度、经费、人力资源(各层次开发、管理人员)、其他资源(硬件、软件等)的需求和使用计划。8.书写文档提交审查将上述研究编写成“可行性研究报告”,提交评审。数据流图(具体设计及相关符号看课本ppt)一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程,是系统逻辑功能的图形表示。设计数据流图时只需考虑系统必须完成的基本逻辑功能,完全不需要考虑怎样具体地实现这些功能,所以它也是今后进行软件设计的很好的出发点。数据流图的用途基本用途是作为交流信息工具对目标系统所设想的系统模型,不含系统实现的物理细节,用户容易理解,可供相关人员评审。作为分析和设计的工具数据流图只描述了系统的功能和数据及其流动,而不是系统的物理实现(而系统流程图将功能和功能的实现方案混合在一起),便于分析人员关注与与实现无关的模型,开发人员关注设计与实现,界面清晰。用于确定系统工作边界当数据流图用于辅助物理设计时,根据不同的处理要求,可用来在图上划分不同的自动处理、手工处理边界,从而实
本文标题:软件工程整理
链接地址:https://www.777doc.com/doc-1991014 .html