




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章软件工程概述
13份WPF经典开发教程
/album/detail/1115C#资料合辑二[C#桌面编程入门篇]
/album/detail/957C#资料合辑一[C#入门篇]
/album/detail/669[Csharp高级编程(第6版)](共8压缩卷)
/album/detail/66710个[精品资源]Java学习资料合辑[一]
/album/detail/66310个C#Socket编程代码示例
/album/detail/6316份GDI+程序设计资源整合[全零分]
/album/detail/625更多免费资源/user/cleopard2本章主要内容1.0计算机基础1.1软件的概念1.2软件危机1.3软件工程1.4软件生命周期1.5软件开发过程模型1.6软件开发方法简述31.0计算机基础计算机组成冯·诺依曼体系结构输入设备输出设备存储器运算器控制器能存储计算步骤(程序)计算机中数的表示二进制八进制十进制数据:数值型,文本型,图形,图象,多媒体数据计算机之父:冯·
诺依曼41.0计算机基础计算机语言语言类型:机器语言(二进制指令),汇编语言,高级语言
BASIC,C,FORTRAN,COBOL,C++,JAVA,C#…语言要素:词汇,语法,控制逻辑控制逻辑:顺序,分支,循环程序为解决某个计算问题,按事先设计的功能和性能要求执行的指令序列。如,计算圆面积:51.0计算机基础数据结构:计算机存储、组织数据的方式。变量,数组,记录,文件存储结构(物理结构),逻辑结构算法:求解问题的步骤序列.(1)每个步骤精确描述,无歧义;(2)步骤是有限的;(3)可以用计算机表示。程序=数据结构+算法61.1软件的概念1.1.1软件技术的发展阶段195019601970198019902000程序设计阶段—50至60年代初 程序系统阶段—60至70年代初软件工程阶段—70年至90年代 第四代技术阶段—90年代之后早期面向批处理有限的分布自定义软件第二阶段多用户数据库实时软件产品第三阶段分布式系统嵌入“智能”低成本硬件消费者的影响第四阶段强大的桌面系统面向对象技术专家系统人工神经网络并行计算网络计算机7计算机软件发展的几个时期和特点特点阶段程序设计
程序系统软件工程软件范畴程序程序及说明产品(项目)软件程序设计语言汇编语言机器语言高级语言高级语言系统程序设计语言软件工作范围编写程序设计、编写程序测试软件生存期各阶段需求者程序设计者少数用户市场用户维护者程序设计者开发小组专职维护人员硬件特征价格高,存储量小,可靠性差价格下降,运算速度、存储量、可靠性提高向超高速、大容量、微型化发展81.1软件的概念1.1.2软件的定义计算机程序、方法、规则和相关的文档资料以及在计算机上运行时所必需的数据(IEEE,1983)。软件=程序+数据+文档1.1.3软件的特点抽象性生产无明显制造过程无磨损性对计算机硬件依赖性软件的手工开发方式软件本身复杂性高软件的高成本规模大应用范围广91.1软件的概念1.1.4软件的分类按功能应用软件:Photoshop,Office系统软件:Windows,Linux,驱动程序支撑软件:VisualStudio,Rose按工作方式分时软件(多任务)实时软件(单任务)交互式软件批处理式软件(*.bat)按服务对象项目软件(科研课题软件)市场软件(ACDSee)101.1软件的概念按规模微型小型中型大型甚大极大类别参加人数研制期限规模(行)微型11~4周≤500小型11~6月1,000~2,000中型2~51~2年5,000~50,000大型5~202~3年50,000~100,000甚大型100~10004~5年1,000,000极大型2000~50005~10年10,000,000嫦娥一号卫星任务控制软件:98.8万行源代码Windows95:1500万行Windows98:1800万行WindowsXP:3500万行WindowsVista:5000万行111.2软件危机1.2.1什么是软件危机计算机系统发展的早期时代所形成的错误概念与做法,严重阻碍了计算机软件的开发人们将60年代后期,在软件的开发和维护过程中,遇到的一系列严重问题,统称为软件危机。软件开发费用和进度难以控制开发的软件不能满足用户需求软件可维护性差软件质量差概括起来,一是如何开发软件,以满足社会对软件日益增长的需求;二是如何维护数量不断增长的已有软件产品。121.2软件危机1.2.2软件危机产生的原因与软件本身的特点有关软件是一种逻辑实体,抽象性强,开发质量较难评价,开发过程管理和控制较难。软件生产没有明显的制造过程,生产过程表现为人脑的思维过程,具有不可见性。软件存在退化问题,要根据硬件及环境的需求及变化进行修改。软件对硬件和环境有不同的依赖,造成软件升级和移植问题。软件规模越来越大,复杂性越来越高。软件成本昂贵,要投入大量的、复杂的、高强度的脑力劳动。软件工作涉及许多社会因素。机构、体制、管理
等都可能影响软件工作的成败。13时间失效率磨合调整磨合损坏硬件失效率曲线时间失效率理想曲线实际曲线修改点软件失效率曲线时间复杂性软件需求软件技术差距软件技术进步落后于需求增长1950硬件/软件成本比率变化1970198510080602040硬件软件141.2软件危机与软件开发的方法和技术有关对软件开发与维护存在诸多错误认识。如软件与程序概念不清、忽视软件开发前期调研和系统分析工作、开发方法没有统一规范的方法论指导、忽视测试阶段工作、轻视软件维护(紫光拼音)等。软件开发与维护方法不正确。软件生产不能摆脱手工方式,效率低;软件涉及各个行业,常涉及其他行业专业知识,应该有比较明确的分工。实际上,往往项目中只有几个程序
员,既负责系统分析设计,还负责
编码,对软件工程师要求过高,且
软件对开发者依赖性非常强。151.2软件危机1.2.3解决软件危机的途径既要有技术措施(方法和工具),又要有必要的组织管理措施。将软件开发看作是一个工程项目正确地应用各种方法和工具有效地使用各种软件工具和环境按工程化的原则和方法组织软件开发工作是有效的,是摆脱软件危机的一个主要出路。为了解决软件危机,既要有技术措施,也要有组织管理措施,软件工程正是从技术和管理两方面来研究如何更好地开发和维护计算机软件的。161.3软件工程(SoftwareEngineering,SE)1.3.1软件工程的定义:Bauer,1968:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。IEEE83:开发、运行、维护和修复软件的系统方法。IEEE93:将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。软件工程:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必须的相关文档资料。软件工程学:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。171.3软件工程1.3.2软件工程的内容软件工程学的主要内容是软件开发技术和软件工程管理。软件开发技术包含软件工程方法学、软件工具和软件开发环境;软件工程管理学包含软件工程经济学和软件管理学。应用计算机、数学及管理科学等原理,借鉴传统工程的原则方法,创建软件以达到提高质量,降低成本的目的。计算机科学、数学用于构造模型与算法。工程科学用于制定规范设计、评估成本及确定权衡。管理科学用于计划、资源、质量、成本等管理。软件工程软件开发技术软件管理技术软件工程管理学软件工程经济学181.3软件工程1.3.3软件工程的三要素工具:为软件工程方法提供自动或半自动的软件支撑环境。计算机辅助软件工程(CASE)。方法:提供软件开发的各种方法。包括项目计算与估算方法、需求分析和设计方法、编程测试方法、维护方法等。过程:为了获得高质量软件需要完成的一系列任务的框架,规定了完成各项任务的步骤。
规定了“什么人在什么时候用什么方法做什么事情”。1.3.4软件工程层次图工具层方法层过程层质量保证层效率如何做做什么质量191.3软件工程1.3.5软件工程的基本原理Boehm于1983年提出软件工程的7条基本原理,一般认为这是确保软件产品质量和开发效率的最小集合。严格按照软件生命周期各阶段计划进行管理坚持进行阶段评审实施严格的产品控制采纳现代先进的程序设计技术结果应能清楚地审查开发小组的人员应少而精承认不断改进软件工程实践的必要性成功软件工程的基本要求=1分技术
+6分管理201.3软件工程1.3.6软件工程的基本目标软件工程需要解决的问题主要有:软件成本、软件可靠性、软件维护、软件生产率和软件复用。软件工程是一门工程性学科,其目的是采用各种技术和管理上的手段组织实施软件工程项目,成功的创建软件系统。项目成功的几个基本目标:付出较低的开发成本,在规定时限内满足用户功能、性能要求。开发的软件移植性要比较好。易于维护且维护费用较低。软件系统的可靠性高。目标难以同时满足,可在保证项目成功的前提下,作出权衡。
…为了使整个组织具有最好的战斗力,我们要重用几个人,照顾一些人,在万不得已的情况下委屈一批人。211.3软件工程1.3.7软件工程的开发原则模块化:复杂问题分解为较小的、相对独立的、容易求解的子问题,有助于抽象和表示复杂系统。抽象和信息隐藏:抽象抓住主要问题,忽略无干细节;信息隐藏有助于保证模块的独立性。模块的高内聚低耦合:模块内尽量紧密,模块间尽量松散。确定性:概念表达规范、确定,无二义性。一致性:遵循统一、规范的方法,开发过程标准化。完备性:开发运行过程中严格评审,保证各阶段开发结果的有效性。221.4软件过程和软件生命周期1.4.1软件过程ISO9000:把输入转化为输出的一组彼此相关的资源和活动。软件过程是为了获得高质量软件产品,在软件工具支持下由软件工程师完成的一些列软件工程活动。软件过程规定了完成各项任务的工作步骤,与软件生存周期、生存期模型、软件开发工具和参与开发的人员等多方面因素有关。软件开发过程是把用户要求转化为软件需求,把软件需求转化为设计,用代码来实现设计、对代码进行测试,完成文档编制并确认软件可以投入运行使用的过程。软件过程定义了运用方法的顺序、应该交付的文档、开发软件的管理措施和各阶段任务完成的标志。231.4软件过程和软件生命周期1995年,国际标准化组织公布了新的国际标准《ISO/IEC12207信息技术——软件生存期过程》,将软件开发需要完成的活动概括为主要过程、支持过程和组织过程,每一大过程又包括若干具体过程,共17个。软件过程主要过程支持过程组织过程获取过程供应过程开发过程运行过程维护过程文档编制过程配置管理过程质量保证过程验证过程确认过程联合评审过程审核过程问题解决过程管理过程基础设施过程改进过程培训过程241.4软件过程和软件生命周期1.4.2软件生命周期软件生命周期(SoftwareLifeCycle)指软件产品或软件系统孕育、诞生、成长、成熟、衰亡的生存过程,是软件从设计、投入使用到被淘汰的全过程。软件生命周期是跨越软件生存期的系统开发、运行、维护所实施的全部活动和任务的过程框架。软件生命周期模型是软件工程思想的具体化,包含三个主要阶段:软件定义、软件开发及软件运行维护。可行性研究需求分析概要设计详细设计实现测试维护淘汰251.4软件过程和软件生命周期1.4.3软件生命周期的八个阶段(1)问题定义:系统分析员就问题性质、工程目标和规模等,提出书面报告。(2)可行性研究与计划:确定问题是否有行得通的解决方法。是在较高抽象层次上,进行的分析和设计过程。目的是更准确地确定工程的规模和目标,更准确地分析成本/效益,最终决定是否实施项目。(3)需求分析:确定目标系统必须具备哪些功能。(4)总体设计:描述每种可能的实现方案,估计每种方案的成本和效益;设计软件的体系结构。(5)详细设计:设计出软件的详细规格说明,为编码工作提供“蓝图”。261.4软件过程和软件生命周期(6)编码和单元测试(7)综合测试①集成测试:将结构单元集成起来,进行测试。②验收确认测试:按需求规格说明书,用户进行测试。(8)使用和维护:使软件系统持久地满足用户不断变化的需求。通常有四类活动:①改正性维护:修改已发现的错误。②适应性维护:为适应变化了的环境,而修改软件。③完善性维护:根据用户的要求,改进和扩充软件,使之完善。④预防性维护:为将来的维护活动作准备,而修改软件。如为提高软件的可维护性,而进行的修改。271.5软件开发过程模型软件开发过程模型也称生命周期模型,是软件生命周期中系统开发、运行、维护等实施活动的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。软件开发模型是从软件项目需求定义直至软件经使用后废弃为止,跨越整个生存期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架。软件开发模型也常称为软件过程模型、软件生命周期模型、软件工程范型。281.5软件开发过程模型1.5.1瀑布模型(WaterfallModel)软件策划需求分析软件设计编码实现软件测试运行、维护定义阶段开发阶段维护阶段291.5软件开发过程模型瀑布模型的特点(1)阶段之间具有顺序性和依赖性①前一阶段的工作完成后,才能开始下一阶段工作。②前一阶段的输出文档就是后一阶段工作的基础。③某一阶段发现错误要追溯到前面阶段,代价较大。(2)尽可能地推迟实现①程序代码只是软件的一部分,而不是全部。②清楚地区分分析、设计与实现,尽可能推迟软件实现。(3)确保质量①每阶段都必须完成规定的文档。②每阶段结束前,都要对所完成的文档进行评审,及早改正错误,评审通过才能进入下一阶段。301.5软件开发过程模型瀑布模型的局限性项目开始阶段,开发人员和用户对项目的描述往往是不全面的,可能影响到后面各个阶段。瀑布模型是以文档形式驱动的,系统修改维护难度较大。开发过程中,事先选择的技术或需求迅速发生变化,需要返回到前面某阶段进行修改。总之,瀑布模型是一种理想的线性开发模式,但缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。开发过程中,用户看不到软件是什么样子,开发完成后,如果用户发现有不满意的地方,为时已晚。随着软件开发项目的规模日益扩大,瀑布模型缺乏灵活性的缺点引发的问题更为严重。311.5软件开发过程模型1.5.2原型模型
原型法首先构造一个功能简单的原型系统,然后通过对原型系统逐步求精,不断扩充完善得到最终的软件系统。这个模型可在运行中被检查、测试、修改,直到它的性能达到用户需求为止。因而这个工作模型很快就能转换成原样的目标系统。需求的采集与细化客户评价原型快速设计建造原型加工原型产生样品停止开始321.5软件开发过程模型原型法优点用户支持,在系统生存期的各阶段起到积极的作用能够处理用户的模糊需求有利于维护,提高用户满意度用户在开发过程中学习了解软件开发费用降低,时间缩短,减少系统开发的风险应用原型法要规避以下误区将次要需求当作主要需求建模用户不断提出要求,因修改错误忽略主要部分的开发修改原型模型时忽略文档更新不断修改原型满足用户需求,忽略用户的实际应用环境是否适合。331.5软件开发过程模型1.5.3螺旋模型(SpiralModel)需求计划操作概念原型1软件需求风险分析原型2需求验证开发计划风险分析原型3软件产品设计设计验证和确认测试计划集成和风险分析可操作原型详细设计实现验收测试组装测试单元测试编码提交部分费用累加评估方案标识风险解决风险风险分析开发、验证阶段性产品实施工程制定下一阶段计划客户评估确定目标、方案和限制定制计划341.5软件开发过程模型螺旋模型将瀑布模型和快速原型模型结合起来,强调了其他模型忽视的风险分析,适合大型复杂系统。螺旋模型由风险驱动,强调可选方案和约束条件,从而支持软件的重用,将软件质量作为特殊目标融入产品开发之中。螺旋模型每旋转一圈便开发出更完善的一个新版本软件开发又前进一个层次系统又生成一个新版本而软件开发的时间和成本又有了新的投入得到一个客户满意的软件版本351.5软件开发过程模型螺旋模型的限制条件强调风险分析,但要求客户接受和相信这种分析,并做出相关反应是不容易的。对开发人员的风险评估经验和专门知识要求较高,否则将会带来更大的风险。如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。361.5软件开发过程模型1.5.4喷泉模型(FountainModel)需求阶段分析阶段设计阶段编程阶段集成与测试阶段维护与演进阶段371.5软件开发过程模型喷泉模型特点喷泉模型是对象驱动的过程,用于支持面向对象开发过程。使用面向对象方法开发软件时,主要活动是定义和不断完善对象,软件开发生存期各阶段划分不是很明显。软件开发活动之间没有明显的间隙。无间隙是指各项开发活动,即分析、设计和编码之间不存在明显的边界,随着开发过程的推进,需不断的对前面工作进行细化和完善,各开发步骤经多次反复迭代。喷泉模型具有迭代的特性,自然支持复用。系统某个部分常常重复工作多次,相关对象在每次迭代中随之加入演进的软件成分。喷泉模型较好的体现了面向对象开发方法的模型。381.5软件开发过程模型1.5.5构件组装模型标识性选购件计划风险分析用户通信用户评价产品开发与发布进行下一次迭代在库中查找构件将新构件存入库中若存在提取构件若不存在创建构件391.5软件开发过程模型模型以面向对象技术为基础,融合了螺旋模型的特征,利用预先包装好的软件构件来构造软件。构件类似于类或对象,是可重用部件,最大限度提高代码重用率。构件组装模型可实现软件复用,提高了软件的开发效率。且构件具有正确性、稳定性和立即可用性,因此采用构件组装可大大提高效率和软件质量,减少开发成本。有统计数据表明,构建组装可缩短70%的开发周期,降低84%的项目成本。401.5软件开发过程模型1.5.6第四代技术第四代语言(4GT)是一种面向结果的非过程性语言。它独立于具体的处理机,有丰富的软件工具支持。软件工程师在较高层次说明软件的特征,工具将说明自动生成源代码。小型和中型应用软件开发中,4GT使软件生产所需的时间大大减少,分析和设计的时间也减少了。大型软件中使用4GT,需要相同的甚至更多的分析、设计和测试,并且一般情况下自动生成的源代码效率较低,并且其可维护性也是值得怀疑的。收集需求设计策略用4GT实现测试411.5软件开发过程模型1.5.7Rational统一过程RationalUnifiedProcess,RUP是一套软件工程过程,由Rational软件公司推出的一种完整的软件过程模型。RUP是一套软件工程方法的框架,各个组织可根据自身的实际情况,以及项目规模对RUP进行裁剪和修改,以制定出合乎需要的软件工程过程。421.5软件开发过程模型1.RUP是最佳软件开发经验的总结迭代式开发(developsoftwareiteratively)给定的时间内,开发一个大型的复杂的软件系统,定义问题并构建解决方案是不可能一蹴而就的。允许每次迭代中的需求变化;每个迭代完成一个版本的程序。管理需求(managerequirements)需求是变化的;RUP实现对需求的动态管理。使用基于构件的体系结构(usecomponent-basedarchitectures)构件就是已存在的模块或子系统(重用);降低复杂度,提高效率,提高软件质量。431.5软件开发过程模型可视化软件建模(visuallymodelsoftware)建模就是建立模型,模型是对客观事物的抽象;可视化模型更容易理解;可采用UML建立可视化的模型。验证软件质量(verifymodelquality)软件质量决定软件的成败;RUP对软件质量的评估贯穿于整个开发过程的始终。控制软件变更(controlchangestosoftware)管理软件变更;软件修改可控、可跟踪。441.5软件开发过程模型2.RUP生命周期核心工作流45RUP的核心工作流RUP中有9个核心工作流,这些工作流在整个生命周期中一次又一次被访问,在每一次迭代中以不同的重点和强度重复。6个核心过程工作流(CoreProcessWorkflows)业务建模(BusinessModeling)如何为新的目标组织开发一个构想,评估目标系统的影响。需求(Requirements)需求工作流的目标是描述系统应该做什么,并使开发人员和用户就这一描述达成共识。要对需要的功能和约束进行提取、组织、文档化,重点理解系统所解决问题的定义和范围。分析和设计(Analysis&Design)需求分析结果转化为分析模型与设计模型。46RUP的核心工作流实现(Implementation)设计模型转化为实现结果(可执行的系统)。以层次化的子系统形式定义代码的组织结构;以组件的形式实现类和对象;将开发出的组件作为单元进行测试以及集成由单个开发者(小组)所产生的结果,使其成为最终系统。测试(Test)验证软件中所有组件的正确集成,检验所有的需求已被正确的实现;识别并确认缺陷在软件部署之前被提出并处理。部署(Deployment)将成功的生成版本并将软件分发给最终用户。将软件移交给最终用户。47RUP的核心工作流3个核心支持工作流(CoreSupportingWorkflows)配置和变更管理(Configuration&ChangeManagement)跟踪维护软件开发过程中产生的所有制品的完整性和一致性。项目管理(ProjectManagement)软件项目管理平衡各种可能产生冲突的目标、风险,克服各种约束并成功交付使用户满意的产品。其目标包括:为项目的管理提供框架,为计划、人员配备、执行和监控项目提供实用的准则,为管理风险提供框架等。环境(Environment)向软件开发组织提供软件开发环境,包括过程管理和工具支持。481.5软件开发过程模型工作阶段为了把握一个项目的时间尺度,RUP把一个项目分为四个不同的阶段:初始阶段建立业务模型,定义最终产品视图,确定项目范围。精化阶段设计确定系统体系结构,制定项目计划,确定资源需求。构建阶段开发构件和应用程序,集成为客户需要的产品,并测试。移交阶段产品移交用户使用。491.5软件开发过程模型1.5.8敏捷过程与极限编程敏捷过程Agile[’ædʒail]softwaredevelopmentisaconceptualframeworkforundertakingsoftwareengineeringprojectsthatembracesandpromotesevolutionarychangethroughouttheentirelife-cycleoftheproject.敏捷软件开发是一个概念意义上的框架,用来取代软件工程项目的概念;它强调在项目的整个生命周期中,拥抱并促进由于软件进化式的发展所带来的变化。敏捷软件开发(AgileSoftwareDevelopment,ASD),涉及到了敏捷项目管理、敏捷需求获取、狭义的“敏捷软件开发”三个主要的领域和过程。501.5软件开发过程模型拥抱并促进变化世界上唯一不变的是变化。学会如何识别变化的大势,并在可能的时候,促使变化向好的方向发展,才是面对变化的正确应对之法。软件进化式的发展软件的演化过程是有其自身内在逻辑的,存在一些根本规律和指导方针。顺势而为,无为无不为
——老子511.5软件开发过程模型敏捷宣言(ManifestoforAgileSoftwareDevelopment) 2001年提出的第一版的敏捷软件开发宣言:Weareuncoveringbetterwaysofdevelopingsoftwarebydoingitandhelpingothersdoit.Throughthisworkwehavecometovalue
[我们正在通过实践和帮助其他人实践,揭示更好的开发软件的方法。我们从实践中得出的价值观是]:Individualsandinteractionsoverprocessesandtools
人和交互重于过程和工具Workingsoftwareovercomprehensivedocumentation
可以工作的软件重于求全责备的文档Customercollaboration
overcontractnegotiation
客户合作重于合同谈判Respondingtochangeoverfollowingaplan
随时应对变化重于循规蹈矩Thatis,whilethereisvalueintheitemsontheright,wevaluetheitemsontheleftmore.521.5软件开发过程模型在敏捷宣言的背后,有其遵循的12条原则:①我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。②即使到了开发的后期,也欢迎改变需求,敏捷过程利用变化来为客户创造竞争优势。③经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。④在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。⑤围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。531.5软件开发过程模型⑥在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交流。⑦工作的软件是首要的进度度量标准。⑧敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。⑨不断地关注优秀的技能和好的设计会增强敏捷能力。⑩简单——使未完成的工作最大化的艺术——是根本的。⑪最好的构架、需求和设计出自于自组织的团队。⑫每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。541.5软件开发过程模型极限编程eXtremeProgramming,XP是一种软件工程方法学,是敏捷软件开发中最富有成效的几种方法学之一。极限编程和传统方法学的本质不同在于它更强调可适应性而不是可预测性。软件需求的不断变化是自然的、不可避免的、应该接受的;和传统的在项目起始阶段定义好所有需求再费尽心思的控制变化的方法相比,有能力在项目周期的任何阶段去适应变化,将是更加现实更加有效的方法。这些在传统的软件工程中看来是“极端的”实践,将会使开发过程比传统方法更加好的响应用户需求,因此更加敏捷,更好的构建出高质量软件。551.5软件开发过程模型极限编程方法的基本特征是:增量和反覆式的开发结对程式设计:两个程序员在一个工作台上共同参与、合作。能增加纪律性,写出更好的代码。在程式设计团队中的使用者交互(在场的客户)软件重构:代码重构指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。集体代码所有权:任何结对的程序员都可以在任何时候改进任何代码。没有程序员对任何一个特定的模块或技术单独负责,每个人都可以参与任何其它方面的开发。编码标准:所有的代码看起来就好像是被单独一人编写的。隐喻:将整个系统联系在一起的全局视图,是系统的未来影像。如果模块的外观与整个隐喻不符,该模块是错误的。可持续的速度:把项目看作是马拉松长跑,而不是全速短跑。561.6软件开发方法简述软件开发方法一种使用早已定义好的技术集和符号表示习惯来组织软件生产过程的方法。其方法一般表述成一系列的步骤,每一步骤都与相应的技术和符号表示相关。软件开发的目标规定的投资和时间内,开发出符合用户需求的高质量的软件。为了达到此目的,需要有成熟的开发方法。自软件工程诞生以来,人们重视软件开发方法的研究,已经提出了多种软件开发方法和技术,对软件工程及软件产业的发展起到了不可估量的作用。571.6软件开发方法简述1.6.1结构化方法结构化方法由结构化分析、结构化设计和结构化程序设计构成。它是一种面向数据流的开发方法。该方法简单实用,应用较广,技术成熟。结构化分析根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,完成需求分析。结构化设计根据模块独立性准则、软件结构准则,将数据流图转换为软件的体系结构,用软件结构图来建立系统的逻辑模型,实现系统的概要设计。结构化程序设计根据结构程序设计原理,将每个模块的功能用相应的标准控制结构表示出来,实现详细设计。581.6软件开发方法简述结构化方法总的指导思想是自顶向下、逐步求精。它的基本原则是功能的分解与抽象。它是软件工程中最早出现的开发方法,特别适合于数据处理领域的问题。相应的支持工具较多,发展较为成熟。结构化方法对于规模大的项目及特别复杂的项目不太适应,该方法难于解决软件重用问题,难于适应需求变化的问题,难于彻底解决维护问题。结构化方法将软件开发任务按照软件生命周期划分成阶段分段顺序进行,因此这种方法又叫生命周期方法,或叫传统的软件开发方法。591.6软件开发方法简述1.6.2面向数据结构的开发方法基本思想是从目标系统的输入输出数据结构入手,导出程序的基本框架结构,在此基础上,对细节进行设计,得到完整的程序结构图。1974年J.D.Warnier提出的结构化数据系统开发方法(DataStructureSystemsDevelopment,DSSD),Warnier方法;1975年M.A.Jackson提出的Jackson系统开发方法(JacksonSystemsDevelopment,JSD),Jackson方法。两种方法的区别:使用不同的图形工具描述信息的层次结构使用的伪码不同程序框架时,Warnier方法仅考虑输入数据结构,而Jackson方法还考虑输出数据结构(最主要的区别)。601.6软件开发方法简述Jackson方法一般通过以下步骤来完成设计:(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson结构图来表示这些数据结构。(2)找出输入和输出数据结构中有对应关系的数据单元。(3)按以下的规则由输入、输出的数据结构导出程序结构。为每一对在输入输出数据结构中有对应关系的单元画一个处理框为输入和输出数据结构中剩余的数据单元画一个处理框所有处理框在程序结构图上的位置,应与由它处理的数据单元在数据结构Jackson图上的位置一致必要时,可以对映射导出的程序结构图进行进一步的细化。(4)列出基本操作与条件,并把它们分配到程序结构图的适当位置。(5)用伪码写出程序。611.6软件开发方法简述1.6.3面向对象的方法面向对象开发方法的基本出发点是尽可能按照人类认识世界的方法和思维方式来分析和解决问题。客观世界是由许多具体的事物、事件、概念和规则组成,这些均可看成对象。面向对象方法正是以对象作为最基本的元素,它也是分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水泥栏杆安装合同范本
- 缝线推广服务合同范本
- 网络代理软件合同范本
- 租赁分期买断合同范本
- 酒店客房系统管理设计
- 青春期教育主题班会课件
- 配液主管年终总结
- 静脉麻醉取卵护理
- 湘潭大学兴湘学院《园林植物学理论》2023-2024学年第二学期期末试卷
- 东北师范大学《用友财务管理软件应用》2023-2024学年第二学期期末试卷
- 二年级数学有余数的除法(2位数除以1位数)竞赛试题练习题
- 2025年法理学接本试题及答案
- 2025年安庆医药高等专科学校单招职业技能考试题库标准卷
- 2025-2030年中国工业废水处理产业十三五发展规划及战略规划分析报告
- 《抑郁症治疗新进展》课件
- 《天文学导论课件》
- 北京自主招生数学试卷
- 2024年特许权使用协议3篇
- 湖南固体废弃物综合利用和资源循环利用项目可行性研究报告
- 四川省凉山彝族自治州(2024年-2025年小学六年级语文)统编版综合练习(下学期)试卷及答案
- T-GXAS 689-2024 重大基础设施项目涉及风景名胜区选址论证报告编制技术规范
评论
0/150
提交评论