您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第01章 软件工程学概述
1授课教师:谢春丽联络电话:2865150E-MAIL:chunlixie@hotmail.com2一、课程简介软件工程是支撑软件产业的新学科,它主要是研究软件结构、软件设计与维护方法、软件工具与环境、软件工程标准和规范、软件开发技术与管理技术的相关理论。本课程只能作为软件工程的入门,介绍一些基本概念、方法和基本原理。包括软件工程概论,软件计划,软件需求分析,软件总体设计,软件详细设计,软件编码,软件测试,软件维护以及面向对象方法学,面向对象分析,面向对象设计。初步具备开发小型系统的能力。3二、教学与考查方法1、使用计算机辅助教学,减少传统的板书时间,集中精力于讲解;2、理论联系实际,结合实际软件工程的例子教学;3、强调实际软件工程能力的培养,每个学生必须参加一个软件工程小组,完成一个实际软件工程案例实习,并撰写软件开发文档;4、平时10%,实习20%,考试70%。4三、教材与参考资料1。《软件工程导论》,张海藩编著2。《软件工程方法学及应用》,汤庸编著3。《实用面向对象软件工程教程》,殷人昆等译4。《现代软件工程》,周之英编著5。《软件工程实践者的研究方法》,黄柏素梅宏译6。《软件工程》姚淑珍杨文龙编著5四、课程内容第一章软件工程学概述第二章可行性研究第三章需求分析第四章形式化说明技术第五章总体设计第六章详细设计第七章实现第八章维护6四、课程内容(续)第九章面向对象方法学引论第十章面向对象分析第十一章面向对象设计第十二章面向对象实现第十三章软件项目管理7序软件的定义81、软件的发展(3个阶段)(1)、程序设计阶段(60年代中之前).特点:程序规模小,编写者与使用者往往是同一人,没有系统的方法可循,没有设计文档资料。生产方式是:个体手工方式。软件=程序(2)、程序系统阶段(60‘中---70’中)特点:程序规模大,这个时期引入多道程序设计、多用户系统、数据库管理系统,软件产品大量销售,软件数量急增。生产方式是:由个体发展为软件车间软件=程序+说明书这个时期软件维护耗资巨增,更严重是软件产品不可维护,导致软件危机。诞生了软件工程这个新兴学科(68年)。9(3)软件工程阶段:(70年代~现在)特点:打破软件设计的个体化特征,有了软件工程化的设计原则、方法和标准。软件产业兴起了软件产品化、系列化、工程化和标准化。生产方式是:由软件车间联成软件工厂、公司。软件=程序+文档但是软件标准的规范不完善,软件危机仍然存在,必须加快促进软件工程的发展。现在正向着第四阶段发展,社会信息化、软件产业化的阶段过渡,从现在的技术性的软件工程阶段过渡到企业计算机,社会信息化的计算机系统工程阶段。102.根据《GB/T11457-89软件工程术语》中的定义:软件是指与计算机系统的操作有关的计算机程序、规程、规则以及任何与之有关的文件。简单地说,软件包括程序和文档两部分。程序是指适合于计算机处理的指令序列以及所处理的数据;文档是与软件开发,维护和使用有关的文字材料。11软件的特点软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性软件的生产与硬件不同,在它的开发过程中没有明显的制造过程在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题1213按软件规模进行划分:类别参加人员数研制期限源程序行数微型11~4周0.5k小型11~6月1k~2k中型2~51~2年5k~50k大型5~202~3年50k~100k甚大型100~10004~5年1M(=1000k)极大型2000~50005~10年1M~10M软件的分类14第一章软件危机与软件工程第一节软件危机第二节软件工程第三节软件生命周期第四节软件过程15软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。主要是两个问题。1.如何开发软件,怎样满足对软件的日益增长的需求。2.如何维护数量不断膨胀的已有软件第一节软件的危机一、什么是软件危机16二、软件危机的表现对软件开发成本和进度的估计常常不准确。开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见。用户对“已完成”系统不满意的现象经常发生软件产品的质量往往靠不住。软件的可维护程度非常之低。软件通常没有适当的文档资料。软件的成本不断提高。软件开发生产率的提高赶不上硬件的发展和人们需求的增长。171、与软件本身的特点有关•软件不同于硬件,它是计算机系统的逻辑部件而不是物理部件。在写出程序代码并在计算机运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价。因此,管理和控制软件开发过程相当困难。2、软件不易于维护软件维护通常意味着改正或修改原来的设计,客观上使软件较难维护。软件不同于一般程序,它的规模大,不易于维护3、在软件开发过程中,或多或少地采用了错误的方法和技术4、用户需求没有完整准确的认识,就匆忙着手编写程序三、产生软件危机的原因在软件开发和维护的过程中存在这么多严重问题,其原因归纳如下:18软件的需求定义和分析技术软件设计与设计审查技术软件设计表现技术软件测试技术软件可靠性的理论及评价方法软件扩充与维护软件成本估算技术(1)技术措施-采用先进的技术、方法与工具来开发与设计软件。技术是指生产管理技术。四、解决软件危机的途径:解决软件危机的途径就是软件工程学的生成过程。主要有:19方法是开发规范方法与开发模型。规范方法有基本开发步骤及每一步的条件、目的、结果软件评价标准软件文件格式开发模型有生存周期(瀑布)模型原型模型总体数据库规划模型工具是提高软件开发效率的开发软件的软件。20(2)组织管理措施-是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目.软件工程项目管理是通过人员组织管理、项目计划管理、标准化量化管理、配置管理,保证软件产品按期高质量完成。总之,为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。21第二节软件工程及其基本原理软件工程:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。软件工程包括两方面内容:软件开发技术和软件项目管理。一、软件工程的基本原理(7条)(1)用分阶段的生命周期计划严格管理。把软件生命周期划分成若干个阶段,相应地制定出确实可行的计划,然后严格按照计划对软件的开发与维护工作进行管理。(2)坚持进行阶段评审。(3)实行严格的产品控制。(不要随意改变需求)“软件工程”一词是1968年北大西洋公约组织(NATO)在联邦德国召开的一次会议上首次提出。22(4)采用现代程序设计技术。(提高软件开发的效率和维护的效率)有:结构程序设计技术、结构分析、结构设计及面向对象设计方法。(5)结果应能清楚地审查。根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准。(6)开发小组的人员应该少而精。(素质高,人数少)人员的素质和数量是影响软件质量和开发效率的重要因素。(7)承认不断改进软件工程实践的必要性。(既要吸取新技术,又要总结经验)23软件工程三要素:方法、工具和过程软件工程方法为软件开发提供了“如何做”的技术软件工具为软件工程方法提供了自动的或半自动的软件支撑环境24软件工程过程定义了:方法使用的顺序要求交付的文档资料为保证质量和适应变化所需要的管理软件开发各个阶段完成的里程碑25软件工程项目的基本目标付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的维护费用能按时完成开发工作,及时交付使用26判断软件好坏的标准正确性:软件系统本身没有错误,符合规定的需求。可靠性:正确性和健壮性。简明性:软件简明易读。有效性:软件的时间效率和空间效率要高。可维护性:修改和升级的容易程度。适应性:使不同的系统约束条件和用户需求得到满足的容易程度。27软件生存周期1、定义(GB/T11457)软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存期2、理解要点1)、从时间角度分解软件开发和维护中的各种复杂问题;2)、是一个描述软件生存周期内系统开发、操作和维护所需实施的过程、活动和任务的框架;3)、软件生存周期阶段的划分可因软件的规模、种类、开发方式、开发环境、开发方法的不同而不同。4)、1988年发布的GB8566《计算机软件开发规范》中软件生存周期阶段的划分是基于“瀑布模型”给出的。第三节软件生存周期283、生命周期各阶段的基本任务※生命周期阶段的划分原则:(1)各阶段的任务相对独立。(2)同一阶段任务的性质相同。※生命周期阶段的划分(三阶段):软件定义(系统分析)问题定义可行性研究需求分析总体设计详细设计编码和单元测试综合测试软件开发软件维护(运行维护)系统设计系统实现29※生命周期各阶段的基本任务:(1)问题定义(解决什么问题?)任务:提出关于问题的性质、工程目标和规模的书面报告(比较含糊)。(2)可行性研究(确定所提的问题是否有可行的解决方法)任务:导出系统的高层逻辑模型(数据流表示);确定工程目标和规模(具体);估计系统的成本和效益。30低成本的解决方案中等成本的解决方案高成本的解决方案(3)需求分析(确定系统必须做什么,有什么功能)任务:确定目标系统有什么功能;用数据流图、数据字典和简要的算法表示系统的逻辑模型。(4)总体设计(如何解决问题)任务:※提出解决问题的可能方案:(用系统流程图)31※估计每种方案的成本和效益,推荐最佳方案,制定该方案的详细设计;※设计软件的结构(用层次图或结构图描绘),确定程序由哪些模块组成以及模块间的关系。(5)详细设计(模块设计,怎样具体地实现功能)任务:※问题具体化;※设计程序的详细规格说明(用HIPO层次图或PDL过程设计语言描述)32(6)编码和单元测试(详细设计翻译成程序)任务:※写出正确的程序模块(易理解、易维护的)※测试编写的程序模块(7)综合测试(验证结果)任务:符合要求的测试。包括集成测试和验收测试。集成测试:根据设计的软件结构,将模块装配起来,在装配过程中对程序进行测试。验收测试。按照规格说明书的规定,有用户对目标系统进行验收。33(8)软件维护任务:通过各种维护使系统持久地满足用户的需要。包括以下4种:★改正性维护:诊断和改正在使用过程中发现的软件错误。★适应性维护:修改软件以适应环境的变化。★完善性维护:根据用户的要求改进或扩展软件使之更完善。★预防性维护:修改软件为将来的维护做准备。34维护的步骤如下:提出维护报告(要求);分析维护要求;提出维护方案;审批维护方案;确定维护计划;修改软件设计;修改程序;测试程序;复查验收。※维护都要有记录文档资料。35完整准确的维护记录持久地满足用户需要维护综合测试方案和结果;完整一致的软件配置符合要求的软件综合测试源程序清单;单元测试方案和结果正确的程序模块编码和单元测试HIPO或PDL怎样具体的实现详细设计系统流程图;成本/效益分析层次图和结构图如何解决问题?总体设计系统的逻辑模型;数据流图;数据字典,算法描述系统必须做什么?需求分析系统的高层逻辑模型;数据流图;成本/效益分析是否可行?可行性研究关于规模和目标的报告书问题是什么?问题定义结束标准(任务)关键问题阶段总结:软件生命周期小结(结构分析设计过程)36程序员应具有的素质:1:团队精神和协作能力2:文档习惯3:规范化,标准化的代码编写习惯4:需求理解能力5:复用性,模块化思维能力6:测试习惯7:学习和总结的能力37高级程序员,系统分析员还应具有的素质1:需求分析能力2:项目设计方法和流程处理能力3:复用设计和模块化分解能力4:整体项目评估能力5:团队组织管理能力38涉及人员:产品规划人员产品管理人员程序管理产品设计产品可用性评估工程师开发人员测试人员本地化人员产品支持人员运营管理四个阶段:规划阶段开发阶段测试和稳定化阶段最后的发布阶段39文档文档••用户文档•用户手册•操作手册•维护修改建议•软件需求(规格)说明书•开发文档••软件需求(规格)说明书•数据要求说明书•概要设计说明书•详细设计说明书•可行性研究报告•项目开发
本文标题:第01章 软件工程学概述
链接地址:https://www.777doc.com/doc-3415720 .html