软件设计师软件工程ppt课件.ppt
《软件设计师软件工程ppt课件.ppt》由会员分享,可在线阅读,更多相关《软件设计师软件工程ppt课件.ppt(62页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件工程软件工程2023/3/282第第1章章 软件工程学概述软件工程学概述 1.1 软件危机软件危机 1.2 软件工程软件工程 1.3 软件生命周期软件生命周期1.4 软件过程软件过程1.5 小结小结2023/3/283软件及软件工程软件及软件工程为什么要讲软件和软件工程为什么要讲软件和软件工程只有对软件和软件的开发过程有充分的认识,只有对软件和软件的开发过程有充分的认识,才能更好的开发出过程受控、质量受控的软件才能更好的开发出过程受控、质量受控的软件产品。产品。对于软件和软件开发过程的认识是困难的,存对于软件和软件开发过程的认识是困难的,存在很多困惑,需要对此有深刻的认识。在很多困惑,需要
2、对此有深刻的认识。2023/3/284一些对软件的偏见或误解一些对软件的偏见或误解软件就是程序,软件开发就是编写程序。编完了软件就是程序,软件开发就是编写程序。编完了程序,就一切程序,就一切OK了。了。掌握了最新的语言和工具,就能写程序了。掌握了最新的语言和工具,就能写程序了。软件是灵活的,软件的修改很容易。软件是灵活的,软件的修改很容易。只要会编程,就能写软件,就是程序员;一个公只要会编程,就能写软件,就是程序员;一个公司,只要召些程序员,就能开发好的软件产品。司,只要召些程序员,就能开发好的软件产品。只要有几个有经验的程序员,再找些兼职的大学只要有几个有经验的程序员,再找些兼职的大学生,就
3、能组成一个软件公司。生,就能组成一个软件公司。2023/3/285软件无处不在软件无处不在软件不仅仅是在计算机运行的程序,任何预先定软件不仅仅是在计算机运行的程序,任何预先定义好的程序步骤的地方,都有软件的身影义好的程序步骤的地方,都有软件的身影软件的应用领域软件的应用领域系统软件系统软件实时软件实时软件商业软件商业软件工程和科学计算软件工程和科学计算软件嵌入式软件嵌入式软件个人计算机软件个人计算机软件基于基于Web的软件(网站)的软件(网站)人工智能软件人工智能软件2023/3/286什么是软件什么是软件软件的定义软件的定义软件由三部分组成:软件由三部分组成:程序:在运行时,能提供所希望的功
4、能和性能的指程序:在运行时,能提供所希望的功能和性能的指令集令集数据:使程序能够正确运行的数据数据:使程序能够正确运行的数据文档:描述程序研制过程、方法及使用的文档文档:描述程序研制过程、方法及使用的文档软件处理的是信息和逻辑软件处理的是信息和逻辑软件的开发,绝不仅仅是编写程序软件的开发,绝不仅仅是编写程序软件围绕着逻辑进行软件围绕着逻辑进行软件就是一个信息交换器软件就是一个信息交换器产生、管理、获取、修改、显示或传送信息产生、管理、获取、修改、显示或传送信息2023/3/287软件的特征软件的特征软件是逻辑的而不是有形的系统元件,具软件是逻辑的而不是有形的系统元件,具有与硬件完全不同的特征有
5、与硬件完全不同的特征1.软件是被开发或设计的,而不是传统意义上被软件是被开发或设计的,而不是传统意义上被制造的制造的软件成本集中于开发上,软件项目不能像制造项目软件成本集中于开发上,软件项目不能像制造项目那样管理。那样管理。2.软件不会磨损,不过它会退化软件不会磨损,不过它会退化对未发现的对未发现的BUG的修复,会引起较高的故障率。的修复,会引起较高的故障率。不能像硬件维修中直接更换磨损的零件,软件维护不能像硬件维修中直接更换磨损的零件,软件维护要复杂得多。要复杂得多。2023/3/288软件的特征软件的特征3.大多数软件开发,仍是手工作坊式的开发模式大多数软件开发,仍是手工作坊式的开发模式在
6、硬件世界和现代工业的发展中,被大量使用的标准设计的构建是在硬件世界和现代工业的发展中,被大量使用的标准设计的构建是一条非常成功的路子。一条非常成功的路子。标准化也是软件设计的一个方向,软件产业正在向基于构件的组装标准化也是软件设计的一个方向,软件产业正在向基于构件的组装进前进。进前进。4.软件是一种逻辑实体,具有抽象性。软件是一种逻辑实体,具有抽象性。人们可以使用软件,但是无法看到软件本身的形态人们可以使用软件,但是无法看到软件本身的形态。必须通过观察、。必须通过观察、分析、思考、判断,才能了解其功能、性能等特性。分析、思考、判断,才能了解其功能、性能等特性。设计中,软件的质量、可维护性、可测
7、试性更加重要。设计中,软件的质量、可维护性、可测试性更加重要。当前软件设计的趋势,是设计高度封装,定义良好的应用接口。当前软件设计的趋势,是设计高度封装,定义良好的应用接口。5.软件是复杂的,而且以后会更加复杂软件是复杂的,而且以后会更加复杂软件是人类有史以来生产的复杂度最高的工业产品。软件是人类有史以来生产的复杂度最高的工业产品。软件的复杂,不是因为软件本身复杂,而是人的思想复杂。软件的复杂,不是因为软件本身复杂,而是人的思想复杂。2023/3/289软件危机的介绍软件危机的介绍1.1 软件危机软件危机硬件和软件发展的不平衡,硬件性能的发硬件和软件发展的不平衡,硬件性能的发展极其迅速,给软件
8、提出了更高的要求展极其迅速,给软件提出了更高的要求软件开发和维护成本越来越大,令人吃惊软件开发和维护成本越来越大,令人吃惊地高地高失败的软件开发项目屡见不鲜失败的软件开发项目屡见不鲜什么是软件危机什么是软件危机软件危机是指在计算软件危机是指在计算机软件的开发和维护机软件的开发和维护过程中所遇到的一系过程中所遇到的一系列严重问题。列严重问题。2023/3/2810软件危机软件危机软件危机的表现软件危机的表现软件成本日益增长软件成本日益增长 开发进度难以控制开发进度难以控制 软件质量差软件质量差 软件维护困难软件维护困难软件开发速度跟不上计算机发展速度软件开发速度跟不上计算机发展速度软件危机的原因
9、软件危机的原因技术原因技术原因软件规模越来越大软件规模越来越大 软件复杂度越来越高软件复杂度越来越高 管理原因管理原因软件开发缺乏正确的理论指导,过分依靠个人技巧和创造性软件开发缺乏正确的理论指导,过分依靠个人技巧和创造性对用户需求没有完整准确的认识,就匆忙着手编写程序对用户需求没有完整准确的认识,就匆忙着手编写程序如何克服软件危机如何克服软件危机:软件工程:软件工程2023/3/28112023/3/2812引入同一变动付出的代价随时间变化的趋势问题在哪里?问题在哪里?软件开发链条的软件开发链条的“放大放大”作用。作用。(规范每个环节规范每个环节)只有早期发现问题,才会只有早期发现问题,才会
10、尽量减少损失。尽量减少损失。(失之毫厘,失之毫厘,谬以千里谬以千里)但客观规律:用户的牙膏但客观规律:用户的牙膏不会一下子挤完。不会一下子挤完。(静态开静态开发方法发方法“天生天生”会延迟问会延迟问题的发现题的发现)2023/3/2813消除软件危机的途径消除软件危机的途径对计算机软件正确认识。对计算机软件正确认识。(软件不仅仅是程序软件不仅仅是程序)推广使用开发软件成功的推广使用开发软件成功的技术和方法技术和方法,研究探索更好更有,研究探索更好更有效的技术和方法,消除错误概念和做法。效的技术和方法,消除错误概念和做法。开发和使用更好的开发和使用更好的软件工具软件工具。需要需要组织管理措施组织
11、管理措施。软件工程正是从软件工程正是从技术和管理技术和管理两方面研究如何更好地开发和维护两方面研究如何更好地开发和维护计算机软件的一门新兴学科。计算机软件的一门新兴学科。无章法(个人英雄主义)无章法(个人英雄主义)工程项目管理模式(团队合作开发)工程项目管理模式(团队合作开发)2023/3/28141.2 软件工程软件工程软件工程(软件工程(IEEE)1968年秋,提出软件工程年秋,提出软件工程1)将系统化、规范化、可量化将系统化、规范化、可量化的工程原则和方法,应用于的工程原则和方法,应用于软件的开发、运行和维护。软件的开发、运行和维护。2)对对1)中方法的理论研究。中方法的理论研究。软件工
12、程软件工程认为:认为:按照工程化的原则和方法组织软件开发工作,是按照工程化的原则和方法组织软件开发工作,是摆脱软件危机的一个主要出路。摆脱软件危机的一个主要出路。主要目标:主要目标:高效开发高质量软件高效开发高质量软件。软件工程规范软件工程规范工业界:参照修改其它工程项目的管理模式工业界:参照修改其它工程项目的管理模式如如 ISO,PMI,Six Sigma学术界:学术界:CMM2023/3/2815软件工程基本原理软件工程基本原理(开发与维护的指导开发与维护的指导)1.用分阶段的生命周期计划严格管理用分阶段的生命周期计划严格管理2.坚持进行阶段评审坚持进行阶段评审3.实行严格的产品控制实行严
13、格的产品控制4.采用现代程序设计技术采用现代程序设计技术5.结果应能清楚地审查结果应能清楚地审查6.开发小组的人员应该少而精开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性2023/3/2816软件的生命周期软件的生命周期 软件开发过程软件开发过程瀑布模型瀑布模型快速原型、螺旋模型快速原型、螺旋模型 喷泉模型等喷泉模型等软件开发新过程软件开发新过程敏捷软件开发敏捷软件开发(极限编极限编程程XP)快速软件开发快速软件开发 统一软件开发过程统一软件开发过程软件开发的规律软件开发的规律软件开发方法软件开发方法 结构化方法结构化方法面向对象方法面向对象方法J
14、ackson系统开发方法系统开发方法模块化方法模块化方法软件复用软件复用2023/3/2817软件工程方法学软件工程方法学把在软件生命周期全过程中使用的一整套把在软件生命周期全过程中使用的一整套技术的集合技术的集合称为称为方法学方法学(methodology),也称范型,也称范型(paradigm)。软件工程方法学三个要素:软件工程方法学三个要素:方法、工具和过程方法、工具和过程。方法是完成软件开发各项任务的技术,回答方法是完成软件开发各项任务的技术,回答“如何做如何做”;工具是为方法的运用提供自动或半自动软件支撑环境,回答工具是为方法的运用提供自动或半自动软件支撑环境,回答“用什用什么做么做
15、”;过程是为获得高质量的软件要完成的一系列任务的框架,规定完成过程是为获得高质量的软件要完成的一系列任务的框架,规定完成各项任务步骤,回答各项任务步骤,回答“如何控制、协调、保证质量如何控制、协调、保证质量”。管理方法管理方法2023/3/2818目前使用得最广泛的软件工程方法学。目前使用得最广泛的软件工程方法学。传统方法学也称为传统方法学也称为生命周期方法学生命周期方法学或或结构化范型结构化范型。当软件规模较大,或对软件的需求是当软件规模较大,或对软件的需求是模糊模糊的或随时间的或随时间变化变化的时的时候,使用结构化范型开发软件往往不成功;候,使用结构化范型开发软件往往不成功;此外,使用传统
16、方法学开发出的软件,维护起来通常都很困难。此外,使用传统方法学开发出的软件,维护起来通常都很困难。结构化静态分析,面向对象动态分析结构化静态分析,面向对象动态分析世界万物是变化的世界万物是变化的传统方法学与面向对象方法学传统方法学与面向对象方法学2023/3/2819传统方法的特点传统方法的特点生命周期模型生命周期模型软件过程划分为若干个阶软件过程划分为若干个阶段段每个阶段有各自的任务每个阶段有各自的任务阶段之间有某种顺序性阶段之间有某种顺序性2023/3/2820面向对象方法:面向对象方法:1.对象作为融合数据及在数据之上的操作行为的统一的软件对象作为融合数据及在数据之上的操作行为的统一的软
17、件构件。构件。2.把所有对象都划分成把所有对象都划分成类类(Class)。每个类都定义了一组。每个类都定义了一组数据数据和一组和一组操作操作。3.按照父类按照父类(或称为基类或称为基类)与子类与子类(或称为派生类或称为派生类)的关系,把的关系,把若干个相关类组成一个若干个相关类组成一个层次结构层次结构的系统的系统(也称为类等级也称为类等级)。在类等级中,下层派生类自动拥有上层基类中定义的数据在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,称为和操作,称为继承继承。4.对象彼此间仅能通过发送消息互相联系对象彼此间仅能通过发送消息互相联系封装性封装性。数据:静态数据:静态操作:动态操作:
18、动态Everything is Object.2023/3/2821OO特点特点面向对象方法学的出发点和基本原则,是尽可能面向对象方法学的出发点和基本原则,是尽可能模拟人模拟人类习惯的思维方式类习惯的思维方式。用面向对象方法学开发软件的过程,是一个用面向对象方法学开发软件的过程,是一个主动主动地多次地多次反复迭代反复迭代的演化过程。的演化过程。概念和表示方法上的概念和表示方法上的一致性,阶段间平滑(无缝)过渡。一致性,阶段间平滑(无缝)过渡。特殊到一般的特殊到一般的归纳归纳思维过程;一般到特殊的思维过程;一般到特殊的演绎演绎思维过思维过程。(程。(继承的思想继承的思想)2023/3/2822O
19、O特点特点(2)最终产品中的对象与现实世界中的实体相对应,降低最终产品中的对象与现实世界中的实体相对应,降低了了复杂性复杂性,提高了,提高了可理解性可理解性,简化了软件的开发和维,简化了软件的开发和维护工作。护工作。对象是相对独立的实体,容易在软件产品中重复使用,对象是相对独立的实体,容易在软件产品中重复使用,促进了促进了软件重用软件重用。面用对象方法特有的继承性,也进一步提高了面向对面用对象方法特有的继承性,也进一步提高了面向对象软件的可重用性。象软件的可重用性。2023/3/2823当需求变化当需求变化时:时:要求服务员要求服务员礼貌待客!礼貌待客!-问候问候模拟人类模拟人类思维思维迭代开
20、发迭代开发设计简单、设计简单、容易理解容易理解2023/3/2824面向对象分析类图的例子面向对象分析类图的例子2023/3/28251.3 软件生命周期软件生命周期 软件生命周期由软件生命周期由软件定义、软件开发软件定义、软件开发和和运行维护运行维护三个时期组成,每个时期又可进一步划分成若干三个时期组成,每个时期又可进一步划分成若干个阶段,每个阶段有各自的任务。个阶段,每个阶段有各自的任务。1软件定义软件定义2软件开发软件开发3运行维护运行维护2023/3/28261.问题定义问题定义(领域分析(领域分析1)必须回答的关键问题是:必须回答的关键问题是:“要解决的问题是什么要解决的问题是什么”
21、。2.可行性研究可行性研究(领域分析(领域分析2,问题背景),问题背景)回答的关键问题是:回答的关键问题是:“上一个阶段所确定的问题是上一个阶段所确定的问题是否有行得通的解决办法否有行得通的解决办法”。3.需求分析需求分析仍然不是具体地解决客户的问题,而是准确地回答仍然不是具体地解决客户的问题,而是准确地回答“目标系统必须做什么目标系统必须做什么”。此外,要用正式文档准确地记录对目标系统的需求,此外,要用正式文档准确地记录对目标系统的需求,这份文档通常称为这份文档通常称为规格说明规格说明(specification)。2023/3/28271.3 软件生命周期软件生命周期了解问题,不能准确表达
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 设计师 软件工程 ppt 课件
限制150内