您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第一章 软件工程概述
第一章软件工程概述第一章软件工程概述主讲教师包琼湖北经济学院软件工程系主要内容软件1软件的发展与软件危机2软件工程3软件的生命周期4软件过程及模型5主讲教师包琼湖北经济学院软件工程系1.1什么是软件?软件=程序软件的定义《IEEEStandardGlossaryofSoftwareEngineeringTerminology》定义软件——计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。程序:在运行时,能提供所希望的功能和性能的指令序列。数据:使程序能够正确运行的数据结构文档:描述程序研制过程、方法及使用的文档?主讲教师包琼湖北经济学院软件工程系问题有哪些类型的程序设计语言?•面向机器:如汇编语言、机器语言等•面向过程:如Fortran,Pascal,C等等•面向对象:如Java,C++等等•面向问题:如数据查询语言SQL等等主讲教师包琼湖北经济学院软件工程系问题(续1)在软件开发过程中会产生哪些文档?whatwherewhenwhohowwhy可行性研究报告√√项目开发计划√√√需求规格说明书√√概要设计说明书√详细设计说明书√测试分析报告√用户使用手册√√√主讲教师包琼湖北经济学院软件工程系问题(续2)为什么要编写文档?•促进对软件的开发,管理和维护;•便于各种人员(用户,开发人员)的交流有哪些文档标准?•国际ISO•国家GB•行业标准IEEE•企业主讲教师包琼湖北经济学院软件工程系1.2软件本质特性复杂性一致性可变性不可见性主讲教师包琼湖北经济学院软件工程系1.2软件本质特性-复杂性复杂性软件在规模上可能比任何由人类创造的其他实体都要复杂,复杂性是软件的本质特征软件的复杂形是必要属性•大量的组合状态•丰富的结构和相互依赖性•良好的接口用以封装内部的复杂性开发问题也会增加复杂性•高效率的代码通常是复杂的•重用通用化的组件意味着复杂的状态连接•复杂的代码难以维护,导致设计上更复杂主讲教师包琼湖北经济学院软件工程系1.2软件本质特性-复杂性(续)复杂性举例Windows95有1000万行代码Windows2000有5000万行代码Exchange2000和Windows2000开发人员结构Exchange2000Windows2000项目经理25人约250人开发人员140人约1700人测试人员350人约3200人主讲教师包琼湖北经济学院软件工程系1.2软件本质特性-一致性一致性软件必须遵从人为的惯例并适应已有的技术和系统•软件必须遵循各种接口、协议和标准•有些情况下,兼容性是软件开发的目标软件需要随接口的不同而改变,随时间的推移而变化,而这些变化是不同的人设计的结果。许多复杂性来自保持与其他接口的一致,对软件的任何再设计,都无法简化这些复杂特性。主讲教师包琼湖北经济学院软件工程系1.2软件本质特性-可变性可变性软件产品扎根于文化的母体中,如各种应用、用户、自然及社会规律、计算机硬件等,后者持续不断地变化着,这些变化无情地强迫着软件随之变化。所有成功的软件都会发生变更!•当人们发现软件很有用时,会在原有应用范围的边界,或者在超越边界的情况下使用软件;•功能扩展的压力主要来自那些喜欢基本功能,又对软件提出了很多新用法的用户们。主讲教师包琼湖北经济学院软件工程系1.2软件本质特性-可变性(续1)可变性(续1)人们总是认为软件是容易修改的,但忽视了修改所带来的副作用,不断的修改昀终导致软件的退化。软件的可变性导致失效率的上升主讲教师包琼湖北经济学院软件工程系1.2软件本质特性-可变性(续2)硬件失效曲线时间磨合调整磨损用坏失效率主讲教师包琼湖北经济学院软件工程系1.2软件本质特性-不可见性不可见性软件是不可见的和无法可视化的•软件的客观存在不具有空间的形体特征•定义“需要做什么”成为软件开发的根本问题人们一直试图使用不同的技术进行软件可视化•控制流程、数据流、依赖关系、UML、……•这些技术仍然无法给出准确的、完整的描述软件仍然保持着无法可视化的固有特性,从而剥夺了一些具有强大功能的概念工具的构造思路。这种缺憾不仅限制了个人的设计过程,也严重地阻碍了相互之间的交流。主讲教师包琼湖北经济学院软件工程系1.3软件的分类按工作方式划分实时处理软件分时软件交互式软件批处理软件主讲教师包琼湖北经济学院软件工程系1.3软件的分类(续1)按功能划分系统软件•与计算机硬件紧密配合在一起,使计算机系统各个部件、相关的软件和数据协调、高效地工作的软件支撑软件•能协助用户开发软件的工具性软件,其中包括帮助程序人员开发软件产品的工具,也包括帮助管理人员控制开发的进程的工具应用软件:在特定领域内开发,为特定目的服务的一类软件主讲教师包琼湖北经济学院软件工程系1.3软件的分类(续2)按规模(人力、时间、源程序行数)划分参加人员研制期限产品规模(源程序行数)微型11~4周0.5k小型11~6月1~2k中型2~51~2年5~50k大型5~202~3年50~100k甚大型100~10004~5年1M(1000k)极大型2000~50005~10年1~10M主讲教师包琼湖北经济学院软件工程系1.3软件的分类(续3)按服务对象的范围项目软件产品软件按使用频度一次性使用软件频繁使用软件按软件失效的影响高可靠性软件一般可靠性软件主讲教师包琼湖北经济学院软件工程系1.3软件的分类(续4)问题何谓通用软件?何谓定制软件?有什么不同?•通用软件–面向市场公开销售的独立运行系统。–例如:操作系统、数据库管理系统、字处理软件等。•定制软件–由客户委托,在合同约束下开发的软件–例如:网上书店、图书管理系统、空中交通管理系统等。主讲教师包琼湖北经济学院软件工程系主要内容软件1软件的发展与软件危机2软件工程3软件的生命周期4软件过程及模型5主讲教师包琼湖北经济学院软件工程系2.1软件的发展计算机软件发展的三个时期程序设计阶段(60年代中期之前)•硬件通用,软件专用;程序规模小,编写者和使用者为同一人(同组人)。程序系统阶段(60年代中期-70年代中期)•出现“软件作坊”、产品软件;“个体化”开发方法。软件工程阶段(70年代中期之后)•软件开发成为一门新兴的工程学科——软件工程。主讲教师包琼湖北经济学院软件工程系2.1软件的发展(续)计算机软件发展的三个时期的特点(见表)程序设计程序系统软件工程软件的范畴程序程序及说明书程序、数据、文档主要程序设计语言汇编及机器语言高级语言高级语言系统、程序设计语言软件工作范围程序编写包括设计和测试软件生存期需求者程序设计者本人少数用户市场用户维护责任者程序设计者开发小组专职维护人员硬件特征价高、存储小、可靠性差降价;速度、容量、可靠性明显提高向超高速、大容量、微型化及网络化发展软件特征完全不受重视软件技术的发展不满足需要,出现软件危机开发技术有进步,但未获得突破性进展,软件危机未完全摆脱主讲教师包琼湖北经济学院软件工程系2.2软件危机软件危机的概念软件危机指的是软件开发和维护过程中遇到的一系列严重问题,包含两方面的问题:•如何开发软件,怎样满足对软件的日益增长的需求•如何维护数量不断膨胀的已有软件主讲教师包琼湖北经济学院软件工程系2.2软件危机(续1)软件危机的主要表现对软件开发成本和进度的估计不准确产品不符合用户的要求软件质量不高、可靠性差软件常常不可维护、错误难以改正软件成本占系统总成本的比例逐年上升软件开发速度跟不上计算机发展速度主讲教师包琼湖北经济学院软件工程系开发成本高举例软件成本占系统成本的比例比例%年份/年195519601965197019751980198519901995200010080604020主讲教师包琼湖北经济学院软件工程系软件技术进步落后于需求增长主讲教师包琼湖北经济学院软件工程系2.2软件危机(续2)产生软件危机的主要原因客观:软件本身特点•不可见性Æ难以控制质量,管理困难•规模越来越庞大,结构越来越复杂主观:•开发技术落后、生产方式落后,开发工具落后•忽视需求分析•错误认为:软件开发=程序编写•轻视软件维护主讲教师包琼湖北经济学院软件工程系2.2软件危机(续4)解决软件危机的途径技术措施•使用更好的软件开发方法和开发工具组织管理措施•软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。主讲教师包琼湖北经济学院软件工程系主要内容软件1软件的发展与软件危机2软件工程3软件的生命周期4软件过程及模型5主讲教师包琼湖北经济学院软件工程系3.1软件工程的产生软件危机--根源--解决途径:软件工程产生1968年,北大西洋公约组织(NATO),召开的有关计算机软件会议上正式提出“软件工程”术语。主讲教师包琼湖北经济学院软件工程系3.2软件工程的定义[IEEE1993年]定义软件工程(SoftwareEngineer):把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件研究①中提到的途径。主讲教师包琼湖北经济学院软件工程系3.2软件工程的定义(续)软件工程是一门交叉性学科应用计算机科学、数学及管理科学等原理,开发软件的工程。它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。其中•计算机科学、数学用于构造模型与算法•工程科学用于制定规范、设计范型、评估成本及确定权衡•管理科学用于用于计划、资源、质量、成本等管理主讲教师包琼湖北经济学院软件工程系3.2软件工程的三要素主讲教师包琼湖北经济学院软件工程系3.2软件工程的三要素(续)过程(Process)支持软件生命周期的所有活动方法(Method)为完成软件生命周期的一系列活动提供“怎么做”的技术工具(Tool)为“方法”提供一系列自动、半自动的软件支撑环境项目管理工具、配置管理工具需求管理工具、可视化建模工具自动测试工具结构化方法Jackson方法面向对象的开发方法主讲教师包琼湖北经济学院软件工程系3.3软件工程项目的基本目标付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能按时完成并及时交付开发的软件可靠性高在具体项目的实际开发中,企图让以上几个目标都达到理想的程度往往是非常困难的。主讲教师包琼湖北经济学院软件工程系3.3软件工程项目的基本目标(续)基本目标之间的关系互斥关系互补关系易于维护低成本按时交付高性能高可靠性主讲教师包琼湖北经济学院软件工程系*3.3软件工程的基本原理目前有100多条关于软件工程的准则,其中昀出名的是著名软件工程专家B.W.Boehm在1983年提出的7条基本原理。主讲教师包琼湖北经济学院软件工程系3.3软件工程的基本原理-1用分阶段的生命周期计划严格管理经统计表明,不成功的软件项目中有一半左右是由于计划不周造成的。Boehm认为,在软件的整个生命周期中应制定并严格执行六类计划:项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运行维护计划。主讲教师包琼湖北经济学院软件工程系3.3软件工程的基本原理-2坚持进行阶段评审大部分错误是在编码之前造成的错误发现与改正得越晚,所需付出的代价越高。因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程的错误主讲教师包琼湖北经济学院软件工程系3.3软件工程的基本原理-3实行严格的产品控制在软件开发过程中不要随意改变需求,因为改变某项需求往往需要付出较高的代价,但在实践中用户往往会提出需求变更,因此需要采取科学的产品控制技术。目前主要实行基准配置管理:基准配置是指经过阶段评审后的软件配置成分,如各个阶段产生的文档或程序代码。对涉及基准配置的修改,必须经过严格的评审,通过后才能实施修改。主讲教师包琼湖北经济学院软件工程系3.3软件工程的基本原理-4采用现代程序设计技术实践表明:采用先进的技术既可提高软件开发的效率,
本文标题:第一章 软件工程概述
链接地址:https://www.777doc.com/doc-203526 .html