您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第一章 软件工程学概述1
软件工程SoftwareEngineering主讲:侯晓芳houxf1208@163.com课程简介•授课时间:1-13周•课程类型:考试课•答疑:–周三下午4:00,计算机系教师办公室•共享邮箱:–jisuanjishare@163.com–密码:password2课程概要•本课程是计算机专业本科主干课程。根据教学大纲的要求,本课程在系统阐述软件工程理论与方法的同时,注重将软件工程的概念和方法应用于实践当中,我们将通过一些项目实例来说明一个大型的软件开发项目是如何进行的。3研究内容分为软件开发技术和软件管理技术。•软件开发方法与技术。•软件开发工具及环境。•软件开发过程。•软件规范(国际规范)。•强调文档化。4课程教学与实践的目标转变对软件的认识:上升程序系统转变思维定式:上升程序员系统工程师(系统分析员)工程化训练5系统分析员地位6用户分析员程序员软件工作范围•只考虑编写程序整个软件生命周期7扩展到软件工程SoftwareEngineering第1章软件工程学概述本章内容•软件危机•软件工程–概念–基本原理–方法学•软件生命周期•软件过程模型91.1软件危机•什么是软件?•程序+数据+文档—能够完成预定功能和性能的可执行的指令:计算机程序—使程序能够适当地操作信息的数据结构—描述程序的操作和使用的文档10•实际项目开发中•编程占10%—20%•需求分析、总体设计、测试、运行维护11•软件发展的三个阶段:•1、程序设计时期40年代到60年代中期—个人开发•2、软件时期60年代中期到70年代中期—个体生产方式,“生产作坊”后期出现软件危机•3、软件工程时期70年代中期至今12计算机的普及和发展引发的现状:•软件的规模越来越大,复杂度不断增加,软件需求量增大,软件开发的模式和技术不能适应发展需求。•软件维护工作越来越频繁和重要,暴露了软件不易于维护、使用寿命短的缺点。13•软件工程概念的出现源自软件危机。•软件危机:在计算机软件开发和维护过程中所遇到的一系列的严重问题。14表现:•对软件开发成本和进度估算不准确•初期对需求不明确,导致矛盾后期集中暴露。•无充分测试通过,软件质量差•开发过程缺乏统一规范,人员流动性大,没有适当的文档,不易维护•软件成本在计算机系统中占的比例逐渐上升•软件开发生产率低15产生软件危机的原因:与软件本身有关:•规模庞大、复杂,给软件开发和维护带来客观困难。•软件的寿命一般是5到10年,这期间要对软件随时进行维护,以适应各种变化。与软件开发和维护的方法不正确有关•软件开发技术落后,生产方式和开发工具落后。•软件开发人员忽视软件需求分析的重要性,轻视软件维护。16•软件开发存在的问题17•软件开发存在的问题•软件开发存在的问题•软件开发存在的问题•软件开发存在的问题•软件容易吗?-很容易,一天之内就可以学会编程。-对于一般的小型软件系统并没有什么。•软件容易吗?-不容易,软件越做越觉得里面的复杂。-对于大型软件系统,软件是一门艺术。•入门容易,精通难。•解决软件危机的途径—使用好的软件开发技术和方法。—使用好的软件开发工具,提高软件生产率。—有良好的组织、严密的管理,各方面人员相互配合共同完成任务。•软件工程正是从技术和管理两方面来研究如何更好地开发和维护计算机软件的。231.2软件工程软件工程定义为:“采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并维护它。”241.2软件工程软件工程学研究的是:如何应用一些科学理论和工程技术来指导大型软件系统的开发,使其发展成为一门严格的工程科学。25软件工程的基本目标:付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能按时完成开发,及时交付使用26互补关系:互斥关系:低开发成本易于维护高可靠性高性能按时交付图1.1软件工程目标之间的关系•软件工程基本原理—著名的软件工程专家B.W.Boehm于1983年在一篇论文中提出了软件工程的7条基本原理。这7条原理是确保软件产品质量和开发效率的原理的最小集合。(P7)按软件生存期分阶段制定计划并认真实施;坚持进行阶段评审;坚持严格的产品控制;使用现代程序设计技术;明确责任,使得工作结果能够得到清楚的审查;用人少而精;不断改进开发过程。承认不断改进软件工程实践的必要性•软件工程方法学•软件工程方法学:在软件生命周期全过程中使用的一整套技术方法的集合成为方法学,又叫泛型。•软件工程方法学包括3个要素:方法、工具和过程。•使用最广泛的软件工程方法学—传统方法学(结构化方法)—面向对象方法学30•传统方法学(又叫结构化方法)–传统的软件工程采用瀑布模型作为基本模型,把软件开发和运行过程划分为几个阶段,强调各阶段的完整性和先后顺序,根据不同阶段的工作特点,运用不同的手段完成各阶段的任务。31•面向对象方法学•出发点和基本原则是:尽可能模拟人类所习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识世界、解决问题的方法和过程,即使描述问题的问题域与实现解法的求解域在结构上尽可能一致。321.3软件生命周期•软件生命周期•(SoftwareLifeCycle)软件产品或软件系统从设计、投入使用到被淘汰的全过程。331.3软件生命周期•软件生命周期分为三个大阶段—计划期—开发期—运行维护期•为了描述软件生命周期的各种活动,提出了多种生命期模型:瀑布模型、演化模型、螺旋模型等。3435软件生命周期计划时期开发时期维护时期问题定义可行性研究需求分析概要设计详细设计编码和单元测试综合测试系统设计系统实现•问题定义与可行性研究阶段基本任务:-搞清问题的性质,确定系统的目标和规模,从技术、经济、社会因素等方面分析论证本软件项目的可行性,并最终产生一份可行性分析报告。•可行性研究结果:部门负责人作出是否进行这项工程的决定。开发、暂停开发、停止开发。•需求分析阶段的基本任务:-理解用户的需求,并将用户的需求用书面形式表达出来。•需求阶段产生的文档:-需求规格说明书:明确地描述了用户的需求,以后各阶段工作的基础。•设计阶段的基本任务:-在需求说明书的基础上建立软件的“结构”,包括数据结构和模块结构。•设计阶段的内容:-概要设计:考虑模块的分解-详细设计:考虑每个模块之间的细节•设计阶段的产生的文档:-数据库设计说明书-概要设计说明书-详细设计说明书•编程阶段的基本任务:-按设计说明书的要求为每个模块编写程序。•测试阶段的基本任务:-发现并排除错误。(模块测试、集成测试、系统测试)•运行与维护阶段的基本任务:-对软件继续排错和修改扩充。•注意:•这几个阶段指的是传统软件开发方法•每个阶段都有明确的任务,并需产生一定规格的文档资料交付给下一个阶段,下一个阶段在上一个阶段交付的文档基础上继续开展工作。4142•了解软件危机•掌握软件的概念•掌握软件工程的概念•掌握软件开发方法•掌握软件工程生命周期总结
本文标题:第一章 软件工程学概述1
链接地址:https://www.777doc.com/doc-3828396 .html