第1章-软件工程概述_第1页
第1章-软件工程概述_第2页
第1章-软件工程概述_第3页
第1章-软件工程概述_第4页
第1章-软件工程概述_第5页
已阅读5页,还剩44页未读, 继续免费阅读

下载本文档

kok电子竞技权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

kok电子竞技:文档简介

2024/10/24软件工程第1页软件工程

2024/10/24软件工程第2页软件危机软件工程第一章软件工程概述软件2024/10/24软件工程第3页1.1软件1、什么叫软件?(1)广义软件:相对于有形物理实体,把技术条件、管理法规以及人员素质等无形因素称为软件。(2)计算机软件:是与计算机硬件相对应的计算机组成部分,包括程序、数据及其相关文档的完整集合。Boehm:“软件是程序以及开发、使用和维护程序所需的所有文档。”程序:按事先设计的功能和性能要求执行的指令序列;数据:使程序能正常操纵信息的数据结构;文档:是与程序开发、维护和使用有关的图文资料。2024/10/24软件工程第4页2、软件的特点:(1)软件是一种逻辑实体;(2)软件开发成本很高,但却可以低成本地复制。

(3)软件的使用不存在老化的问题;(软件因需求变化和故障需不断维护,并不断失去价值)

(4)软件在使用的过程中的维护工作远比硬件复杂。

(5)软件开发是高强度的脑力劳动,自动化程度不高,因而软件成本相当昂贵;(6)相当多的软件开发涉及到社会因素。2024/10/24软件工程第5页3、软件的分类:(1)按功能分类

a、系统软件:支持计算机系统各个部件、相关的软件和数据协调、高效地工作的软件。如:OS、DBMS、DRIVER、COMMUNICATION-SYSTEM。

b、支撑软件:协助用户开发软件的工具性软件,文本编辑软件。如:PSL/PSA(问题描述语言、问题描述分析器)、图形软件包、预编译程序、静态分析程序。

c、应用软件:在特定的领域不特定的目的服务的一类软件。如:数值计算、CAD/CDM、人工智能、CAI、MIS。2024/10/24软件工程第6页(2)按软件规模分类:

MICRO、SMALL、MIDDLE、LARGE、VERY-LARGE、UTRA-LARGE。(3)按软件工作方式分类:

a、实时处理软件:事件或数据产生时,立即处理并反馈信息(控制软件);

b、分时软件:允许多个联机用户同时使用计算机;

c、交互式软件:能实现人机通信的软件(用于人机界面设计);

d、批处理软件。2024/10/24软件工程第7页(4)按功能软件服务对象分类

a、项目软件:受特定客户委托由一个或多个软件开发机构在合同的约束下开发出来的软件。

b、产品软件:提供给市场的商品。(5)按使频度分类:(6)按软件失效的影响分类。4、软件的发展:(1)程序设计阶段:约50—60年代。

软件产品:程序;

语言:汇编语言及机器语言;

主要工作:编写程序;

组织:个人;

质量因素:编程技术(技巧)。(2)程序系统阶段:约60—70年代。

软件产品:程序及说明书;

语言:高级程序设计语言;

主要工作:设计程序及测试;

组织:开发小组;

开发技术:结构化程序设计方法。

2024/10/24软件工程第8页2024/10/24软件工程第9页(3)软件工程阶段:70年代以后。

软件产品:程序、数据、文档;

语言:软件语言(需求定义语言、软件功能语言、软件设计语言、程序设计语言);

主要工作:软件生存周期各个阶段;

组织:大中型软件开发机构;

需求者:面向市。嫦蛴没В

开发技术和手段:工程化开发方法,开发工具及开发环境起重要作用;

质量因素:管理水平。

2024/10/24软件工程第10页1.2

软件工程一、软件危机1、什么叫软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

1968年北大西洋公约组织在联邦德国召开的国际会议上提出来的。2024/10/24软件工程第11页2、软件危机的表现(1)对软件开发的成本和进度的估计常:懿蛔既罚唬2)用户对“已完成的”软件系统不满意的现象经常发生;(3)软件质量往往靠不。喝砑质量保证技术(审查、复审和测试)没有坚持不懈地应用到软件开发全过程中;(4)软件常常不可维护:错误难改,难适应新的硬件环境,难适应用户要求增加的新的功能需求,软件的复用性不高;2024/10/24软件工程第12页2、软件危机的表现(2)(5)软件通常没有适当的文档资料;文档资料的作用是:管理和评价软件开发过程的进展情况,开发者与用户和开发者之间通信的工具,维护工具。(6)软件成本在计算机系统总成本中所占的比例逐年上升;(1985年美国软件成本占计算机系统总成本的比例为90%)(7)软件开发生产率提高的速度赶不上计算机普及的速度。2024/10/24软件工程第13页3、产生软件危机的原因(1)软件是计算机的逻辑部件而不是物理部件。软件问题是在开发时期引入的而在测试阶段没能测出来的故障,修改软件故障要修改软件原来的设计。(2)软件不同于一般程序,它的特点是规模庞大,软件开发工作量随软件规模增大非线性增长;(3)与早期软件开发个体化特点有关:认为软件开发就是写程序并设法使之运行,轻视需求分析和软件维护。2024/10/24软件工程第14页4、解决软件危机的途径(1)借助各种工程项目开发所积累的经验(原理、概念、技术和方法);(2)总结软件开发成功的技术和方法;(3)应用软件开发辅助工具。2024/10/24软件工程第15页4、解决软件危机的途径(2)关键办法:(1)抓住两个环节:开发技术和方法;良好的组织管理措施。(2)澄清三个错误认识:

a、软件就是程序;

b、软件开发就是编程;(编程仅占工作量的10%-20%)

c、将错误留到编程后的测试和维护时再改。(相同的错误在后期引入软件更改比早期引入软件更改所需的代价高出2-3个数量级。2024/10/24软件工程第16页二、软件工程1、什么叫软件工程?软件工程是指采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来开发高质量的软件。2024/10/24软件工程第17页2、软件工程的基本原理1、用分阶段的生命周期计划严格管理3、实行严格的产品控制2、坚持进行阶段性评审4、采用现代程序设计技术5、结果应能清楚地审查6、开发小组的人员应该少而精7、承认不断改进软件工程实践的必要性2024/10/24软件工程第18页

(1)用分阶段的生命周期计划严格管理生命周期:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、软件维护。

在软件的整个生命周期中应该严格执行六类计划:项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运行维护计划。(Boehm)2024/10/24软件工程第19页

(2)坚持进行阶段性评审

软件的质量保证工作不能等到编码结束以后进行:

(1)大部分错误是在编码之前造成的,占63%;(2)错误发现与改正得越晚,所需付出的代价也越高.

2024/10/24软件工程第20页

(3)实行严格的产品控制

(1)产品控制:指在软件生产过程中保持软件各个配置(文档或程序代码)的一致性,即不能随意修改软件。(2)基线配置:是经过阶段评审后的软件配置成分。对基线配置的修改都要按照严格的规程进行评审。

(4)采用现代程序设计技术

采用先进的程序设计技术可以提高软件的生产效率。

SA(structureanalyse):结构分析;

SD(structuredesign):结构设计。

SP(structureprograming):结构编程。

2024/10/24软件工程第21页2024/10/24软件工程第22页

(5)结果应能清楚地审查

软件是看不到的逻辑产品。为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使所得到的结果能够清楚地审查。2024/10/24软件工程第23页

(6)开发小组的人员应该少而精

为了提高软件开发过程的可见性,更好地进行管理,应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使所得到的结果能够清楚地审查。

(7)承认不断改进软件工程实践的必要性

2024/10/24软件工程第24页3、软件工程的三要素(1)软件开发技术:解决“如何做”的问题,如项目计划与估算、成本效益分析、风险控制、系统需求分析、软件结构设计、算法设计、程序设计方法、软件测试与维护等。

(2)软件开发工具:目前软件开发工具正向软件开发工具箱、集成化软件开发环境发展,以支持软件开发的全过程。

(3)软件工程管理:它包括软件生产的成本估算、进度安排、质量评估、管理与控制、人员组织和软件配置管理等,涉及管理学、经济学、社会学和心理学等多个方面。

软件工程软件开发技术软件开发工具软件工程管理图1.2软件工程三要素2024/10/24软件工程第25页4、软件工程目标采用软件工程的方法开发软件的最终目标是保证项目的成功,即达到以下几个目标:低开发成本、高可靠性、高性能、易于移植,易于维护、按时完成开发工作。低开发成本高性能按时交付高可靠性易于维护互补关系互斥关系2024/10/24软件工程第26页1.3软件生命周期一、软件生命周期的概念与其他事物一样,软件也有一个孕育、诞生、成长、成熟和衰亡的过程,这个过程被称为软件生命周期。

软件定义软件开发软件维护

可行性研究需求分析总体设计详细设计编码与单元测试测试维护2024/10/24软件工程第27页1.3软件生命周期(2)二、软件生命周期各阶段的任务1、可行性研究可行性研究的任务是了解用户的要求及现实条件,从技术、经济、社会等几个方面研究论证软件系统的可行性。

(1)回答的关键问题是:“对所确定的问题有行得通的解决办法吗?”;(2)参与人员:系统分析员;(3)工作过程:一个大简化了的系统分析和设计过程;(4)完成的任务:提出系统的高级逻辑模型,确定系统的目标和规模,系统的成本/效益分析。2024/10/24软件工程第28页2、需求分析需求分析的主要任务是确定待开发软件的功能要求、性能要求和运行环境约束。

(1)回答的关键问题是:“为了解决这个问题,目标系统应该做什么?”;(2)参与人员:系统分析员和用户;(3)完成的任务:确定系统的逻辑模型,通常用ER图、数据流图、状态变迁图、数据字典和简要的算法表示,这个系统模型经过用户确认后才能进入下一阶段。需求分析阶段结束的标志是提交软件需求规格说明书(SRS,SoftwareRequirementsSpecification)

,验收测试设计2024/10/24软件工程第29页3、总体设计总体设计的基本任务有两个:一是根据需求规格说明,提出几种可供选择的系统解决方案,并确定一个用于实施的最佳方案;二是建立软件系统的总体结构。

(1)回答的关键问题是:“概括地说,应该如何解决这个问题?”;(2)参与人员:系统分析员;(3)主要工作:提出几种可供选择的解决方案(是人工完成还是计算机完成,是批处理还是人机交互,信息存储是采用文件系统还是数据库?),方案的级别有:低、中、高等级,每种方案都用系统流程图或其它工具加以描述。推荐一种方案。最后确定一种方案。(4)完成的任务:可能的解法(每种解法的系统流程图和成本效益分析),推荐的系统结构(层次图或结构图)。总体设计结束的标志是提交总体设计说明书、数据库或数据结构说明书和集成测试计划等文件。

4、详细设计详细设计又称为过程设计,其主要任务是用图形工具或伪码(如HIPO图、程序流程图、N-S图、PAD图、PDL语言)描述模块的实现过程。

(1)回答的关键问题是:“应该如何具体地实现这个系统?”;(2)参与人员:系统分析员和程序员;(3)主要工作:设计程序详细的规格说明,用图形工具或伪码描述模块的实现。但还不是编程,它类似于其它工程上的图纸。(4)完成的任务:编码规格说明书,用HIPO图或PDL等工具描述的详细设计的结果。详细设计阶段结束的标志是提交详细设计说明书,包括模块开发卷宗和模块测试方案。2024/10/24软件工程第30页2024/10/24软件工程第31页5、编码编码的任务是选择适当的程序设计语言(高级程序设计语言或汇编语言),把详细设计的结果翻译成选定语言编写的程序,并对编写出的每一个模块程序进行测试(被称作单元测试)。(1)关键问题是:写出正确的容易理解、容易维护的程序模块;(2)参与人员:程序员;(3)主要工作:选取一个适当的程序设计语言(高级程序设计语言或汇编语言),把详细设计的结果翻译成用选定的语言书写的程序,仔细测试编写出的每一个模块。(4)完成的任务:源程序清单,单元测试方案和结果。这个阶段结束的标志是程序员提交源程序清单和单元测试方案和结果。2024/10/24软件工程第32页6、综合测试(1)关键问题是:通过各种类型的测试和调试使软件达到预期的要求。(2)参与人员:专门的测试人员、用户;(3)主要工作:集成测试:根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。验收测试:按照规格说明书的规定(通常在需求分析阶段确定),由用户(或在用户积极参加下)对目标系统进行验收。平行运行:新旧系统同时运行,在保障系统安全的前提下使新系统接爱实战演练,同时对用户进行培训。(4)完成的任务:综合测试方案和结果,完整一致的软件配置。2024/10/24软件工程第33页可行性研究需求分析总体设计详细设计编码单元测试平行运行确认测试集成测试2024/10/24软件工程第34页7、软件维护(1)关键问题是:通过各种必要的维护活动使系统持久地满足用户的需要。是压缩和简化了的软件定义和开发过程。(2)参与人员:软件工程师、用户;(3)主要工作:改正性维护:诊断和改正在使用过程中发现的软件错误。适应性维护:修改软件以适应新的硬件和软件环境。完善性维护:满足新的用户需求。预防性维护:修改软件为将来的维护活动预先做准备。维护过程:提出维护要求—分析维护要求—提出维护方案—审批维护方案—确定维护计划—修改软件设计—修改程序—测试程序—复查验收。(4)完成的任务:提交正式的维护记录资料。2024/10/24软件工程第35页4软件开发模型什么是软件开发模型?所谓软件开发模型是指从项目需求分析直至软件经使用后废弃为止所经历的、与开发维护工作相关的过程结构框架,即描述软件生命周期中的各个阶段之间的时间次序。目前广泛使用的软件开发模型有瀑布模型、原型模型、螺旋模型、基于第四代技术的模型和形式化方法模型。2024/10/24软件工程第36页1、瀑布模型的特点:(1)阶段间具有顺序性和依赖性;(2)严格的技术审查和管理复审;(3)推迟软件的物理实现。瀑布模型存在的不足:一是开发效率低,前一阶段的工作没有完成,后一阶段的工作不能开始,有限的人力得不到充分利用;二是缺乏灵活性。三是瀑布模型要求软件的需求说明完整准确,如果在软件开发的晚期修改需求说明,将带来灾难性的后果——前面所做的工作可能全部废弃。2024/10/24软件工程第37页问题定义可行性研究需求分析总体设计详细设计编码测试维护运行问题定义可行性研究需求分析总体设计详细设计编码测试评价需求分析总体设计详细设计编码2024/10/24软件工程第38页2、原型模型主要思想是首先建立一个能够反映用户主要需求的原型,让用户实际看一看未来系统的概貌,以便判断哪些功能是符合需要的,哪些功能还需要增加或改进,然后反复修改并评价原型,使用户需求进一步明确,最终建立完全符合用户要求的新系统。

需求分析原型开发原型评价最终系统设计最终系统实现图1.8原型模型2024/10/24软件工程第39页建立原型系统的策略:(1)原型系统仅包含目标系统的主要功能和重要接口。重点实现用户最为关心的功能和人机界面部分,体现系统的可操作性,使用户能较快建立感性认识。同时忽视系统的细节,如异常处理、对非有效输入的响应等;对系统的性能需求,如硬件的速度等也可推迟考虑。(2)尽量使用能缩短开发周期的程序设计语言和工具。由于原型系统开发要突出一个“快”字,所以开发原型系统要尽量选用第四代语言或甚高级语言。但是第四代语言或甚高级语言一般需要很大的支撑环境,运行速度比较慢,不宜用来实现最终的实际系统,所以这个策略所开发的原型系统可能被废弃。(3)尽量由原型系统演化为目标系统,这样可避免二次开发或多次开发,以节约开发成本,加快开发进度。2024/10/24软件工程第40页原型开发模型的主要优点是:(1)有利于明确需求,用户在原型系统上获得实践经验、启发思维,可与系统分析员一起使软件需求表述得更加明确和完整;(2)有利于实现开发人员与用户之间的沟通,消除用户和系统分析员之间存在的通信鸿沟;(3)有利于用户培训,使用户较早地学会使用系统。2024/10/24软件工程第41页3、螺旋模型螺旋模型(spiralmodel)是一个迭代模型,由多次开发迭代而成,每次迭代软件开发都经历一个软件生命周期,新的一次开发是对上一次开发的深化,从模型图上看呈螺旋线状。特点:(1)螺旋模型的每一个周期都要经过需求定义、风险分析、工程实现和评审4个阶段;(2)采用瀑布模型的开发方法,具有分阶段边开发、边评审的特点,保证了每次开发的软件质量。(3)螺旋模型的每一个开发周期开发的软件都可以看作是下一个开发周期的原型,用户参与开发并对阶段性的软件产品提出评审意见,因而吸取了原型模型的特点。(4)迭代收敛问题:迭代过程必须尽快收敛到用户允许的或可接受的目标范围内。如果迭代周期过多,每个迭代周期的工作量太大,则迭代收敛很慢,软件开发的成本过高,花费的时间太长,软件开发将面临失败的危险。2024/10/24软件工程第42页2024/10/24软件工程第43页4、基于第四代技术的模型(1)第四代语言(4GL)

第四代语言(4GL):是在大型数据库管理程序基础上发展起来的程序设计语言。

4GL是面向结果的非过程式语言,它独立于具体的处理机,有丰富的软件工具的支持,能统一利用和管理各种数据资源,因此能适应不同水平用户的需要。支持4GL的软件开发工具有:数据库查询语言、报表生成器、图表生成器、人机交互的屏幕设计与代码生成系统等。2024/10/24软件工程第44页4、基于第四代技术的模型(2)基于第四代技术的模型以4GL为核心的软件开发技术称为四代技术,采用四代技术开发软件的模型称为基于第四代技术的模型。收集需求“设计”策略用4GL实现测试2024/10/24软件工程第45页(3)基于第四代技术模型的特点:A、它也是从收集需求这一步开始的。B、对于较小的应用,使用4GL可能直接从需求收集过渡到实现,利用4GL工具将规格说明自动转换成程序代码,而对于较大的应用,仍需要制订一个系统的设计策略。C、基于第四代技术方法的优点是能缩短软件开发的时间,显著提高软件开发的生产率。D、开发生成的源代码效率较低,对于大型软件项目而言,4GL虽然可以节省部分代码生成的时间,但其在整个开发过程中所占的比例是有限的。2024/10/24软件工程第46页5、形式化方法模型(1)什么是形式化方法模型?形式化方法模型是基于形式化规格说明及程序变换的一种软件开发模型。(2)基本思想是:开发人员在完成需求分析以后,用某种形式化的需求规格说明语言(如VDM的META-IV、CSP和Z)描述软件规格说明,生成形式化的规格说明,再对形式的规格说明进行一系列的程序变换,直到生成计算机系统可以接受的目标代码。这种方法的一个变种,称为净室软件工程,目前已被一些软件开发组织所采用。2024/10/24软件工程第47页(3)形式化方法模型的特点:A、形式化方法模型使得软件工程师能够通过应用严格的、数学的符号体系来规约、开发和验证基于计算机的软件系统,能够消除使用其他开发模型难以克服的诸多问题。它通过数学分析验证软件而不是专门的评审,用形式化方法证明程序而不是测试,使得软件工程师能够发现和纠正在其他情况下发现不了的错误。B、形式化方法提供了可以产生无缺陷软件的承诺,适合于那些安全性要求高(如航空电子及医疗设备软件)和发生软件错误会遭受严重经济损失的软件开发。C、形式化方法模型的不足是太理论化,需要更多的数学知识,不能作为与用户通信的机制。2024/10/24软件工程第48页小结本章介绍了软件工程的基本概念,包括软件、软件危机、软件工程、软件生命周期和软件开发模型等5个方面的内容。1、计算机软件是与计算机硬件相对应的,与计算机系统操作和运行有关的程序、数据及其相关文档的完整集合。软件不同于程序,它比程序的概念更广泛,程序仅是软件的一部分。2、软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。3、软件工程是一门指导计算机软件开发与维护的工程科学,它把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,强调采用工程的概念、原理、技术和方法来开发与维护软件。软件工程的内容包括软件开发技术、软件开发工具和软件工程管理3个方面。2024/10/24软件工程第49页4、软件生命周期在软件工程中通常从时间角度将软件开发设计与运行维护的复杂问题分解为几阶段,这就是软件生命周期。一般把软件生命周期分为软件定义、软件开发和软件维护3个阶段。其中软件定义又可分为可行性研究和需求分析,软件开发阶段又可分为为总体设计、详细设计、编码和测试。基于软件生命周期的开发方法规定每个阶段都有相对独立的任务,然后逐步完成每个阶段的任务。5、软件开发模型是指从项目需求分析直至软件经使用后废弃为止所经历的、与开发维护工作相关的过程结构框架,即描述软件生命周期中的各个阶段之间的时间次序。软件开发模型是软件开发过程的概括,是软件工程的重要内容。目前广泛使用的软件开发模型有瀑布模型、原型模型、螺旋模型、基于第四代技术的模型和形式化方法模型。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论