您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第11章软件工程概述
1软件工程SoftwareEngineering2参考书目(References)软件工程导论(第三版)张海藩清华大学出版社(1997)实用软件工程(第二版)郑人杰、殷人昆、陶永雷清华大学出版社(1996)3FrederickP.Brooks著清华大学出版社TomDemarco著清华大学出版社阅读材料(RecommendedBooks)4软件工程概述5主要内容计算机软件的概念定义/特征/分类介绍软件工程的基本概念软件危机与软件工程软件危机/软件工程软件开发的过程的坎坎坷坷树立软件工程的重要思想软件开发模型瀑布式开发模型6软件的基本概念7什么是软件软件是计算机系统中与硬件相互依存的另一部分,是包括程序,数据及其相关文档的完整集合。软件由两个部分组成:程序过程和数据程序是可执行部分。是按照功能和性能要求编写的指令序列。任务的描述、处理规则的实现。数据是程序操作的数据结构和其他需要的相关的信息。文档资料——不可执行部分。它是软件的静态描述,涉及到软件的设计、运行、维护等。它有面向开发者的开发计划、面向维护人员的维护手册,也有面向用户的使用说明等。8软件概念的说明程序是按事先设计的功能和性能要求执行的指令序列。它是针对完成任务的动作和对象的描述。程序能够被计算机理解和执行。数据是使程序能正常操作信息的数据结构。文档是用自然语言或者形式化语言所编写的文字资料和图表,用来描述软件的内容、组成、设计、功能规格、开发情况、测试结果以及使用方法。包括方案制定、程序设计说明书、流程图、用户手册等。9软件的特点软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性。通过纸、存储等方式描述它。通过执行、分析等手段评判它。开发、使用、评判的标准较难掌握。软件的生产与硬件不同,在它的开发过程中没有明显的制造过程。不能简单地按照生产过程的质量控制方法来管理软件的开发。10软件的特点在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。出现问题是由于问题原来就存在。因此控制软件的质量重点在开发,而不在使用。软件维护实质是修改原来的设计,区别通常维修中的更换。问题出现既然不可避免,应该使得软件变得容易维护。11软件不会磨损,但软件会变的恶化失效率时间磨合期磨损加剧硬件失效率曲线理想曲线改变!边缘效应导致的失效率增加实际曲线12软件的特点软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。软件的开发至今尚未完全摆脱手工艺的开发方式。软件本身是复杂的:实际问题的复杂性程序逻辑结构的复杂性软件成本相当昂贵。相当多的软件工作涉及到社会因素。13软件的分类--按功能划分按软件的功能进行划分:系统软件:使计算机系统各个部件、相关软件和数据协调、高效地工作的软件,它具有公用性、共享性、基础性等特点。操作系统数据库管理系统设备驱动程序通信处理程序等14软件的分类--按功能划分支撑软件:协助用户开发软件的工具软件。文本编辑程序文件格式化程序磁盘向磁带进行数据传输的程序程序库系统支持需求分析、设计、实现、测试和支持管理的软件15软件的分类--按功能划分应用软件工程与科学计算软件(Matlab)计算机辅助设计/制造软件(CAD/CAM)系统仿真软件(SIMULINK)智能产品嵌入软件(LABVIEW)医疗、制药软件(HIS)事务管理、办公自动化软件(OFFICE)商业数据处理软件(如财务软件)计算机辅助教学软件16嵌入式软件嵌入式系统:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应各应用系统对功能、可靠性、成本、体积、功耗严格等有要求的专用计算机系统。外观上:不具有通用计算机的形态。按需要对计算机的组成部分进行裁剪。嵌入式软件嵌入式操作系统:进/线程管理、存储管理、IO管理嵌入式应用软件:嵌入式系统中的应用软件。17软件的分类--按规模划分类别参加人员数研制期限源程序行数微型11~4周0.5k小型11~6月1k~2k数值计算或数据处理,通常没有与其它程序的接口。需要按一定的标准化技术、正规的资料书写以及定期的系统审查。只是没有大题目那样严格。中型2~51~2年5k~50k软件人员之间、与用户之间的联系、协调的配合关系。因而计划、资料书写以及技术审查需要比较严格地进行。应用程序和系统程序。系统的软件工程方法是完全必要的。18软件的分类--按规模划分大型5~202~3年50k~100k编译程序、小型分时系统、实时控制系统等。二级管理,若干小组,每组5人以下。人员调整往往不可避免,新手的培训。采用统一的标准,实行严格的审查是绝对必要的。甚大型100~10004~5年1M(=1000k)若干个子项目,每一个子项目都是一个大型软件。子项目之间具有复杂的接口。如远程通信系统、多任务系统、大型操作系统、大型数据库管理系统、军事指挥系统通常现有这样的规模。很显然,这类问题没有软件工程方法的支持,它的开发工作是不可想象的。极大型2000~50005~10年1M~10M军事指挥、弹道导弹防御系统。只是对软件工程技术依赖的程度不同而已。19软件的分类—其它按软件工作方式划分:实时处理软件分时软件交互式软件批处理软件按软件服务对象的范围划分:项目软件产品软件按使用的频度进行划分:一次使用频繁使用20软件危机与软件工程21软件危机美国IBM公司在1963年至1966年开发的IBM360机的操作系统。这一项目花了5000人一年的工作量,最多时有1000人投入开发工作,写出了近100万行源程序。......据统计,这个操作系统每次发行的新版本都是从前一版本中找出1000个程序错误而修正的结果。......SoftwareCrisis!22软件危机这个项目的负责人F.P.Brooks事后总结了他在组织开发过程中的沉痛教训时说:“......正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。......程序设计工作正像这样一个泥潭,......一批批程序员被迫在泥潭中拼命挣扎......谁也没有料到问题竟会陷入这样的困境......”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。23软件危机《人月神话》作者:Frederick.P.Brooks《TheMythycalMan-Month》24软件危机1、项目没有被很好地理解;计划不周,最终导致进度拖延。2、没有充分的文档资料(documentation)项目经理——评估、跟踪整个过程程序员——相互之间需要交流通讯维护人员——需要维护手册人与人的交流比写程序困难得多。3、软件可靠性(reliability)缺少度量标准,质量无法保证。4、软件难以维护(maintainability)、不易升级(evolvability)25软件危机软件危机:是指在计算机软件的开发与维护的过程中所遇到的一系列严重的问题。软件危机包括两个方面的内容:如何开发软件以满足各种需求如何维护已有的众多的软件软件危机不仅存在于“不能正常运行”的软件中,几乎所有的软件都存在着开发和维护的难题26软件危机软件危机的表现成本和进度估计不正确用户对“已完成的”软件系统不满意质量不可靠,常被怀疑不可维护缺乏良好的、适当的文档资料成本高昂,并逐年上升27软件危机的原因软件自身特点所造成的:软件是逻辑实体而非物理实体,因此把握开发的进度、评价、排故等都较困难。软件庞大复杂软件的运行错误是由于计划、设计、开发等阶段引入的,改正错误,意味着修改原来的设计。开发与维护方法的原因未弄清楚用户要求而急于着手写程序。程序仅仅是软件的一部分,常常忽视软件配置成分。轻视软件的维护。28软件危机的解决之道“软件工程”(SoftwareEngineering)NATOConferenceGarmisch(加米施),Germany,1968.引入软件工程的概念开发软件不仅仅是技术问题,更重要的是要重视管理。推广有效的软件开发方法和技术。开发和使用更好的软件工具。29软件工程软件工程是采用工程的概念、原理、技术和方法来开发和维护软件。软件工程强调使用软件生存周期阶段方法学和各种结构分析和结构设计技术。采用工程化方法和途径来开发和维护软件借鉴其它工程项目的原理、概念、技术和方法推广使用实践中总结出来的软件开发的成功技术和方法探索新的有效技术和方法开发和使用更好的软件工具采取必要的管理措施30软件工程学软件工程学包括技术和管理两方面的内容软件开发技术软件开发过程软件开发方法软件开发工具软件工程管理31软件开发过程开发一个最终能满足需求且达到目标的软件产品所需要的步骤研究与分析问题解决问题的方法与设计目标系统实施解决问题方案,即编程实现测试运行与维护软件开发过程是为了获得软件产品或是为了完成软件过程项目需要完成的有关软件开发活动,每一项活动又可分解成一些软件任务。32软件开发方法软件开发方法是对软件开发步骤和各阶段的文档格式提出规范化的要求和标准,使软件生产实现“工程化”。软件开发方法的演变本书讲述的线索:结构化设计方法个性化软件开发方法结构化软件开发方法面向对象软件开发方法基于构件软件开发方法新软件开发方法33软件开发工具软件工具为软件工程方法提供了自动的或半自动的软件支撑环境软件工程环境方法与工具相结合、加上配套的软、硬件支持34软件工程管理按照进度和预算完成软件开发计划成本估计、进度安排、人员组织、质量保证35软件的生命周期在软件工程的概念中必须意识到:“软件”编程,它有自己的生命周期(lifecycle)。大型软件系统的开发与其它工程项目如建造桥梁、制造飞机、轮船等的开发是同理的。软件生存周期--指从软件项目提出,包括研制、运行和维护直到退役的整个过程。软件生存周期划分为3个时期:计划时期、开发时期和运行时期,每一时期又区分为若干更小的阶段。瀑布模型快速原型模型36生命周期的几个观点将整个生命周期划分为较小的阶段是实现软件生产工程化的重要步骤;每个阶段赋予明确而有限的任务,可以降低因为软件规模大大增长而增加了的软件复杂度;阶段之间的顺序性和依赖性;前一个阶段任务的完成是开始后一个阶段工作的前提和基础;后一个阶段的任务是前一阶段结果的具体化。每个阶段结束前必须进行技术审查和管理复查;37生命周期的几个观点每个阶段结束之后都要交付完整、清楚、准确的文档;根据不同阶段的任务特点,应采用不同的技术和方法;软件的生命周期有效地降低了软件开发的难度,保证了软件的质量,提高了可维护性。38瀑布式开发模型瀑布模型:将软件的生命周期划分为定义、开发、维护三个时期,每个时期又区分为若干个阶段,各个阶段的工作顺序展开,犹如奔流不息的瀑布。特点单源头缺乏灵活性,无法解决软件需求不明确或不准确的问题39瀑布式开发模型40瀑布式开发模型的阶段性任务划分阶段的原则:各个阶段的任务彼此之间尽可能相对独立同一个阶段各项任务的性质尽可能相同瀑布式模型生命周期的时期划分:软件定义时期软件开发时期软件维护时期41软件定义时期软件定义时期是软件的计划、分析阶段。完成下列问题:该软件是什么开发该软件的是否可行该软件的功能/性能怎样开发该软件的软/硬件资源是什么完成计划的进度表是什么软件定义时期的三个阶段:问题定义:问题是什么可行性研究:是否能解决/值得解决42软件开发时期具体分析、设计和实现软件定义时期定义的软件软件开发时期的四个阶段需求分析:弄清楚系统做什么弄清系统全部需求,给出需求规格说明书软件设计总体设计:建立软件总体结构,确定系统由那些模块组成详细设计:确定软件的内部过程及算法,给出程序的详细规格说明编码和单元测试:编写源程序,测试每个模块软件测试:找出软件中的错误并改正集成测试:按软件结构,进行组
本文标题:第11章软件工程概述
链接地址:https://www.777doc.com/doc-2153203 .html