《现代软件工程(第一讲)现代软件工程概述.ppt》由会员分享,可在线阅读,更多相关《现代软件工程(第一讲)现代软件工程概述.ppt(39页珍藏版)》请在第壹文秘上搜索。
1、现代软件工程课程概述2023年3月29日2提纲一、软件工程的体系二、教学侧重点三、为什么偏重于软件工程管理四、软件工程技术的发展五、教学内容组织六、教学方法七、参考资料2023年3月29日3一、软件工程的体系l软件工程:以工程化的原理、原则和方法进行软件开发,以期解决当时出现的“软件危机”。l软件危机:大型软件开发成本高;开发过程不易控制;软件开发工作量估计困难;软件质量低;软件项目失败率高,错误率高;无法判断大型系统能否正常工作;软件维护任务重等。2023年3月29日4一、软件工程的体系l软件工程技术: 1、软件开发模型:软件开发全过程中系统的开发、运行和维护所实施的全部过程(PDCA)、活
2、动、任务的结构框架。(what) 2、软件开发方法:采用类似于工程的原理和原则进行软件开发。(how) 3、软件开发工具:实现方法的自动或半自动的软件支撑环境。(CASE)2023年3月29日5一、软件工程的体系l软件过程管理 1、软件产品和过程的质量度量 2、项目计划与管理(包括风险管理) 3、软件过程改进与评估(SPICE) 工程技术解决的是开发效率问题;而过程管理解决的是开发质量问题。2023年3月29日6一、软件工程的体系l为什么需要软件工程?当你遇到一个新领域的问题而不知道该如何下手时;当你在解决复杂问题的过程中感觉到杂乱无章、力不从心时;当你面对一个充满个性的开发团队而不知如何协调
3、时;当你感觉到开发效率低下、开发质量始终是你的心头之患时.2023年3月29日7二、教学侧重点l本科生教学侧重点:1、软件工程的概念2、软件生命周期3、软件开发模型4、软件开发方法5、软件开发工具6、基本的项目管理知识2023年3月29日8二、教学侧重点l研究生教学侧重点:1、对软件开发技术的寻根索源;2、软件质量3、软件度量4、软件过程及项目管理5、SPICE/CMM6、新型软件工程技术(基于软件体系结构的开发方法、面向对象建模、分布式部件对象技术、软件复用技术等)2023年3月29日9三、为什么偏重于软件工程管理3.1 软件企业的特殊性3.2 我国软件企业的现状3.3 印度软件企业的现状3
4、.4 我国与印度软件企业的差距分析3.5 重视软件工程管理的必要性2023年3月29日103.1 软件企业的特殊性l软件的复杂性和各模块间的相互依赖性是其他的产品所无法比拟的。所有的模块以及模块间的连接环节必须是100%的正确,不能像硬件那样允许出现一定范围的偏差。想象一下:如果没有好的管理,软件的架构会显得混乱,软件的开发过程会是杂乱无章的。2023年3月29日113.1 软件企业的特殊性l软件作为产品,是用人的大脑生产出来的,不是机器制造出来的,因而,软件过程对人的依赖性极大。除去采用好的方法和工具等技术外,软件的质量极大地依赖于人。(人的创造性极具个性化)工程制造业影响质量的5要素:人、
5、机器、原料、方法、环境。人占20%。软件工程管理就是要为人提供好的方法和工具以减轻人的压力,提高效率;通过过程管理技术尽量减少人的低级错误,减少过程对于人的依赖程度。2023年3月29日123.2 我国软件企业的现状l从上世纪70年代至今,始终处于落后于国际的位置。lCMM5-摩托罗拉中国软件中心;CMM3有联想软件、东软、托普软件等,大部分企业在向CMM2努力。lCMM3是软件企业迈向国际化的门槛。2023年3月29日133.2 我国软件企业的现状lWhy?规模化和系统化不够。规模化:软件企业无法形成规模,大多数企业都是从小型软件开发干起来的,当软件企业达到一定规模时,管理工作跟不上,无法形
6、成规模效应。系统化:软件是一种商品,只有系统地控制产品的质量、开发时间、开发成本才能使商品走入市场、走向国际。2023年3月29日143.3 印度软件企业的现状l根据印度国家软件和服务企业协会的数据:最近5年印度软件产业的累计增长率达到了令人惊奇的52%,软件出口累计增长率超过55%。l印度年软件产业产值2010年达到600亿美元。l印度软件产业从业人员40万人。l2000多家软件企业中,400家通过ISO9000,300多家软件公司通过了CMM认证。2023年3月29日153.3 印度软件企业的现状l一个现象:一个印度人到美国登记住宿,接待员问:“你是从印度来吗?”“是的”,“那你一定是个软
7、件专家”。l以前呢?舞蛇者l公众对印度软件的肯定来自于质量。其成功当然还来自于:良好的英语、低廉的人力成本。2023年3月29日163.3 印度软件企业的现状l国内从业人员到印度的感受:流程重于项目QC独立于研发部门,专门检查研发部门的开发流程是不是按照流程走,如果QC觉得流程不对,会报告上层人员,项目可能会因此而停止。所谓的项目经理一般是从编码人员升上来的,并不是不懂技术,一般至少有4年的工作经验。2023年3月29日173.3 印度软件企业的现状项目经理就是制定开发计划,负责协调,填写各种表格。所有的东西(包括草稿)都有文档。详细设计文档要求达到只有这个文档就可以编码的程度,一般写文档的时
8、间为60%,编码时间极少。有各种详细的review,组内的、组间的、客户的等。计划很详细,的确能达到小时级别,但是实际情况还是误差比较大,所以也有加班。2023年3月29日183.4 我国与印度软件企业的差距分析lExample:软件中需要一个列表,用来表示处理的事务。该列表在业务繁忙的时候将变得很大。l我国从业人员:用双向链表(先编码后分析)。l印度从业人员:开一个大的数组,不用链表。(先分析后编码)lWhy?小型机的512MB内存足够,数组访问方便、效率高。2023年3月29日193.4 我国与印度软件企业的差距分析l软件教育水平比较:印度软件人员面对同样的问题有惊人相似的解决方法和程序结
9、构。而我国软件人员更重视的是解决问题的个人技巧,重视创造性地发挥(每个人都觉得别人做的软件不好,自己需要延续别人的工作时总是将别人贬损一通,然后重新开发,殊不知:程序员只要具备拧好螺丝钉的能力就可以了。)2023年3月29日203.4 我国与印度软件企业的差距分析l许多公司的项目经理不需要懂技术,有些甚至就是MBA或者是领域专家,而不是编码专家,却能够领导一大群素质良好的程序员把工作做好,没有内部不团结的情况。国内的项目经理如果不懂技术则后果是可想而知的(内部不团结,技术人员与管理人员做对=项目经理必须在技术上能够压服下属)。2023年3月29日213.4 我国与印度软件企业的差距分析l印度的
10、编程人员的流动率高达30%!可以想见他们的文档工作做得多么地好,他们的产品不依赖于任何一个人,谁都可以立即辞职,产品的开发还是会正常进行。l国内:老板害怕总工,技术骨干拥兵自重,抗拒管理。任何制定好的计划都有可能被技术人员推翻或者跟你消极怠工。2023年3月29日223.4 我国与印度软件企业的差距分析l印度的开发计划能够做到小时级别。如果项目经理没有上班,手下的员工可能不知道干什么。一般的计划都定到天。(来自于良好的度量)l国内能够将计划定到月就不错了,而且给出的月度计划要么不可能实现,要么就可能被取消,开发人员一般会出现前松后紧的局面。2023年3月29日233.5 重视软件工程管理的必要
11、性l印度软件公司十分重视软件开发过程的管理及与其相关理论与标准的发展。认为编码是十分简单的工作,高中生就可以完成。l国内软件公司更重视个人技能的发挥,忽视了过程的管理。l国内的个人创造性应该在有限的范围内得到发挥。l在满足国内软件市场需求的同时,拓展国际软件市场,增加软件出口量。2023年3月29日24四、软件工程技术的发展l新型软件开发模型,如:RUP(Rational Unified Process)、XP(eXtrem Programming)。l新的软件开发方法:面向对象软件开发方法。l新的软件开发工具:UML(Unified Modeling Language)、ROSE(Ratio
12、nal Object-oriented Software Engineering)2023年3月29日25四、软件工程技术的发展l以软件体系结构为中心的面向对象软件开发过程提炼特定应用领域的稳定需求和易变需求,建立可复用的领域模型。在特定领域模型的基础上提炼特定应用领域的软件体系结构。进行体系结构设计分配系统功能到相应的构建和连接件上存放设计模式、对象或其它可重用的设计构件。设计构件和连接件复用/存储2023年3月29日26四、软件工程技术的发展l分布式部件对象技术lMicrosoft COM/DCOM/COM+lOMG CORBA(Common Object Request Broker A
13、rchitecture)lSun Microsystem JavaBean2023年3月29日27四、软件工程技术的发展l软件复用技术lPattern (analysis, design, process)lFramework2023年3月29日28五、教学内容组织第一章 软件工程现状及发展l1.1 软件发展现状l1.2 软件危机l1.3 软件工程及发展历程l1.4 软件工程框架l1.5 软件发展趋势及特点2023年3月29日29五、教学内容组织第二章 软件生命周期过程l2.1 软件生命周期l2.2 基本过程l2.3 支持过程l2.4 组织过程2023年3月29日30五、教学内容组织第三章 软
14、件过程改进的CMM/PSP/TSP模型l3.1 CMM产生背景l3.2 CMM内容及管理透视l3.3 CMM组织结构l3.4 CMM应用l3.5 CMM与ISO9001l3.6 PSP过程组织结构l3.7 TSP过程及角色2023年3月29日31五、教学内容组织第四章 软件质量l4.1 软件质量概念l4.2 软件质量属性l4.3 软件质量度量l4.4 软件质量保证l4.5 质量管理和质量保证的实施2023年3月29日32五、教学内容组织第五章 软件项目管理l5.1 项目管理过程l5.2 风险管理l5.3 软件质量和效率度量l5.4 软件项目成本和进度估算l5.5 软件项目进度安排l5.6 项目
15、组织结构设计l5.7 项目过程监控2023年3月29日33五、教学内容组织第六章 面向对象建模语言和过程l6.1 面向对象建模思想l6.2 面向对象建模方法l6.3 统一建模语言UMLl6.4 统一建模过程RUPl6.5 轻量级建模过程XP2023年3月29日34五、教学内容组织第七章 软件体系结构l7.1 软件体系结构概念l7.2 软件体系结构的研究意义l7.3 软件体系结构的研究内容l7.4 基本软件体系结构风格l7.5 基于体系结构的软件开发模式2023年3月29日35五、教学内容组织第八章 分布式部件对象技术l8.1 分布式网络计算l8.2 基于部件的技术l8.3 部件模型l8.4 互
16、操作性l8.5 部件对象技术的发展2023年3月29日36五、教学内容组织第九章 软件复用之模式和框架l9.1 软件复用类型l9.2 模式复用l9.3 设计模式l9.4 过程模式和分析模式l9.5 框架复用l9.6 模式和框架的关系2023年3月29日37五、教学内容组织l目标:通过本课程的学习,学生应该掌握:l软件工程技术发展的原因、解决的问题机器局限性,能够根据具体情况灵活应用各种技术。l软件过程及其管理方法,围绕软件过程改进(SPI)熟悉CMM(过程能力成熟度模型)、PSP(个体软件过程)和TSP(群体软件过程)等方面的知识;l软件体系结构及其基本风格;l面向对象的建模技术及UML(统一建模语言);l分布式部件对象技术;l软件复用技术(分析模式、设计模式和过程模式、框架)l软件项目管理、质量控制。2023年3月29日38六、教学方法l采用课堂教学与课外自学相结合的方式进行。 l课外自学采用小组方式进行,针对某一个题目完成专题论文。最后,需要针对该论文在全班进行表达。l题目另行给出。2023年3月29日39七、参考资料l现代软件工程 (上)(中)(下) 周之英,科学出版社l软件工程