《软件工程世界城精.ppt》由会员分享,可在线阅读,更多相关《软件工程世界城精.ppt(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件工程世界城第1页,本讲稿共43页软件工程=编程?软件工程软件工程q是一门学科,一种科学理论来指导软件系统开发,标准化、自动化的过程q考虑如何分解一个系统,以便各人分工开发;考虑如何说明每个部分的规格要求;怎样才能易于维护编程编程q单纯的代码编写q是软件工程发展的前身q是软件工程中占据很少时间和空间的一部分第2页,本讲稿共43页学习目标q课程性质q课程目标q考核方式q几点建议第3页,本讲稿共43页1课程性质“软件工程”是高职高专院校计算机应用与软件技术专业教学计划中一门专业核心课程,它是研究软件开发和软件管理的一门工程科学。它的主要任务是掌握支持软件开发和管理的理论、方法、技术、标准以及计算
2、机辅助软件工程的工具(Visio或Rose)环境等知识;使学生具有软件开发能力(包括熟练进行程序设计语言的结构化编码与可视化设计能力;UML的阅读和建模能力;培养用软件工程化及项目化的思想处理解决问题的能力等)。第4页,本讲稿共43页q概括说:软件开发能力最关键的步骤有三步:概括说:软件开发能力最关键的步骤有三步:第5页,本讲稿共43页2课程目标1学会接受一种软件工程思想。掌握软件工程的基本原理、概念与方法-主要包括软件系统的可行性研究、需求分析、概要设计、详细设计、编码、测试、维护、面向对象、项目管理等方面的基本知识与方法。2掌握软件工程中的一些基本技术方法,如数据流图、数据字典、结构分析方
3、法(如Jackson方法等),面向对象分析方法、集成测试方法、项目管理的基本方法等。3结合模拟案例,学会从实际中掌握从面向过程到面向对象思想理论的基本方法和技巧。掌握软件开发文档的组织编写等。4.掌握一种工具。学期末能用Visio或Rose软件完成大作业的设计(画各种软件工程图)(指定或自找题目)5.把目前或以后要学的程序设计知识(C、Java、C#、VC+、等)提高到一定理论高度认识:编程能否用?学会思想比掌握一种工具更为重要。学会思想比掌握一种工具更为重要。温馨温馨提示:提示:第6页,本讲稿共43页3考核方式q平时成绩(30%)q到课情况q上机作业答辩情况q实验报告q项目成绩q项目文档q项
4、目答辩(期中期末各一次)第7页,本讲稿共43页4学习资料q教材q软件工程技术与实用开发工具第8页,本讲稿共43页4学习资料q推荐教材q张海藩:软件工程导论(第5版)q林锐:软件工程思想q人月神话第9页,本讲稿共43页1-5一点建议利用互联网获取信息使用信息搜索引擎学术资料博客论坛第10页,本讲稿共43页1-5一点建议q参加国家软件考试第11页,本讲稿共43页1-5一点建议q认真;开放性认真;开放性大学之道,在明明德,在亲民,在止于至善。知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。物有本末,事有始终。知所先后,则近道矣。大学玉不琢,不成器。人不学,不知道。礼记学记第12页,本讲
5、稿共43页第一章第一章软件工程概述现代软件工程入门第13页,本讲稿共43页目标q了解软件工程的起因q掌握软件开发模型q了解面向对象软件编程第14页,本讲稿共43页计算机软件计算机软件软件计算机系统中程序、数据及其相关文档的完整集合q运行时,能够提供所要求功能和性能的指令或计算机程序集合。q程序能够满意地处理信息的数据结构。q描述程序功能需求以及程序如何操作和使用所要求的文档。第15页,本讲稿共43页软件产品的特性软件产品的特性q逻辑产品。q不会用坏,不存在磨损、消耗问题。q软件产品的生产主是研制,软件产品的成本主要体现在软件的开发和研制上,软件开发完成后,复制就产生了大量软件产品。q软件产品的
6、生产主要是脑力劳动,还未完全摆脱手工开发方式,而且必须是定做的。q软件费用不断增加,成本相当昂贵。第16页,本讲稿共43页计算机软件分类按功能分按功能分系统软件:能够控制计算机系统各部件(软硬件)的协调、高效地工作和进程处理、资源共享管理等 应用软件:应用软件是为特定的应用目的而开发的服务性软件,它的服务领域涉及广泛,例如企业信息系统,计算机辅助设计与制造(CAD,CAM)系统等支撑软件:是工具软件,它帮助软件开发人员开发自己的软件产品,例如各种软件开发工具,软件测试工具第17页,本讲稿共43页计算机软件分类按工作方式分按工作方式分实时处理软件:实时系统与其他普通的系统之间的最大的不同之处就是
7、要满足处理与时间的关系分时软件:计算机把它的运行时间分为多个时间段,并且将这些时间段平均分配给用户们指定的任务。轮流地为每一个任务运行一定的时间,直至完成所有任务交互式软件:可通过各种界面实现人机通信,使人们可以介入到程序内部,这种方式为用户带来很大方便批处理软件:能将一批数据按要求的顺序逐个处理,直至全部作业处理完毕第18页,本讲稿共43页计算机软件发展计算机软件发展第一代(20世纪60年代中期以前):程序设计阶段第二代(60年代中期到70年代中期):程序系统阶段第三代(70年代中期到80年代中期):软件工程阶段 第四代(80年代中期至今):软件产业在世界经济中已经占有举足轻重的地位 第19
8、页,本讲稿共43页计算机软件发展计算机软件发展阶段A.程序设计时代(1946-1956)B.程序系统时代(1956-1968)C.软件工程时代(1968-今)生产方式个体手工劳动小集团合作生产工程化的生产工具机器语言、汇编高级语言数据库、开发工具、开发环境、网络、分布式、面向对象技术开发方法追求编和技巧,追求程序运行效率个人技巧,开始提出结构化方法硬件特征价格贵、存储容量小、运行可靠性差速度、容量、工作可靠性有明显提高,价格降低,销售有爆炸性增长向超高速、大容量、微型化以及网络化方软件特征只有程序、程序设计概念,不重视程序设计方法程序员数量猛增,已意识到软件开发的重要性,开发技术没有新的突破,
9、大量软件开发的需求已提出,开发人员的素质和工程兵的开发技术不适应规模大、结构复杂的软件开发,产生了尖锐矛盾,导致软件危机的产生开发技术有很大进步,但未能获得突破性进展,软件价格不断上升,没有完全摆脱软件危机第20页,本讲稿共43页软件危机q美国美国IBM公司在公司在1963年至年至1966年开发的年开发的IBM360机的机的操作系统。这一项目花了操作系统。这一项目花了5000人一年的工作量,最多人一年的工作量,最多时有时有1000人投入开发工作,写出了近人投入开发工作,写出了近100万行源程序。万行源程序。.据统计,这个操作系统每次发行的新版本都是从前据统计,这个操作系统每次发行的新版本都是从
10、前一版本中找出一版本中找出1000个程序错误而修正的结果。个程序错误而修正的结果。.第21页,本讲稿共43页软件危机q 这个项目的负责人F.D.Brooks事后总结了他在组织开发过程中的沉痛教训时说:“.正像一只逃亡的野兽落到泥潭中做垂死的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。.程序设计工作正像这样一个泥潭,.一批批程序员被迫在泥潭中拼命挣扎,.谁也没有料到问题竟会陷入这样的困境.”。IBM360操作系统的历史教训成为软件开发项目的典型事例为人们所记取。Software Crisis !第22页,本讲稿共43页软件危机q经费预算经常突破,完成时间一再拖延。q开发的软件不能满足用户要
11、求。q开发的软件可维护性差。q开发的软件可靠性差。第23页,本讲稿共43页软件危机产生原因q软件的规模越来越大,结构越来越复杂。q软件开发管理困难而复杂。q软件开发费用不断增加。q软件开发技术落后。q生产方式落后。q开发工具落后,生产率提高缓慢。概括起来两个问题:如何开发软件 维护已有软件 第24页,本讲稿共43页解决软件危机的办法BettermanagementDifferentteamorganizationsBetterlanguages&toolsUniformcodingconventions必必须须意意识识到到:“软软件件”编编程程,它它有有自自己己的的生生命命周周期期(life
12、cycle)。大大型型软软件件系系统统的的开开发发与与其其它它工工程程项项目目如如建建造造桥桥梁梁、制制造造飞飞机机、轮轮船等的开发是同理的船等的开发是同理的。第25页,本讲稿共43页软件工程定义研究软件生产的一门学科,用科学知识和技术原理来定义、开发、维护软件的一门学科。软件工程三要素方法完成软件开发的各项任务的技术方法 工具为方法提供了自动或半自动的软件支撑环境过程将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的 第26页,本讲稿共43页软件工程的本质q关注大型程序的构造q中心课题是控制复杂性q软件经常变化q开发软件的效率非常重要q和谐的合作是开发软件的关键q软件必
13、须有效的支持它的用户q具有一种文化背景的人替具有另一种文化背景的人创造产品第27页,本讲稿共43页软件工程目标(成功的建造一个大型软件系统成功的建造一个大型软件系统)a.付出较低的开发成本;b.面到要求的软件功能;c.取得较好的软件性能;d.开发的软件易于移植;e.需要较低的维护费用;f.能按时完成开发任务,及时交付使用;g.开发的软件可靠性高;第28页,本讲稿共43页软件工程的基本原理(Principles)q用分阶段的生命周期计划严格管理项目概要计划 里程碑计划 项目控制计划 产品控制计划 验证计划 运行维护计划q坚持进行阶段评审q实行严格的产品控制基准配置管理(Baseline conf
14、iguration management)q采用现代程序设计技术q结果应能清楚地审查 set standardsq开发小组的成员应该少而精 1+12q承认不断改进软件工程实践的必要性第29页,本讲稿共43页软件工程方法学q传统方法学面向数据或者行为采用结构化技术开发划分为若干阶段,开发强调自顶向下的顺序q面向对象方法学模拟人类习惯的思维方式,接近人类认识世界解决问题的方法和过程以数据为主线,数据和对数据的操作紧密结合开发是一个反复迭代的演化过程4个要点:对象 融合数据和操作的软件构件类 一组具有相同数据和操作的相似对象继承 子类拥有基类的数据和操作消息通信 对象间的联系方式第30页,本讲稿共4
15、3页软件定义时期:q问题定义 回答“要解决的问题是什么”q可行性研究 回答“有可行的解决办法吗?”q需求分析 确定“系统必须做什么?”软件开发时期:q总体设计 概括回答“应该怎样实现系统”q详细设计 详细回答“应该怎样实现系统”q编码和单元测试q综合测试运行维护时期:q软件维护软件生命周期第31页,本讲稿共43页软件生周存期弄清楚用户要解决的问题是弄清楚用户要解决的问题是什么什么寻求解决问题的综合效寻求解决问题的综合效益较高的解决方案益较高的解决方案v确定系统所具备用户所期望确定系统所具备用户所期望的功能的功能设计软件功能模块,再单独设计软件功能模块,再单独实现各个部分功能,再做实实现各个部分
16、功能,再做实际测试际测试软件生存周期最后一个阶软件生存周期最后一个阶段,主要是做好维护工作,段,主要是做好维护工作,满足用户需求,延长软件满足用户需求,延长软件使用寿命使用寿命第32页,本讲稿共43页维维 护护开开发发定定义义DefinitionFeasibility StudyRequirements AnalysisProgram DesignCoding&Module TestingIntegration&System TestingDelivery&MaintenanceSystem Design瀑布模型(WaterfallModel)又可称为生命周期瀑布模型,是传统的软件开发模型按照
17、传统的生命周期方法学开发软件,从问题定义开始逐一按生命周期各阶段顺序进行,直至得到用户确认 第33页,本讲稿共43页瀑布模型特点阶段间的顺序和依赖性关系q阶段间的顺序是必须待前一阶段的工作完成之后,才能进行下一阶段的工作 q只要前一阶段正确的输出,后一阶段的工作才有可能获得正确的结果 q在于各阶段的工作可以独立进行,而且在不同的阶段实施不同的管理和技术 q若在某一阶段发现了问题,这可能需要追溯到之前的某个或某些阶段,万一问题发生在早期阶段,则需要付出昂贵的代价第34页,本讲稿共43页瀑布模型特点推迟实现q实践表明,编码开始得越早,完成开发工作所需要的时间反而越长q瀑布模型是使物理实现推迟到软件
18、开发的后期进行,这就大大降低了软件的风险q尽可能推迟程序的物理实现是瀑布模型开发软件的一条重要的原则第35页,本讲稿共43页瀑布模型特点质量保证q各阶段都必须完成规定的文档q各阶段结束前都要对本阶段的工作和文档进行评审,以便及时发现问题,改正错误q经验证明,越是早期的错误,暴露的时间就越晚,排除和改正错误所付出的代价也就越高第36页,本讲稿共43页软件开发模型瀑布模型各阶段评审错误追溯具有维护循环的瀑布模型第37页,本讲稿共43页软件开发模型原型模型特点:特点:初期建立用户需求模型,再与初期建立用户需求模型,再与用户反复沟用户反复沟通并修改原型通并修改原型,最后达到用户需要的新的系,最后达到用
19、户需要的新的系统统优点:优点:开发迅速,与用户沟通,需求分析及时到开发迅速,与用户沟通,需求分析及时到位位第38页,本讲稿共43页软件开发模型螺旋模型第39页,本讲稿共43页软件开发模型螺旋模型特点:特点:采用迭代模式,每迭代一次螺旋线就在原来基础上增加一圈。也就采用迭代模式,每迭代一次螺旋线就在原来基础上增加一圈。也就是使软件开发向前推进了一个层次,使软件系统产生一个新版本,是使软件开发向前推进了一个层次,使软件系统产生一个新版本,引入风险评估。引入风险评估。功能组成:功能组成:制定计划制定计划 风险分析风险分析 工程实现工程实现 评审评审 第40页,本讲稿共43页软件开发模型螺旋模型特点:
20、特点:采用迭代模式,每迭代一次螺旋线就在原来基础上增加一圈。也就采用迭代模式,每迭代一次螺旋线就在原来基础上增加一圈。也就是使软件开发向前推进了一个层次,使软件系统产生一个新版本,是使软件开发向前推进了一个层次,使软件系统产生一个新版本,引入风险评估。引入风险评估。功能组成:功能组成:制定计划制定计划 风险分析风险分析 工程实现工程实现 评审评审 第41页,本讲稿共43页q是风险驱动的q有利于已由软件的重用q有利于强调软件质量q可以减少过多测试或测试不足所带来的风险q维护和开发之间没有本质的区别q主要适用于内部开发的大规模软件项目螺旋模型的特点第42页,本讲稿共43页总结q计算机软件的发展 q软件工程的产生q软件开发的几种模式第43页,本讲稿共43页