软件工程第一章绪论_第1页
软件工程第一章绪论_第2页
软件工程第一章绪论_第3页
软件工程第一章绪论_第4页
软件工程第一章绪论_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

软件工程第一页,共五十五页。一、课程的性质、任务:“软件工程”是高职高专院校计算机应用与软件技术专业教学计划中一门核心基础课程,它是研究软件开发和软件管理的一门工程科学。它的主要任务是掌握支持软件开发和管理的理论、方法、技术、标准以及计算机辅助软件工程的工具(Visio或Rose)环境等知识;使学生具有软件开发能力(包括熟练进行程序设计语言的结构化编码与可视化设计能力;UML的阅读和建模能力;培养用软件工程化及项目化的思想处理解决问题的能力等)。第二页,共五十五页。概括说:软件开发能力最关键的步骤有三步:第三页,共五十五页。二、通过学习应能达到如下目标:1.接受一种思想。掌握软件工程的基本原理、概念与方法----主要包括软件系统的可行性研究、需求分析、概要设计、详细设计、编码、测试、维护、面向对象、项目管理等方面的基本知识与方法。

2.掌握软件工程中的一些基本技术方法,如数据流图、数据字典、结构分析方法(如Jackson方法等),面向对象分析方法、集成测试方法、项目管理的基本方法等。

3.结合模拟案例,要求学生从实际中掌握从面向过程到面向对象思想理论的基本方法和技巧。掌握软件开发文档的组织编写等。4.掌握一种工具。学期末能用Visio或Rose软件完成大作业的设计(画各种软件工程图)(指定或自找题目)5.把目前或以后要学的程序设计知识(C、Java、VB、VC++、VB.NET等)提高到一定理论高度认识:编程能否用?

学会思想比掌握一种工具更为重要。

小提示:第四页,共五十五页。三、几点建议:“学知识,最重要的是融会贯通!”人类解决复杂问题时普遍采用的一个策略就是“各个击破”,也就是对问题进行“分解,分解,再分解,然后再分别解决各个子问题!”第五页,共五十五页。

“现在大家都已认识到,如果有哪个项目不遵循软件工程原则必定会受到实践的惩罚。”“软件工程课是我们参加工作以后最能直接应用的一门专业课。”——一位刚毕业参加工作的计算机专业学生第六页,共五十五页。

什么是软件

软件的特点

软件的发展

软件生存期

什么是软件工程

软件工程的目的和要求第一章绪论第七页,共五十五页。先接受2个正确观点:1、“开发软件不等于编写程序”

开发软件应该完成的工作远远多于编写程序应该完成的工作。设计算法(即完成指定功能的步骤),然后用程序设计语言(例如:C语言)表达该算法。而开发软件并非就是编写程序,事实上编写程序仅仅是开发软件所应完成的工作的一部分,而且只占一小部分。为了开发出一个符合用户需要、质量合格的软件,软件工程师必须首先弄清楚用户面临的问题是什么,也就是要明确软件的“主攻”方向;接下来应该进行可行性研究方案,分析用户面临的问题是否有行得通的解决方案。为避免浪费资源,仅在该软件的开发是可行的前提下,才进行实质性的开发工作;1.1软件工程简述第八页,共五十五页。然后应该进行需求分析工作,通过与用户的反复交流,搞清楚用户对该软件的具体需求,这些需求是进行软件设计的依据;在编写程序之前需要先进行设计。通常,大型软件的设计工作又分成两个阶段进行,先进行总体设计(又称为概要设计),再进行详细设计;编写程序实质上是把设计结果翻译成用某种程序设计语言书写的程序;程序编写出来之后,还需要经过严格的测试过程(需要的工作量通常占软件开发全部工作量的40%~50%),软件确实符合用户需求而且质量合格,才能交付给用户使用。第九页,共五十五页。2、“错误做法会导致软件危机”。开发软件不等于编写程序。但是,迄今为止,仍然有不少人错误地认为开发软件就是编写程序,或者认为开发软件主要就是编写程序。人们之所以有错误的认识并在开发软件时采用了错误的做法,主要可归因于在计算机系统发展的早期阶段“开发软件”的个体化特点。所谓软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。(软件危机的具体表现在后面介绍)第十页,共五十五页。1.1软件工程简述软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。程序是按事先设计的功能和性能要求执行的指令序列。计算机程序包括源程序和目标程序。数据是使程序能正常操纵信息的数据结构(即数据的组织形式)。文档是与程序开发,维护和使用有关的图文材料。第十一页,共五十五页。1.1软件工程简述软件的特点软件是一种逻辑实体,而不是具体的物理实体。因此,它具有抽象性。软件的生产与硬件不同,没有明显的制造过程。对软件的质量控制,必须立足于软件开发方面。在软件的运行和使用期间,没有像硬件那样的磨损、老化问题。软件的开发和运行往往受到计算机系统的限制,对计算机系统有不同程度的依赖性。第十二页,共五十五页。1.1软件工程简述

面向过程的程序=算法+数据结构面向对象的程序=对象+消息面向构件的程序=构件+构架软件=程序+数据+文档第十三页,共五十五页。第十四页,共五十五页。1.1软件工程简述软件的特点(续)迄今为止,软件的开发尚未完全摆脱手工艺的方式。软件本身是复杂的。软件的成本相当昂贵。(见下页图示)相当多的软件工作涉及到社会因素。第十五页,共五十五页。1.1软件工程简述软件的分类按软件的功能划分:系统软件、支撑软件、应用软件按软件的规模划分:微型、小型、中型、大型、超大型按软件的工作方式划分:实时、分时、交互、批处理按软件服务对象的范围划分:项目软件、产品软件第十六页,共五十五页。1.1软件工程简述一、计算机软件发展的各个时期1.第一代(60年代中期之前)程序设计阶段硬件通用,软件专用;程序规模小,编写者和使用者为同一人(同组人)。2.第二代(60年代中期-70年代中期)程序系统阶段出现“软件作坊”、产品软件;“个体化”开发方法。3.第三代(70年代中期之后)软件工程阶段软件开发成为一门新兴的工程学科——软件工程。4.第四代(90年代后)现代软件工程阶段。第十七页,共五十五页。计算机软件发展的三个时期及特点

程序设计程序系统软件工程现代软件工程软件的范畴程序程序及说明书产品软件(项目软件)项目工程主要程序设计语言汇编及机器语言高级语言高级语言系统、程序设计语言面向对象可视化设计语言软件工作范围程序编写包括设计和测试软件生存期整个软件生存期需求者程序设计者本人少数用户市场用户面向所有用户

第十八页,共五十五页。计算机软件发展的三个时期及特点第十九页,共五十五页。1.1软件工程简述二、什么是软件危机软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。主要是两个问题。1.如何开发软件,怎样满足对软件的日益增长的需求。2.如何维护数量不断膨胀的已有软件第二十页,共五十五页。1.1软件工程简述三、软件危机的主要表现1.对软件开发成本和进度的估计不准确2.用户不满意3.软件质量不高、可靠性差4.软件常常不可维护、错误难以改正。5.缺乏适当的文档资料6.软件成本占系统总成本的比例逐年上升7.软件开发速度跟不上计算机发展速度第二十一页,共五十五页。1.1软件工程简述四、产生软件危机的原因1.与软件本身的特点有关软件不同于硬件,它是计算机系统的逻辑部件而不是物理部件。在写出程序代码并在计算机运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价。因此,管理和控制软件开发过程相当困难。2.软件不易于维护(1)软件维护通常意味着改正或修改原来的设计,客观上使软件较难维护。第二十二页,共五十五页。1.1软件工程简述(2)软件不同于一般程序,它的规模大,不易于维护。3.在软件开发过程中,或多或少地采用了错误的方法和技术。4.对用户需求没有完整准确的认识,就匆忙着手编写程序。第二十三页,共五十五页。1.1软件工程简述五、解决软件危机的途径1.技术措施使用更好的软件开发方法和开发工具2.组织管理措施软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。第二十四页,共五十五页。1.1软件工程简述一、什么是软件工程软件工程是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。软件工程是一门涉及软件计划、需求分析、设计、编码、测试和维护的原理、方法及工具的研究和应用的学科。第二十五页,共五十五页。1.1软件工程简述二、软件工程的基本原理1968年,北大西洋公约组织(NATO),召开的有关计算机软件会议上正式提出“软件工程”术语。目前有100多条关于软件工程的准则,其中最出名的是著名软件工程专家B.W.Boehm在1983年提出的7条基本原理。第二十六页,共五十五页。1.1软件工程简述1.用分阶段的生命周期计划严格管理经统计表明,不成功的软件项目中有一半左右是由于计划不周造成的。Boehm认为,在软件的整个生命周期中应制定并严格执行六类计划:项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运行维护计划。第二十七页,共五十五页。1.1软件工程简述2.坚持进行阶段评审大部分错误是在编码之前造成的因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程的错误第二十八页,共五十五页。1.1软件工程简述3.实行严格的产品控制在软件开发过程中不要随意改变需求,因为改变某项需求往往需要付出较高的代价,但在实践中用户往往会提出需求变更,因此需要采取科学的产品控制技术。目前主要实行基准配置管理:基准配置是指经过阶段评审后的软件配置成分,如各个阶段产生的文档或程序代码。对涉及基准配置的修改,必须经过严格的评审,通过后才能实施修改。第二十九页,共五十五页。1.1软件工程简述4.采用现代程序设计技术实践表明:采用先进的技术既可提高软件开发的效率,又可提高软件维护的效率。80年代及之前:结构化分析、设计技术90年代:面向对象分析、设计技术第三十页,共五十五页。1.1软件工程简述5.结果应能清楚地审查软件产品是看不见、摸不着的逻辑产品,开发过程难以评价和管理。根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,使所得的结果能够清楚地审查第三十一页,共五十五页。1.1软件工程简述6.开发小组的人员应该少而精开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。开发小组人员数目的增加,使相互交流复杂、费用增加。第三十二页,共五十五页。1.1软件工程简述7.承认不断改进软件工程实践的必要性遵循前6条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产,但不能保证赶上时代前进的步伐。积极主动采纳新的软件技术,且不断总结经验。第三十三页,共五十五页。1.1软件工程简述三、软件工程的目标及框架、原则⑴软件工程的目标可概括为“生产具有正确性、可用性以及开销合宜的产品”;⑵软件工程的活动是“生产一个最终满足需求且达到工程目标的软件产品所需要的步骤”;⑶软件工程实施过程中的四条基本原则:①

选取适宜的开发模型;②

采用合适的设计方法;③

提供高质量的工程支持;④

重视开发过程的管理。第三十四页,共五十五页。1.2软件的生存周期及其开发模型1.“生命周期法”的起源。

软件工程采用的“生命周期法”,就是从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后再逐步完成每个阶段的任务.软件生存周期包括问题定义、可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等活动,可以将这些活动以适当方式分配到不同阶段去完成。第三十五页,共五十五页。1.2软件的生存周期及其开发模型2.生命周期划分的原则任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。3.生命周期的划分软件生命周期一般分为:软件定义(问题定义、可行性研究、需求分析)、软件开发(总体设计、详细设计、编码和单元测试、综合测试)、软件使用与维护等三个时期。第三十六页,共五十五页。1.2软件的生命周期及其开发模型软件定义问题定义可行性分析需求分析软件开发系统设计编码测试软件与维护第三十七页,共五十五页。1.2软件的生命周期及其开发模型软件生命周期的各个阶段:(1)问题定义(2)可行性分析(3)需求分析

分析软件需求,编写软件需求规格说明(4)概要设计和详细设计

确定软件体系结构,设计软件模块(5)程序编写(6)软件测试(7)运行和维护第三十八页,共五十五页。1.2软件的生存周期及其开发模型一、瀑布模型瀑布模型的优点:通过设置里程碑,明确每阶段的任务与目标。可为每阶段制定开发计划,进行成本预算,组织开发力量。通过阶段评审,将开发过程纳入正确轨道。严格的计划性保证软件产品的按时交付。瀑布模型的缺点:缺乏灵活性,不能适应用户需求的改变。开始阶段的小错误被逐级放大,可能导致软件产品报废。返回上一级的开发需要十分高昂的代价。随着软件规模和复杂性的增加,软件产品成功的机率大幅下降。瀑布模型的适应范围:它主要适应于小规模的软件开发。第三十九页,共五十五页。第四十页,共五十五页。2.2软件开发过程模型二、原型模型1.基本思想在获取一组基本的需求定义后,利用高级软件工具的可开发环境,快速地建立一个目标系统的最初版本,并把它交给用户试用、补充和修改,再进行新的版本开发。反复进行这个过程,直到得出系统的“精确解”,即用户满意为止。经过这样一个反复补充和修改的过程,应用系统的“最初版本”就逐步演变为系统的“最终版本”。第四十一页,共五十五页。1.2软件的生存周期及其开发模型原型:一个具体的可执行模型,它实现了系统的若干功能。原型法:不断地运行系统“原型”来进行启发、揭示和判断的系统开发方法。第四十二页,共五十五页。1.2软件的生存周期及其开发模型原型法的主要思路:根据用户的需求迅速构造一个低成本的用于演示及评价的试验系统(原型)由用户对原型进行评价在用户评价的基础上对原型进行修改或重构。

第四十三页,共五十五页。1.2软件的生存周期及其开发模型有了满意的系统原型,同时也积累了使用原型的经验,用户常会提出新目标,从而进一步重新构造原型周期。新目标的范围要比修改或补充不满意的原型大。(1)渐增型(2)用于验证软件需求的原型(3)用于验证设计方案第四十四页,共五十五页。1.2软件的生存周期及其开发模型3.软件原型是软件的最初版本,以最少的费用、最短的时间开发出的、以反映最后软件的主要特征的系统。它具有以下特征:(1)它是一个可实际运行的系统。第四十五页,共五十五页。1.2软件的生存周期及其开发模型(2)它没有固定的生存期。一种极端是扔掉原型(以最简便方式大量借用已有软件,做出最后产品的模型,证实产品设想是成功的,但产品中并不使用);另一种极端是最终产品的一部分即增量原型(先做出最终产品的核心部分,逐步增加补充模块),演进原型居于其中(每一版本扔掉一点,增加一点,逐步完善至最终产品)。第四十六页,共五十五页。1.2软件的生存周期及其开发模型(3)从需求分析到最终产品都可作原型,即可为不同目标作原型。(4)它必须快速、廉价。(5)它是迭代过程的集成部分,即每次经用户评价后修改、运行,不断重复双方认可。第四十七页,共五十五页。快速原型法的特点:有直观的系统开发过程用户参与系统开发的全过程可以逐步明确用户需求用户直接掌握系统的开发进度用户接受程度高1.2软件的生存周期及其开发模型第四十八页,共五十五页。1.2软件的生存周期及其开发模型快速原型法的不足:不适用于拥有大量计算或控制功能的系统不适用于大型或复杂的系统容易掩盖需求、分析、设计等方面的问题结果不确定——随原型构造评价过程而定整体考虑较少

温馨提示

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

评论

0/150

提交评论