SoftwareEngineeringCCUTSE2013吉林省精品课程:软件工程导论CCUTSE20122第1章软件工程学概述第2章可行性研究第3章需求分析第4章形式化说明技术第5章总体设计第6章详细设计第7章实现第8章维护第9章面向对象方法学引论第10章面向对象分析第11章面向对象设计第12章面向对象实现第13章软件项目管理分析设计实现吉林省精品课程:软件工程导论CCUTSE20123第8章维护第1章软件工程学概述第2章可行性研究第3章需求分析第4章形式化说明技术第5章总体设计第6章详细设计第7章实现第9章面向对象方法学引论第10章面向对象分析第11章面向对象设计第12章面向对象实现第13章软件项目管理软件工程概述面向对象方法学软件项目管理结构化方法学吉林省精品课程:软件工程导论CCUTSE20124第8章维护第1章软件工程学概述第2章可行性研究第3章需求分析第4章形式化说明技术第5章总体设计第6章详细设计第7章实现第9章面向对象方法学引论第10章面向对象分析第11章面向对象设计第12章面向对象实现第13章软件项目管理面向对象方法学软件项目管理结构化方法学吉林省精品课程:软件工程导论CCUTSE20125第8章维护第1章软件工程学概述第2章可行性研究第3章需求分析第4章形式化说明技术第5章总体设计第6章详细设计第7章实现第9章面向对象方法学引论第10章面向对象分析第11章面向对象设计第12章面向对象实现第13章软件项目管理软件工程概述面向对象方法学软件项目管理结构化方法学吉林省精品课程:软件工程导论CCUTSE20126第1章软件工程学概述第2章可行性研究第3章需求分析第4章形式化说明技术第5章总体设计第6章详细设计第7章实现第9章面向对象方法学引论第10章面向对象分析第11章面向对象设计第12章面向对象实现第13章软件项目管理软件工程概述软件项目管理结构化方法学面向对象方法学第8章维护吉林省精品课程:软件工程导论CCUTSE20127第8章维护第1章软件工程学概述第2章可行性研究第3章需求分析第4章形式化说明技术第5章总体设计第6章详细设计第7章实现第9章面向对象方法学引论第10章面向对象分析第11章面向对象设计第12章面向对象实现第13章软件项目管理软件工程概述结构化方法学结构法方法学面向对象方法学吉林省精品课程:软件工程导论CCUTSE20128第1章软件工程学概述第2章可行性研究第3章需求分析第4章形式化说明技术第5章总体设计第6章详细设计第7章实现第9章面向对象方法学引论第10章面向对象分析第11章面向对象设计第12章面向对象实现第13章软件项目管理软件工程概述软件项目管理后续课程需求工程第8章维护吉林省精品课程:软件工程导论CCUTSE20129第1章软件工程学概述第2章可行性研究第3章需求分析第4章形式化说明技术第5章总体设计第6章详细设计第7章实现第9章面向对象方法学引论第10章面向对象分析第11章面向对象设计第12章面向对象实现第13章软件项目管理软件工程概述软件项目管理第8章维护后续课程软件建模与分析吉林省精品课程:软件工程导论CCUTSE201210第1章软件工程学概述第2章可行性研究第3章需求分析第4章形式化说明技术第5章总体设计第6章详细设计第7章实现第9章面向对象方法学引论第10章面向对象分析第11章面向对象设计第12章面向对象实现第13章软件项目管理软件工程概述第8章维护后续课程:软件项目管理吉林省精品课程:软件工程导论CCUTSE201211大象无形:软件的特点适者生存:软件的发展与进化道法自然:软件工程的基本原理巧夺天工:软件工程异曲同工:过程模型主要内容吉林省精品课程:软件工程导论CCUTSE201212初识软件工程:由术语到学科SoftwareEngineering是一个术语是一门技术是一门课程是一个专业是一个学科是搞软件的人必须知道、了解、熟悉、掌握、运用、研究的东东。吉林省精品课程:软件工程导论CCUTSE201213初识软件工程:实践者之路实践者之路知道→了解→熟悉→掌握→运用→研究SE研究运用掌握熟悉了解知道门外汉吉林省精品课程:软件工程导论CCUTSE201214初识软件工程:层次化技术工具方法过程质量焦点Softwareengineeringlayers软件工程:一种层次化的技术软件工程三要素:方法、工具、过程吉林省精品课程:软件工程导论CCUTSE201215初识软件工程:软件危机是软件工程诞生的导火索软件危机术语:软件工程方法:软件工程课程:软件工程专业:软件工程学科:软件工程计算机系统的发展吉林省精品课程:软件工程导论CCUTSE2012161.1软件危机计算机系统的发展历程:四个阶段吉林省精品课程:软件工程导论CCUTSE2012171.1软件危机计算机系统的发展历程:四个阶段通用硬件相当普遍主要应用于数值计算很小的专门程序用户就是程序员设计在大脑中进行文档只有程序清单吉林省精品课程:软件工程导论CCUTSE2012181.1软件危机计算机系统的发展历程:四个阶段通用硬件相当普遍主要应用于数值计算很小的专门程序用户就是程序员设计在大脑中进行文档只有程序清单广泛使用软件产品应用扩展到非数值计算领域程序较大,数量急剧膨胀软件作坊出现适应性维护相当困难软件危机爆发吉林省精品课程:软件工程导论CCUTSE2012191.1软件危机软件工程学科的诞生:1968年NATO会议北约:华约:第三世界:查找网络吉林省精品课程:软件工程导论CCUTSE2012201.1软件危机1.1.1软件危机的介绍:效率与质量的尖锐矛盾1.软件危机的定义软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。即:效率和质量的问题。吉林省精品课程:软件工程导论CCUTSE2012211.1软件危机1.1.1软件危机的介绍:效率与质量的尖锐矛盾2.软件危机的典型表现:7不(1)不可预见:开发成本和进度估计不准。(软件无形)(2)不能交付:用户对“已完成的”软件系统不满意。(包办婚姻)(3)不满需求:软件质量往往靠不住。(不满足需求)(4)不可维护:软件常常是不可维护的。(文档不匹配)(5)不好文档:软件通常没有适当的文档资料。(轻视分析与设计)(6)不好赚钱:软件成本逐年上升。(劳动密集型)(7)不能匹配:软件开发生产率滞后于硬件和计算机应用普及的速度(硬件领先)吉林省精品课程:软件工程导论CCUTSE2012221.1软件危机1.1.1软件危机的介绍:效率与质量的尖锐矛盾3.软件危机:《人与神话》中的场景吉林省精品课程:软件工程导论CCUTSE2012231.1软件危机1.1.1软件危机的介绍:效率与质量的尖锐矛盾4.软件危机:一组形象的漫画8客户所付的钱9上线后的技术支持7最后交付给用户的软件0客户真正的需求1客户解释他们想要的4程序员写出的代码2项目负责人对客户需求的认识3系统分析员分析的6项目文档一片空白5顾问所描绘的情景吉林省精品课程:软件工程导论CCUTSE2012241.1软件危机1.1.2产生软件危机的原因:软件特点+错误认识+方法落后软件特点:与硬件截然不同的特点错误认识:软件就是程序、不用维护方法落后:非工程化方法、结构化方法吉林省精品课程:软件工程导论CCUTSE2012251.1软件危机1.1.2产生软件危机的原因:软件特点+错误认识+方法落后软件特点:与硬件截然不同的特点软件是逻辑部件,缺乏可见性软件没有磨损,不会被用坏软件规模庞大,复杂度指数上升吉林省精品课程:软件工程导论CCUTSE2012261.1软件危机1.1.2产生软件危机的原因:软件特点+错误认识+方法落后软件特点:与硬件截然不同的特点我们认识的软件:可以天方夜谭的话题软件无刻不在、无处不在软件普遍存在于各种硬件之中软件深刻影响着人们日常生活软件改变了社会以及生产方式软件有许多类型软件形成了产业软件有许多负面效应......吉林省精品课程:软件工程导论CCUTSE2012271.1软件危机1.1.2产生软件危机的原因:软件特点+错误认识+方法落后软件特点:与硬件截然不同的特点我们认识的软件:可以天方夜谭的话题软件无刻不在、无处不在What:什么东西没有软件?Where:哪没有软件?When:什么时候不使用软件?Why:为什么不使用软件?Who:谁不使用软件?吉林省精品课程:软件工程导论CCUTSE2012281.1软件危机1.1.2产生软件危机的原因:软件特点+错误认识+方法落后软件特点:与硬件截然不同的特点我们认识的软件:可以天方夜谭的话题软件无刻不在、无处不在吉林省精品课程:软件工程导论CCUTSE2012291.1软件危机1.1.2产生软件危机的原因:软件特点+错误认识+方法落后软件特点:与硬件截然不同的特点我们认识的软件:可以天方夜谭的话题软件深刻影响着人们日常生活吉林省精品课程:软件工程导论CCUTSE2012301.1软件危机1.1.2产生软件危机的原因:软件特点+错误认识+方法落后软件特点:与硬件截然不同的特点我们认识的软件:可以天方夜谭的话题软件改变了社会以及生产方式吉林省精品课程:软件工程导论CCUTSE2012311.1软件危机1.1.2产生软件危机的原因:软件特点+错误认识+方法落后软件特点:与硬件截然不同的特点我们认识的软件:可以天方夜谭的话题软件改变了社会以及生产方式吉林省精品课程:软件工程导论CCUTSE2012321.1软件危机1.1.2产生软件危机的原因:软件特点+错误认识+方法落后软件特点:与硬件截然不同的特点我们认识的软件:可以天方夜谭的话题软件有许多类型吉林省精品课程:软件工程导论CCUTSE2012331.1软件危机1.1.2产生软件危机的原因:软件特点+错误认识+方法落后软件特点:与硬件截然不同的特点我们认识的软件:可以天方夜谭的话题软件形成了产业吉林省精品课程:软件工程导论CCUTSE2012341.1软件危机1.1.2产生软件危机的原因:软件特点+错误认识+方法落后软件特点:与硬件截然不同的特点我们认识的软件:可以天方夜谭的话题软件有许多负面效应吉林省精品课程:软件工程导论CCUTSE2012351.1软件危机1.1.2产生软件危机的原因:软件特点+错误认识+方法落后软件特点:与硬件截然不同的特点我们认识的软件:可以天方夜谭的话题软件有许多负面效应吉林省精品课程:软件工程导论CCUTSE2012361.1软件危机1.1.2产生软件危机的原因:软件特点+错误认识+方法落后软件特点:与硬件截然不同的特点——BradJ.Cox吉林省精品课程:软件工程导论CCUTSE2012371.1软件危机1.1.2产生软件危机的原因:软件特点+错误认识+方法落后错误认识:忽视需求重视程序轻视维护葵花宝典英雄主义早期中期后期低中高付出的代价时间DefinitionDevelopmentAfterrelease1x1.5-6x60-100x吉林省精品课程:软件工程导论CCUTSE2012381.1软件危机1.1.2产生软件危机的原因:软件特点+错误认识+方法落后方法落后:无方法结构化方法面向对象方法面向对象方法模型驱动(MDA)吉林省精品课程:软件工程导论CCUTSE2012391.1软件危机1.1.3消除软件危机的途径:工程化=技术措施+管理措施提高认识:软件=程序+文档+数据工程思维:神秘技巧to工程项目软件工具:不断开发、使用更好的工具不断实践:发展中的软件工程吉林省精品课程:软件工程导论CCUTSE2012401.2软件工程1.2.1软件工程的介绍:定义+SE的本质特性软件工程定义1软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。