发展部件技术分享 http://blog.sciencenet.cn/u/求新 研究方向:数据库、MIS,教育部教指委计算机分委会专家工作组成员

博文

管理信息系统部件设计关键技术探讨

已有 4194 次阅读 2014-10-21 21:01 |个人分类:生活点滴|系统分类:论文交流| 数据库, 关键技术, java, 软件复用, 软部件技术

                                    管理信息系统部件设计关键技术探讨

                                     湖北工业大学工程技术学院  齐赛

  (说明,由于本网博文难附图片,文中图片已删除,如需要全文请和我们或作者联系)。
                                                     
   
   
构件技术的出现和应用工彻底打破了以往传统软件开发模式,让程序员摆脱了从零开始,重复大量工作的尴尬的局面。构件技术的实际应用也尤为广泛,同时也证明了其正确性和优越性,在某些方面确实提高了软件开发效率,在软件产业中扮演着举足轻重的角色。但是构件本身的不规范化,复用粒度不够大等缺点导致软件工业化生产的迟迟不能实现,在MIS系统中的表现也不理想。本文从软件复用的背景出发,对以上现象进行了分析,在构件的基础上探讨一种复用粒度更大,更标准化的复用单位,定义为软部件。本文综合各种各样的MIS系统的功能与性能,分析和归纳其共性与特点,在此基础上设计了一套通用功能模块,称之为MIS部件,该部件库系统(包括全部源代码)已经公开发布,本文通过对通用管理信息系统部件的设计和关键技术总结与分析,证明了应用软部件构建一般MIS系统的正确性,证明了进一步研究软部件具有深远的意义。
   
关键词:软部件 软件复用 管理信息系统 构件
                                                            Abstract
 The discovery and use of component technology have completely broken free the traditional software development model and extricated programmer from the situation of zero based code and much repetitive work.Nowadays component technology is used widely and at the same time proves to be of validity and superiority, in some ways it did raise the efficiency of software development, playing an important role in the software industry.However, the component is not standardized and its reusable particle size is not big enough, which lead to industrialization of software production being stalled, the performance in MIS system is also imperfect.This paper starts from the background of software reuse and analyses the above phenomenon.It also explores a kind of reuse granularity is larger and more standardized units of reuse on the basis of the component and defined it as software component.In this paper we combine with the MIS system analysis and summarize its general function modules, design general MIS components, and give a detailed description of the key technology.
 Through the design and analysis about general management information system components, it proves the validity of software component in building general MIS system and shows that it is necessary to carry out further study on software component .

  Keywords:  software component  software reuse  MIS  component  

                                                     为申请省优论文写的大摘要
                                                                 
 
   
软件复用技术的应用打破了以往传统软件开发模式,让程序员摆脱了从零开始,重复大量工作的尴尬局面。以构件技术为代表的实际应用尤为广泛,尽管在一定程度上提高了软件开发效率,在软件产业中扮演着举足轻重的角色,但是构件本身的不够规范化,复用粒度不够大等缺点导致软件工业化生产迟迟不能实现,在MIS系统中的表现并不理想。
   
我们在构件的基础上探讨一种复用粒度更大,可标准化的复用单位,定义为软部件。软部件是与构件有着相似性的不同概念。它的主要不同之处在于:软部件具有较高独立性,通常包含多项功能的封装,应用现场直接使用或做简单裁剪再组装;考虑了界面设计,直接调用就能自动生成界面;接口少而简单,甚至一个接口就能完成多项功能的事务;设计更规范化、标准化,能适用于大多数功能相似的应用系统,对要求特殊的系统只需要做很少的修改。以上特点是构件中尚未涉及到的,是部件与构件的分水岭。开发者只需要运用设计好的部件库组装堆积就能在短时间内完成数以月计的工作量,不难得出,软部件在复用技术领域的诸多优越性能使软件开发人员的编码最小化,极大缩短开发周期,同时降低测试和维护成本,是软件复用中的高端技术。
   
为什么要研究软部件?很早就有人设想,软件开发能否像生产硬件设施一样,只需要给出一定的标准,生产出规范化的合格零件,剩下的步骤只需要交给自动化车间,不同的车间会负责不同的模块,通过装配和集成就能完成整套产品来,而不是把大量的精力花费在重复性劳作中,即软件的生产模式是否也能够实现工业化。虽然没有讨论出确定的答案,但这种类比硬件工业生产的思路已经为软件产业的研究指明了方向,本研究提出软部件正如这里的零部件,是一种标准化、规范化的功能封装体,按照这种思路,如果设计出足够大的部件库,开发一个MIS系统时只需要从库里面选择需要的部件,补充少量非标准件后测试安装就能完成。发展和研究部件对加快软件生产工业化具有重大意义,但由于目前国内对部件的认识还不够深入,支持力度也不够大,部件技术要进一步发展,仅仅只靠几个人的力量无疑显得力不从心。
   
本研究首先对基于JAVA的软部件库的研究意义和目的、基础理论进行了阐述,结合相关文献进行了简单分析,证明本课题的研究是有意义和价值的。在此基础上,又对软件复用技术的背景进行了回顾,包括对软部件库的提出背景和发展历程以及设计需求,从理论上论述了软部件库的设计要遵守低耦合复用粒度大独立性好的原则。接下来对MIS部件库进行了概要设计和详细设计,涵盖了目前实现的部件库的全部内容。随后结合参与部件设计中的工作,对部件中的关键技术和问题进行深入研究和探讨,是全文的重点。
   
到目前为止,基于JAVA版的软部件库的部件完成数量已经达到百余个,其中包含13种表格式数据维护部件、8种单记录单表数据维护部件、17种查询类部件、13种数据处理类部件、16种数据通信类部件、7种报表格式生成类部件和多种系统工具类部件,此外,为适应更多MIS的应用,部件库还将继续扩大。部件库基本涵盖了MIS的一般功能,在实践中用部件库成功地改建了某校学生信息管理系统和某企业的工资管理系统,对应用系统的需求变更只修改了少量代码,节约了维护成本。部件库JAVA学习版也可以用作数据库教学实验工具,起到加强的作用。
   
本研究创新之处主要有:
   1.
提出软部件概念,研究软部件构建通用MIS的可行方案,目前设计出的百余个部件能快速组建一般MIS系统,这在国内外还没见报道。如果按照部件的思想与方法组织各种管理信息系统的设计,应当能建立数量有限且通用于所有MIS系统并用来构建任何MIS系统的软部件库。
   2.
提出并解决了部件中的很多技术难题例如单记录维护部件与各类打印部件中实现了复杂多变的自动布局算法、表格数据快速录入法、任意文本与图形数据导入录入法、数据处理程序部件化方法、部件被重复调用而产生冲突的解决办法、从PDF文件导入导出报表数据的方法、各种维护程序查询程序导入导出程序数据处理程序分类与覆盖需求的处理、通用于各种DBMS及基于网络的应用等问题。
   3.
部件中使用了代码表、字典表、自动布局与按参数布局相结合、数据完整性控制、数据安全性控制等技术,这些技术的应用满足了传统的MIS系统的常见需求,使得界面与数据处理更人性化,也巧妙地解决了数据前端与后台变换的问题。
   
基于JAVA的软部件库由众多老师和学生历时数年完成,经过了实践的检验,证明了软部件库的正确性和优越性,证明了发展软部件在当今软件需求量剧增的时代的迫切性和必要性,有远大的理论意义和现实意义,希望国家科技部门加大投入,支持发展。
   
本研究在分析过程中还发现了许多值得研究的问题,需要进一步研究各类应用系统的模块,总结共同点,设计更广面向的、面向社会的、具有商业意义的通用部件。
社会的发展离不开创新,一个国家要引领在前沿发展,必然也要有国家自主创新。研究软部件,掌握拥有自主产权的先进技术,相信软件生产工业化时代即将到来。
   
关键词:软部件 软件复用 管理信息系统 构件
                                               Abstract
The discovery and use of component technology have completely broken free the traditional software development model and extricated programmer from the situation of zero based code and much repetitive work. Nowadays component technology is used widely and at the same time be proved to be efficient. In some ways it did raise the efficiency of software development, playing an important role in the software industry. However, the component is not standardized and its reusable particle size is not big enough, which leads to industrialization of software production stalled, the performance in MIS system is also imperfect.
We explore a new kind of unit of software reuse on the basis of the component, of which granularity is larger and more standardized, it is defined as soft-components. Soft-components is a new concept different from component, though they seem similar. Soft-components is of high independence, it is usually an encapsulation that contains multiple functions. When applied to actual development it may be used directly or be simply cut then assembled. It takes into account the interface design, being directly called can automatically generated interface. Program Interface is simple, even an interface can finish many functions of transaction. It’s standardization applies to most systems similar in functions. Some special systems need to make only a few changes. Above characters have not been involved in component technology, which is the watershed between soft-components and software component. Developers can finish a system in a short time through accumulation by soft-components. It is not difficult to draw the conclusion that soft-components in the area of reuse technology of minimize software developers’ coding, greatly shorten the development cycle and reduce costs in test and maintenance as its superior performance .It is a high-end technology in software reuse.
Why to study the soft-components? Long time ago people imaged if there is way software produced like hardware facilities that only given a certain standard according to which qualified parts could be produced, then the remaining steps just leave to workshop, different workshop is responsible for different modules, by assembling and integration set ofproducts be made rather than spend a lot of energy in the repetitive work. To be brief, the question is that whether production model of software is also able to realize industrialization. No one has given a definite answer, but the thought of the analogy to hardware industrial production has pointed out the direction for the research of the software industry. Soft-components proposed in this study is like the "parts", is a kind of encapsulation, according to this train of thought, if soft-components library is large enough, the process to develop a MIS system is to choose the required components from the repository and add a small amount of non-standard ones, after test and installation the system would be completed. To acceleration of software to develop and research soft-components is of great significance for software industrialization. However, because of a lack of awareness that the current domestic has little support on the project, is difficult to continue further development on soft-components only by a few people.
Firstly, this thesis expounds the research meaning, purpose and basic theory of JAVA-based soft-components and analyzes it combined with related literature. It comes to a conclusion that this research on the topic is significant and valuable. Next this paper reviews the background of software reuse technology, including introduction, development and design requirements of soft-components. It theoretically discusses the design about soft-components should comply with rules that are “low coupling”, “big reuse granularity” and “in dependence”. Then this paper gives a description about MIS soft-components’ conceptual design and detailed design, which cover the whole content of the current implementation of soft-components. At the end of the thesis the key technologies and problems in design process is deeply researched, which are the focus of the full thesis.
So far, the number of JAVA-based soft-components has reached more than one hundred, which contains 13 kinds of tabular data maintenance component, 8 kinds of single record data maintenance component, 17 kinds of query component, 13 kinds of data processing component, 16 kinds of data communication component, 7 kinds of report format generated component and a variety of system tools component, in addition, in order to adapt to more application of MIS soft-components is continuing to expand. Soft-components basically meets the functional requirement of general MIS. The application of soft-components in practice isof success. We have rebuilt a school student information management system and an enterprise wages management system management system, in both projects the modification on code is negligible even through requirement change is massive. The economy on maintenance is visible. Furthermore, JAVA-based soft-components can also be used as a teaching experiment tool for database, which strengthens training.Renovations

1. Put forward the concept of soft-components, research a feasible scheme in building any general MIS, soft-components currently completed can quickly build an any general MIS, this technology hasn't yet been reported at home and abroad. According the thought and method of the organization of all kinds of management information system by using soft-components, it should be able to establish a limited number of soft-components library with which any general MIS could be built easily.
2. Solve many technical problems such as the complex automatic layout algorithm single in record maintenance component and various types of printing component ,method of table data rapid input, method of any text and graphics data import , method of data processing component-formed, solution about conflict in soft-components when being concurrently run, method of import and export data from a PDF file , processing of various maintenance and query and import and export data program covering requirement and problems common to all kinds of DBMS and web-based applications.
3. Use code table, dictionary table, automatic layout, manual layout according to parameters, data integrity, data security control technology and so on. The application of these techniques meets the common needs of the traditional MIS and make interface and data processing more humanized, also cleverly solves the problem of the front and back transform data.
It takes several years to design and complete JAVA-based soft-components by lots of teachers and students. Much practice has proved that the topic is of validity and superiority, showed that the development of soft-components is necessary in the situation where software demand is on the rise as time goes by. All in all, there would be great theoretical significance and practical significance to develop soft-components. Hope that measures be taken to invest
more energies into national science by technology department.
This paper also has found many problems worth studying during analysis. Further research is necessary to study all kinds of application system module, summarize the common ground, design more widely, socialized and commercialized soft-components.
Society can not develop without innovation, a country must have it’s own independent innovation to lead in the forefront of development. Research soft-components to master advanced technology with independent property rights, then we believe that software production industrialization era is coming.
Keywords
soft-components software reuse MIS component

 

 

摘  ................................................................... I

Abstract............................................................... IV

1 绪论.................................................................. 1

1.1 研究基于JAVA的软部件库的目的及意义.............................. 1

1.2 研究文献综述..................................................... 2

1.3 研究内容简介..................................................... 3

2 对管理信息系统软部件研究的回顾....................................... 4

2.1 软部件库的研究背景............................................... 4

2.2 软部件库的设计需求............................................... 5

2.2.1 可行性分析................................................. 5

2.2.2 关于软部件库设计原则....................................... 6

3 管理信息系统软部件设计概要........................................... 8

3.1 概要设计......................................................... 8

3.2 详细设计......................................................... 8

3.2.1 表格式维护功能............................................. 8

3.2.2 单数据表单记录数据维护功能................................. 9

3.2.3 查询功能.................................................. 10

3.2.4 数据处理功能.............................................. 11

3.2.5 数据通信功能.............................................. 11

3.2.6 打印报表功能.............................................. 12

3.2.7 系统工具类部件............................................ 13

4 部件库设计的关键技术研究............................................ 14

4.1 界面布局........................................................ 14

4.1.1 单记录维护部件界面布局.................................... 14

4.1.2 表格(单记录混合)式维护部件界面布局...................... 19

4.2 完整性控制与安全性控制.......................................... 21

4.2.1 完整性控制................................................ 21

4.2.2 安全性控制................................................ 23

4.3 数据校验........................................................ 25

4.4 权限控制........................................................ 27

4.5 无按钮存盘...................................................... 29

4.6 并发冲突........................................................ 30

4.7 代码表变换...................................................... 31

4.8 字典表的翻译.................................................... 34

4.9 其他问题及解决方案.............................................. 35

4.9.1 适应性与健壮性............................................ 35

4.9.2 数据同步.................................................. 36

.................................................................. 39

参考文献............................................................... 40

.................................................................. 41

 


   1
绪论
   1.1  
研究基于JAVA的软部件库的目的及意义
   
软件复用是指在构造新的软件系统的过程中,对已存在的软件产品(设计结构、源代码、文档等)重复使用的技术,至20世纪60年代以来,一直是软件技术的基本课题之一。从最近几十年软件发展状况来看,虽然软件生产效率一直在提升,但仍然不能解决用户对软件的需求与当前软件生产能力不高之间的矛盾。大量的软件工程方面的研究工作反映,软件复用是提高软件产业的生产率和软件质量的有效方法 [1]
在代码设计领域,软件复用从过程、函数、方法、宏到面向对象、构件、中间件、各种框架,类型多,应用广,已经成为大多数软件基本组成成分。人们从有软件起,就期望能有工业化的软件生产方法,期望形成为满足不同应用需要的软件生产线。在近十多年里,人们特别关注构件技术,投入了大量人力与物力开展研究,希望它能带来软件生产工业化的前景。但是,其类型与数量增加虽猛,却没有统一的规格、统一的方法,让人学习无从着手,使用手足无措,市场莫衷一是,企业各行其是,软件生产工业化的目标似乎还是那么遥远。
   
究其原因,面向对象、构件等技术成熟,但它们复用的粒度还不够大,在应用到系统中时大都不能构成独立的模块,往往还需要依赖其他成分再组建到系统中;在不同系统的设计中难寻相似结构;在系统维护中难寻统一的规律;从而使得软件设计与生产成本和维护成本居高不下,且有越来越高的趋势。
软部件是经封装的、面向业务工作而不是简单单一功能,是可以应用于不同应用系统,能适应于不同数据库系统与不同数据表结构的系统顶级模块;部件之间不存在直接联系、不要求彼此间的协作、包括了全局性界面设计的内容、不存在动态接口、依据接口参数调用[2]。它如同电子工业中的主板与插件一样,将完整的业务模块封装起来,到现场之后经过简单的组装即可快速使用,应当能极大的提高生产效率。如果能对大量的各种类型的应用系统分析与研究,寻求其结构的相同相似部分,找到规律,形成规范,应当能形成数量不过多的产品,将之用到实际应用中,就有可能提高生产效率,降低软件维护成本;由于数量少,更容易学习与使用,更方便推广应用;规范化与标准化的过程,可进一步提高软件设计质量。
   
软部件以任意的数据库为对象,采用从上而下方法设计,是规范化、标准化的代码类软件。与构件和其他软件复用技术相比,软部件具有复用粒度更大、耦合性更低、灵活性更高的特点。加大对通用软部件的研究力度,将有利于软件工业化生产的到来。
   2001
年以来,已经有许多学者对软部件设计技术进行了研究与探讨,出现了基于VFPPB的管理信息系统部件系统,2005年湖北工业大学基于JAVA的部件技术研究取得突破,若干部件程序通过专家鉴定达到世界先进水平。但是,研究成功的部件只有表格式维护、单记录维护、单查询、组合查询等区区几个,在之后几年里一直未建立系统的基于JAVA的软部件库,关于部件技术研究进展缓慢。
基于VFPPB的部件库的设计虽然能在一定程度上表现软部件技术的思想,但是,由于语言的局限,在实际生产中难派用场,说服力有限。
   2005
年的JAVA部件独立性不强,每个部件都涉及多个文件,彼此耦合,使用不方便,学习难度大。因此,有必要研究一整套基于JAVA的软件部件,将有一定的理论意义和现实意义:
   
1)理论意义:更深入研究软部件的设计思想和方法,在主流语言环境中研究实现软部件的可能性与技术问题,是对软件复用理论、特别是关于软部件理论的进一步证明与发展,进而可对软部件的研究提供指导。
   
2)现实意义:研究基于主流语言的软部件,形成部件库,并研究投入到实际应用中的可能性,有向生产力转化的可能性,可提高管理信息系统开发效率,降低软件生产费用与维保费用,促使计算机应用向更广更深领域发展,为适应未来物流网、大数据时代来到的需求打下基础。
   
本文研究的目的主要在于:
   
1)通过实际参加基于JAVA的软部件库的设计与研究,研究该部件库体系结构,总结其设计方法与关键技术。
   
2)结合该软部件库的设计分析软件复用技术研究现状, 更深入认识当前软件复用技术中存在的一些问题。
   
3)在掌握该软部件库设计技术与方法的同时,深入的分析和研究通用软部件应用问题,总结利用它开发管理信息系统的方法,进一步推进软部件技术的研究。
   1.2  
研究文献综述
   
由于计算机软件应用技术飞速发展,对软件需求量也日益增加,传统的软件复用已经满足不了这种现状,为进一步提高软件开发效率,基于构件或部件的软件复用技术越来越成为软件工程学科中的研究重点。    
梅宏认为,软件复用分为过程复用和产品复用,前者是通过生成器和技术手段生成符合要求的系统,受软件自动化技术约束。后者是通过已有的软构件组装成需要的系统,是目前主流的复用手段[3]
杨芙清认为,实现软件工业生产是真正解决软件危机的唯一路径,而工业发展模式均是符合标准的零部件以及基于构件的组装,其中构件是核心和基础,复用是必需的手段[4]
程学先认为,软部件与构件是不同的概念,对实现软件生产工业化的作用更是大不相同,目前,我们要促进软件生产工业化时代的到来,尤其有必要对它们进行区分,并加强关于软部件尤其是通用软部件技术的研究,努力促进软部件技术的发展[5]
   1.3  
研究内容简介
   
本课题研究内容主要包括以下几个部分:第一部分回顾管理信息系统软部件发展状况以及存在的问题;第二部分对一般管理信息系统进行系统分析,包括可行性分析,功能需求。第三部分对部件库进行概要设计与详细设计;第四部分结合所参与的工作,对部件中的关键技术和问题进行深入研究和探讨,是全文的重点。

 

  2 对管理信息系统软部件研究的回顾
   2.1  
软部件库的研究背景
   
1968年的NATO软件工程会议上首次提出了软件复用的概念,希望代码能被复用,实现软件开发的大规模生产。提出者Dough Mcilroy设想软件构件可根据其通用性等分类,类比硬件的设计,使软件系统由标准的构件进行识别、组装,这也是基于构件软件复用思想的雏形,虽然在以后的10年中,软件复用研究并未取得实质进展,但已经初步形成了软件复用的萌芽[6]
   
1979年,Lanergan发表的论文Rayther Missice Divison通过对大量COBOL源程序的分析,发现设计和代码中有60%的冗余,提出可标准化并被复用,这使得人们的焦点又重新回到软件复用这个概念上面来。在随后的几年里,其他软件工程师也通过研究发现大量金融、商业系统的设计模式和逻辑结构都属于类似的某一类模块,对这些模块重新设计和标准化可得到较高的复用率。这是软件复用的再发现期。
软件复用的发展期来临的标志是在1983年的第一次有关软件复用的研讨会,此后,美国IEEE软件工程学报和IEEE 软件分别出版了有关软件复用的专辑。1991年和1993年,分别举行了第一、二届软件复用国际研讨会。之后,欧洲实施了几个有关软件复用的重点项目,主要目标是提供软件复用的工具支持。
   1994
年软件复用技术已引起了计算机科学界的广泛重视,投入到这一技术的研究中人越来越多。面向对象技术的崛起给软件复用技术以新的希望,出现了类库、构件等新的复用方式,ActiveX起到了其典型代表的作用。软件复用研究被视为重点的同时,也被认为是解决软件危机、提高软件生产效率和质量的现实可行的途径。特别是在互联网时代,软件的构件化开发和软件复用是解决软件危机的重要手段之一。
95
年杨芙清院士在发表的《软件复用》中强调软件复用是对已有软件的重点使用,该软件可能是已经存在的软件,也可能是专门设计的可复用构件[7]”,提出生成技术和组装技术两类软件复用技术。99年又有论文《软件复用及构件技术》中提出应用系统中的三类成分:通用基本构件、领域共性构件、应用专用构件,指出符合标准的零部件(构件)生产以及基于标准构件的产品生产(组装)是产业工程化、工业化的必由之路[8]”
   
曾具有代表性的成果是北大的青鸟工程,它把软件的生产过程划分为三类不同的生产车间,即应用构架生产车间、构件生产车间和基于构件、构架复用的应用集成(组装)车间,这些不同概念的车间负责不同的任务,实现软件的工业化生产。而软件开发人员被划分成三类:构件库管理者、构件生产者和构件复用者。这三种角色所需完成的任务也是不同的,构件生产者负责构件的生产、描述;构件库管理者负责构件分类以及构件库的管理工作;而构件复用者负责进行基于构件的软件开发,包括构件查询、构件理解、适应性修改、构件组装以及系统演化。像这样的案例还有很多,例如早些年建立的上海构件库,现在已经有3000多个构件,其中还包含不少具有自主知识产权的领域构件等。
   2001
年程学先提出要重点研究系统模块一级、具有规范化、标准化、包括界面设计内容的构件产品,取名为软部件,希望其数量较少,易学易用,能如同硬件中的零部件一样,能即插即用地构建应用系统。
   2001
年到2008年,先后出现了基于VFP的部件库最小系统1.04.0版,之后又有基于VFP的部件库最小系统网络版,还出现了基于PB的软部件库。2005年又报告基于JAVA的部件技术研制成功,不过数量极少,各部件独立性很差,推广应用难度很大,之后一直未出现成系列的基于JAVA或其他主流语言的软部件库,自然也不可能有商业化的应用。
   
在各类设计语言中,JAVA语言由于其丰富的界面设计能力在管理信息系统设计中占主要地位,研究系列的基于JAVA的软部件库具有重要意义且需求迫切。
   2.2  
软部件库的设计需求
   2.2.1  
可行性分析
   
软部件基于对数据库的基本操作,在理论上是可行的。
   
部件基于对数据库的基本操作展开设计,并涉及到数据的安全性与完整性、代码运用、派生数据、处理的效率、并发操作以及图形和文本,联系实际环境,特别强调应用系统的界面需求,这样便能实现即插即用的效果。实际运用中的界面虽然是千变万化,但也是有章可循的,部件的核心技术是设计有限个部件来设计满足数以万计的应用系统的需求。针对有限个数据库操作界面和大量实际系统模块,总结它们的界面特征、性能和功能,就能制定一套标准的部件库。
   
其次,软部件在技术上也是可行的。
   
通用MIS部件经过多年的研究,已经出现了基于VFP的最小系统,其提供的部件库使我们在短时间内就能构建一个数据库应用系统。例如湖北工业大学商贸学院学生科管理信息系统、湖北工业大学财务管理系统就是基于此部件开发的。
   
虽然基于JAVA设计部件库存在难度,主要是因为该语言不具备宏替换语言结构,又是完全面向对象的语言,将基于VFP的部件系统移植到JAVA语言环境中举步维艰,但是,05年研制成功的基于JAVA的部件设计成功已经突破了最大的难关,使得软部件在JAVA环境中研制成功成为可能。
   2.2.2  
关于软部件库设计原则
   
通用软部件(下面简称部件),是用于完成特定任务或具有特定功能的程序代码的集合,是经封装的、面向业务工作而不是简单单一功能的系统功能级模块。它采用从上而下设计方法,是规范化、标准化的代码类软件[9]。在JAVA中,软部件是一些类的集合。软部件可以通用于不同应用系统,能适应于不同数据库系统与不同数据表结构,在应用于现场时可以如同硬件生产一样即插即用或经简单裁剪后插入使用。与构件不同,构件通常为实现某一具体的功能而设计,粒度较小,在使用时常常需要再和其他构件、对象再拼装或对程序进行修改之后再使用,常常要求提供框架之类程序使之可以获得支撑,在系统中一个构件往往需要得到其他构件的协作与支持才能共同为完成一件事务而工作,而软部件则具有特殊的特性,在许多方面与构件的概念相似,虽然在实际应用中人们一般不对其进行区分,但是软部件与构件是不同的概念,与构件相比,要求部件有以下较优越的特性。
   1
、低耦合
   
部件是业务级的独立模块。
   
通用软部件首先是一个应用程序的封装体,其功能是独立的。由于它的设计是用来复用、提供业务服务的,所以它包含了一项业务完成过程中所必须的功能,如对数据表的增删查改操作、多种导入导出操作、各种打印报表操作等;其次,它具有对环境的依赖性低、接口简单的特点,使用起来十分方便;由于其具有界面生成能力,能满足不同用户对界面的要求;部件的设计中考虑到了安全性、完整性、代码表和字典表的应用,是数据库相关理论与技术的实现与扩展,这些都是实际应用系统中要考虑到的,有较高实用性与可靠性;系统设计人员只需要选定部件,为其提供参数,就能快速以插件的方式构建到系统中来,为软件复用提供了很好地支持[10]
   2
、复用粒度大
   
采用从上而下设计方法,复用粒度大。
   
通用软部件的设计不同于软构件,它是先从一般管理信息系统的特征开始分析,综合大量实际应用系统的需求,研究一般性的管理信息系统的模块构成,分析不同应用人员对系统所提供的功能与性能的要求,分析各种应用系统模块的界面特征与在使用时的表现,针对任意的数据库和数据表组织设计。然后在此基础上展开进一步的分析设计。具体的设计又将功能模块分解,归纳出用户可能需要的具体功能组合,然后考虑由哪种程序语言来实现,最后再分析程序的界面、性能等。一个部件通常综合多项业务需求而设计,选定具体参数后就能完成一项完整业务需求,复用粒度较大。
   3
、独立性好
   
软部件在应用于现场时应当能即插即用式地使用。
   
反思硬件生产工业化的历史,工业化要求实现分工、要求自动化,因此,要求软部件能如同电子产品中的智能插件、机械产品中的通用零件和部件一样,只需设定初始参数、拨定若干开关就能用于新的场合。在构建软件系统时可以如同搭积木式地直接用它组建系统,也可以进行裁剪、去掉不需要的功能或成分、进行必要的修饰后再用来组建系统。
   
工业化的硬件生产要求首先设计好大量的标准件、部件,在设计新产品时,总是先选择已有的部件,补充设计一些非标准件就可以了,不仅效率高,而且质量好,造价大大降低。实际应用系统中使用的零、部件的需求是极为广泛的,我们不可能根据每一种实际产品需要的零、部件的大小与形状去设计部件产品,只能设计出少数几种规范化、标准化的产品供现场使用。具体机器或建筑的设计都不是从最基础的一颗螺丝、一颗钢钉的设计开始,而是先考虑已有部件库的储备,要基于标准件库的情况再量身定做。只在特殊情况下设计一些非标准件或外加工件用于特殊的机器与建筑。关于软部件的设计也需要这样,我们只能在功能与性能集成的基础上设计出数量不是太多的规范化的标准部件,才能方便选用并使系统设计规范化。
 

  3 管理信息系统软部件设计概要
   3.1  
概要设计
   
管理信息系统部件是面向抽象的业务,而不是具体的针对某一具体领域,管理信息系统通常都有一些共同特征,我们抽取这些共性,从更高的层次去设计部件库。MIS系统是一个由人、计算机等组成的能进行信息的收集、传送、储蓄、加工、维护和使用的系统。根据这些特点,我们设计的部件正是这些共同部分功能的封装,随着MIS需求的增加,部件库也会随之扩大,当部件库的设计量足够大时,便形成一种MIS的通用平台。通过对大量MIS的分析可得出,其共同模块大都包括:数据维护、数据查询、数据处理、数据通信、打印报表、系统工具。系统结构如图3-1所示。
                               
3-1 管理信息系统功能结构图
   3.2  
详细设计
   3.2.1  
表格式维护功能
   
表格指只由行与列构成的容器,每个行与列的焦点是一个文本框(或组合框或其他表现数据的控件)。虽然在SQL SERVER 2008中借助资源管理器的图形界面可产生编辑数据用的表格界面,但有些操作不够方便,例如不能借助代码库录入、查询也较麻烦等等。很多变成语言例如JAVA对表格界面都有很好的支持,在表格式维护部件中,数据以表格形式形成视图,用户可以很快速定位到目标数据,并且通过鼠标也很方便地对记录进行增加、删除、修改,除此之外,用户根据自己的需求进行不同的表格式维护部件选择,部分功能以控件的方式封装,也可以进行自定义安装卸载。所有表格式维护部件都提供了最基本的增加、删除、修改功能,都允许选择字段投影要求向用户提供不同视图,功能结构图如图3-2所示:
 
                           
3-2 表格式维护部件功能结构图
   
总结一般管理信息系统对表格式维护不同的需求,初步设计了13种表格式维护部件:通用表格式数据浏览部件1、可变换显示提示通用表格式数据浏览部件2 、表格式基础数据维护2、数据直接录入表格维护3、数据直接录入可使用代码表表格维护4、需先添加空记录再录入表格维护5、提供完整性控制表格维护6、提供安全性完整性保护表格维护7、清库与批处理8、单记录加表格表格维护10、增加状态行表格维护11、通用表格维护12、可变换显示提示通用表格维护13
   3.2.2  
单数据表单记录数据维护功能
   
表格式界面加滚动条能较完整看到一个表中全部数据,人们熟悉其界面风格,操作自然直观,布局简单单一,容易实现。但是,当字段数量多或存在宽度大字段时操作变得不便,对于文本类型、图形类型缺少表现力,为此需要设计另一种风格的数据维护部件。单记录数据维护部件是为各种单记录数据维护设计的通用部件,其特点是提供一个操作界面,以文本框或文本域的方式显示一条数据记录,每一文本框或文本域显示当前记录的某一字段,需要不停移动指针才能对不同记录操作。字段显示要求采用特定算法布局才能做到整齐美观。如果能根据用户要求设计与布局,用户可以很方便地修改、删除、添加完整的记录。所有部件都通过下一条上一条第一条末一条浏览等方法程序移动指针是实现对不同记录的操作。所有部件都允许以字段号形式选择投影字段要求向用户提供不同视图,都可以通过选择按钮使每一次调用都实现一个具体的功能。一般应用系统中录入添加修改删除变换等操作都可以选择参数调用其中某部件实现。
   
单记录维护部件可以独立的运行,根据用户的操作权限进行过控制,每一个按钮提供一个完整的功能,用户可以对其进行选择性安装。功能结构如图3-3所示。
                             
3-3 单记录维护部件功能结构图
   
总结一般管理信息系统对单记录维护不同的需求,初步设计了8种单记录维护部件,即:单记录维护1、适应异构性变换的单记录维护2、涉及图形字段及域完整性维护单记录维护3、可使用代码表可重复调用单记录维护4、带域完整性控制可使用代码表单记录维护5、使用组合框带域完整性控制单记录维护6、一对多多放表维护7、多对多联系表数据维护8
   3.2.3  
查询功能
   
查询是MIS的基本功能,查询类部件允许用户根据自己的需要制定不同的查询条件或方案,界面提供字段和条件符、表达式等控件,查询的结果直接以表格的形式显示,也可以通过通用浏览部件在新窗口呈现,有较高的灵活性。功能可以分为基本查询和高级查询,功能结构如图3-4所示:
 
                               
3-4 查询部件功能结构图
   
总结一般管理信息系统对数据查询不同的需求,初步设计17种查询护部件,即:单条件选字段专项查询1、带字典表单条件选字段专项查询2、单条件多表选字段专项查询3、带字典表多表选字段专项单查询4、二条件选字段专项查询5、二条件带字典表选字段专项查询6、二条件多表专项查询7、指定条件表达式查询8、多表带字典表指定条件查询9、单表组合查询10、带字典表组合查询11、带代码表多表组合查询12、多表含聚集函数输出组合查询13、统计查询14、文本检索15、显示SQL语句文本查询16、通用实验用组合查询。
   3.2.4  
数据处理功能
   
数据处理是MIS的一个重要功能模块,我们在MIS中通常需要对查询的数据进行一些计算和求值,通用数据处理部件设计了常用数据处理函数库,初步设计了部分常用的统计计算公式和求值运算,算是搭起了一个框架,期望在今后不断增加数据处理函数或方法,增加数理统计和其他数据处理的部件,逐步使能满足大部分应用系统的需求。功能结构图如图3-5所示。
 
                                       
3-5 数据处理部件功能结构图
   
总结一般管理信息系统对数据处理不同的需求,初步设计了13种数据处理部件:全表统计部件、分组统计部件、横向数据处理部件、纵向数据处理部件、删除重复记录部件、求关系差集部件、求关系并集部件、求关系交集部件、关系除法部件、单数据交叉表部件、多数据交叉表部件、二级分组交叉表部件、一元线性回归部件。
   3.2.5  
数据通信功能
   
应用系统之间、程序与应用系统之间常常要进行大量数据交互,一般以文件或数据表作为媒介。一个系统也常将数据转存到其他文件或数据表中。将当前数据表中内容转存到其他文件或表中称为导出;从文件或其他数据表中将数据转存到当前表中称为导入。
网络已经是管理工作中不可缺少的工具,从网上下载数据到当前表中,或将数据上传到网络中也是应用系统必备功能。这些都称为数据通信。本系统设计了多种专门用于通信的部件,结构图如图3-6所示。
 
                                 
3-6 数据通信功能结构图
   
总结一般管理信息系统对数据通信不同的需求,初步设计了16种通信类护部件:覆盖式导出到纯文本文件、XML文件与其他数据表部件,添加式导出到纯文本文件、其他数据表部件,修改式导出到纯文本文件、XML文件与其他数据表部件,覆盖式导出到Office文件部件,添加式导出到Office文件部件,修改式导出到Office文件部件,覆盖式从纯文本文件、XML文件与其他数据表导入部件,添加式从纯文本文件、XML文件与其他数据表导入部件,修改式从纯文本文件、XML文件与其他数据表导入部件,覆盖式从Office文件导入部件,添加式从Office文件导入部件,修改式从Office文件导入部件,从网页下载并导入部件,导出生成邮件部件,通用导入部件,通用导出部件。
   3.2.6  
打印报表功能
在各种管理信息系统中,设计打印报表都是重要内容,也是很费时的工作。对于常用到的格式固定的报表可以先设计报表格式文件,然后调用该文件打印。需要设计方便操作的格式文件生成程序,及根据格式文件组织打印的程序,结构图如图3-7所示。
 
                                           
3-7 结构图
   
总结一般管理信息系统对打印报表不同的需求,初步设计了7种报表格式生成类部件及相应的报表预览、报表打印部件:简单表格式报表格式生成部件、带分组统计报表格式生成部件、统计图表生成格式部件、带统计图报表格式生成部件、单记录式报表格式生成部件、标签表格式报表格式生成部件、标签单记录式报表格式生成部件。
   3.2.7  
系统工具类部件
   
系统工具类部件是为了方便学习与使用而额外设计的部件,主要提供对系统用户、角色、权限、接口参数等维护,同时对数据的备份和还原也提供了支持,是对应用系统功能的加强。应用系统的系统工具由用户自己去选择添加或卸载。
   
本系统工具类部件包括:用户表维护部件、权限表维护部件、接口参数表数据维护部件、帮助部件、建立新数据表部件、数据表结构维护部件、数据清空与初始化部件、数据备份部件、数据还原部件。

  4  部件库设计的关键技术研究
   
软部件库的设计是验证部件实际意义和价值的有效证明,基于软部件的通用MIS思想早在2000年被程学先教授提出,在长达十多年的研究里,VFP的最小系统部件库和JAVA的部件库相继被实现,并获得好评。2013年初,程学先教授又重新对JAVA版部件库进行了设计和修改,指出部件与部件之间不应该有依赖关系,每个部件只应由一到两个程序组成,如同硬件系统中插板插件一样,每个部件都能单独工作,不强调内部的复用。在此期间,我有幸参加了部分部件的设计与实现,下面总结这些软部件的制作过程中遇到的一些难点和解决问题的关键技术。
   4.1  
界面布局
   
软件的操作界面是用户与计算机进行信息交换的通道,是用户指令下达的接口,友好的界面对用户来说不仅是一种欣赏,更重要的是方便用户输入,使操作更正确、更方便快捷,保证工作质量,提高工作效率。由于软部件是不以特定系统为目的设计的,必须要考虑界面的通用性。
界面布局的难题出在单记录维护部件中,首先是在JAVA环境中不能以变量名做类名,而通用软部件界面对象是变量而不是常量,到目前为止,还没见到任何文字介绍其解决办法或听说其解决办法,如何整齐、美观地将任意一个表涉及到的字段名和数据框以及列表框安装在面板上成为一个富有挑战性、创新性的问题。JAVA虽然提供了多种布局管理器,但只是对某些有规律、有共同特点的控件有用,布局效果比较单一,难以普遍满足用户要求,有必要另外设计通用的布局算法。
   4.1.1  
单记录维护部件界面布局
   
1)问题分析
   
单记录维护部件的界面主要由字段标签Label、文本框TextField、文本域TextArea以及列表框List组成,某些应用还要求有组合框、图形框及其他表现数据的控件。部件面对的表是不确定的,也就是说程序中获取的表的字段个数、宽度属性、数据类型也是动态的,程序中无法用固定的类名对这些控件设置固定位置。尝试用java api提供的布局管理器,经过多次试验发现都行不通。
   1
GridLayout提供表格式布局,其原理是将界面划分成二维表格来管理,表格的行和列可以自定义,看上去能解决问题,实际不然,原因是控件的大小不一,特别是TextArea,其维护的是长文本类型数据,需要占用更大的空间。而GridLayout只适合对大小相同的控件进行整齐摆放。
   2
FlowLayout以流的形式布局,其原理是将控件从左到右,从上往下的方向进行摆放,考虑将LabelTextFieldTextArea先后排好序,在逐个添加到布局中,在无TextArea的情况下基本能产生良好的界面效果,但如果中间有TextArea存在,整个界面就会被打乱。另一个问题是,此布局不会将各行填充布满,实际效果往往是在每一行控件的最后会留有空隙,不整齐。
   
关于动态的控件定义、安装、数据读出与写入另有文章介绍,下面重点介绍我们设计的布局方法的算法。
   
2)解决方案
   
通过以上分析容易发现,控件的布局的影响因素是LabelTextFieldTextArea的长和宽,只要在程序中获取当前表对应的各字段控件的这些信息,通过计算分析,便可设计出符合要求的布局。具体是:
首先自动布局计算初始参数。
   
在界面参数数据表中按每一字段填写一条记录。
   
对字段宽度小于60的且未指定为特殊字段的字段采用TextField单行文本框表示,假定所有字都为5号仿宋体,各组件高度与宽度根据字段宽度计算。组合框的高度与宽度根据字体、字号计算后加上滚动条的宽度。其他采用多行文本框、单选按钮、复选框或列表框表示的组件,其外观尺寸按约束条件表中数据设定。
标签名根据字典与约束条件表确定的名字(如果某字段没有填写对照的名字,默认标签名就是字段名)计算宽度与高度。每行记录一个字段标签与字段组件二方面数据。
   
组件类型按特殊表示字段号表分解填入组件的名称。
   
在以上基础上进行进一步的布局,布局关键是不同高度组件的混排处理,应当尽量做到:1、对于那些要求特别宽的组件尽量放在布局的上面或下面;2、对于那些特别高的组件尽量放在布局的左面或右面;3、单行文本框与组合框布置在布局的中间。具体程序流程如图4-1所示。本程序先计算可安排空间大小,预安排列表框、多行文本框、单选按钮与复选框等长高或扁宽组件到右边与下边位置上,再在剩余空间安排其他组件,最后通过调整完成布局。
   
在排列时,对于长高型组件,可以先按最高组件统一高度,对于扁宽型组件,可以先按最宽组件统一宽度,使得整体显得整齐。但如果空间总体不足,则应回复按实际高宽排布。
   
对于大多数组件,在字段总数较少,界面比较空余时,可以按列统一宽度,使界面显得整齐美观。当字段总数较多时,只对第一列标签统一宽度;4、当一个组件加入行时,有两种情况:加入当前行和加入新生成行。当该组件是页面的第一个组件或该组件宽度加上之前的当行宽度大于页面可用宽度时需要生成新行,组件加入新行;否则加入当前行,其算法为:
   1.
设当前行已占用宽度为w1,当前行可用宽度为w2,组件宽度为w3,组件行间距为w4;(当前行可用宽度(页宽)减左、右边宽,再减所有长高型组件总宽的值)
   2.
计算加入组件后的宽度:w5=w1+w3+w4
   3.
w2大于w5时,组件加入当前行,其距左边距离等于上一个组件距左边距离加上一个组件宽度再加组件间间距。转6);
   4.
w2小于w5时,调整当前行中组件的宽度,使得行尾部剩余的空白空间按比例分配到各个组件中,使得布局美观。
   5.
生成新行,组件加入新生成行,其距左边距离等于页面可安排空间左间距。
   6.
结束。
   
其中4调整组件间距的算法如下:
   
1)该行第i个组件的宽度设为wi,该行总组件数为n,组件间距设为wj
   
2)计算所有组件间距总和:ws=wj*(n-1) 
   
3)当前行已占用宽度为w=w1+w2+……+wn+ ws,当前行可用宽度为wk,计算行尾部剩余空间  w0=wk-w
   
4)新的组件宽度wi=wi+w0/n
   
行的起始位置和高度的计算方法:
   
第一行的起始位置即页面可用空间的左顶点坐标,包括纵向y值和横向x值。其他行的y值为上一行的y值加上一行的高度。行的高度由该行中加入的组件的高度确定,一般为该行所有组件高度的最大值。
   
在界面生成过程中需要考虑一些特殊问题:
   1
)缺件与补件:
   
在已建立界面参数数据表后,对程序常有维护要求,此时可能会要求去掉一些控件,添加一些控件。如果又重新从头生成,效率不高。本设计采用尽可能保留原有手工调整数据的方法,减少再生成工作量。具体而言,是保留各控件大小、相距位置中手工修改的痕迹,纪录自动生成算法与最终数据间差值。在再生成时,先根据原定算法计算参数,并利用上述数据加以修正,最后只进行一次手工确认,使提高重生成效率。
   2
修饰用控件插入功能:
好的界面不仅要求能妥善处理数据控件与程序控件,而且要能充分利用各类修饰控件,使用艺术手段增强美的效果,例如加入插图、声音文件、动画、标题。其实现方法是在手工修改界面参数数据表的程序中,提供全体下移、右移的手段;向程序员展示当前空闲空间情况;提供常用且与当前空间相适宜的算法;提供图片、动画、声音格式及背景图片格式等供选择。
   
3)方案选择和效果
   
在程序实现上述算法之后,做了大量实验和测试,部件对任意字段表均能完美布局,达到了预期效果。效果如图4-2所示。

 

                 4-1单记录维护通用部件自动布局程序流程
 
                       
4-2 单记录维护程序运行效果图
   4.1.2  
表格(单记录混合)式维护部件界面布局
   
1)问题分析
   
在表格式维护部件1011在表格之外,提供了当前数据表需要显示的字段面板,与单记录维护部件布局问题类似。Java api提供的布局管理器无法满足界面整齐布局的需求。
   
2)解决方案
   
方案一是通过前面单记录维护部件提到的界面布局算法来布局,另一种布局较为容易实现,其思想是把字段和它对应的文本框封装起来当作一个整体控件。具体做法是:
   1)tableTenance10
11中提供一个内部类:Filed,继承自JPanel,该类提供了单行文本框JTextField、多行文本域JTextArea以及标签JLabel。规定,列数据宽度小于60JTextField,具体宽度为列数据宽度*8,否则用带滚动条的JTextArea
   2)
由于JAVA语言不允许以变量名作为数组的索引,取而代之可以用Map类型以键值对的形式管理当前表的字段,key存放字段名,value则对应field控件。也可以创建一个一位数组,存放所有字段名,用ArrayList管理field控件,通过数组对应的下标来管理。
   3)
在将这些字段安装在面板上时,摆放的规则是:首先将控件按类型分开(JTextFieldJTextArea区分出来),按照字段在数据库中的顺序从左到右摆放,如果当前行的空余宽度容得下下一个控件,则摆放下一个控件,否则找到上一个控件,将其宽度增加至与面板末端对齐。
   4)JTextArea
控件摆放在JTextField之后。
   5)
简单的程序流程图如图4-3所示:
 
                               
4-3 表格式维护部件界面算法流程图

  3)方案选择和效果
   
表格式维护部件1011实现了上述提出的方案二,在测试中,对任意字段表的布局特点是:每一行是等高度的字段标签和文本框,充满面板的全部宽度。长文本域单独或同其他文本域等高沾满面板全部宽,并且在面板的最下面。整体看上去比较整齐,达到预期效果,如图4-4所示。
 
                                 
4-4 表格式维护部件运行效果图
   4.2  
完整性控制与安全性控制
   
实际应用系统要求实现数据完整性与安全性控制,在各数据库软件中都提供了这些约束,但用户在界面交互时,如果仅仅靠数据库软件中的约束来验证,数据通过数据库底层封装的错误信息再返回到前端,效率会大打折扣,网流量大且容易引发错误。我们在设计JAVA部件时考虑了数据完整性、安全性控制的问题。某些部件提供了专门的完整性、安全性文件接口,要求在系统中建立接口参数表,记载关于数据安全性与数据完整性约束定义,有关部件打开这类文件,读取有关约束条件数据,再在用户操作全过程中监控用户行为,一旦发现违背约束条件的事件发生,立即予以纠正,不将错误发到数据库中。接口参数表可以两种形式创建,一是以文件的形式(例如txt文件)创建,第二种是以数据库表的形式创建。前者处理简单,但是安全性不够好。后者是用数据表保存数据,对程序可操作性强,安全性好,但需要考虑过多的参数表导致数据库负担加重的问题。我们部件系统中,单记录式维护部件采用前者,表格式维护部件采用后者,均未试验性质。
   4.2.1  
完整性控制
   
1)问题分析
   
完整性控制是数据库对数据的一种保护机制,确保数据的语意正确性。一般情况下在设计数据库时,都需要对需要的字段建立约束,数据在变更时,通过这种机制来验证数据的合法性。但事实上,用户往往希望应用系统也能提供这种机制,一方面由于数据在达到数据库之前就可以进行校验,提高了系统的性能和效率;另一方面减少程序出错的可能性,更健壮。
   
部件的完整性控制关键技术在于其通用性,因为部件不是和某一张表绑定的,控制约束条件不能在程序中固定写死。
   
2)解决方案
   
通过分析可以发现,部件是在菜单创建的时候绑定其操作的数据表的,假定在此时也为其指定完整性控制约束条件,便可通过参数传入部件了,依照这种思路,在此之前若存在此数据表的完整性控制约束文件,就能很好地解决这个问题。接下来的难题是设计专门为数据表创建完整性控制约束的工具类程序。
在设计工具类程序时,我们需要考虑二个问题:一是弄清约束条件形式,查阅大量关于数据库完整性约束的资料可以总结出约束条件大致分为三种形式,最大最小值、值域、条件表达式;二是采用哪种方式存放完整性控制信息,例如以txt等文件方式存储称为文件型参数表,以数据库表方式存储称为数据表型参数表。
   1
)文件型参数表
   
我们设计了completeTool程序辅助设计与建立文件型接口参数表,在程序调用时,用户可以选择目标数据表,接下来选择已有的参数文件名,若不存在,则创建新参数表。
为减少文件数量,方便管理,将实现某一操作的有关域完整性控制、安全性约束控制、字段布局数据等置放在同一文件内,用标志位区分属于那一类约束。
   
参数表文件中的内容规定格式:每一行数据表示目标数据表某一字段的完整性信息,分别是标志位字段名最大值最小值值域条件表达式,标志位为3,表示完整性记录,各内容之间以中文句号间隔。
   
当读取完整性控制记录到表格中时,标志位非3的记录读入在缓存中,用户录入、修改、删除数据再次存盘时,再一并将缓存数据和表格数据写到参数表文件中。
   2
)数据表型参数表
   
设计了completeTool4DB程序辅助设计与建立数据表型参数表,程序中提供在数据库中创建表的功能,但字段名固定为标志位字段名称最大值最小值值域条件表达式用户名称许可字段号权限,规定:标志位为3的记录中除与完整性有关的字段外,其他字段一律为空。
   
当读取数据到表格中时,select语句中只需加上“where 标志位=3”即可选择全部完整性控制数据,通过表格视图以及按钮操作可以很方便地进行数据的维护。
   
带数据表型参数表的部件例如表格(单记录混合)式数据维护部件10等,除读取参数表数据与文件型参数表不同外,其余类似。
   
3)方案选择和效果
   
文件型参数表和数据表型参数表都能快速地对操作数据进行合法性验证,前者操作起来快捷方便,开发者甚至可以直接用文本编辑器修改里面的内容,但从另一侧面也说明了其缺乏安全性。后者内容直接存在数据库中,安全性有保障,但加重了数据库的开销。运行效果如图4-5所示。
 
                           
4-5 完整性控制程序运行效果图
   4.2.2  
安全性控制
   
1)问题分析
   
安全性控制是数据库系统的又一个重要机制,是保护数据库,防止数据被非法访问导致的数据泄露、更改或破坏。尽管DBMS都提供安全性保护,不过大都在系统、库、表级,如果要深入到记录级、字段级就要设计许多存储过程或触发器,将很不好用。因此,一般实际应用系统都提供控制手段,不将问题留给数据库。在实际应用系统中,不同的用户角色拥有对同一张表不同的操作权限,甚至控制权限精确到某一个字段、某些条记录。部件设计中设计安全性控制的关键技术在于设计出具有通用性的安全性控制表。
   
2)解决方案
   
安全性控制同完整性控制类似,可以设计工具类程序,由它来为数据表提供字段的访问权限。类比oracle的权限机制,将应用系统的用户权限分为iudqa五个类别,分别代表对字段的插入、修改、删除、查询和全部操作,同时设计允许做相应操作的字段号表,将控制细化到字段级。安全性控制数据存储形式也分为文件型和数据表型。
   1
)文件型参数表
   
设计了secureTool程序辅助设计文件型安全性约束参数表,用户可以选择目标数据表,接下来选择已有的参数文件名,若不存在,则创建新参数表。
   
参数表文件中的内容规定格式:每一行数据表示目标数据表某一字段的完整性信息,分别是标志位用户名许可字段号权限,数据和域完整性控制约束条件存放在同一个文件中。标志位为2表示安全性有关记录,各内容之间以中文句号间隔。
   
当读取安全性记录到表格中时,标志位非2的记录读入在缓存中,用户录入、修改、删除数据再次存盘时,再一并将缓存数据和表格数据写到参数表文件中。
   
带文件型参数表的单记录维护部件例如单记录数据维护部件37,在安装修改存盘、删除、录入存盘、查询等按钮时,根据当前用户对应安全性参数表中的权限来控制这些按钮的操作状态。iudqa分别表示录入、修改、删除、查询、全部权限,相应的按钮若无权限则变成灰色不可点击。
   2
)数据表型参数表
   
设计了secureTool4DB程序辅助设计数据表型参数表,同完整性控制设计程序一样,不同的是,在加载表中数据时,选择标志位为2的数据。
 
3)方案选择和效果
   
同完整性控制设计程序一样,运行效果如图4-6所示。
 
                                     
4-6 安全性控制程序运行效果图
   4.3  
数据校验
   
数据校验是完整性控制的体现,某些需要完整性控制的部件要求在用户对数据存盘前进行合法性校验,这种方式不仅友好而且让操作效率更高。
   
1)问题分析
数据校验的关键问题在于何时对文本框的数据进行校验。数据存盘之前的事件有按钮点击事件actionPerform和文本框失去焦点focusLost事件,其监听器均可以加入校验逻辑,但如果设计不好就会出现各种问题。例如在前期的设计中对focusLost添加操作时,校验不通过弹出提示框时,两个文本框同时暂时失去焦点,此时又会触发focusLost事件,进入死循环。另一个问题是,在当前文本框因校验不合格而再次聚焦时,在不同jdk版本下的处理事件触发的情况不一致。
   
2)解决方案
   1
)方案一是在focusLost触发时执行校验数据代码
   
部件中对每个字段失去焦点时进行数据检查,若检查通过才允许进行下一个字段填写。通过实验证明,在JDK1.6JDK1.7环境下调用TextFieldrequestFocus函数有差异,假定有TextField jtf1jtf2,当调用jtf1requestFocus,焦点从jtf2转移到jtf1时,在前者环境下会同时触发jtf1jtf2focusLost事件。为解决这种问题,增加一个标志变量isValid,记录失去焦点的文本数据校验是否通过。可以通过isTemporary判断是否是临时事件(例如弹出提示窗导致的失去焦点事件就是临时事件),则每一个字段文本框的失去焦点函数的算法是:
   1.
对暂时性事件不予处理,获取当前事件源source
   2.
判断前一个失去焦点的控件是否验证通过,若通过,则进行验证。
   3.
source验证失败,更改验证标识isValidfalse,保存当前控件preComp,弹出框提示,source获取焦点。
   4.
source验证通过,若source不为之前的preComp,更改isValidtrue
   
对带有参数表控制的部件添加一个FocusAdaptor的子类FocusMonitor,添加属性有   JTextField preComp=nullboolean isValid=true,每次触发FocusLost时临时变量source赋值当前事件源,程序流程图如图4-7所示:
 
                             
4-7 完整性验证算法流程图
   2
)方案二是actionPerform触发时执行校验数据代码
   
为数据存盘按钮添加点击事件,在其actionPerform中添加处理,与方案一不同的是,此时的校验是针对所有字段数据的,如果发现有一个不合法,则让该字段文本框聚焦。算法要比方案一中简单的多。
   
3)方案选择和效果
   
在部件的实际设计中应用了方案一,原因是方案一中在每次填写完数据后就会自动校验,有较高的实时性,而在方案二中要填写完所有的的数据,到点击存盘时才会给出校验提示,若存在错误则须再次回到文本进行更改,操作不便捷。例如部件单记录维护部件35等实现了方案一,经过测试,可对任意带完整性控制和安全性控制的表进行数据校验。运行效果如图4-8所示。
 
                     
4-8 带安全性验证的单记录维护部件运行效果图
   4.4  
权限控制
   
权限控制是安全性控制的体现,某些需要完整性控制的部件要求根据当前用户身份来限定其操作权限。为数据提供了安全保障。
   
1)问题分析
   
权限控制的关键技术在于如何对用户屏蔽某些无权访问的字段和相应的操作。部件中可以获取从菜单程序带过来的按钮集和字段号表以及安全参数表,要考虑的问题是通过对这些参数的处理,根据当前登录用户角色显示不同的视图,并且提供相应的操作。
   
2)解决方案
   1
)目前比较可行的方案是,为每一个用户分配角色,在部件调用时,根据传入的安全性参数表结合当前用户角色进行控制,如图4-9所示,程序中的算法为:
   1.
从数据库中获取当前用户角色集,读当前表指定的安全参数表数据。
   2.
遍历用户角色集,若在安全参数表中出现,则记录该角色对应的可操作字段号和权限集
   3.
2中得到的可操作字段号和字段号表的交集,所得到的字段号表为实际要显示的字段号。
   4.
遍历安装的按钮,从权限集中若能找到对应的权限则设置为可触发,否则置为灰色,不可使用。
 
                   
4-9 安全性控制算法简单流程图
   2
)经过分析提出另一种可行方案,把安全性参数表设计成公共的,参数表里面的字段有角色名表名集操作权限集,部件中要对当前表进行安全性控制,只需从这张全局表里面获取参数即可。如图4-10所示。

 
                             
4-10 角色对表的操作权限示意图
   
3)方案选择和效果
   
在得出的解决方案中还存在一些遗留问题,例如,以上提出的方案一只是对角色对应的字段进行了显示与否的控制,对这些字段控制的分配的权限都是一样,如要么都可更改,要么都可删除等,而实际中出现这样一种需求,角色a要求对字段1有删除权限,角色b要求对字段2有更改权限,这就需要部件的权限控制精确到每一个字段,在当前的部件接口参数表中考虑了这个问题,但还没在任何部件设计中使用。如果每一张安全参数表属于一张数据表并对应个别部件,表的数量将大大增加,无疑增加了数据库的负担。而方案二提供的全局参数表可以很好被部件使用,但无法过滤字段号表,也无法对具体字段进行权限控制。
   4.5  
无按钮存盘
   
表格式维护部件34要求数据直接录入,而不需要存盘按钮,该功能类似于sqlserver的表格编辑器。这类部件提供直接对表格的编辑,操作简便,方便盲打,非常受欢迎。
   
1)问题分析
   
无按钮存盘的关键技术在于对鼠标事件的处理。当用户修改或添加完一条记录进入下一行编辑状态时,之前的行数据要进行校验后实时存盘,还要求其在存入数据库时反馈信息;行数据校验失败或者存盘异常则获取焦点;若是编辑最后一行数据,数据应该使用insert语句存盘,同时表格增加一行空数据供新数据录入;点击某单元格时,该单元格进入可编辑状态。
   
2)解决方案
   
在监听器中记录焦点离开的表格行号,程序流程如下:
   1.
点击的行是原来选中的行或用户第一次点击行时,单元格进入可编辑状态。如果用户第一次点击的是最后一行,则表格新增一行空数据;点击的是其他行,则先前的行要存盘验证,在存盘验证之前该行依然选中。
   2.
如果是最后一行数据,调用insert语句存盘;非最后一行数据存盘,则要检查关键字是否为新值,否则调用update语句存盘。如果关键字为新值则在提问并获允许后调用insert语句存盘。
   3.
提示更新或录入数据的状态。
   
3)方案选择和效果
   
由于这类部件的所有数据操作都集中在鼠标点击事件里面,所有对鼠标监听器的设计是一个十分繁琐的过程,在设计期间也遇到过各种各样的问题,例如最初考虑过重写表格的单元格,用TextField来填充表格,然后为其添加focusLost事件,但到最后发现行不通,因为每一个单元格都需要添加该事件,包括表格动态增加的行。
   
表格式维护程序最终实现了上述方案,经过测试,适用于任意表。
   4.6  
并发冲突
   
在用部件构建MIS系统时,同一个部件可能会被调用多次,如果直接使用,就会产生命名冲突,部件之间相互影响,造成数据混乱。
   
1)问题分析
   
数据混乱的根本原因是多个相同的部件中用到了static类型的共享变量。例如,A部件程序中定义有static JFrame frame属性,当A程序被多次调用时,窗口虽然能显示多个,但在内存中frame变量只有一份,对其中一个界面的操作会影响到另一个界面。
   
2)解决方案
   
第一种方案是动态传入窗口。在部件中创建一个frame1类,定义多个staticJFrame变量,同时初始化这些变量。HDDMenuCreate程序在构建MIS系统时,如果创建两个相同的部件,生成的菜单程序会自动从frame1中选择不同的窗口作为means方法的一个参数,这样,即使是相同的部件同时运行时,彼此拥有不同的窗口类,继而不会影响各自的交互。例如单记录维护部件4,方法means的第二个参数frame1从菜单程序中传入。
   
第二种方案是建立相对独立的变量系统,尽量少用static变量。让部件类从JFrame继承,定义自身的静态引用frame,其余属性均为非静态变量。在部件的静态方法means中调用frame的构造方法,接下来调用frame的成员方法初始化属性frame.initParameter(parameter)以及界面frame.initGUI()。由于每次调用means方法时,frame都会被分配一个实例,所以相同的部件之间不受影响。需要特别注意的是,在退出按钮的事件中应该调用当前类的隐藏方法,写法为类名.this.dispose()”,如果写成“frame.dispose()”就很可能出错,因为frame引用的很可能不是当前的实例。例如表格式维护部件4中定义了一个static tableTenance4 framemeans方法中执行:frame = new tableTenance4();frame.initParameter(parameter);frame.initGUI();语句,其中initParameter处理从菜单传入的参数,initGUI负责初始化界面。示意图如图4-11所示。
 
                                       
4-11 部件调用示意图
   
3)方案选择和效果
   
目前设计的部件当中,表格式维护部件大多数用第二种方案实现,经过测试没有问题。其他部分部件用到了方案一,虽然解决了界面相互影响的问题,但隐藏的问题还有类变量共享的问题,例如同一个部件在维护不同的表时,表格数据本来就是不同的,而在第一种方案中将表格数据定义为static就不合理。还需要进行改善。
   4.7  
代码表变换
   
代码表是本部件设计中的重要内容,它是数据表某些字段内容和代码的参照表,在管理信息系统中,为了统计的需要,必须保证数据的规范化与标准化,依赖代码表系统实现与保证。数据表的某些字段使用代码表的前提是该字段取值有限,由具体文件所限定,为了统一地维护这些有限数据集合,需要专门建立表来管理。例如论文的评定等级分为优、良、中、差四个等级,可以为之建立等级代码表,在表中,等级对应代码分别为“4,3,2,1”
   
代码表的优点有很多,由于代码多采用数字或字母混合数字的形式,因此对用户来说,输入更方便快捷。此外,使用代码进行运算,便于统计。例如数据库需要查询所有中等级别以上的论文,只需要连接代码表,在条件中加入“where 等级代码>0”即可。同时,代码隐藏了数据的具体含义,这一特性又可以运用在加密中。基于代码表带来诸多优点,管理系统必须提供代码应用的方便,我们许多部件中都加入了此功能。
   
1)问题分析
   
由于部件的通用性,应用代码表的前提是需要对其格式有一个规范化的约定,部件只有严格按照此约定才能识别与获取代码表数据。代码表设计好后需要考虑以下问题:无存盘按钮的表格式维护部件中需要对有代码表的字段进行转换,用户在填写数据时,只需填写代码即可,在数据存盘时,根据实际字段的需要再次进行转换;查询部件中的查询条件能根据代码表进行查询;单记录维护部件中带列表框或组合框的部件应该显示代码表内容,同时根据实际字段的需要转换。
   
2)解决方案
   
首先要约定,所有代码表必须在当前数据库中,命名统一为:A、如果字段名中没有代码二字,则代码表名字为字段名+“代码表,例如如果学生表中关于性别的字段名是性别,那么其代码表名字为性别代码表B、如果字段名中有代码二字,那么代码表名为字段名+“。例如,如果学生表中关于性别的字段名是性别代码,那么代码表名字还是性别代码表。代码表中均为二个字段,一个是表示意义的字段名,例如性别、级别、职称、职务、类别……,另一个是前面这个字段名加代码二字,例如:性别代码、级别代码、职称代码、职务代码、类别代码……,连起来就是:性别代码表(性别,性别代码),级别代码表(级别,级别代码),职称代码表(职称,职称代码)……。要求数据表中字段名必须是这二个字段名中的一个。例如,学生表中关于性别的字段名要不是性别,要不是性别代码,不得是其他名字。这样,解决查询问题的算法:
   1.
找到所有包含有代码表字样的数据表名集合。
   2.
检查数据表中所有字段中有没有字段名包含在上述集合的字段,或者,字段名+“代码包含在上述集合的字段。如果有就建立相关代码表和数据表的连接,首先在FROM子句中将该代码表加进去。
   3.
检查数据表中和代码表中同名字段(根据前面约定,二个表一定有一个字段是同名的),在WHERE子句中加连接条件,主表名.字段名=代码表名.字段名。其中的字段名就是同名的字段名。例如,学生表中用性别做字段名,那么代码表中也用性别做连接条件。如过学生表中用性别代码做字段名,那么代码表中也用性别代码做连接条件。
   4.
SELECT子句中加输入要求:代码表名.另一字段名,这里的另一字段名是指代码表中非连接字段的另一个字段名。例如,连接字段是性别,那么输出中加性别代码;如果连接字段是性别代码,那么输出中加性别。
   5.
完成全部链接后再加用户要求的其他查询条件。
   
解决无按钮存盘表格式维护部件中代码切换算法为:
   1.
找到所有包含有代码表字样的数据表名集合。
   2.
检查数据表中所有字段中有没有字段名包含在上述集合的字段,或者,字段名+“代码包含在上述集合的字段,若有则转3
   3.
判断字段是否以代码二字结尾,若不是则转4
   4.
对字段中的数据进行代码替换,即将代码显示到界面,同时用flag[]记录该数据在存盘时需要再次转换成实际内容。
   
解决单记录维护部件历史列表框中列举代码的算法为:
   1.
找到所有包含有代码表字样的数据表名集合。
   2.
检查数据表中所有字段中有没有字段名包含在上述集合的字段,或者,字段名+“代码包含在上述集合的字段,如有则取出该字段代码表中的所有内容,放在列表框中。
   3.
当点击列表框数据时,判断当前字段是否有代码表。若有则转4
   4.
判断字段是否以代码二字结尾,若是,则将列表框中的代码取出进行设置,否则取出列表框中的实际数据进行设置。
   
3)方案选择和效果
   
在部分表格式维护部件、单记录维护部件、查询部件中实现了上述方案,通过测试,能对任意表联系代码操作。运行效果如图4-12所示。
 
                                   
4-12 带代码转换的表格式维护部件
   4.8  
字典表的翻译
   
字典表表示数据表字段名称的中英文翻译,也可以用于数据整合中异构数据的变换,是部件通用性的又一必须技术。具体而言:1.一般设计数据库使用的是英文字符命名字段名,但在我国各企事业单位的应用系统的实际界面、报表中都要使用中文标签。2.目前大量异构数据库整合的问题已经提上议事日程,异构的主要不同点是字段名不相同,这样一些数据的导入、导出和查询如果使用字典表自动操作将十分巧妙地也轻而易举地解决了原本十分复杂困难的整合问题。
   
1)问题分析
   
同代码表类似,字典表应用的前提也需要对其格式有明确的约定。字典表设计好后,需要考虑的是在何时及怎样利用字典表进行字段名翻译。
   
2)解决方案
   
以学生字典表为例,如表4-1所示。

            4-1 字典表示意图
字段名 标签名
NO      
学号
NAME
姓名
   
程序要求是所有条件提示、表格列标题都采用标签名,形成的具体SQL语句及其他表达式都用字段名,完成变换。
   
具体算法:
   1.
建立关于列名的二维表:列名[][],其中第一维元素个数等于列数,第2维下标为01,用0表示字段名,1表示标签名。
   2.
将全部表中字段名同时填到列名[][0]和列名[][1]中。
   3.
检查字典表中所有字段名和列名[][0]中有没有相同的,如果有,就将列名[][1]相应项改为标签名。
   4.
在程序中,只要涉及条件提示、表格列标题都从列名[][1]中取值,只要涉及具体SQL语句及其他表达式都从列名[][0]中取值
   
3)方案选择和效果
   
所有需要用到字典表的部件在实现上述方案时测试良好,需要注意的是:在生成菜单程序中填表名时不要填字典表的名字(只填有关数据表与代码表的名字,并且按连接顺序填写)。如果考虑字典表的部件,自动在当前数据库中检查有没有字典表,如果有就考虑字典表的问题。如果填字典表名字,在连接时将出现麻烦。
   
目前这样的方案是基于本系统希望做到易学易操作,设计时能简单就简单,因此全系统共用一个字典表。在真正商业化运行时或许会遇到问题,例如一词多意问题,如果在不同运用中需要不同的翻译,目前这个方案就无法适应了。建议在参数表中增加一个参数:字典表名。不同的调用可以采用不同的字典表,那样适应性就更强了。
   4.9  
其他问题及解决方案
   4.9.1  
适应性与健壮性
   
适应性是指部件在不同环境下自动调整自身以适应这种改变的能力。比较典型的是数据库连接。为了适应不同数据库,部件中提供了多种数据库驱动加载方式,包括sqlserveroracleMysqlaccessJavaDBDB2Sybase,并且建立了这些DBMSJAVA语言数据类型对照表。部件内部对数据库的操作采用标准化的sql语句,数据处理与操作过程中统一变成JAVA数据类型,尽量利用JAVA程序处理与变换,兼容性大大提高。
   
健壮性是指部件对于规范要求以外的输入情况的处理能力。用户在对系统输入数据时,难免会有不合法的数据,这时候程序若处理不好,就会产生错误,导致无法正常运行。例如单记录维护部件1,当用户插入一条空记录时,控件中的值在程序中获取为空字符串,若直接插入数据库很可能抛出数据库异常,为了防止此种情况发生,我们在程序中对其处理如下:
   1.
根据字段类型表,取出每一个字段的类型。
   2.
判断当前字段类型,填充相应的默认值,对应关系如表4-2所示。
                 
4-2 数据类型对照表
datetime date time money real,
float,
double Char,
nchar text
2001-01-010:00:00 2001-01-01 00:00:00 0.0000 0.00
空串   空串
   
经过处理后,空数据就会形成一条带默认值的记录,在插入数据库时就不会报格式错了。
   3.
在容易发生错误位置,例如读写表格数据等文章,采用条件语句检查空值、加设陷阱等检查与处理异常,可以极大减少出错的几率。但是,同样作为学习版,这样的措施采取的仍然不充分,如果做商业应用还需要进一步加强。
   4.9.2  
数据同步
   
这里的所谓数据同步主要是指程序运行内存中的缓存数据与数据库中的数据一致的问题。在部件中,特别是表格式维护部件,用户看到的表格中呈现的数据应与实际数据库数据保持一致。
   Java
中提供了JTableDefaultTableModel组件,当DefaultTableModel中的数据改变时,JTable调用重回方法后,表格中的数据会即时更新。用户在对数据进行update操作时,同时对内存中的数据结构进行更新,然后重新设置DefaultTableModel,这样就保证了数据的一致性。
   
处理流程简单描述如图4-13所示。
 
                           
4-13 update语句执行流程图

  例如表格(单记录混合)式维护部件10,变量“currentRow”记录选中的当前行号,表格数据[][]”存放表格数据,表格行数记录当前数据记录数,“dtm”是表格模型,“table”为表格控件,“totalItems”状态行中的记录总数,处理过程可以概括为:
   1
)判断当前是否有选中行,否则返回。
   2
)执行删除语句,若不出错则往下执行,否则转到异常处理提示出错。
   3
)更新表格数据,表格行数减1,更新数据模型,表格重绘,选中行号置为-1
   
简单程序流程图如图4-14所示。
 
                           
4-14 表格式维护部件删除数据流程图


                                                 
 

   基于JAVA的通用MIS部件库的设计已经初步完成,前述关于部件的设计全都已经实现,利用部件库还对某单位学生信息管理系统、某单位工资管理系统进行了改建,在系统变更过程中几乎没有增加额外代码,开发维护效率极大提高,证明了部件技术的研究价值。
   
本文对该部件库进行了分析,还发现许多值得研究的问题,例如:事务处理问题、更多方面的数据处理问题、探索其他领域部件实现的可能性问题、通用部件的形式化定义问题、部件商业化应用可能遇到的问题、部件在广域网中应用的问题等。需要进一步研究各类应用系统的模块,总结共同点,设计面向更广的、面向社会的、具有商业意义的通用部件。
   JAVA
学习版部件库已经在网上公开发布(地址:202.114.177.212/sjk http://bujianku.com),其中还存在若干缺陷与bug,例如同一部件在多种需求、多个场合调用出现冲突与运行异常的问题等,还需要研究更理想的解决方案等。希望集合大家的共同智慧,把对软件复用的研究重心转移到部件中来,加快推动软件工业化生产的进程。

 

参考文献

[1]廖旭军. 基于JAVA组件的报表自动生成系统的研究与实现[J].电子科技大学,2010
[2]
程学先. 数据库系统原理与应用[M].北京:清华啊大学出版社,2014-02
[3]
於丹. 梅宏教授谈软件复用的发展现状[J].微电脑世界,2000
[4]
桑大勇、王瑛、刘西洋、蔡希尧. 一种多侧面的重用部件存储模型[J].微电子学与计算机1999
[5]
程学先. 软部件技术为什么成为独家技术[J].管理观察,2009
[6]
刘峰、郑滔.应用集成原理与技术[M].北京:清华大学出版社,2011.06
[7]
杨芙清.软件复用及相关技术[J].计算机科学,1999
[8]
杨芙清、梅宏、李克勤.软件复用与软件构件技术[J].电子学报,1999.1
[9]
程学先. 基于VFP部件库最小系统网络版研究[Z].科学网
http://blog.sciencenet.cn/home.php?mod=space&uid=2551&do=blog&id=230140
[10]
程学先. 通用软部件应用范围与边界[z].科学网
http://blog.sciencenet.cn/blog-2551-4643.html
[11]M.H.Lee,Model-based reasoning:a principled approach for software engineering[J], Software-Concepts &Tools(2000)19:179-189,2000 Springe
erlag.
[12]Nenad Medividonic and Richard N.Taylor,Member,IEEE Computer Society,A Classification and Comparison Framework for Software Architecture Description  Languages[J],IEEE Transactions on Software Engineering.Vol.26,No.1,January  2000.
 


 
岁月流逝,转眼临近毕业,这短暂的四年生活刻骨铭心,也正是这几年让我真正地学会了怎么样去学习,去更好的面对将来的社会,让我的人生之路有了新的轨迹。
首先我要感谢我的导师______,给予我学习部件的机会。在参与部件设计的这一年多以来,我的编程能力大大提高。老师在百忙之中抽时间耐心地给我讲解技术上的知识,并毫无保留地将研究心得和关键技术传授给我,常常写程序忙到深夜,老师的敬业爱岗和无私奉献精神是值得我敬佩和学习的。在此致以我最诚挚的感谢。
其次,我要感谢大学这几年来的任课老师,是他们教会了我专业知识,在我遇到困难气馁的时候给予我希望和鼓励。
同时,我要感谢我的家人,有他们的教育才会有我的今天,是他们在背后默默地支持着我。
另外,我要借此机会感谢身边的同学和朋友,他们帮助过我许多,在我前行的路上一直伴随左右,特别是539的室友们。
一个人的力量是有限的,我们的成功和成就来自于他人的帮助和关心。最后感谢各位领导和老师不吝指导和批评。




https://blog.sciencenet.cn/blog-2551-837514.html

上一篇:推荐二篇学士论文
下一篇:管理信息系统部件设计关键技术探讨----文献综述
收藏 IP: 183.94.47.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (2 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-10 08:43

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部