




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件开发工具,课程目的,了解软件开发工具的概念、理论基础、基本功能、发展现状与前景,以便能够在实际工作中正确地选择与使用软件开发工具 帮助大家了解和熟悉一些常见实用的软件工具,了解开发大型软件的基本过程 回顾总结以前所学的内容,进一步理解其在实际开发工作中的作用 为实际的软件开发工作做准备 培养具备基本的科学研究素质,课程要求,熟练掌握课程内容 认真完成作业 上机实验,第1章 绪论,本章内容,预备知识 1.1软件开发工具的由来 1.2件开发工具的概念 1.3软件开发工具的功能和性能 1.4软件开发工具的类别 1.5开发软件的研究和应用,软件发展的几个阶段,(1)机器语言阶段;使用0、1代码进行
2、编程。 (2)汇编语言阶段;使用助记符来编写程序,由汇编程序汇编成机器码,编程工作量大大降低,但仍未摆脱对硬件的依赖。与此同时,操作系统的出现从另一方面改善了人们应用计算机的条件。 (3)高级语言阶段、高级语言突破了与机器指令一一对应的限制,大大提高了程序的可移植性。 (4)第四代语言阶段,人们希望机器能够自动地完成更多的工作,包括自动安排某些工作的顺序,而做到只要给机器下达做什么的命令,由机器自己去安排执行的顺序。,(5)利用通用软件作为辅助工具的阶段利用文字处理软件来编写文档,利用绘图软件来绘制流程图等。 (6)专用软件开发工具阶段支持软件开发的某一个阶段或某一个环节。 (7)集成的软件开
3、发工具阶段零散的、分散地支持各个工作阶段、各项具体工作的专用工具之间没有有机地联系起来,从而必然造成冲突与矛盾,以致抵消了使用工具带来的益处。这种情况导致了集成的软件开发工具的产生。,软件开发工作的发展特点,软件的规模越来越大,软件开发工作的内容也越来越复杂 开发人员离物理的机器世界越来越远,离软件用户越来越近 软件开发工作从以编码为中心向以需求分析和系统设计为中心转化 软件开发工作从一次性的过程向不断循环、往复更新的过程发展,软件开发的过程,需求分析(提出初始要求,形成功能说明) 总体设计(包括软件的模块设计、数据结构的设计、各部份的连接方式和信息交换的标准) 编写程序和编写文档(实现阶段)
4、 测试和调试(包括模块的测试和整个软件的联调) 应用见效(提出评价与改进要求,进入下一版本的开发),软件开发的基本问题,将软件从用户的理解转换为程序员的理解 将软件从程序员的理解转换到计算机上的程序实现,大型软件开发中的困难,保持一致性的问题(人员之间各部份间的协调配合) 全面测试(软件的复杂性只能用黑箱测试) 控制工作进度(软件的复杂性,测试修改难于按时完成) 文档与代码进行协调(代码常改,文档难改,代码容易与文档脱节) 版本更新,对软件开发过程的再认识,从工作任务的角度分析: 需求分析、总体设计、编制程序和文档、测试和联调 从参与开发过程的角色分析: 项目负责人、系统分析设计人员、开发人员
5、、用户、计算机软硬件 从软件开发过程中的各阶段成果分析: 功能说明书、总体设计文件和各模块的设计任务书、软件和各类文档(包括使用说明、用户手册的等)、测试计划和测试报告,软件开发方法的发展,线型程序设计 结构化程序设计方法 软件工程 面向对象程序设计方法 组件化程序设计方法,线形程序设计,早期的程序设计 源代码的重用性差 不能控制数据项的可见性,结构化程序设计,诞生于60年代 设计思路是:自顶向下、逐步求精。 程序结构按功能划分为若干个基本模块 ,这些模块形成一个树状结构。模块化 实现的具体方法是使用子程序 三种基本结构 缺点是数据与过程相互独立,软件工程的方法,强调两个方面: 工作步骤 交流
6、标准,面向对象程序设计,将数据和对数据的操作作为一个整体来 处理 按人们认识世界的方法和方式来分析和 解决问题,面向对象程序设计,易于扩充、修改、维护 易于实现软件重用 扩充到OOA、OOD、ODBMS等方面,称为面向对象软件开发方法,组件化程序设计,强调软件重用和高度的互操作性 将软件分成若干独立但相互之间有联系的组件,将这些组件组装成软件产品 组件化程序设计的核心:组件的生产和组件的装配,组件化程序设计,关于组件 软件的基本量子,具有一定功能,可插用,可维护 软件开发中的可替换单元,封装了设计决策,与其他组件结合组成更大的单元 具有特定功能,可跨越进程边界,实现网络、语言、应用程序、开发工
7、具、操作系统的“即插即用”的独立对象 是任何可被分离出来的,具有标准化的可重用的公开接口的软件,组件化程序设计,组件的特征 组件之间在二进制级别上集成和重用 独立地生产、获得和配置,组件化程序设计,组件的接口 描述组件对外提供的服务,组件和组件之间、组件和客户之间同时通过接口进行交互 组件接口的稳定性 组件接口的“自我描述性”,描述标准IDL语言,组件化程序设计,目前比较成熟的规范 COM(Component Object Model) CORBA(Common Objects Request Broker Architecture),软件工程,软件工程是研究软件开发和软件管理的一门工程科学。
8、 现代软件工程研究的内容:,软件工程,软件 vs. 程序 面向过程的程序算法数据结构 面向对象的程序对象消息 面向组件的程序组件构架 软件 程序 数据 文档,软件的生存周期与开发模型,生存周期与选择的开发模型有关 软件开发模型 瀑布模型 增量模型 迭代模型 原型模型,软件生存周期(一般说法),立项(或签约)、下达任务书 需求分析 概要设计 详细设计 编码实现,软件测试 软件发布与实施 软件维护 版本更新或退役,瀑布模型,软件在生存周期中不同的阶段,自上而下,互相衔接,逐级下落,具有固定的次序 适合于结构化面向过程的软件开发方法 特点 里程碑或基线驱动,或文档驱动 过程逆转性差或不可逆转,瀑布模
9、型,缺点:问题堆积 克服:严格的里程碑管理制度(微软) 阶段评审和不符合项的动态跟踪(CMM) 仍广泛使用的模型,增量模型,用递增方式进行软件开发。软件作为一组增量部件,每次设计、实现、集成、测试和交付一块部件,直到所有部件全部实现为止。 软件系统本身模块化,单个模块高内聚,模块之间低耦合,模块可组装拆卸,增量模型,特点 任务或功能模块驱动,可分阶段提交 有多个任务单,迭代模型,针对瀑布模型的缺点。采取循环的工作方式,每次循环使工作产品接近目标一次 多次执行各个开发工作流程,最终交付一系列逐步完善的实施成果。,迭代模型,一次迭代 每次按顺序完成一系列工作流程 以次要里程碑(Minor Mile
10、stone)结束 需对迭代结果进行评估 迭代发布的产品 是开发过程最终产品的子集,迭代模型,迭代生存周期4个阶段 初始阶段:确定系统的业务和项目的范围 精化阶段:分析问题域、细化产品定义、定义系统架构并建立基线 构建阶段:反复开发,完善产品 移交阶段:将产品交付用户,安装、培训、交付、维护等,迭代模型,面向对象的工具(如Rose)和UML比较适合迭代方法,原型模型,在初步需求分析之后,马上向客户展现一个软件产品原型,根据客户试用意见不断修改原型,直到客户确认为止。 特点:原型驱动,需要有一个原型或原型的核心 快速原型法 缺点:不利于开发人员的创新,软件工程,软件工程是研究软件开发和软件管理的一
11、门工程科学。 现代软件工程研究的内容:,软件工程的三要素,软件工程的开发方法 支持开发方法的工具 软件管理过程,软件工程的基本原理,B.W.Boehm 于1983年提出 用分阶段的生存周期计划严格管理软件开发。阶段划分为计划、分析、设计、编程、测试和运行维护。 坚持实行阶段评审。上一阶段评审不通过,就不能进入下一阶段开发 实行严格的产品版本控制。,采用现代程序设计技术。 结果应能清楚地审查。因此对文档有严格要求。 开发小组的成员要少而精。 要不断地改进软件工程的技术和经验。,软件开发项目的管理,项目管理的要素:质量、进度、费用、资源利用 软件评价标准:正确性、易用性(界面友好)、效率、可靠性、
12、可维护性、与可重用性 单个程序员的标准:了解程序设计的基本知识和技能、了解所涉及的应用领域、熟悉软件开发的技术与环境,软件开发项目的管理,项目组对程序员的要求:严格限于本模块范围、严格按总体设计的要求、按统一规定存取公用数据、按统一规格命名标识符、按统一要求编写文档、保持程序风格的一致 对软件开发项目组的评价(CMM模型):有严格成文的工作规范和文档标准、有严格的分工、有详细的工作进度表并得到严格执行,软件工程的三要素,软件工程的开发方法 支持开发方法的工具 软件管理过程,软件工程的支持过程,软件工程的过程 指软件生存周期(Life Cycle)中的时间序列 。 例如可将一个软件的生存周期划分
13、为市场调研、立项、需求分析、策划、概要设计、详细设计、编程、单体测试、集成测试、运行和维护这几个过程,软件工程的支持过程,由支持软件生存周期各个阶段的生产工具所组成。生产工具诸如需求分析工具、设计工具、实现工具、测试工具、维护工具、配置工具、开发环境(又称为CASE工具)。 软件开发环境,是指能够连续的支持多个开发阶段的CASE工具。,说明,本课程按软件工程各不同阶段来介绍需要的工具和实现的功能 以实际工具中可能用到的为主,以微软、或容易获得的开源的工具为重点。,1.1软件开发工具的由来,计算机语言的发展阶段:第一代:机器语言;第二代汇编语言;第三代:高级程序设计语言;第四代:非过程化语言 非
14、过程化语言的思想:人们希望机器能自动地完成更多的工作,包括自动安排某些工作顺序,二做到只要给机器下达需要做什么的命令,由机器自己去安排执行的顺序。,软件危机,软件危机(Software Crisis) 是计算机软件在它的开发和维护过程中所遇到的一系列严重问题。概括地说,主要包含两方面的问题:如何开发软件,怎样满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。,软件危机的主要表现:,1. 对软件开发成本和进度的估计常常很不准确。 实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几个月甚至几年的现象并不罕见。这种现象降低了开发组织的信誉。为赶进度和节约成本所采取的权宜之计往往
15、又损害了软件产品的质量,从而不可避免地引起用户的不满。 2. 用户对“已完成的”软件系统不满意的现象经常发生。 软件开发人员常常在对用户需求只有模糊的了解,甚至对所要解决的问题还没有确切认识的情况下,就仓促上阵匆忙着手编写程序。软件开发人员和用户之间的交流往往很不充分,“闭门造车”必然导致最终产品不符合用户实际需要。,3. 软件产品的质量常常靠不住。 软件可靠性和质量保证的确切定量概念刚刚出现,软件质量保证技术(审查、复审和测试)还没有坚持不懈地应用到软件开发的全过程中,这些都会导致软件产品发生质量问题。 4. 软件常常是不可维护的。 程序中的错误很难改正,实际上不可能使这些程序适应新的硬件环
16、境,也不能根据用户的需求在原有程序中增加新的功能。,5. 软件通常没有适当的文档资料。 软件不仅是程序,还应该有一整套文档资料。这些文档资料是在软件开发过程中产生出来的,而且应该是“最新的”(与代码完全一致)。缺乏文档必然给软件的开发和维护带来许多严重的困难和问题。,6. 软件成本在计算机系统总成本中所占比例逐年上升。 随着微电子技术的进步和生产自动化程度的提高,硬件成本逐年下降,然而软件开发需要大量的人力,软件成本随着通货膨胀以及软件规模和数量的不断扩大而逐年上升。美国在1995年的调查表明,软件成本大约已占计算机系统总成本的90%。,通用软件的弱点:1.由许多工作是通用软件不能完成的; 2
17、.某些工作只能表现表面的形式,不能反映其逻辑内涵; 3.难于保持一致性的困难。IBM的AD/Cycle失败的原因(两个):1.拘泥于集中式的处理思路; 2.背离了开放性的大趋势,软件开发工具的出现 在高级程序设计语言的基础上,为提高软件开发的质量和效率,从规划、分析、设计、测试、成文和管理各方面,对软件开发者提供各种不同程度的帮助的一类广泛的软件。,1.2件开发工具的概念,软件开发工具的概念要点:(继承性与创新)a. 在高级程序设计语言(第三代)之后,软件技术进一步发展的产物;b. 目的是在人们开发软件过程中给予人们各种不同方面、程度的支持或帮助c.支持软件开发的全过程,而不是仅限于编码或其它
18、的特定工作阶段。,硬件和软件的关系:硬件是躯体,软件是灵魂。 软件的特性:软件是看不见,莫不着的但是发挥重要作用的事先编好的指令系列。软件是用户与硬件之间的桥梁。软件包括程序和文档两个不可缺少的组成部分。,软件开发的发展阶段,第一代计算机语言(机器语言) 第二代计算机语言(汇编语言) 第三代计算机语言(高级程序设计语言) 第四代计算机语言(非过程化语言) 通用软件辅助开发工具 软件开发工具的涌现 专用软件开发工具 集成的软件开发工具,软件开发的发展阶段,最初阶段,软件开发的发展阶段,第二阶段,软件开发的发展阶段,第三阶段,软件开发的发展阶段,第四阶段,几个概念,软件开发工具学(也即软件开发工具
19、)和软件开发方法学的区别:前者着重于实际应用和工具开发;后者着重于方法论的研究;后者是前者的理论基础,第四代语言(4GL),第四代语言的原意是非过程化的程序设计语言。针对以处理过程为中心的第三代语言,它希望通过某些标准处理过程的自动生成,使得用户可以只说明要求做什么,而把具体的执行步骤的安排交由软件自动处理。,CASE 技术,计算机辅助软件工程技术可以简单地定义为软件开发的自动化,通常简称为CASE(Computer Aided Software Engineering)技术。,完整的CASE包括: CASE方法(快速原型法或迭代方法) CASE技术(实体关系建模技术或面向对象建模技术) CA
20、SE工具(软件开发环境,如Rational Rose),(1)CASE 工具 CASE 工具不同于以往的软件工具,主要体现在以下的几个方面: 支持专用的个人计算环境; 使用图形功能对软件系统进行说明并建立文档; 将软件生存期各阶段的工作连接在一起; 收集和连接软件系统中从最初的需求到软件维护各个环节的所有信息; 用人工智能技术实现软件开发和维护工作的自动化。,(2)CASE的作用 CASE有如下三大作用,这些作用从根本上改变了软件系统的开发方式。 一个具有快速响应、专用资源和早期查错功能的交互式开发环境。 对软件的开发和维护过程中的许多环节实现了自动化。 通过一个强有力的图形接口,实现了直观的
21、程序设计。,所见即所得,在程序设计时,对于界面上的设计只需要用键盘或鼠标在屏幕上直接设计,不用手写代码。设计人员在屏幕上看到的界面,就是所生成程序的运行界面。,可视化编程,可视化编程:以“所见即所得”的编程思想为原则,力图实现编程工作的可视化,即随时可以看到结果,程序的调整与结果的调整同步进行。,即插即用的软件设计方法,一部分人专门生产软件组件,而另一部分人则构造整个软件的结构,并且把软件组件插入这个结构,以便迅速地完成大型软件的研制工作,这就是即插即用的软件设计方法。,1.3软件开发工具的功能和性能,软件开发过程(阶段、成果)第一阶段:初始要求的提出 成果:软件功能说明书 第二阶段:总体设计 成果:系统的总体设计文件及各个模块的设计任务书,第三阶段:程序的编写和文档的编写(实现阶段) 第四阶段:测试或调试阶段 包括:模块的调试和整个软件的联调,软件开发工具的功能:(做什么)a.认识与描述客观系统; b.储存和管理开发过程中的信息;c.代码的编写或生成; d.文档的编制和生成; e.软件项目管理,软件开发的性能:(做到什么程度) a.表达能力或描述能力; b.保持信息一致性的能力; c.使用方便程度; d.工具可靠程度; e.对硬件和软件环境要求,1.4软件开发工具的类别,基于应用领域划分的工具 按照应用领域的不同,应用软件可以分为事务处理、实时应用、嵌入式应用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司目录设计排版方案
- 家政物料补充方案
- 大班健康活动:哭的奥秘
- 小儿护理考试题及答案
- 维护电工考试题及答案
- 油库节约管理方案(3篇)
- 2026版《全品高考》选考复习方案生物1057 课时作业(五十二) 动物细胞工程 含答案
- 消防中队考试题及答案
- 物业车辆维护管理方案
- 面神经麻痹考试题及答案
- 2022年海口投资管理有限公司招聘笔试试题及答案解析
- 青蓝工程师傅心得体会
- 风机基础锚栓安装技术交底
- 2022更新国家开放大学电大《调剂学》网络核心课形考网考作业及答案
- 广西鼎固经纬新材料科技有限公司年加工50万吨矿粉生产项目环评报告表
- 外研版六年级英语下册 Module2 unit1 教学课件PPT小学公开课
- 2021-2022学年人教版数学六年级上册第一单元测试卷【含答案】
- 《别墅设计任务书》word版
- EN 4644-001-2017(高清正版)
- 预应力混凝土简支T形梁桥毕业论文
- 变频器变频altivar71说明书
评论
0/150
提交评论