高级软件工程电子书_第1页
高级软件工程电子书_第2页
高级软件工程电子书_第3页
高级软件工程电子书_第4页
高级软件工程电子书_第5页
已阅读5页,还剩12页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、Software Engineering软件工程本质Shanghai Jiao Tong University高级软件工程Module: 软件工程本质上海交通大学软件工程中心讨论:什么是软件工程?“The establishment and use of sound engineering principles in order to obtain economically software that isreliable and works on real machines.” Fritz Bauer“The application of a systematic, disciplined,

2、 quantifiable approach to the development, operation, and maintenance of software ” IEEE 1990“Software engineering is that form of engineering thatapplies the principles of computer science and mathematics to achieving cost-effective solutions to software problems. ” CMU/SEI-90-TR-003第1章 .教材Software

3、 Engineering2沈备军1Software Engineering软件工程本质软件开发是一门什么学科?软件开发是一门艺术?是一门科学?是一门工程?追求 Truth( 真)科学学科工程艺术追求 Benefit( 善)追求 Beauty( 美)Software Engineering3沈备军软件开发如何获得最大 benefit?Benefit 收入成本提升销售降低成本需求是关键设计是关键创新的需求好的设计:模块化、降低软件复杂性、增加复Software Engineering用、便于多人协同开发沈备军42Software Engineering软件工程本质具体和抽象需求:具体 产品当项目做

4、所有人 - 一群人设计:抽象 项目当产品做项目- 产品- 产品线即时通软件卖给谁?Software Engineering5沈备军软件工程是一个国家的战略性学科软件工程的发展受到了美国DOD 的极大推动CMU SEI如果一个国家的软件工程不强,那么这个国家就不会强大软件工程要做强,关键在于创新,在于规范化的软件开发本课程是软件学院的最核心课程,区别于计算机科学系。Software Engineering6沈备军3Software Engineering软件工程本质软件工程核心准则The Reason It All ExistsKIS (Keep It Simple)Maintain the V

5、isionWhat You Produce, Others Will Consume Be Open to the Future Plan Ahead for ReuseThink before You DoSoftware Engineering7沈备军控制软件开发的复杂性软件开发常常是相当复杂、不可预测、难以计划的。软件开发的复杂性主要来源于:技术的复杂性? 不断发展? 使用多项技术如何控制复杂性?需求的复杂性? 模糊? 不断变化抽象人的复杂性分解迭代Software Engineering8沈备军4Software Engineering软件工程本质软件工程知识体系 SWEBOK软件工程

6、知识体系 (Software Engineering Body of Knowledge) 简称 SWEBOK由IEEE国际组织推出版本:上一个版本 V2(2004)当前版本 V3(2014)网址:国际软件工程师证书:CSDA ,针对大学应届生CSDP ,针对有经验的工程师Software Engineering9沈备军SWEBOK V3的15个知识域软件工程实践类知识域软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件工程管理、软件过程管理、软件工程方法、软件质量、软件工程职业实践软件工程教育要求类知识域工程经济基础、计算基础、数学基础、工程基础Software Engin

7、eering10沈备军5Software Engineering软件工程本质讨论:软件工程的要素是什么?人技术管理过程Software Engineering软件工程的金三角111)软件工程技术系统工程人完成软件开发的主体技术提供了建造软件在技术上需要“如何做”的方法管理提供了质量管理、成本管理、时间管理、范围管理等知识和技能过程这是将人、技术、管理结合在一起的凝聚力沈备军人过程技术管理需求设计编码测试运行和维护Software Engineering12沈备军6Software Engineering软件工程本质系统工程 (System Engineering)在软件开发之前,必须了解该软件

8、所外的外部“系统”。计算机系统包括计算机硬件、软件、人员、数据库、文档、规程等系统元素。系统工程的任务:系统建模系统模型系统仿真系统工程的表现形式信息系统,关注企业,业务过程工程业务模型嵌入式系统,关注产品,产品工程产品模型多媒体系统,关注内容,内容工程剧本Software Engineering13沈备军需求( Requirement)目的:澄清用户的需求。任务:用户和软件人员双方一起来充分理解用户的要求,并把双方共同的理解明确地表达成一份书面文档 需求规约。功能需求非功能需求,如性能、可靠性、可用性等约束条件内容:需求获取需求分析和建模需求定义需求确认需求管理重点在 WhatSoftwar

9、e Engineering14沈备军7Software Engineering软件工程本质设计( Design)目的:建立软件的设计蓝图,是需求到代码的桥梁。任务:软件人员依据软件需求,进行设计,形成软件架构文档和设计模型。内容架构设计详细设计重点在 HowSoftware Engineering15沈备军编程 (Coding)任务 :依据设计文档为每个模块编写程序编码前准备理解设计,选择编程语言和编程环境,创建单元测试用例编码尽可能简单,代码本身就是文档验证代码走查编译单元测试代码重构Software Engineering16沈备军8Software Engineering软件工程本质测试

10、 (Testing)任务:发现并排除软件中的缺陷不同层次的测试:单元测试(Unit testing)集成测试(Integration testing)系统测试(System testing)Software Engineering17沈备军部署 (Deployment)任务:交付、支持和反馈部署原则:Manage customer expectations for eachincrementA complete delivery package should beassembled and testedA support regime should be established Instruc

11、tional materials must be provided to end-usersBuggy software should be fixed first, delivered laterSoftware Engineering18沈备军9Software Engineering软件工程本质软件开发工作量分配比例40% 50%测试10% 20%编程其它Software Engineering19沈备军运行和维护 (Operation and Maintenance)Software Engineering20沈备军10Software Engineering软件工程本质维护类型纠错性

12、维护( Corrective maintenance)由于软件中的缺陷引起的修改完善性维护( Perfective maintenance),根据用户在使用过程中提出的一些建设性意见而进行的维护活动适应性维护( Adaptive maintenance)为适应环境的变化而修改软件的活动预防性维护( Preventive maintenance)为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础Software Engineering21沈备军费用分配比例55%70%Software Engineering22沈备军11Software Engineering软件工程本质软件工程的

13、发展系统工程需求设计编码测试运行和维护Software Engineering23沈备军软件开发方法形式化方法 (Formal Method)结构化方法 (Structured Method)面向对象方法 (Object Oriented Method)基于构件的软件开发方法 (ComponentBased Software Development)面向服务方法 ( Service Oriented Method)模型驱动的开发方法 (Model-DrivenDevelopment)敏捷建模方法 (Agile Modeling Method)过程Software Engineering24沈备

14、军12Software Engineering面向对象方法是主流需求变化时稳功能:最易变定性数据:较易变增加对象:较稳定Software Engineering252)软件工程管理项目管理的知识体系( Project Management Body of Knowledge ,PMBOK )TSoftware Engineering26软件工程本质沈备军人过程技术管理沈备军13Software EngineeringPMBOK的项目管理过程Software Engineering273)软件工程中的人People CMMI V2Software Engineering28软件工程本质沈备军人过

15、程技术管理沈备军14Software Engineering软件工程本质4)软件过程过程定义了 Who,When,Where,How,它是将人、技术、管理结合在一起的凝聚力过程是产品成本、进度和质量的主要决定因素软件过程主要包括:软件开发过程软件支持过程软件运维服务过程软件复用过程人过程技术管理Software Engineering29沈备军软件过程分类按风格分:线性顺序模型增量式模型演化模型按纪律性分:计划驱动的软件过程敏捷软件过程Software Engineering30沈备军15Software Engineering软件工程本质软件过程评估标准 CMMICMMI 软件成熟度模型由

16、CMU/SEI 开发/cmmi5 级-优化级组织绩效管理?CMMI for development (CMMI-DEV)原因分析和解决?CMMI for service (CMMI-SVC)4级 - 定量管理级?CMMI for Acquisition (CMMI-ACQ)项目定量管理组织过程绩效3 级-已定义级产品集成集成项目管理组织培训组织过程定义组织过程重点5优化级 Optimizing2 级-已管理级需求开发4定量管理级技术解决方案Quantitatively Managed配置管理验证3定义级 Defined过程和产品质量保证确认2管理级 Managed供应商合同管理风险管理1初始级 Performed项目监控和控制决策分析和解决项目计划需求管理测量和分析CMMI -DEV V1.3成熟度模型1级 - 初始级Softwa

温馨提示

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

评论

0/150

提交评论