软件开发工具知识点老版.docx
《软件开发工具知识点老版.docx》由会员分享,可在线阅读,更多相关《软件开发工具知识点老版.docx(37页珍藏版)》请在冰豆网上搜索。
软件开发工具知识点老版
第一章
1、什么是软件开发工具?
在高级程序设计语言的(第三代语言)的基础上,为提高软件开发的质量和效率,从规划、分析、设计、测试、成文和管理各方面,对软件开发者提供各种不同程度的帮助的一类广泛的软件。
软件开发工具概念要点有三:
(1)它是在高级程序设计语言(第三代语言)之后,软件技术进一步发展的产物;
(2)它的目的是在人们开发软件过程中给予人们各种不同方面、不同程度的支持或帮助;
(3)它支持软件开发的全过程,而不是仅限于某个特定的阶段。
2、简述计算机软件发展的几个阶段。
四个阶段:
第一代计算机语言——机器语言阶段。
第二代计算机语言——汇编语言阶段。
第三代计算机语言——高级程序设计语言,过程化语言
第四代计算机语言——非过程化语言(4GL)
3、简述软件工作的重要性和困难性。
软件工作的重要性越来越为人们所认识,软件是计算机的灵魂,是广大使用者与计算机之间的桥梁,是人类在各个领域中积累的知识的结晶,是人类文明与知识得以延续的新的载体,是人类进一步成为一个整体、得以进一步相互联系的纽带。
人们在认识到软件工作的重要性的同时也越来越认识到了它的困难性。
这就是所谓的“软件危机”问题。
人类社会和客观世界的复杂性,决定了软件本身的复杂性;人类知识的丰富多彩,决定了软件的多样性;客观世界的动态性,决定了软件对可维护、可重用性越来越高的要求。
面对规模日益扩大的软件,如何保证它的正确性、可靠性,如何控制软件开发的进度与成本,成为十分重要的课题。
4、简述软件开发工具的演变过程。
软件开发工具的演变是从无到有,从分散到集中的过程,是软件发展的必然趋势。
主要分为三个阶段:
第一阶段:
利用通用软件作为辅助工具的阶段——没有专用软件开发工具的阶段。
第二阶段:
专用的软件开发工具阶段。
第三阶段:
集成的软件开发工具阶段。
5、试述用通用软件辅助软件开发的弱点。
用通用软件来帮助开发人员编写文档或画图可以减少很多工作量,但是与软件开发工作相比,这种帮助实在太表面、太初级了。
用通用软件帮助软件开发有三个主要弱点:
(1)许多工作通用软件无法完成。
(2)用通用软件完成某些工作,只能表现其表面的形式,不能反映其逻辑内涵(形似,神不似)。
(3)常遇到难于保持一致性的困难。
6、集成化的软件开发工具是在什么背景下产生的?
大批专用软件开发工具的出现并未解决一致性的问题。
其根源在于对软件的开发缺乏全面的、统一的支撑环境。
这些零散的、分散的支持软件开发各个阶段、各项具体工作的专用工具之间没有有机的联系起来,必然造成冲突与矛盾。
这对用户造成了沉重的负担,以致抵消了使用工具带来的益处,从而导致集成软件开发工具的产生。
7、试述软件开发工作的发展变化。
软件开发工作的发展变化主要有四个阶段:
(1)最初阶段——把用户已经明确表述出来的算法,用机器语言写成一系列机器指令,供硬件运行使用。
(2)第二阶段——编程工作改为汇编语言进行,编好的指令由汇编程序转化为机器指令,再交硬件执行。
与用户的距离近了。
(3)第三阶段——汇编语言换成了高级程序设计语言(第三代语言),不再与机器指令一一对应,更加接近自然语言,离机器更远了,离用户更近了。
(4)第四阶段——以应用软件开发工具为标志,把需求分析纳入了软件开发工作中,进一步扩大了软件开发的范围。
8、试述现阶段软件技术的特点(作为软件技术发展的一个新阶段,使用软件开发工具与以往的区别)
(1)自动化程度的提高。
由于代码生成等技术的应用,在一些特定条件下,可以较容易地自动生成第三代语言(或更低的语言)的代码,从而大大节省人力和时间。
(2)明确地把需求分析纳入软件工作范围之内,从而使软件开发过程进一步向用户方面延伸,离用户更近了。
这是软件技术向前迈进的重要一步。
(3)把软件开发工作延伸到项目及版本管理,从而超出了一次编程的局限,而扩大到了作为一个不断发展的客体的生长完善的全过程。
这也是软件研制从个体的、手工作坊的方式向科学的、有组织、有计划的方式转变的一个重要表现。
(4)吸收了许多管理科学的内容与方法,如程序员的组织,质量的控制,使软件开发技术不再只是讨论单个程序员自己工作的技术与方法问题,而是把组织、管理等项目负责人的思想与方法放到了更重要的位置。
总之,软件开发工具的提出与使用,是软件技术发展的一个新阶段。
9、软件开发一般分为哪几个阶段?
其主要任务和形成的文档是什么?
开发阶段
主要任务
文档
需求分析
从用户提出的初始要求出发,经过大量的调查研究,抽象出应用领域中实际的信息需求,设计出在计算机系统内外的、合理的信息流程,并规定软件的功能与性能要求,最后形成严格的、明确的、可供实际开发使用的“软件功能说明书”。
软件功能说明书
总体设计
根据软件功能说明书的要求,完成软件的总体设计,包括整个软件的结构设计、公用数据库文件或数据库的设计、各部分的连接方式及信息交换的标准等。
系统的总体设计文件(结构图、模块清单、公用数据结构)和各个模块的设计任务书
实现阶段
两个并行的工作:
程序的编写与文档的编写
程序代码、文档(使用说明、用户手册)
测试阶段
完成模块的调试与整个软件的联调
测试报告
10、什么是功能?
软件开发工具应具有什么样的功能?
功能是软件能做什么事。
软件开发工具的主要功能:
(1)认识与描述客观系统
(2)存储与管理开发过程中的信息
(3)代码的编写与生成
(4)文档的编制或生成
(5)软件项目的管理
11、什么是性能?
软件开发工具重要的性能指标有哪些?
性能是软件能把事情能做到什么程度。
性能指标主要有:
(1)表达能力或描述能力
(2)保持信息一致性的能力
(3)使用的方便程度
(4)工具的可靠程度
(5)对软、硬件环境的要求
12、试述软件开发工具的类别。
1)按支持的工作阶段把软件开发工具划分成三类:
(1)设计工具:
在实现阶段对人们提供帮助,是最直接帮助人们编程、调试软件与编写文档的工具。
如各种代码生成器,第四代语言和测试的工具等。
(2)分析工具:
主要用于需求分析的工具,帮助人们认识与表述信息需求和信息流程,从逻辑上明确软件功能与要求。
如数据字典管理系统,绘制数据流图、系统结构图或ER图的专用工具。
(3)计划工具:
从宏观角度看待软件开发,保存与管理的信息都是与整个项目相关的宏观信息,完全是为项目主管人员服务的。
2)按集成程度划分成两类:
(1)专用的工具:
面对某一工作阶段或某一工作任务的软件开发工具。
(2)集成化的工具:
是集成化的、面对软件开发全过程的软件开发工具。
3)按与硬件、软件的关系划分成两类:
(1)依赖于特定机器或软件的工具,如多数设计工具和集成化的工具。
(2)独立于硬件与软件的工具,如分析工具和计划工具。
13、对软件开发工具的研究来源于哪些方面?
对软件开发工具的研究主要来源于三方面:
(1)软件开发工具的使用者。
他们是软件开发工具得以发展的基础。
这些人员大致有两种:
一种是计算机专业出身的技术人员;一种是应用领域的人员,如会计、金融、企业管理等。
(2)一些厂家和研究单位。
既包括一些计算机硬件的制造商,也包括一些软件公司,如DEC、HP、ORACLE等,由此形成了软件开发工具的研制队伍。
(3)软件技术专家(如ACM、IEEE)和系统工程专家。
14、学习软件开发工具的目的是什么?
作为一般的使用者,学习软件开发工具的目的在于了解软件开发工具的概念、理论基础、基本功能、发展现状与前景,以便在实际工作中正确地选择与使用软件开发工具,在必要时能参加或组织软件开发工具的自行研制,从而达到提高软件工作水平与效率的目标。
软件开发工具总结:
软件开发工具
非软件开发工具
专用的软件
开发工具
设计
工具
各种代码生成程序(代码生成器);
综合性的第四代语言;
专用于某种文档的编写工具;
测试工具
通用软件
字处理软件(wordstar)
分析
工具
数据字典管理系统(CDD、Dictionary/3000);专用于画数据流程图(FLOW)、ER图或程序框图的绘图软件
计算机硬件;
操作系统、汇编程序、编译系统;
磁盘处理程序、病毒防治程序、系统备份;pctools;
第三代高级程序设计语(C,COBOL,FORTRAN)
集成的软件
开发工具
IBM的AD/Cycle理论框架;
Rational公司的Objectory、Rose;北大青鸟系列
第二章
1、软件开发中的基本问题及解决办法是什么?
(单个程序员做好软件工作的关键是什么?
)
对单个程序员来说,做好软件的关键是做好两个转换:
第一个转换:
从用户对软件功能的理解到程序员对软件功能的理解之间的转换。
第二个转换:
从程序员的理解到程序的实现。
保证第一个转换顺利完成的手段:
利用尽可能标准化的方法编写程序设计任务书,用明确的语言或图形、表格,把程序要处理的信息的内容、格式、来源、去向、存储、处理清楚地表达出来,作为双方共同理解。
保证第二个转换顺利完成的手段:
提高程序员的知识水平和实际经验。
2、大型软件开发中的困难体现在哪些方面?
困难产生的原因是什么?
大型软件开发中的困难主要有:
(1)一致性的保持成为十分困难的问题
(2)测试的困难大大增加
(3)工作进度难以控制
(4)文档与代码的协调十分困难
(5)版本更新带来的困难
困难产生的原因:
(1)大系统的复杂性;
(2)个人之间的组织与协调;
(3)各应用领域间的差别;
(4)时间、变化的因素。
3、几十年来,为了提高软件开发的水平和效率人们提出了哪些软件开发方法?
面对软件开发中的种种困难和问题,软件工作者千方百计从各种不同角度,用各种不同方法试图使软件开发工作的水平和效率有大幅提高。
仅从软件开发方法而言,先后提出了:
●结构化程序设计方法
●软件工程方法
●面向对象的程序设计方法
●即插即用的程序设计方法
●可视化程序设计方法
4、大型软件开发过程中涉及几种角色,他们承担的工作有哪些?
大型软件开发过程中涉及几种角色,他们承担的工作有:
(1)用户:
提出需求、验收软件、使用软件、提出修改要求
(2)程序员:
编程、写文档、调试自己的程序、向项目负责人提交工作成果
(3)项目负责人:
分析用户需求形成设计方案、向程序员分配任务、验收程序员的工作成果、对整个软件联调、向用户交付使用、接收与分析用户的修改要求、向程序员分配修改任务、验收修改成果、向用户提交新的版本或修改的结果
(4)计算机硬件:
运行、试运行
5、试述结构化程序设计的基本思想与方法(论述)。
结构化程序设计的基本思想是把程序的结构分解成三种基本模块:
处理单元、循环机制、二分决策机制,并保证模块的划分符合“结构良好”的要求:
(1)模块的功能在逻辑上尽可能的单一化、明确
(2)模块间的联系及相互影响尽可能的少
(3)模块的规模应当足够小,以便其易于调试
划分模块时采用“自顶向下”的方法,即不管软件多大,都采取自上而下、逐步分解的办法,分成若干部分,并把他们之间的关系明确地表达出来,画出系统结构图,直到最底层的模块达到所要求的规模为止。
实施结构化程序设计的思想时,要遵守以下原则:
(1)限制甚至不用GOTO语句,绝对禁止超越模块边界的GOTO语句。
(2)子程序尽可能做到只有一个入口、一个出口;
(3)程序风格应尽量明确、清晰,包括适当增加注释,书写格式体现层次结构,变量名称的选用尽量具有逻辑意义等;
(4)在程序编写的同时完成有关的文档编撰,不要拖延时间。
结构化程序设计的方法主要是为程序员服务的。
它的缺点是增大了程序的工作量,增加了编程中的麻烦与琐碎的工作,降低了程序的运行效率。
但它保证了软件的可靠、准确与易于修改。
6、试述软件工程的基本思想和方法(论述)。
软件工程的基本思想来源于传统工程,要想大幅度地从根本上提高软件开发的质量和效率,就应当吸取各种传统产业的成功经验,从组织和管理的角度加强力量,使软件生产从程序员的个人劳动提高成为有组织、可控制的工程。
软件工程借鉴传统工程的思想,从软件开发的经验中归纳出相应的工作步骤和交流标准,大家都来遵守和执行,从而保证软件开发的进度与质量。
软件工程的实施方法:
首先,对软件开发的工作过程进行规范。
如IBM的AD/Cycle,对应用软件的开发过程做了如下划分和规定:
第一阶段,需求分析。
了解企业的结构与功能,掌握组织及管理者的信息需求,弄清信息流通的实际情况。
第二阶段,分析与设计。
进行功能分解及数据分析,完成处理过程及数据库的逻辑设计。
第三阶段,编程阶段。
完成具体的程序编写工作。
第四阶段,测试阶段。
对已有代码进行认真检测与试用。
第五阶段,使用及维护。
组织使用者有效的使用,并及时检查与修正发现的错误。
在标准化方面主要从两个方面探索。
(1)表达方式的标准化,如统一规格的数据流程图、数据字典、模块结构图等。
(2)对工作的质量及检查制定标准,在一定的时候作一定的检查。
如著名的ISO9001标准。
软件工程的思想主要集中于加强项目管理者的工作上,对程序员关系不大,与结构化程序设计方法刚好互补。
目前软件开发还主要依赖程序员的个体工作,完全做到工程还是相当困难的。
7、面向对象程序设计的基本思想(论述)。
面向对象的程序设计是人们试图解决软件危机的又一种尝试,近年来,随着面向对象语言的普及,这种思想得到了广泛的传播。
面向对象程序设计的基本思想可以归纳为四点:
(1)客观世界的任何事物都是对象,它们都有一些静态属性(相应于数据结构)和相关的操作(相应于程序模块)。
作为一个整体,这些对象不必对外公开这些属性与操作。
这就是“封装性”。
(2)对象之间有抽象与具体、群体与个体、整体与部分等几种关系。
这些关系构成对象概念之间的网络结构。
(3)抽象的、较大的对象所具有的性质,包括静态属性和动态操作,自然地成为它的子类的性质,不必加以重复说明或规定。
这就是“遗传性”。
(4)对象之间可以互送消息,这一消息可以是传送一个参数,也可以是使这个对象开始某个操作。
面向对象程序设计语言反映了程序设计的思想方法越来越接近人们思维的方式,它摒弃了持续许久的“自顶向下”和“自底向上”的争论,把对于复杂系统的认识归结为对一批对象及其关系的认识,通过合理地选择认识的层次,使系统的复杂性保持在可控制的范围内。
8、即插即用程序设计的基本思想?
即插即用程序设计是在面向对象程序设计方法的基础上提出来的。
它的基本思想是用制造硬件的思路来生产软件。
在硬件的制造中,芯片的制造与整机是分开进行的。
制造芯片的厂家只管制造芯片,而制造整机的厂家则利用这些芯片组成完整的计算机。
人们想用同样的思路来处理大型软件的开发,一部分人专门生产软件组件,一部分人设计整个软件结构,并且把软件组件插入这个结构,以便迅速完成大型软件的研制工作。
然而这种思想的真正实现并不那么简单。
首先,标准化的问题十分困难。
其次,软件部件的提供方式也是问题。
依照这种思路,一些软件公司或机构已经在标准化方面提出了方案,如著名的CORBA和COM101。
9、什么样的软件才是好的软件?
(1)正确地实现所要求的功能,准确地给出预定的输出结果;
(2)用户界面友好,符合实际用户的使用习惯和知识水平;
(3)具有足够的速度(不是越快越好),能在符合用户要求的时间限度内,给出所要求的结果;
(4)具有足够的可靠性,能够在各种干扰下保持正常工作;
(5)程序易读,结构良好,文档齐全,从而保证系统易于修改。
10、评价单个程序员的主要性能指标是什么?
就单个程序员来说,主要的指标有:
(1)具有程序设计所需要的基本知识与技能,如关于数理逻辑的知识与训练,关于各类数据结构的概念及处理方法等;
(2)对本项目所在的那个领域有较深入的了解,从而能够准确的理解用户的信息需求,正确地把握有关的信息流程与信息处理原则;
(3)对于软件开发的技术环境比较熟悉,包括硬件设备、软件环境和网络环境,特别是对于所用的语言,应当有足够的、实际运用的经验。
11、作为项目组的一员,要遵守哪些要求?
作为项目组的一员,除了完成自己承担的任务之外,重要的是使自己的工作融入整个系统,与其他部分协调一致的工作,以下几点必须严格遵守:
(1)保证严格在本模块内操作,绝不要使用可能干扰其它模块的命令或函数。
(2)严格按总体设计的要求和理解去传递参数值,绝不要随意修改其内容或含义。
(3)在对公用的文件或数据库进行存取时,必须完全地、准确地按统一规定的格式去操作,绝不能擅自改变。
(4)在使用标识符时,应按照统一的原则尽量使用易于看出逻辑含义的名称。
特别是涉及公用数据及参数的时候。
(5)严格按照统一的要求编写文档,在内容、格式、表达方式、符号使用上遵循项目组的统一规定。
(6)尽量保持程序风格的一致。
如注释行的安排,行首空格的使用等。
12、一个好的项目组应具备哪些条件?
好的项目组是在长期工作中逐渐形成的,根据衡量项目组的CMM模型,一个好的项目组至少应当具备以下几个条件:
(1)有严格的、成文的工作规范和文档标准,而且应当为全体成员所熟知,并切实得到遵守。
(2)人员之间有严格的分工,除了程序员之外,必须有专门的秘书(负责文档的收集、审核及保管),必须有专门的测试人员(负责测试和验收有关的部分),特别是要有专职的、不陷入具体编程的项目负责人。
(3)每个项目都要事先制定详细的时间表,并且得到严格执行每一项目完成之后都有完整的资料,并得到妥善保存,一但需要修改或更新版本时可以立即使用。
第三章
1、简述在软件开发过程中,信息流通的主要内容。
软件开发过程的信息流通状况图描述了各种信息在各种人员与计算机之间的流通状况。
其中涉及到四类人:
用户、分析人员、程序员和维护人员。
涉及四类信息:
第一类,有关环境、现状及需求的信息。
第二类,有关软件的功能设计与物理设计的各种信息。
第三类,软件成果本身,包括程序和文档。
第四类,用户对系统的各种变更要求,以及系统的各种变更记录。
是跨越开发周期的。
2、软件开发过程中涉及的信息管理工作有哪些?
软件开发过程中涉及的信息管理工作包括:
(1)信息的存储
(2)数据的转换与加工:
①手工形式和计算机形式之间的相互转换;
②计算机内部不同形式数据的转换。
(3)人与人之间的信息交流:
分析人员、程序员、用户和维护人员
软件开发工具正是为软件开发过程中涉及的四类信息的合理存储、正确转化和顺畅流通提供帮助的。
3、软件开发工具涉及到的理论和方法主要有哪些?
第一,认知科学中关于概念模式的概念与方法。
第二,数据库技术的理论与方法。
第三,编译技术的有关方法。
第四,关于人机界面的理论与方法。
第五,管理科学中关于项目管理与版本管理的理论与方法。
第六,系统科学与系统工程中的有关理论与方法。
4、概念模式的作用和意义。
概念模式是指人们在认识事物过程中,对某一事物或某一系统形成的抽象的、一般化的概念框架。
概念模式具有二重性意义,它既反映了客观现实,同时又具有主观性。
概念模式是在客观事物或系统的基础上形成的,在某种程度上反映了客观现实。
但它又不等同于客观事物本身,因为它常常是抽象出的某一事物的部分属性,所以往往只反映事物的某一方面。
至于选取那些属性或哪些方面,还决定于观察者本身的目的与状态。
概念模式的作用:
(1)概念模式是人们认识客观世界的一种方法和工具。
(2)概念模式是人们进行交流与表达的重要工具。
5、举出三种常用的概念模式,说明他们的作用与使用方法。
(参考名词解释)
6、什么是信息库?
它与数据库、数据仓库有什么区别?
信息库是针对软件开发或信息系统开发中的大量信息管理工作提出来的,它存放软件开发全过程中所有有用信息。
数据库是指在文件系统基础上发展起来的一种数据管理技术,它的重点在于合理地组织数据,体现出数据之间的逻辑关系,并尽可能地帮助用户检索,减少冗余。
数据仓库是针对大批数据的分析利用而提出的概念。
基本思想是对现实中的大量原始数据进行多次加工与提炼,得出许多派生的或综合的数据,保证原始数据和派生数据的一致性,就是数据仓库的任务。
信息库是一个包罗万象的,随着项目进展而不断修改与补充的数据集合。
它在规模上不一定像数据仓库那么大,分析提炼的要求也与数据仓库不同,然而作为软件开发全过程的信息管理总枢纽,它的特点是数据结构相当复杂,而且会不断变化,保持一致性的任务十分艰巨。
7、信息库中应该包括哪些内容?
(1)软件的工作环境、功能需求、性能要求,有关的各种信息来源的状况、用户状况、硬件环境以及在该领域中的作用等外部信息。
(2)需求分析阶段中收集的有关用户的各种信息。
(3)逻辑设计阶段的各种调查材料和由此生成的各种文档——调查记录、原始数据、报表及单证的样本、绘制的各种图、系统说明书。
(4)设计阶段的各种资料——数据库与数据文件格式、数据字典、程序模块的要求、总体结构、各种接口及参数的传递方式、设计方案。
(5)编程阶段的所有成果——程序代码、框图、变量说明、测试情况、验收报告、使用说明。
(6)运行及使用情况的详细记录。
(7)维护及修改的情况。
(8)项目管理的有关信息,版本信息。
8、信息库应具备哪些管理功能?
1)一般数据库的基本功能:
增、删、改操作
2)特殊功能:
(1)把计算机内外的信息存储统一起来管理——规定复杂的内部结构以存放信息。
(2)面对分析人员、程序员和维护人员等不同的对象,他们有各自的权限和使用目标——需要认真设计有关的界面以便使用。
9、信息库应该如何保持一致性?
(1)信息库中的内容一般不删除,老信息加上时间标志移入历史信息中,并与新信息保持着历史的、逻辑的联系,在需要时可以随时调出来。
(2)由多个程序模块组成的大型软件系统中,如何保证某个模块更新后与其它模块一起构成一个新的版本。
(3)保证程序和使用手册之间的一致性。
(4)对国际性的大软件公司来说,各种语言的资料之间的一致性同样需要认真地、细致的组织与安排。
10、用户界面设计的基本原则是什么?
(1)用户界面的主要功能是通信。
(2)界面必须始终一致。
(3)界面必须使用户随时掌握任务的进展情况。
(4)界面必须能提供帮助。
(5)宁可让程序多干,不可让用户多干。
11、IBM的AD/Cycle框架中,应用系统框架SAA(系统应用体系结构)由哪几部分构成?
具体内容是什么?
构成
硬
件
平
台
用户接口CUA
程序员接口CPI
通信接口CCS
内容
键盘操作、屏幕滚动、
菜单选择、帮助系统、
鼠标操作、色彩应用、
数据录入、信息显示
语言:
过程化语言、非过程化语言、生成器
服务:
数据库查询、对话显示、通信服务
面向对象的结构、数据流、应用服务、作业管理、
网络管理、数据安全控制
12、人机界面的技术手段有哪些?
(包含在11题中)
13、与一般日常生产管理相比,项目管理的突出特点是什么?
(1)子任务多,关系复杂。
(2)任务不可重复,形势不断变更。
(3)组织协调的任务十分突出,资源浪费闲置的风险与合理地优化组合、提高效益的机会并存。
(4)信息处理工作的作用与意义更为突出。
14、项目管理的基本目标是什么?
(1)使产品(或工程)的质量得到有效的控制。
(2)保证整个系统按预定的进度完成。
(3)有效的利用各种资源,尽可能使资源的闲置与浪费减少。
(4)控制与降低成本。
15、版本管理的核心是什么?
具体方法有哪些?
版本管理的核心是保持两