1、第一章 绪论,1.1软件开发工具的由来,1.2软件开发工具的概念,1.3软件开发工具的功能和性能,1.4软件开发工具的类别,1.5开发软件的研究和应用,学习软件开发工具的目的是什么?,了解软件开发工具的概念、理论基础、基本功能、发展现状与前景,以便能够在实际工作中正确地选择与使用软件开发工具,在必要时能够参加或组织软件开发工具的自行研制,从而达到提高软件工作水平与效率之目标。,1.1软件开发工具的由来,软件开发工具的范围定义: 在高级程序设计语言的基础上,为提高软件开发的质量和效率,从规划、分析、设计、测试、成文和管理各方面,对软件开发者提供各种不同程度的帮助的一类广泛的软件。,计算机语言的发
2、展阶段: 第一代:机器语言;第二代汇编语言;第三代:高级程序设计语言;第四代:非过程化语言 非过程化语言的思想: 人们希望机器能自动地完成更多的工作,包括自动安排某些工作顺序,二做到只要给机器下达需要做什么的命令,由机器自己去安排执行的顺序。,软件危机,软件危机(Software Crisis) 是计算机软件在它的开发和维护过程中所遇到的一系列严重问题。概括地说,主要包含两方面的问题:如何开发软件,怎样满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。,软件危机的主要表现:,1. 对软件开发成本和进度的估计常常很不准确。 实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几
3、个月甚至几年的现象并不罕见。这种现象降低了开发组织的信誉。为赶进度和节约成本所采取的权宜之计往往又损害了软件产品的质量,从而不可避免地引起用户的不满。 2. 用户对“已完成的”软件系统不满意的现象经常发生。软件开发人员常常在对用户需求只有模糊的了解,甚至对所要解决的问题还没有确切认识的情况下,就仓促上阵匆忙着手编写程序。软件开发人员和用户之间的交流往往很不充分,“闭门造车”必然导致最终产品不符合用户实际需要。 3. 软件产品的质量常常靠不住。 软件可靠性和质量保证的确切定量概念刚刚出现,软件质量保证技术(审查、复审和测试)还没有坚持不懈地应用到软件开发的全过程中,这些都会导致软件产品发生质量问
4、题。,4. 软件常常是不可维护的。 程序中的错误很难改正,实际上不可能使这些程序适应新的硬件环境,也不能根据用户的需求在原有程序中增加新的功能。 5. 软件通常没有适当的文档资料。 软件不仅是程序,还应该有一整套文档资料。这些文档资料是在软件开发过程中产生出来的,而且应该是“最新的”(与代码完全一致)。缺乏文档必然给软件的开发和维护带来许多严重的困难和问题。 6. 软件成本在计算机系统总成本中所占比例逐年上升。 随着微电子技术的进步和生产自动化程度的提高,硬件成本逐年下降,然而软件开发需要大量的人力,软件成本随着通货膨胀以及软件规模和数量的不断扩大而逐年上升。美国在1995年的调查表明,软件成
5、本大约已占计算机系统总成本的90%。,通用软件的弱点: 1.由许多工作是通用软件不能完成的;2.某些工作只能表现表面的形式,不能反映其逻辑内涵; 3.难于保持一致性的困难。 IBM的AD/Cycle失败的原因(两个): 1.拘泥于集中式的处理思路; 2.背离了开放性的大趋势,1.2件开发工具的概念,软件开发工具的概念要点:(继承性与创新) a.它似在高级程序设计语言(第三代)之后,软件技术进一步发展的产物; b.它的目的是在人们开发软件过程中给予人们各种不同方面、程度的支持或帮助 c.支持软件开发的全过程,而不是仅限于编码或其它的特定工作阶段。,1.2件开发工具的概念,硬件和软件的关系:硬件是
6、躯体,软件是灵魂。 软件的特性: 软件是看不见,莫不着的但是发挥重要作用的事先编好的指令系列。软件是用户与硬件之间的桥梁。 软件包括程序和文档两个不可缺少的组成部分。,软件开发的发展里程(四个):就是四个阶段 软件开发工具学(也即软件开发工具)和软件开发方法学的区别: 前者着重于实际应用和工具开发;后者着重于方法论的研究;后者是前者的理论基础,第四代语言(4GL),第四代语言的原意是非过程化的程序设计语言。针对以处理过程为中心的第三代语言,它希望通过某些标准处理过程的自动生成,使得用户可以只说明要求做什么,而把具体的执行步骤的安排交由软件自动处理。,CASE 技术,计算机辅助软件工程技术可以简
7、单地定义为软件开发的自动化,通常简称为CASE(Computer Aided Software Engineering)技术。 (1)CASE 工具 CASE 工具不同于以往的软件工具,主要体现在以下的几个方面: 支持专用的个人计算环境; 使用图形功能对软件系统进行说明并建立文档; 将软件生存期各阶段的工作连接在一起; 收集和连接软件系统中从最初的需求到软件维护各个环节的所有信息; 用人工智能技术实现软件开发和维护工作的自动化。,(2)CASE的作用 CASE有如下三大作用,这些作用从根本上改变了软件系统的开发方式。 一个具有快速响应、专用资源和早期查错功能的交互式开发环境。 对软件的开发和维
8、护过程中的许多环节实现了自动化。 通过一个强有力的图形接口,实现了直观的程序设计。,所见即所得,在程序设计时,对于界面上的设计只需要用键盘或鼠标在屏幕上直接设计,不用手写代码。设计人员在屏幕上看到的界面,就是所生成程序的运行界面。,可视化编程,可视化编程:以“所见即所得”的编程思想为原则,力图实现编程工作的可视化,即随时可以看到结果,程序的调整与后果的调整同步进行。,什么是即插即用的软件设计方法?,一部分人专门生产软件组件,而另一部分人则构造整个软件的结构,并且把软件组件插入这个结构,以便迅速地完成大型软件的研制工作,这就是即插即用的软件设计方法。,1.3软件开发工具的功能和性能,软件开发过程
9、(阶段、成果) 第一阶段:出始要求的提出 成果:软件功能说明书 第二阶段:总体设计 成果:系统的总体设计文件及各个模块的设计任务书 第三阶段:程序的编写和文档的编写(实现阶段) 第四阶段:测试或调试阶段 包括:模块的调试和整个软件的联调,软件开发工具的功能:(做什么) a.认识与描述客观系统;b.储存和管理开发过程中的信息; c.代码的编写或生成;d.文档的编制和生成;e.软件项目管理,软件开发的性能:(做到什么程度) a.表达能力或描述能力;b.保持信息一致性的能力;c.使用方便程度;d.工具可靠程度;e.对硬件和软件环境要求(P33),1.4软件开发工具的类别,按工作阶段划分:a.设计工具
10、(第四代语言和帮助人们进行测试的工具);b.分析工具(支持需求分析)c.计划工具 按集成程度划分:a.专用的;b.集成化的软件(软件工作环境) 按硬件和软件的关系划分:a.依赖于特定的计算机或特定的软件*大多是审计工具;b.独立于硬件和其他的软件,1.4软件开发工具的类别,基于应用领域划分的工具按照应用领域的不同,应用软件可以分为事务处理、实时应用、嵌入式应用等。随着个人计算机与人工智能的发展,与这两个方面相联系的应用软件,也取得较大的进展。,1.5开发软件的研究和应用,应用软件的开发队伍:a.计算机专业出生的技术人员;b.来个各个应用领域非计算机专业的人 两类人是软件开发工具产生和发展的动力
11、,软件发展的几个阶段,(1)机器语言阶段;使用0、1代码进行编程。 (2)汇编语言阶段;使用助记符来编写程序,由汇编程序汇编成机器码,编程工作量大大降低,但仍未摆脱对硬件的依赖。与此同时,操作系统的出现从另一方面改善了人们应用计算机的条件。 (3)高级语言阶段、高级语言突破了与机器指令一一对应的限制,从而大大提高了程序的可移植性。 (4)第四代语言阶段,人们希望机器能够自动地完成更多的工作,包括自动安排某些工作的顺序,而做到只要给机器下达做什么的命令,由机器自己去安排执行的顺序。 (5)利用通用软件作为辅助工具的阶段利用文字处理软件来编写文档,利用绘图软件来绘制流程图等。 (6)专用软件开发工
12、具阶段支持软件开发的某一个阶段或某一个环节。(7)集成的软件开发工具阶段零散的、分散地支持各个工作阶段、各项具体工作的专用工具之间没有有机地联系起来,从而必然造成冲突与矛盾,以致抵消了使用工具带来的益处。这种情况导致了集成的软件开发工具的产生。,练习,软件开发工具概念 软件危机概念 第四代语言(4GL)概念 简答题:a. 简述软件发展的几个阶段。b.试论述软件开发方法发展的新阶段的特点。c.试述软件开发的过程。,d.试述软件开发工具的类别。 e.试述用通用软件帮助软件开发的弱点 f.软件开发分为那几个阶段,各阶段的文档是什么? g.简述软件开发工具的功能要求 h.何谓第四代语言的非过程化思想? j.试述软件开发工具的性能指标。,k.试述软件开发工具的类别。 l.试述软件开发的过程。 m.学习软件开发工具的目的是什么?,