您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第一章 软件工程概述1
ITofBUUSoftwareEngineering1ITofBUUSoftwareEngineering2付百文信息学院软件工程系DepartmentofSoftwareEngineering,InformationCollege,BUU北院D楼4层40252012年8月《软件工程》ITofBUUSoftwareEngineering3引言写一个helloworld程序/开发一个图书馆图书信息管理软件过程中西医事业/汽车业的发展ITofBUUSoftwareEngineering4课程性质《软件工程》是信息学院平台课。•总学时16学时(1学分)•讲课:16学时•独立实训:48学时(2学分)先修课《程序设计基础》。后续课:《软件工程实践》17/18周,独立实训,48学时,2学分.目的:通过教学,使学生对软件开发过程中必须遵循的基本原理、方法和工程标准有基本的了解,了解软件开发各阶段文档的写作规范,熟悉项目开发的完整过程,为毕业设计、专业实践和工作打下相应的工程基础。ITofBUUSoftwareEngineering5课程要求本课程要求:平时(含出勤10、作业20、测验20等):50分考试:50分重点:基本的理论、方法、概念和灵活应用。注重平时的作业。答疑:周三/周四(12:00-12:40),北院D楼4层4025室ITofBUUSoftwareEngineering6第一章软件工程概述1.1软件与软件危机1.2软件工程1.3软件过程模型1.4软件开发方法简述1.5软件工程标准1.6软件工程师职业道德规范参考文献习题ITofBUUSoftwareEngineering7教学要求教学目的:了解软件与软件工程的基本概念及基本内容;了解软件开发过程各阶段组成及主流开发方法的特点,包括结构化开发方法、面向对象的开发方法等。教学重点难点:软件和软件工程的基本概念与关系软件工程学的主要内容软件开发过程各阶段的任务。ITofBUUSoftwareEngineering81.1软件与软件危机1.软件定义1983年,IEEE(国际电气与电子工程协会)为软件下的定义是:计算机程序、方法、规则和相关的文档资料以及在计算机上运行时所必需的数据。对软件比较公认的解释:软件是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档。记住软件=程序+数据+文档软件≠程序ITofBUUSoftwareEngineering91.1.1软件的特点复杂性可变性不可见性ITofBUUSoftwareEngineering101.1.1软件的特点软件是一种逻辑实体,具有抽象性。人们可以把它记录在纸上、磁盘或光盘等介质上,但却无法看到软件本身的形态,必须通过观察、分析、思考和判断才能了解它的功能和性能。软件一旦研究开发成功,其再生产过程就变成复制过程,不像其他工程产品那样有明显的生产制造过程。由于软件复制非常容易,因此出现了软件产品的版权保护问题和打击盗版的问题。软件对硬件和环境有着不同程度的依赖性,这导致了软件升级和移植的问题。计算机硬件和支撑环境不断升级,为了适应运行环境的变化,软件也需要不断维护,并且维护的成本通常比开发成本高许多。ITofBUUSoftwareEngineering11软件的特点(续)软件生产至今尚未摆脱手工方式,软件开发的手工行为造就了一个致命的问题,就是为应用“量身订做”软件。长期以来,软件给人的感觉是修改几条指令很简单,客户总是强调软件要适应自己的业务需求。因此,软件产品大多是为客户“订做”的,通用性差。软件的生产是设计工作(智力活动),不是机械化的生产(机械活动);它更象图纸或模型的设计工作.软件涉及各行各业的知识,这对软件工程师提出了很高要求。软件不仅是一种在市场上推销的工业产品,也是与文学艺术作品相似的精神作品。与体力劳动相比,精神活动过程的特点是“不可见性”,这大大增加了组织管理上的困难。ITofBUUSoftwareEngineering12社会对软件的要求用户的需求更高、涉及的领域更广软件运行环境更加庞大软件更新换代更加频繁ITofBUUSoftwareEngineering131.1.2软件危机--软件生产的现状“已完成”的软件不满足用户的需求软件产品的质量没有保证。开发进度不能保障,交付时间一再拖延。开发成本超出预算。软件没有适当的文档危机定义:计算机软件开发和维护过程中所遇到的一系列严重问题。ITofBUUSoftwareEngineering14软件危机的表现不能满足用户的需求成本/进度难以控制(开发成本超出预算/交付时间一再拖延)性能(可靠性/安全性/容错性)没有保证。维护困难(软件没有适当的文档)危机定义:计算机软件开发和维护过程中所遇到的一系列严重问题。ITofBUUSoftwareEngineering15产生软件危机的原因软件的特点有关需求方面用户的需求更高、涉及的领域更广软件运行环境更加庞大软件更新换代更加频繁软件的规模越来越大,结构越复杂技术工具方面与软件开发和维护的方法有关开发技术/开发工具与生产方式落后管理方面软件开发管理困难且复杂ITofBUUSoftwareEngineering161.2软件行业的出路?--软件工程1)1993IEEE软件工程定义:软件工程是①将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,②对①中所选方法的研究。注意:软件工程研究所依据的基础理论:数学、计算机科学、经济学、工程学、管理学和心理学等学科。ITofBUUSoftwareEngineering172)规范化和文档化规范化:使众多的开发者遵守相同的规范,使软件生产摆脱个人生产方式,进入标准化、工程化的生产方式—关注国标、行标。文档化:把软件的设计思想、设计过程和实现过程完整地记录下来,便于各类相关人员交流和沟通;使软件开发过程由不可见变为可见,便于管理者对软件生产进度和开发过程进行管理;是验收、质量检测的标准和依据。ITofBUUSoftwareEngineering183)软件工程的目标软件工程旨在开发满足用户需要、及时交付、不超过预算和无故障的软件,其主要目标如下:实现预期的软件功能,达到较好的软件性能,满足用户的需求。增强软件过程可见性和可控性,保证软件的质量。提高软件的可维护性,降低维护费用。提高软件开发生产率,及时交付使用。合理预算开发成本,付出较低的开发费用。ITofBUUSoftwareEngineering194)软件工程发展简史1968年在德国格密斯(Garmish)举行的学术会议上,北大西洋公约组织(NATO)正式提出了“软件工程”这一术语。软件工程作为工程学科家族中的新成员,对软件产业的形成和发展起了决定性作用,它指导人们科学地开发软件,有效地管理软件项目,对提高软件质量具有重要作用。ITofBUUSoftwareEngineering20软件工程发展简史(续)在20世纪70年代基本形成了软件工程的概念、框架、方法,被称之为第一代软件工程,即传统软件工程。结构化分析、结构化设计和结构化编程方法是这个时期的代表。80年代出现的Smalltalk80程序设计语言标志着面向对象程序设计进入了实用阶段,从80年代中到90年代中,研究的重点转移到面向对象分析和设计上来,从而演化成软件工程的第二代,称之为对象工程。90年代后期,软件工程的一个重要进展就是基于组件的开发方法。为了提高软件生产力,尽可能地利用可复用组件来组装成新的应用软件系统。到目前为止,组件技术的研究和发展形成了新一代软件工程,即第三代软件工程,也有不少人称之为组件工程。ITofBUUSoftwareEngineering215)软件工程7条基本原理原理1、用分阶段的生命周期计划严格管理原理2、坚持进行阶段评审。原理3、实行严格的产品控制原理4、采用现代程序设计技术原理5、结果应能清楚地审查原理6、开发小组的人员应该少而精原理7、承认不断改进软件工程实践的必要性ITofBUUSoftwareEngineering221.3软件过程模型定义:软件过程是人们开发和维护软件及相关产品(如软件项目计划,设计文档、代码、测试用例及用户手册)的活动、方法、实践和改进的集合。解释:过程是为了达到一个目标所进行的一系列活动,或者说是为达到一个目标而设计的“路线图”。ITofBUUSoftwareEngineering231.3.1软件生命周期一个软件从提出开发要求到废弃为止的整个时期。通常划分为:可行性分析与项目开发计划、需求分析、设计(概要/详细)、编码实现、测试、维护等阶段。ITofBUUSoftwareEngineering24阶段:可行性分析与项目开发计划:主要内容是确定和回答“要解决什么问题?”“解决问题的办法和费用?”“解决问题所需的资源和时间?”通过问题定义、可行性分析、制定项目开发计划来回答这些问题。ITofBUUSoftwareEngineering25阶段:需求分析:明确“为了解决这个问题,系统必须做什么?”。准确回答系统必须做什么,确定软件的具体功能。通过分析、整理和提炼所收集到的用户需求,建立完整的分析模型,将其编写成软件需求规格说明和初步的用户手册。通过评审需求规格说明书,确保对用户需求达到共同的理解与认识。需求规格说明书明确地描述了软件的功能,列出软件必须满足的所有约束条件,并定义软件的输入和输出接口。ITofBUUSoftwareEngineering26阶段:概要设计:概要设计“系统的蓝图”。确定解决问题的策略,设计目标系统框架结构和主要元素的布局。ITofBUUSoftwareEngineering27阶段:详细设计:把功能描述转换成精确的、结构化的过程描述。详细设计,根据整体结构设计具体的细节:用户界面设计,模块实现算法、数据结构和接口等,编写设计说明书,并组织进行设计评审。ITofBUUSoftwareEngineering28阶段:编码:将所设计的各个模块编写成计算机可接受的程序代码。ITofBUUSoftwareEngineering29阶段:测试设计测试用例,运行程序,发现错误,改正错误。在设计测试用例的基础上,测试软件的各个组成模块。然后,将各个模块集成起来,测试整个产品的功能和性能是否满足已有的规格说明。除了单个模块的测试外,还需要进行系统集成,以及集成测试、系统测试和验收测试等。ITofBUUSoftwareEngineering30阶段:运行和维护一旦软件交付运行之后,所做的任何修改就是维护。有改错性/功能扩展性维护。维护是软件过程的一个组成部分,应当在软件的设计和实现阶段充分考虑软件的可维护性。ITofBUUSoftwareEngineering311.3.2软件过程模型瀑布模型快速原型化模型演化模型螺旋模型ITofBUUSoftwareEngineering32瀑布模型由W.Royce于1970年首先提出的。规定了软件生命周期的各项活动:问题定义、可行性研究、需求分析、软件设计、编码、测试、运行和维护。各项活动自顶向下、相互衔接如同瀑布一样。这里的修饰词“瀑布”非常贴切,明确了一个活动结束,进入到下一个活动后,很难再回到前一个活动中去,也就是工作不可逆转。ITofBUUSoftwareEngineering33瀑布模型的优缺点:优点:强迫采用规范化的方法严格规定了每个阶段必须提交的文档——文档驱动每个阶段交出的所有产品都必须经过验证缺点:灵活性、应变性差ITofBUUSoftwareEngineering34快速原型化模型基本思想:在需求分析的同时,以较小的代价快速建立一个能够反映用户主要需求的原型系统。用户在原型系统上可以进行基本操作,并且提出改进意见。分析人员根据用户的意见完善原型,然后再由用户评价,提出建议,如此往复,直到开发的原型系统满足用户的需求为止。ITofBUUSoftwareEngineering35快速原型化模型的优缺点客户和开发者可以通过原型快速对需求达成一致优点
本文标题:第一章 软件工程概述1
链接地址:https://www.777doc.com/doc-4522137 .html