现代软件工程主讲:王伦友Email:wanglunyou@126.comCellPhone:13065012951中国人民大学出版社张润彤2文凭文凭不过是一张火车票,重点的软卧,本科的硬卧,专科的硬座,民办的站票,成教的在厕所挤着。火车到站了,都得下车找工作,到那时才发现老板并不太关心你是怎么来的,只关心你会做什么。等待文凭下发的时光里,不要就这么混过去了,掌握一技之长,才是最重要的。3史上最牛的军犬41.再烦:也别忘记微笑2.再急:也要注意语气3.再苦:也别忘坚持4.再累:也要爱自己献给正在努力以及打算努力的你们……心态,决定你人生518个做人硬道理一、只有小聪明,绝对无法超人一等大小聪明,皆可谓聪明,真假聪明,也皆可谓聪明,但用之不同,结果会天壤之别。有些人以为聪明绝顶,没有任何对手,其实最容易失败者,正是此类人。真聪明者往往让人不知其聪明,而以最大限度地做成事为大要。618个做人硬道理一、只有小聪明,绝对无法超人一等世上问题之多,犹如麻点。如果只盯住一点,不及其余,就会钻牛角尖,这是自我封闭的典型代表。做人必须多点看问题,一处不通看他处,让自己的人生方略“活”起来。二、多点看问题,就不会有死路7坚持锻炼8成为一个男人应拥有的品质一、拥有自信和风度男人到了二十几岁后,就要开始学着用心去经营自己了,它体现在自己的思想与涵养上。自信是一个男人最重要的品质,自信的男人就你像一只在暴风雨中战斗的海鸥。海鸥所要说的只有一句话“让暴风雨来的再猛烈些吧”,只因为它无所畏惧。一个自信的男人,总是能够感染别人,无论这些人是朋友还是敌人。要使别人对你有信心,就必须要先对自己充满信心。自信的男人可以战胜一切困难。一个有风度的男人就像一片大海,不拒点滴,又包容江河。有风度使男人得到更多的青睐,不争眼前才能够放眼世界,给予别人才能受益无穷。正所谓“宰相肚里能撑船”,一个心如大海的男人,肚中不知能撑多少船呀!风度偏偏让男人看上去潇洒万千。9课程概述一、软件工程学科介绍二、学习目标三、部分参考资料四、课程特点和学习的注意事项五、教材简介六、课程考核方式10一、软件工程学科介绍软件程学科发展历史三个阶段:概念提出、学科雏形、学科确立第一阶段:概念提出1968年NATO会议(北大西洋公约组织的计算机科学家的国际会议)提出“软件工程”概念。当时对“软件工程”代表性定义:为了经济地获得在真实机器上可靠工作的软件而制定和使用的合理工程原则和方法。1972年IEEE学会的计算机分会IEEE一CS第一次出版了“软件工程学报”11第二阶段:学科雏形上世纪70年代末,美国将软件工程教程列入研究生教育计划。1980年代末和1990年代初,软件工程教育得到卡内基一梅隆大学软件工程研究所(CMU/SEI)的支持。1991年,“软件工程”被ACM(美国计算机协会)和IEEE/CS列为计算学科的九个知识领域之一。1993年,IEEE一CS和ACM为了把软件工程建设成为一个专业,建立了IEEE一CS/ACM联合指导委员会。12第三阶段:学科确立2004年8月,IEEE一CS和ACM给出:软件工程知识体(SWEBOK,SoftwareEngineeringBodyofKnowledge)软件工程教育知识体(SEEK)最终版,标志着软件工程学科在世界范围正式确立。软件工程、计算机科学、计算机工程、信息系统、信息技术并列成为计算学科下的独立学科。软件工程知识体(SWEBOK):全面描述了软件工程实践所需的知识。13SWEBOK(软件工程知识体》10个领域软件需求软件设计软件构造软件测试软件维护软件配置管理软件工程管理软件工程过程软件工程工具和方法软件质量参考资料:[1]白征.SWEBOK:软件工程知识体,计算机科学,2001年07期[2]万江平.软件工程知识体系指南综述,计算机应用研究,2006年10期14SWEBOK详细结构(1)1516软件工程与其他学科的关系1、软件工程是计算学科9个领域之一.算法和数据结构计算机系统结构人工智能和机器人学数据库和信息检索人一机交互操作系统程序设计语言软件方法学和软件工程数字和符号计算17计算学科中12个重复出现的基本概念绑定.概念和形式模型效率抽象层次按时间排序安全性大问题的复杂性一致性和完备性演化按空间排序重用折衷与决策软件工程是计算学科的分支,这12个概念同样将贯穿软件工程学科,是学科的精髓。182、8个相关学科知识域计算机工程计算机科学数学管理学项目管理质量管理系统工程学软件人类工程学其中:计算机科学、数学是基础工程学科、管理学科也非常重要19软件程是一门什么样的学科?是指导计算机软件开发与维护的一门工程学科。工程:将科学及数学原理运用于实际用途的应用手段,如:设计、制造、机器操纵、构架等。典型的传统工程:建筑工程、机械工程、电力工程等。概括的说,软件工程即用工程、科学和数学的原则和方法研制、维护计算机软件的有关技术及方法,其优点是以较小的代价开发高质量的软件并有效地维护它。20二、学习目标(1)掌握软件工程的基础知识和理论,对软件工程学有一个全貌的了解;熟悉软件项目开发和维护的一般过程;熟练掌握软件需求分析、设计、编码和测试等阶段的主要思想和技术方法;21二、学习目标(2)通过学习,特别是通过课程设计,真正运用和深刻体会软件工程的思想方法,转变对软件开发的认识:从个人的单纯编程活动转移到进行系统分析与设计方面上来转变思维定式:程序员―系统工程师(系统分析员)22三、部分参考资料《软件工程理论与实践》许家冶等编著,高等教育出版社,2005年《软件工程》(第二版),齐治昌等,高等教育出版社,2004年《面向对象的系统分析》,杨芙清等编著,清华大学出版社,2001年《UML用户指南》GBooch等著,邵维忠等译,机械工业出版社2002年23四、课程特点和学习的注肯事项1、知易行难要将理论知识与实践运用结合,进行对照,以加深理解和掌握。2、内容纷杂软件工程涉及计算机科学、数学、工程科学和管理科学等多个领域。其中:计算机科学和数学用于构造模型与算法;工程科学用于制定规范、设计范型、评估成本及确定权衡管理科学用于计划、资源、质量和成本的管理。24五、教材总目录第1章现代软件工程概述第2章面向对象软件开发方法第3章面向对象分析与设计技术第4章UML建模技术第5章软件复用基础第6章基于组件与WebService的软件开发技术第7章软件设计模式第8章软件体系结构第9章敏捷软件过程第10章软件测试技术与工具第11章软件项目管理第12章面向对象实现软件成熟度模型与软件过程25课程内容学时安排章节课程内容学时第1章现代软件工程概述4第2章面向对象软件开发方法2第3章面向对象分析与设计技术2第4章UML建模技术2第5章软件复用基础2第6章基于组件与WebService的软件开发技术2章节课程内容学时第7章软件设计模式4第8章软件体系结构2第9章敏捷软件过程4第10章软件测试技术与工具2第11章软件项目管理2第12章面向对象实现软件成熟度模型与软件过程2总复习226六、课程考核方式分数组成:平时成绩(10%):以理论课课堂表现为主。作业(20%):书面作业期末考试(70%):271.黄月亮和蓝月亮乍一看上去,这是两个颜色不同的月亮,一个呈黄色,一个呈蓝色,但真的是这样吗?实际上,在这幅由日本立命馆大学心理学家北冈秋吉设计的视觉错觉图中,两个月亮的颜色完全相同,唯一不同的便是周围的颜色。我们之所以产生月亮颜色不同的错觉皆因背景所致。282930第1章现代软件工程概述1.1软件1.2软件危机1.3软件工程1.4软件的生命周期1.5软件过程的目标和原则1.6本章小结习题131学习重点1、软件危机、软件工程产生的原因2、软件工程过程和软件生命周期3、软件生命周期模型掌握几个基本概念软件危机软件工程软件过程软件生命周期软件生命周期模型32§1.1软件§1.1.1软件的概念计算机软件(ComputerSoftware)是指计算机系统中的程序及其文档。程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料。程序必须装入机器内部才能工作,文档一般是给人看的,不一定装入机器。软件是用户与硬件之间的接口界面。用户主要是通过软件与计算机进行交流。软件是计算机系统设计的重要依据。为了方便用户,为了使计算机系统具有较高的总体效用,在设计计算机系统时,必须通盘考虑软件与硬件的结合,以及用户的要求和软件的要求。33§1.1软件§1.1.2软件的特点是一种逻辑实体,具有抽象性;生产方式不同;依赖于计算机系统;没有像硬件那样的机械磨损和老化;手工开发为主;复杂性;成本高;涉及社会因素。34§1.1软件§1.1.3软件的分类计算机软件总体分为系统软件和应用软件两大类:系统软件是各类操作系统,如windows、Linux、UNIX等,还包括操作系统的补丁程序及硬件驱动程序,都是系统软件类。应用软件可以细分的种类就更多了,如工具软件、游戏软件、管理软件等都属于应用软件类。35§1.1软件§1.1.3软件的分类系统软件系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。一般来讲,系统软件包括操作系统和一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具)。36§1.1软件§1.1.3软件的分类应用软件应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器。也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。较常见的有:文字处理软件如WPS、Word等信息管理软件辅助设计软件如AutoCAD实时控制软件教育与娱乐软件37软件危机与软件工程学软件工程学的产生要从“软件危机”说起1968年,第一届NAT0(北大西洋公约组织的计算机科学家的国际会议)会议,“软件工程”的慨念作为一种有效解决“软件危机”的途径被正式提出。什么是软件危机?软件危机有什么典型表现?为什么会产生软件危机?怎么解决软件危机?38§1.2软件危机§1.2.1软件危机的出现什么是软件危机?软件危机指在计算机软件的开发和维护过程中,所遇到的一系列严重问题。软件危机主要包括的问题(两方面):①如何开发软件②如何维护软件39软件危机有什么典型表现?(1)开发费用和进度难以估算和控制,大大超过预期的资金和规定日期;软件需求分析不够充分,用户不满意“已经完成”的软件系统。软件质量难于保证;软件维护困难;难以改正程序中的错误;难以根据用户的需要在原有程序中增加一些新的功能。40软件危机有什么典型表现?通常没有保留适当的文档资料。文档的作用:软件开发管理人员:用于管理和评价软件开发工程的进展状况软件开发人员:用于开发人员对各个阶段的工作都进行周密思考、全盘权衡、从而减少返工。并且可在开发早期发现错误和不一致性,便于及时加以纠正软件维护人员:软件维护的依据开发成本逐年上升,软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。4142几个软件危机的著名案例①1966年,IBM360机的操作系统。花费5000人一年的工作量,写了近1万行代码。错误百出,每次的新版本就是从前一版本中找1000个程序错误而修正的结果。②1963年,美国用于控制火星探测器的计算机软件中的一个“,”号被误写为“.”,而致使飞往火星的探测器发生爆炸,造成高达数亿美元的损失。③美国丹佛新国际机场自动化行李系统软件。投资1.93亿美元,计划1993年万圣节启用。但开发人员一直为系统错误困扰,屡次推后启用时间,直到1994年6月,机场计划者承认无法预测何时能启用。④1996年,欧洲阿里亚纳5型运载火箭坠毁,造成5亿