基于软件复用技术的C语言题库系统的设计【文献综述】
- 格式:doc
- 大小:37.54 KB
- 文档页数:8
文献综述 计算机科学与技术 基于软件复用技术的C语言题库系统的设计 一.软件复用 软件重用[1-3]是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括程序代码、测试用例、设计文档、设计过程、需要分析文档甚至领域知识。对于新的软件开发项目而言,它们或者是构成整个目标软件系统的部件,或者在软件开发过程中发挥某种作用。通常将这些软件元素称为软部件。 软件成分的重用可以进一步划分成以下 3 个级别: (1) 代码重用 人们谈论得最多的是代码重用,通常把它理解为调用库中的模块。实际上,代码重用也可以采用下列几种形式中的任何一种: 源代码剪贴:这是最原始的重用形式。这种重用方式的缺点,是复制或修改原有代码时可能出错,更糟糕的是,存在严重的配置管理问题,人们几乎无法跟踪 原始代码块多次修改重用的过程。 源代码包含:许多程序设计语言都提供包含库中源代码的机制。使用这种重用形式时,配置管理问题有所缓解,因为修改了库中源代码之后,所有包含它的程序自然都必须重新编译。 继承:利用继承机制重用类库中的类时,无须修改已有的代码,就可以扩充或具体化在库中找出的类,因此,基本上不存在配置管理问题。 (2) 设计结果重用 设计结果重用指的是,重用某个软件系统的设计模型 ( 即求解域模型 ) 。这个级别的重用有助于把一个应用系统移植到完全不同的软硬件平台上。 (3) 分析结果重用 这是一种更高级别的重用,即重用某个系统的分析模型。这种重用特别适用于用户需求未改变,但系统体系结构发生了根本变化的场。 更具体地说,可能被重用的软件成分主要有以下10 种: (1)项目计划。 软件项目计划的基本结构和许多内容(例如,软件质量保证计划)都是可以跨项目重用的。这样做减少了用于制定计划的时间,也降低了与建立进度表和进行风险分析等活动相关联的不确定性。 (2)成本估计。因为在不同项目中经常含有类似的功能,所以有可能在只做极少修改或根本不做修改的情况下,重用对该功能的成本估计结果。 (3)体系结构。即使在考虑不同的应用领域时,也很少有截然不同的程序和数据体系结构。因此,有可能创建一组类属的体系结构模板(例如,事务处理体系结构),并把那些模板作为可重用的设计框架。通常把类属的体系结构模板称为领域体系结构。 (4)需求模型和规格说明。类和对象的模型及规格说 明是明显的重用的候选者,此外,用传统软件工程方法开发的分析模型(例如,数据流图),也是可重用的。 (5)设计。用传统方法开发的体系结构、数据、接口和过程设计结果,是重用的候选者,更常见的是,系统和对象设计是可重用的。 (6)源代码。用兼容的程序设计语言书写的、经过验证的程序构件,是重用的候选者。 (7)用户文档和技术文档。即使针对的应用是不同的,也经常有可能重用用户文档和技术文档的大部分。 (8)用户界面。这可能是最广泛被重用的软件成分,GUI(图形用户界面)软件经常被重用。因为它可占到一个应用程序的 60%代码量,因此,重用的效果非常显著。 (9)数据。在大多数经常被重用的软件成分中,被重用的数据包括:内部表、列表和记录结构,以及文件和完整的数据库。 (10)测试用例。一旦设计或代码构件将被重用,相关的测试用例应该“ 附属于 ” 它们也被重用。 《软件工程:实践者的研究方法》这本书中介绍了软件重用的效益: (1) 质量 理想情况下,为了重用而开发的软件构件已被证明是正确的,且没有缺陷。事实上,由于不能定期进行形式化验证,错误可能而且也确实存在。但是,随着每一次重用,都会有一些错误被发现并被清除,构件的质量也会随之改善。随着时间的推移,构件将变成实质上无错误的。 (2) 生产率 当把可重用的软件成分应用于软件开发的全过程时, 创建计划、模型、文档、代码和数据所需花费的时间将减少,从而将用较少的投入给客户提供相同级别的产品,因此,生产率得到了提高。 由于应用领域、问题复杂程度、项目组的结构和大小、项目期限、可应用的技术等许多因素都对项目组的生产率有影响,因此,不同开发组织对软件重用带来生产率 提高的数字的报告并不相同,但基本上 30%~50% 的重用大约可以导致生产率提高 25%到40% 。 (3) 成本 软件重用带来的净成本节省可以用下式估算: C=Cs- Cr-Cd 其中, Cs 是项目从头开发(没有重用)时所需要的成 本; Cr 是与重用相关联的成本; Cd 是交付给客户的软 件的实际成本。 可以使用《软件工程:实践者的研究方法》书第13章讲述的技术来估算 Cs ,而与重用 相关联的成本 Cr 主要包括下述成本: .领域分析与建模的成本; .设计领域体系结构的成本; .为便于重用而增加的文档的成本; .维护和完善可重用的软件成分的成本; .为从外部获取构件所付出的版税和许可证费。
二.软件工程 软件工程[4-7]作为一门软件开发的工程方法学,它在软件开发中的指导意义与基础地位已经越来越多地得到整个IT业界的高度重视。目前,软件工程已经成为计算机及其相关专业的专业核心课程,在美国IEEE- CS和ACM联合专题组发表的CC2001报告中,软件工程便是计算机学科的14个知识领域之一。中国计算机学会教育委员会、全国高等院校计算机教育研究所所提出的“计算机专业教学计划1993”也把软件工程列为一门主要的课程。软件工程包含了以下几个设计步骤: 1问题定义。问题定义阶段必须回答的关键问题:“要解决的问题是什么?”尽管确切地定义问题的必要性是十分明显的,但是在实践中它却可能是最容易被忽视的一个步骤。 2可行性研究。这个阶段要回答的关键问题:“对于上一个阶段所确定的问题有行得通的解决办法吗?”为了回答这个问题,系统分析员需要进行一次大大压缩和简化了的系统分析和设计的过程,也就是在较抽象的高层次上进行的分析和设计的过程。 3需求分析。这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。 4总体设计。这个阶段必须回答的关键问题是:“概括地说,应该如何解决这个 问题?” 5.详细设计。详细设计阶段的任务就是把解法具体化,也就是回答下面这个关键问题:“应该怎样具体地实现这个系统呢?”这个阶段的任务还不是编写程序,而是设计出程序的详细规格说明。这种规格说明的作用很类似于其他工程领域中工程师经常使用的工程蓝图,它们应该包含必要的细节,程序员可以根据它们写出实际的程序代码通常用HIPO[8]图(层次图加输入/处理/输出图)或PDL语言(过程设计语言)描述详细设计的结果。 6编码和测试。这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。程序员应该根据目标系统的性质和实际环境,选取一种适当的高级程序设计语言(必要时用汇编语言),把说细设计的结果翻译成用选定的语言书写的程序,并且仔细测试编写出的每一个模块。 7软件维护[9]。维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。通常有四类维护活动:改正性维护;适应性维护;完善性维护;预防性维护。
三.SQL server SQL(Structured Query Language) [10] [11]结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的SQL语言作为数据输入与管理的 接口。 SQL语言包含4个部分,一是数据定义语言(DDL),二是数据操作语言(DML),三是数据查询语言(DQL),四是数据控制语言(DCL)。 SQL 面向数据库执行查询;SQL 可从数据库取回数据;SQL 可在数据库中插入新的记录;SQL 可更新数据库中的数据;SQL 可从数据库删除记录;SQL 可创建新数据库;SQL 可在数据库中创建新表;SQL 可在数据库中创建存储过程;SQL 可在数据库中创建视图;SQL 可以设置表、存储过程和视图的权限。 SQL系统分为静态和动态两个部分:静态SQL指直接内嵌到应用源程序中的SQL语句,当编写数据库应用程序时,静态SQL用于完成特定的或固定的任务。在有些应用中,对数据库作何种操作,或对数据库作某种操作的先决条件在编译时还不明确,必须在程序运行时动态构造(或接收)和处理各种各样的SQL 语句。在这种情况下,SQL语句的构成在程序运行前不知道,通常这类语句每次执行都有可能发生变化。涉 及这类SQL语句的编程要用到动态SQL方法,它是一种先进的程序设计技术。 它不但能增加应用程序的功能还能提高其灵活性。一般说来,程序中SQL语句的文本(即命令、子句) 、变量个数、变量的数据类型或引用的数据库对象等有一种情况不知道时,就要用到动态SQL方法。 四.编程工具Java
Java [12-14] ,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的Hot Java浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。 Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程动态语言。它的特点具体如下: 1、Java语言是简单的。Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。 2、Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(implements)。 Java语言是一个纯的面向对象程序设计语言。 3、Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、Socket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 4、Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。Java的安全检查机制使得Java更具健壮性。 5、Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。 6、Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。 7、Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。