ch1软件工程概述_第1页
ch1软件工程概述_第2页
ch1软件工程概述_第3页
ch1软件工程概述_第4页
ch1软件工程概述_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程概述陈学习“软件工程”的目的和意义学会如何在现代IT企业的环境中做一个成功者;学会如何做世界级的、高质量的研究;学会如何创建大规模的软件。 微软全球资深副总裁原微软亚洲院长首席科学家2第一讲 软件工程概述 软件软件工程软件工程学科3什么是软件?软件=程序?(计算机)软件是与计算机系统操作有关的程序、规程、规则及任何与之有关的文档和数据。它是包括程序、数据及其相关文档的完整集合。程序是用程序设计语言描述的、适合于计算机处理的语句序列。数据是使程序能正常信息的数据结构文档是一种数据和其上所的数据,它是与程序开发,维护和使用有关的图文材料知识和经验4软件的特点软件是一种逻辑实体,而不是具体的

2、物理实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程中没有明显的作相当复杂在软件的运行和使用期间, 没有硬件那样的机械磨损, 老化问题过程,使用中的维护工修改点失效率实际曲线理想曲线时间5软件的特点软件需求软件的开发和运行常受到差距软件复杂性计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工艺的开发方式软件本身是复杂的实际问题的复杂性程序逻辑结构的复杂性软件成本相当昂贵相当多的软件工作涉及到因素软件技术时间6软件不是孤立的过程传感器设备计算机系统数据库特点整体性层次性模块相关性环境依赖性应用软件人功能:完成信息的、处理、融合、传输、管理、服务等。7软件的

3、分类通用软件(Generic Software) 通用软件是由软件开发组织开发,面向市场用户公开销售的运行系统,有时也被称为套装软件。 举例:操作系统、数据库系统、字处理软件等定制软件(Customized Software) 定制软件是由某个特定客户委托,软件开发组织在合同的约束下开发的软件。 举例:企业ERP 系统、系统等系统、空通指挥8软件的分类按软件的功能进行划分: 系统软件操作系统数据库管理系统设备驱动程序 通信处理程序等 实时软件软件 科学和工程计算软件 事务处理软件 人工智能软件9软件的分类按软件的应用领域进行划分: 个人计算机软件 CASE(Computer-aided sof

4、tware engineering)工具软件10软件的分类按软件规模进行划分:类别微型小型中型大型参加1125数研制期限源程序大小14周16月12年23年45年510年0.5k1k2k 5k50k 50k100k1M(=1000k)1M10M520100100020005000甚大型极大型按软件服务对象的范围划分 项目软件软件11软件出现于20 世纪60 年代末是指在计算机软件的开发和维护过程中软件软件遇到的一系列严重问题。 软件开发的成本和进度难以准确估计,延迟交付甚至取消项目的现象屡见不鲜 软件着错误多、性能低、不可靠、不安全等质量问题 软件维护极其,而且很难适应不断变化的用户需求和使用环

5、境12软件开发进度难以拖延工期几甚至几年的现象并不罕见。以丹佛新国际机场为例该机场规模是曼哈顿机场的两倍,宽为希思机场的10倍,可以全天侯同时起降三架喷气式客机;投资1.93亿4,000台行李传送系统,总长21英里,有建立了一个车,可按不同线路在20家不同航空公司柜台、登机李领取处之间和传递行李;支持该系统的是5,000个电子眼、400台无线电接受机、56台条形码扫描仪和100台计算机。按原定计划要在1993年万圣节前启用,但一直到1994年6月,该 系统还无法正常运行。据研究结果统计:只有15%的项目是按计划完成的。13软件的开发成本难以投资一再追加,令人难于置信。据同样的研究统计结果表明:

6、仅有10%的项目是按费用计划完成的。美国税收表格自动处理系统80年代初,美国国内税收服务处(IRS)委托Sperry公司开发结果是:系统被证明不适合当前的工作量,花费几乎是预算的两倍,必须立即更换(到1985年,还需要再追加9千万的)。来改进Sperry公司最初价值1.03亿的设备。另外,因为出现的问题阻碍了IRS按时返还纳税者的,IRS还被迫偿还4. 02亿的利息以及2.23千万的工资给加班职员。14软件错误与代价爱国者千年虫问题解决软件的途径:软件工程15第一讲 软件工程概述软件 软件工程软件工程学科16工程的含义规模上的差异花园小道 vs. 汽车高速公路树上小屋 vs. 摩天大楼加法程序

7、 vs. 医院系统手工(Craft):小规模的设计与建造 简单问题与单一目标 个人与个人技能工程(Engineering): 大规模的设计与建造 复杂问题与目标分解 多人参与,需要考虑运营、管理、成本、质量等、安全17工程的特征平衡与决策 需要进行一系列决策和评价,在每一个决策点做出适当选择,恰当与否通过平衡成本和利益的分析来。度量与验证 应该度量事物,在恰当的时候定量工作;需要校正并验证度量,并在经验和实验数据的基础上进行选择。运用工具 工程师需要将工具系统地应用在过程中,因此选用恰当的工具是工程的关键。18工程的特征团队协同工作注重训练有素,并以团队的形式进行有效的工作。分工多重:研究、开

8、发、设计、生产、测试、构造、实施、管理以及其他诸如销售、咨询和教学等。最佳实践 通过专业团体不断开发和确认工程原则、标准和实践。强调重用 工程师应该重用设计和设计制品。19工程化的软件开发范围+时间+成本+质量退役维护使用确认测试组装测试实现详细设计概要设计需求分析可行性研究什么是软件工程Bauer, 1972 软件工程是为了地获得能够在实际上高效运行的可靠软件而建立和使用的一系列好的工程化原则。CMU, 1990 软件工程是以工程的形式应用计算机科学和数学原理,从而有效地解决软件问题。IEEE, 1993 软件工程是将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用

9、到软 件上;对中所述方法的研究。21软件工程的目标提高软件的质量与生产率,最终实现软件的工业化生产!开发方业主方必须要关注最关注最关注高质量高效率孰轻孰重?劣质软件是业主方的负担、开发方的噩梦!高效率地生产劣质软件是最大的浪费22软件生存周期可行性研究与计划制定定义阶段测试运行维护阶段23退役维护使用实现开发阶段详细设计概要设计需求分析如何理解软件质量?好车?好软件?消费者满意的车?车很好,只是太贵业主满意的软件?功能很强,不好用24软件质量的定义软件满足规定的和隐含的与需求能力有关的全部特征和特性 1软件质量满足用户要求的程度; 2软件各种属性的组合程度; 3用户对软件的综合反映程度; 4软

10、件在使用过程中满足用户要求的程度。2526序号质量因素实例说明1正确性n 血压超过或低于阀值,要提示护士;n 话费计算,中间结果到厘、最后总额四舍五入到分。2可靠性n 系统停机时间超过30分钟的概率要小于0.5%;n 心脏部件的失效频度要求少于20年一次。3效率n 系统的响应时间平均少于2秒;n 一般报表统计时间少于5秒。4完整性n 客户只能通过账号/的消费;n 拥有账号才能进行操作。5实用性n 呼叫中心一个坐席每天至少能够处理60个服务;n 新员工培训2天后即可熟练操作系统。6可维护性n 高内聚、低耦合;结构性好,可读性好。n 遵循编程规范。7灵活性n 利率调整通过参数配置实现;n 灵活的、

11、统计。8可测试性n 操作日志、错误跟踪日志9可移植性n 数据库从SQL SERVER迁移到ORACLE;n 应用服务器从WINDOWS2003迁移到Linux。10可重用性n 工作流引擎、报表引擎11互操作性n 万能充电器不同质量的关注点不同27软件工程的原则抽象抽取本质特性,忽略非基本的细节;采用分层次抽象,自顶向下、逐层细化方法软件开发过程复杂性信息隐蔽将模块设计成“黑箱”,实现的细节隐藏在模块内部,不让模块的使用者直接模块化。这就是信息封装,使用与实现分离的原则如 C 语言程序中的函数过程,C+ 语言程序中的类。模块化有助于信息隐蔽和抽象,有助于表示复杂的系统。局部化要求在一个物理模块内

12、集中逻辑上相互关联的计算机,保证模块之间具有松散的耦合,模块内部具有较强的内聚。这有助于性解的复杂28软件工程的原则一致性 整个软件系统的各个模块应使用一致的概念、符号和术语。程序内部接口应保持一致。软件和硬件、操作系统的接口应保持一致。系统规格说明与系统行为应保持一致。用于形式化规格说明的公理系统应保持一致完整(备)性 软件系统不丢失任何重要成分,可以完全实现系统所要求功能的程度。为了保证系统的完备性,在软件开发和运行过程中需要严格的技术评审。可验证性 开发大型的软件系统需要对系统自顶向下、逐层分解。系统分解应遵循系统易于检查、测试、评审的原则,以确保系统的正确性。29软件工程的三要素软件工

13、程三要素:方法、工具和过程方法为软件开发过程提供“如何做”的技术工具为软件开发方法提供自动的或半自动的软件支撑环境过程支持软件生命周期的所有活动,将织及管理有机结合在一起。、技术、组30方法 方法:为软件开发过程提供“如何做”的技术 结构化方法:数据流分析 面向对象方法:对象分析 设计建议:体系结构、设计模式 项目管理:项目计划、项目度量、跟踪监督、变更控制 过程指南:过程说明、裁剪指南、文档模板、过程知识库31结构化方法&面向对象方法32 采用自然思维方式建立软件系统模型 整个过程采用统一的概念和模型表示 对象是包括属性与操作的单元 对象封装性信息隐蔽有利于软件复用 功能与数据分离 上下层模

14、块紧密依赖 变动修改难,限制了软件复用 集中在模块中工具 工具: 为软件开发方法提供自动的或半自动的软件支撑环境Project、P3、OFFICEROSE、Together、PowerDesignerEclipse、Visio Studio、QC、Junit、LoadRunner、WinRunnerVSS、CVS、SVN、Clear Case33过程 过程 将软件工程的方法和工具综合起来所进行的一系列软件开发和进 化的活动。 四个基本活动 规格说明(Specification) 定义软件功能以及对其使用的限制 软件开发(Development) 设计和实现满足规格说明的软件 软件确认(Vali

15、dation) 验证软件以保证能够满足客户的要求 软件演化(Evolution)34 改进软件以适应不断变化的需求软件工程的发展 50至60年代末 60末至80年代中 80年代中至90年代末 2000年代至今第一阶段第二阶段第三阶段第四阶段35第一讲 软件工程概述软件软件工程 软件工程学科36SWEBOK(软件工程知识体系)软件工程知识体系(SWEBOK) IEEE 计算机学会发起研究,从而促进软件工程发展成为 2001 年5 月完成的专业学科SWEBOK 的组成 将软件工程知识分解成若干知识域,形成层次化的组成结构 10 个知识域37SWEBOK组成Software Requirements

16、 Software Design Software Construction Software Testing Software Maintenance软件需求软件设计软件构造软件测试软件维护软件配置管理软件工程管理软件工程过程Software Configuration Management Software Engineering Management Software Engineering Process软件工程工具和方法Software Engineering Tools and Methods软件质量Software Quality38软件工程与计算机科学的区别计算机科学 研究方法 举例:数据结构、离散数学、算法分析等软件工程 研究开发和发布软件的实际问题计算机和软件系统基础的有关理论和 举例:飞行软件39一些有争议的观念1. 如果软件运行较慢,是换一台更快的计算机, 还是设计一种更快的算法?2. 有最好的软件工程方法,最好的编程语言吗?3. 编程时是否应该多使用技巧?4. 软件中的错误是否可按严重程度分等级?5. 我可以同时从事多个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论