软件开发工具复习资料.txt我爸说过的最让我感动的一句话:“孩子,好好学习吧,爸以前玩麻将都玩儿10块的,现在为了供你念书,改玩儿1块的了。
”本文由myxinyue贡献 3173软件开发工具复习资料第一章绪论1.1 软件开发工具的由来一、软件开发工具:1、软件开发工具的范围大致可以描述为:在高级程序设计语言(第三代语言)的基础上,为提高软件开发的质量和效率,从规划、分析、设计、测试、成文和管理各方面,对软件开发者提供各种不同的帮助的一类广泛的软件。
2、如何理解:首先,是一类软件,是开发软件用的软件。
其次,是在第三代语言的基础上发展起来的。
另外,这里强调对软件开发全过程中各个阶段的支持,即不仅包含狭义的编程阶段,而是包括了相当广泛的范围和相当丰富的内容。
二、软件开发工具的产生与演变1、软件开发工具的产生与演变第一代语言——机器语言第二代语言——汇编语言第三代语言——高级程序设计语言(过程化语言)第四代语言——非过程化语言2、第三代语言与第二代语言的区别①第三代语言突破了与机器指令一一对应的限制,用尽可能接近自然语言的表达方式描述人们设想的处理过程,把这种表达方式向机器指令的转化工作交给编译系统去完成。
②另一个重要的变化是高级设计语言实现了对机器的独立性,即不依赖特定的硬件系统,抽象地逻辑地描述处理和算法,而把硬件系统之间的区别交给不同的编译系统去处理,从而大大提高了程序的可移植性。
(第三代程序设计语言一般是过程化语言)3、第四代语言——非过程化语言思想人们希望机器能够自动地完成更多的工作,包括自动安排某些(不是全部)工作的顺序,而做到只要给机器下达需要做什么的命令,由机器自己去安排执行的顺序。
4、软件危机:在认识到软件工作重要性的同时,也认识到软件工作的困难性。
这就是所谓的“软件危机”问题的提出。
三、软件工作的重要性1、软件是计算机的灵魂(1)软件是广大使用者与计算机之间的桥梁;(2)软件是人类的各个领域中积累的知识的结晶;(3)软件是人类文明与知识得以延续的新的载体;(4)软件是人类进一步成为一个整体,得以进一步相互联系的纽带。
2、软件工作的困难性(1)人类社会和客观世界的复杂性,决定了软件本身的复杂性;(2)人类知识和丰富多彩,决定了软件的极大多样性;(3)客观世界的动态性,决定了软件对可维护性、可靠性越来越高的要求。
如何保证软件的正确性、可靠性,如何控制软件开发工作的进度与成本,成了理论上十分重要、实际中十分迫切的课题。
3、用通用软件帮助软件开发有三个主要弱点:(1)有许多工作是通用软件所无法完成的。
(2)用通用软件完成某些工作只能表现其表面的形式,而不能反映其内涵。
(3)用通用软件来帮助人们完成软件开发工作时,常常遇到难于保持一致性的困难。
四、专门用于软件开发的软件开发工具1、专用的软件开发工具主要分为以下几类(1)面向特定功能模块的各种代码生成程序(报表生成器、菜单生成器、对话生成器等);(2)综合性的第四代语言一般是立足于某种数据库管理系统或某种第三代语言之上的);(3)专用于某种文档的编写工具;(4)数据字典管理系统(DDMS);(5)专用于画数据流程图、ER图或程序框图的绘图软件等。
2、专用的软件开发工具的出现,并未解决第三个困难,一致性的保持仍然是悬而未决的难题。
这种情况导致集成的软件开发工具的产生。
3、1989年,IBM开发的AD/Cycle的主要失误在于两点:(1)拘泥于集中式的处理思路,对于新的客户机/服务器结构未能及时适应;(2)坚持在OS/400等自己特殊平台上开发,背离了开放性的大趋势。
1.2 软件开发工具的概念一、概念1、三个要点:(1)它是在高级程序设计语言(第三代语言)之后,软件技术进一步发展的产物;(2)它的目的是在人们开发软件过程中给予人们各种不同方面、不同程度的支持或帮助;(3)它支持软件开发的全过程,而不是仅限于编码或其它特定的工作阶段。
2、软件开发工具有继承性和创新性一方面,软件开发工具是软件技术发展的必然产物和自然的趋势,它的基本思想是致力于软件开发的高效优质;另一方面,随着人类对软件与软件开发过程理解的深入,它又具备了新思想与方法。
3、软件用来特指看不见、摸不着的,但又发挥着十分重要的作用、事先编好的指令系列。
硬件是躯体,软件是灵魂。
4、软件一头连着计算机硬件,向硬件提供它可以执行的机器指令,另一头面向用户,接受用户提出的要求,提供的算法。
(软件是用户与硬件之间的桥梁)5、软件实际上是人类知识与经验的结晶。
6、软件包括程序和文档两个不可缺少的组成部分。
二、软件开发工作的四个阶段:最初阶段的工作仅限于把用户已经明确表述出来年算法,用机器语言写成一系列机器指令,供硬件运行使用。
第二阶段:汇编语言第三阶段:高级程序设计语言第四阶段:目前进入的以应用软件开发工具为标志的新阶段。
三、对于本书讨论的软件开发工具及新的软件开发方法来说,客观存在的发展主要表现在四个方面:首先是自动化程度的提高。
其次,这一阶段的工作明确地把需求分析包括进了软件工作的范围之内,从而使软件开发过程进一步向用户方面延伸,离用户更近了。
第三,把软件开发工作延伸到项目及版本管理,从而超出了一次编程的局限,而扩展到了作为一个不断发展的客体生长完善的全过程。
(这也是软件研制从个体的、手工作坊的方式向科学的、有组织、有计划的方式转变的一个重要表现。
)最后,这一阶段的研究吸收了许多管理科学的内容与方法,如程序员的组织、质量的控制等。
总之,软件开发工具的提出与使用,是软件技术发展的一个新的阶段。
四、涉及到的一些类似、相关的概念或术语:1、第四代语言(4GL):原义是非过程化的程序设计语言。
第四代语言可以被看作软件开发工具中的一类,而不是全部。
软件开发工具的范围还要更宽一些。
2、CASS工具:两种解释。
一种是计算机辅助软件工程,另一咱是计算机辅助系统工程。
3、可视化编程、最终用户计算、组合编程、即插即用编程、组合软件等。
4、软件开发工具学:也即软件开发工具1.3 软件开发工具的功能与性能一、软件开发的过程:第一阶段:初始要求的提出。
软件开发工作者的任务是根据这种初始要求形成严格的、明确的、可供实际开发使用的功能说明书。
(成果:软件功能说明)第二阶段:总体设计。
任务是根据软件功能说明书的要求,完成软件的总体设计,包括整个软件的结构设计、公用的数据文件或数据库的设计、各部分的连接方式及信息交换的标准等几个主要内容。
(成果:系统的总体设计文件及各个模块的设计任务书)第三个阶段:程序的编写和文档的编写,统称为实现阶段。
第四个阶段:测试或调试阶段。
包括两部分:模块的高度、整个软件的联调。
(测试工作最好由专门的小组去进行。
)二、软件开发工具的功能要求:(五个主要方面)1、认识与描述客观系统。
这主要是用在软件开发工作的第一个阶段——需求分析阶段。
2、存储及管理开发过程中的信息。
3、代码的编写或生成。
4、文档的编制或生成。
5、软件项目的管理。
这一功能是为项目管理人员提供支持(包括:进度管理、资源与费用管理、质量管理三个基本要求)。
三、软件开发工具的性能功能:是指软件能做什么事。
性能:是指事情做到什么样的程度。
●软件开发工具的五项重要性能:1、表达能力或描述能力。
2、保持信息一致性的能力。
3、使用的方便程度。
4、工具的可靠程度。
5、对硬件和软件的要求。
1.4 软件开发工具的类别一、按工作阶段划分:设计工具、分析工具、计划工具1、设计工具:从工作的抽象程度来看,设计工具是具体的,它是指在实现阶段对人们提供帮助的工具。
如:代码生成器、一般所说的第四代语言以及帮助人们进行测试的工具2、分析工具:主要是指用于支持需求分析的工具。
3、计划工具:从更宏观的角度去看待软件开发。
(实现了“跨生命周期”的信息管理与共享)实践中,设计工具出现得最早、数量最大。
分析工具出现得较晚、数量也少一些。
设计。
计划工具完成是为项目主管人员服务的,再现和开发得比较晚。
计划工具的重要性及地位将随着软件产业的发展而越来越为人们所认识。
二、按集成程度划分:专用、集成1、专用的、面对某一工作阶段或某一工作任务的工具2、集成化的、面对软件开发的全过程的工具(集成化的软件开发工具也常常被称为“软件工作环境”)三、按与硬件、软件的关系划分1、依赖于特定的计算机或特定的软件(如某种数据库管理系统)2、独立于硬件与其它软件的开发工具。
一般来说,设计工具多依赖于特定的软件,分析工具与计划工具则往往是独立于机器与软件的,集成化的软件开发工具又常常是依赖于机器与软件的。
(会判断)软件开发工具是否依赖于特定的计算机硬件或软件系统,对于应用的效果与作用有直接影响。
1.5 软件开发工具的研究与应用一、应用软件开发队伍中的两种人员:1、一种是计算机专业出身的技术人员。
(面临的主要问题是如何尽快地进入新的应用领域,成为这个领域的内行,从而发挥自己的长处)需求与分析工具是最直接、最急需的。
2、另一种人员来自各个应用领域,他们出身于计算机以外的各种专业领域。
感兴趣的是设计工具——第四代语言,各种代码生成系统等。
当以上两种人逐步超出个人编程阶段成为项目负责人时,对计划工具的需求也就随之产生。
他们的需求与愿望是软件开发工具产生与发展的根本动力。
二、学习软件开发工具的在于了解软件开发工具的概、理论基础、基本功能、发展现状与前景,以便在实际工作中正确地选择与使用软件开发工具,在必须时能够参加或组织软件开发工具的自行研制,从而达到提高软件工作水平与效率之目的。
这也是本书的目的。
第二章软件开发过程及其组织2.1 软件开发中的困难一、软件开发的基本知识1、软件开发过程的两个转换:首先是从用户的理解到程序员的理解,其次是从程序员的理解到程序的实现。
2、两个转换的基本情况:第一个转换是用户对软件功能的理解和程序员对软件功能的理解之间的转换。
保证这一转换顺利完成的手段就是利用尽可能标准化的方法编写程序设计任务书,用明确的语言或图形、表格,把程序要处理的信息的内容、格式、来源、去向、存储与处理清楚的表达出来,作为双方共同的理解。
第二个转换所要解决的是人和机器之间交流与协调问题:人和机器之间在思维方式、工作方式上都有许多根本区别。
做好第二个转换的关键在于程序员的知识水平与实际经验。
3、对于单个程序员来说,做好软件工作的关键是以上两个转换。
二、大型软件开发中的困难(大题)当程序的规模超出一个人的力量范围时,一系列新的、更难以克服的困难就出现在人们的面前了。
(1)一致性的保持成为十分困难的问题。
(2)测试的困难大大增加。
[名词]水波效应:当我们修改程序的某一处错误时,由于没有充分考虑到这一修改对相关部分带来的影响,结果出现新的错误。
黑箱检验方法(只能证明程序有错而不能证明程序没错)(3)工作进度难以控制。