版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程1软件工程
第一章软件工程概念软件工程2软件工程
第一章软件工程概念一、软件的概念二、软件危机三、软件工程定义四、软件工程框架五、软件工程过程与软件生存周期六、软件开发范型(Paradigm)七、软件工程原则软件工程3提示:设计与建模要点结构化分析建模:数据流图、实体关系图、状态迁移图、数据字典结构化设计建模:数据流图转换为系统结构图结构化程序设计:程序流程图、N-S图、PAD程序环路复杂性计算测试用例设计:逻辑覆盖、循环测试、基本路径覆盖、因果图可靠性分析:估算测试前程序中潜在错误OMT建模:对象模型、动态模型(状态图、事件追踪图)UML建模:用例图、类图、顺序图、活动图软件工程4一、软件的概念软件的定义软件由计算机程序、数据及文档组成。软件与硬件、数据库、人、过程等共同构成计算机系统。软件按功能分类:应用软件、系统软件、支撑软件。软件的发展经历了三个阶段:程序设计阶段、程序系统阶段、软件工程阶段。软件工程51、软件的发展
程序设计阶段(又称个体生产时期—50至60年代)程序系统阶段(又称软件作坊时期。软件=程序+说明—60至70年代 )软件工程时期(—70年代以后)软件工程方法时期(70初至80年代中)集成的计算机辅助软件工程时期(ICASEIntegratedCASE-80年代后)软件工程6软件发展的三个时期及其特点特点时期程序设计程序系统软件工程软件所指程序程序及规格说明书程序、文档、数据主要程序设计语言汇编及机器语言高级语言软件语言软件工作范围编写程序包括设计和测试软件生存期需求者程序设计者本人少数用户市场用户软件工程7续表一特点时期程序设计程序系统软件工程开发软件的组织者个人开发小组开发小组及大中型开发机构软件规模小型中、小型大、中、小型决定质量的因素个人程序设计技术开发小组技术水平管理水平开发技术和手段子程序程序库结构化程序设计数据库、开发工具、开发环境、工程化开发方法、标准和规范、网络和分布式开发、对象技术软件工程8续表二特点时期程序设计程序系统软件工程维护责任者程序设计者开发小组专职维护人员硬件特征价格高、存储容量小降价、速度、容量及工作可靠性明显提高向超高速、大容量、微型化及网络化方向发展软件特征完全不受重视软件技术的发展不能满足需要,出现软件危机开发技术有进步,但未获突破性进展,价格高,未完全摆脱软件危机软件工程92、什么是软件软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合程序是按事先设计的功能和性能要求执行的指令序列数据是使程序能正常操纵信息的数据结构文档是与程序开发,维护和使用有关的图文材料软件工程103、软件的特点
软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程中没有明显的制造过程在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题软件工程11失效率曲线:
软件工程12软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。这导致了软件移植问题。软件本身是复杂的实际问题的复杂性程序逻辑结构的复杂性软件大多是定制的。而不是装配的。软件成本相当昂贵相当多的软件工作涉及到社会因素软件工程13软件技术的发展落后于需求软件复杂性差距时间软件技术软件需求软件工程14
计算机系统硬、软件成本比例的变化软件工程154、软件的分类按软件的功能进行划分系统软件支撑软件应用软件软件工程软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机的主要特征软件开发进度难以预测软件开发成本难以控制用户对软件功能难以满足软件产品质量无法保证软件产品难以维护软件缺少文档资料软件的成本不断提高。软件开发生产率的提高赶不上人们需求的增长二、软件危机软件工程17软件危机产生的原因
产生软件危机有两个方面的原因:
内部因素与软件本身的特点有关。内在因素是客观的存在,只能因势利导加以解决。外部因素与软件开发和维护的技术方法有关。外部因素是可以完善、提高的。软件工程18软件特点的因素
软件是逻辑产品,是代码化了的人的思维活动。在总体构思时,别人无法管理和干预。在写出程序、并在机器上运行之前,进展情况难以掌握,开发质量也无法评估。这些都给管理和控制带来不便。
软件是特定问题在计算机上的运行描述。实际问题的复杂性决定了一个实用软件系统规模往往十分庞大。程序规模越大,控制、管理难度也就越大。软件工程19软件开发维护技术方法的因素开发人员和用户之间的矛盾许多软件系统开发失败的主要原因是开发人员在没有准确、完整地了解了用户的需求后就急于编程;用户对需求也往往不能准确、完整地提出。
软件产品有其生命周期在周期的各个阶段有其具体的任务,如何完成任务,各个阶段有不同的技术方法和操作步骤。只有科学的按生命周期各阶段的任务去组织实施,才能保证质量,降低成本;急于求成,不按科学规律、方法实施,只能“事倍功半”,事与愿违。软件工程20
软件产品的使用寿命很长在这期间因功能的增加、硬件的更新换代,都要对软件进行必要的修改。据统计数据表明,软件维护的费用占总费用的55%~70%。软件工程的一个重要目标就是提高软件的可维护性,减少软件维护的代价。讨论中国软件存在的问题软件工程21解决软件危机的途径树立对计算机软件的正确认识。软件开发应该是组织良好、管理严密、各类人员团结协作共同完成的工程项目。必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,并研究能更有效地开发软件的技术和方法。积极开发和使用计算机辅助软件工程(CASE)工具。总之,为了解决软件危机就要从技术措施(方法和工具)和组织管理两个方面去研究。
软件工程22软件工程概念的出现源自软件危机。1968年德国人Bauer在北大西洋公约组织会议上的定义:"建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法"。1983年IEEE的软件工程定义:"软件工程是开发,运行,维护和修复软件的系统方法"。1993年IEEE的一个更加综合的定义:"将系统化的,规范的,可度量的方法应用于软件的开发,运行和维护的过程,即将工程化应用于软件中"。三、软件工程定义软件工程23我国2006年的国家标准《GB/T11457—2006软件工程术语》软件工程定义:应用计算机科学理论和技术以及工程管理原则和方法,按预算进度,实现满足用户要求的软件产品的定义、开发、发布和维护的工程或进行研究的学科。三、软件工程定义软件工程24软件工程学主要研究内容软件工程学软件开发技术软件管理技术软件开发方法学软件工具软件工程开发环境软件管理学软件工程经济学软件工程25软件开发方法学:是研究如何高效地开发出高质量的软件的方法。它应提供以下两个模型: 软件开发模型 软件产品描述模型软件工具:研究软件工具开发的理论和技术,软件工具是指“支持计算机软件的开发、维护、模拟、移植或管理而研制的程序系统。软件工程26软件工程环境:软件工程环境是“相关的一组软件工具的集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成。软件工程管理:研究如何有效地对软件开发项目进行管理。它包括成本估算、进度计划、人员组织、质量保证等多方面内容。软件工程经济学:软件工程27软件工程技术的两个明显特点:一是强调规范化,另一是强调文档化。软件工程包含四要素:方法(methodologies)语言(languages)工具(tools)过程(procedures).软件工程28方法:提供如何构造软件的技术。语言:用以支持软件的分析、设计和实现。工具:为方法和语言提供自动化或半自动化的支持。过程:是将方法、语言和工具综合起来以达到合理、及时地进行计算机软件开发的目的。过程定义了方法的使用顺序、要求交付的文档资料、为保证质量和协调变化所需要的管理、及软件开发各阶段完成的里程碑。软件工程29可用性性性确正合算选取适宜的开发模型采用合适的设计方法提供高质量的工程支持重视软件工程的管理基本过程支持过程组织过程目标过程原则四、软件工程框架软件工程30软件工程框架给出了软件工程三个主要方面。软件工程目标—包括可用性、正确性和合算性,规定了软件工程实践的结果(即软件)应具有的基本性质;软件工程过程—包含的基本活动有需求、分析与设计、实现、确认与测试、维护与支持;软件工程的四条原则--采用适宜的开发模型,使用恰当的开发方法,提供高质量的工程支持,实施有效的工程管理,从四个方面指导每一项工程的活动,以实现软件工程目标。软件工程31ISO9000定义:软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。从软件开发的观点看,它就是使用适当的资源(包括人员、硬软件工具、时间等),为开发软件进行的一组开发活动,在过程结束时将输入(用户要求)转化为输出(软件产品)。五、软件工程过程与软件生存周期软件工程32软件工程过程定义了:方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的里程碑。软件工程过程包含四种基本的过程活动:
plan:软件规格说明
do:软件开发
check:软件确认
action:软件演进软件工程过程软件工程33软件工程过程的特性易理解性可见性可支持性可接受性可靠性健壮性可维护性速度软件工程34软件生存周期软件的生存期:软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。通常,把软件从开始研制(形成概念)到最终软件被废弃不用这整个阶段称为软件的生存期。软件生存周期:为了能对软件进行有条不紊、有步骤的开发和管理,将软件生存期划分为若干阶段,称为软件生存周期软件工程35软件定义、软件开发及软件运行维护。软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并制定工程进度表。该时期通常进一步划分为三个阶段,即问题定义、可行性研究和需求分析。软件生存周期包含三个时期软件工程36软件开发时期具体设计和实现在前一个时期定义的软件,它通常由四个阶段组成:总体设计、详细设计、编码和测试(包括单元测试、综合测试)。软件运行维护时期主要任务是使软件持久地满足用户需要。软件工程37软件生存周期每个阶段的基本任务问题定义:必须回答的关键问题是“要解决的问题是什么?”。可行性研究:必须回答的关键问题是“对于上一个阶段确定的问题有行得通的解决办法吗?”。需求分析:必须回答的关键问题是“为了解决这个问题,目标系统必须做什么?”,主要是确定目标系统必须具备哪些功能。
软件工程38总体设计:必须回答的关键问题是“概括地说,应该怎样实现目标系统?”。确定程序由哪些模块组成以及模块间的关系详细设计:必须回答的关键问题是“应该怎样具体实现目标系统?”。详细的设计每个模块,确定实现模块功能所需要的算法和数据结构软件工程39编码和单元测试:关键任务是写出正确的容易理解、容易维护的程序模块,并仔细测试每个编写出的模块。综合测试:关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。维护时期:主要任务是通过各种必要的维护活动,使系统持久地满足用户需要。
软件工程40关干软件生命周期阶段的几个问题问题一:开发一个软件大概需要多少资金、时间,将获得什么效益一般是在哪个阶段确定?相对而言,在哪个阶段与用户交流最多?问题二:系统分析员主要工作在哪个时期?程序员主要工作在哪个时期?问题三:软件定义时期的三个阶段,各自回答什么关键问题?问题四:软件开发时期有几个阶段?各自回答什么关键问题?软件工程41关干软件生命周期阶段的几个问题(续)问题五:软件体系结构最早是在哪个阶段决定的?问题六:详细设计与程序编写阶段有什么样的密切联系?问题七:“软件测试是为了验证系统的正确性”这句话对吗?问题八:软件维护有那几种?各有什么功能?软件工程42软件生存周期模型是软件工程思想的具体化,是跨越软件生存周期的系统开发、运行、维护所实施的全部活动和任务的过程框架。常用的软件生存周期模型有瀑布模型,演化模型,螺旋模型,增量模型,喷泉模型,快速应用开发(RAD)模型。软件生存周期模型软件工程43瀑布模型各项活动按自上而下,相互衔接的固定次序,如同瀑布逐级下落,每项活动均处于一个质量环(输入-处理-输出-评审)中。阶段间具有顺序性和依赖性。推迟实现的观点。每个阶段必须完成规定的文档;每个阶段结束前完成文档审查。它的致命缺点在于只有做出精确的需求分析,才能取得预期的结果。软件工程44需求定义系统与软件设计集成与系统测试实现与单元测试运行与维护软件工程45演化模型演化模型是迭代的,软件必须经过不断演化才能完善。演化模型先开发一个“原型”软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。业务和产品需求在变化中,采用线性开发方式是不实际的。快速实现和提交一个有限的版本,可以应付市场竞争的压力。软件工程46需求的采集与细化客户评价原型快速设计建造原型加工原型产生样品停止开始软件工程47螺旋模型螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的风险分析。螺旋模型沿着螺线旋转,自内向外每旋转一圈便开发出更完善的一个新版本。制定计划风险分析实施工程客户评估软件工程48决定目标、方案和限制评价方案识别风险弱化风险
开发、验证、下一级产品
计划下一阶段集成测试软件工程49增量模型增量模型是迭代和演进的过程。增量模型把软件产品分解成一系列的增量构件,在增量开发迭代中逐步加入。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。早先完成的增量可以为后期的增量提供服务。增量开发方法的新演进版本叫做"极限程序设计(eXtremeProgramming)"。软件工程50定义基本需求将需求对应到各增量设计系统架构开发其中一个增量检验和确认该增量将增量集成到系统中确认集成后的系统软件工程51日历时间分析增量1
增量1交付设计编码测试分析增量2
增量2交付设计编码测试分析增量3
增量3交付设计编码测试分析增量4
增量4交付设计编码测试系统和信息工程软件工程52喷泉模型体现了迭代和无间隙的特性。系统某个部分常常重复工作多次,相关对象在每次迭代中随之加入演进的软件成分。无间隙是指在各项开发活动,即分析、设计和编码之间不存在明显的边界。喷泉模型是对象驱动的过程。软件工程53需求阶段分析阶段设计阶段编程阶段集成与测试阶段维护与演进阶段软件工程54快速应用开发(RAD)模型快速应用开发模型是一种增量开发模型,该模型开发软件大量使用了可复用的构件。每一个增量的开发经历五个阶段:业务建模对业务功能的信息流建模。数据建模对业务的数据对象和关系建模。过程建模描述完成业务功能的数据变换。应用生成应用构件和自动化工具建造。测试与反复对新构件和接口进行测试。软件工程55业务建模数据建模过程建模应用生成测试及反复小组1#业务建模数据建模过程建模应用生成测试及反复小组2#业务建模数据建模过程建模应用生成测试及反复小组3#60~90天软件工程56变换模型变换模型是一种基于形式化规格说明语言及程序变换的软件开发模型。它采用形式化的软件开发方法,对形式化的软件规格说明进行一系列自动的或半自动的程序变换,最终映射成为计算机系统能够接受的程序系统。多步程序变换过程的重要性质是:每一步程序变换的正确性仅与该步变换所依据的规范Mi以及对变换后的假设Mi+1有关。软件工程57软件需求形式化说明(M0)软件设计形式化说明(M1)(M2)(Mn)……模型检查程序变换程序变换程序变换在此意义上,变换步骤独立于其他变换步骤。这称为变换的独立性。该模型只适合于软件的形式化开发方法;需要严格的数学理论和形式化技术支持;需要一整套开发环境(如程序变换工具、定理证明工具等)的支持。软件工程58基于第四代技术的模型第四代语言(4GL)是在大型数据库管理系统的基础上发展起来的,是一种面向结果的非过程性语言。它独立于具体的处理机,有丰富的软件工具支持,能统一利用和管理各种数据资源并能适应不同水平用户的需要。以4GL为核心的软件开发技术成为第四代技术(4GT),采用4GT的软件开发模型如图。软件开发人员在定义软件需求,给出需求规格说明之后,4GT工具可将该需求规格说明自动软件工程59
转换为程序代码。这大大减少了分析、设计、编码和测试的时间。以4GL为核心的软件开发技术成为第四代技术(4GT),采用4GT的软件开发模型如图。收集需求“设计”策略用“4GL”实现测试软件工程60六、软件开发范型(Paradigm)范型又称为风范。通常认为范型就是开发模型(Model)或开发模式(Pattern),实际上它与方法(Methodology)一样,都被视为一种开发技术。范型支配了设计方法、编码语言、测试和检验技术的选择。过程性范型把软件视为处理流,定义成由一系列步骤构成的算法。每一步骤都是带有输入和输出的一个过程,把这些步骤串联在一起可产生贯通于整个程序的控制流。软件工程61面向对象范型把标识和模型化问题领域中的实体做为系统开发的起点,面向对象系统中的对象是数据抽象与过程抽象的综合。逻辑性范型是基于规则的,它把有关问题的知识分解成一组具体规则(如prolog语言)。面向进程范型把一个问题分解成独立执行的模块。让不只一个程序同时运行。这些进程互相配合,解决问题。面向存取范型是一种在构造用户界面方面很有用的技术。软件工程62函数型范型是基于规则的,它把有关问题的知识分解成一组具体规则,用语言的“if_then”等结构来表示这些规则。
说明性范型。每种开发范型都有它的支持者和用户:每种开发范型都特别适合于某种类型的问题或子问题;每种开发范型都用不同的方式考虑问题;每种开发范型都使用不同的方法来分解问题软件工程63每种开发范型都导致不同种类的块、过程、产生规则。系统开发时通常把大型问题分解成一组子问题。对于每个子问题采用适当的软件开发范型。软件工程64软件工程原则有:抽象与自顶向下、逐层细化采用分层抽象的方法,有效控制软件开发的复杂性。模块化把问题分解为若干较小的较易解决的模块,有助于信息隐蔽和抽象。信息隐蔽和数据封装将模块中的软件设计决策封装在模块内部,使得模块实现与使用分离,有助于控制修改局部化。七、软件工程原则软件工程65局部化在一个物理模块内集中逻辑上相互关联的计算机资源,促使聚合具有特定目的的事物。一致性整个软件系统的模块使用一致的设计策略、编程风格,保持程序内部接口的一致性、软件与硬件接口的一致性、系统规格说明与系统行为的一致性。完备性软件系统中不丢失任何成分。可验证性系统分解应当遵循易检查、易测试和易评审的原则,以保证系统的正确性。软件工程66软件工程的基本原理有:用分阶段的生命周期计划严格管理:按软件生存期分阶段制定计划并认真实施,把整个软件开发过程视为一项工程,把工程划分为若干阶段,分别制定每个阶段的计划,逐个实施。坚持进行阶段评审前一阶段的结果将成为下一阶段的依据。坚持阶段的评审才能保证错误不传播到下一阶段。软件工程67实行严格的产品控制将影响软件质量的因素在整个过程中置于严格控制之下。使用现代程序设计技术先进的程序设计技术带来的是生产率和质量的提高。使用合适的开发模式和工具可以有效地建立功能强大的系统。明确责任,使得工作结果能够得到清楚的审查开发组织严格划分责任并制定产品的标准,使得每个成员的工作有据可依,确保产品的质量。软件工程68用人少而精开发组织不在人多,在于每个人的技能适合要求。同时用人少而精,可减少沟通路径,提高生产率。承认不断改进软件工程实践的必要性不断改进开发过程,在开发的过程中不断总结经验,改进开发的组织和过程,有效地通过过程质量的改进提高软件产品的质量。软件工程69软件工程项目的基本目标有:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024至2030年中国管式电磁铁数据监测研究报告
- 2024年银票夹项目可行性研究报告
- 2024年设备罩项目可行性研究报告
- 2024年聚烯烃类线缆项目综合评估报告
- 2024年洗脱两用机项目立项申请报告范文
- 2025届上海嘉定区高三第二次诊断性检测英语试卷含解析
- 2025届北京市101中学高考冲刺英语模拟试题含解析
- 江苏省南京市六校联合体2025届高三一诊考试数学试卷含解析
- 哈尔滨市重点中学2025届高三(最后冲刺)英语试卷含解析
- 初中剪纸知识课件
- 河海大学开题报告
- 电梯安全质量管理体系建立
- 大学美育 第2版 课件 第四章 形式美与美育
- 医疗机构高警示药品风险管理规范(2023版)
- Wow English S4-S6单词可直接打印
- 国家开放大学《财政与金融(农)》形考任务1-4参考答案
- 大象版科学三年级下《控制电路》
- 环保设备运行管理台账
- 城镇土地估价规程
- 安全培训教育效果评价表
- Photoshop(PS)教学课件:第6章调色
评论
0/150
提交评论