CN1535416A - 优化模块性的软件结构 - Google Patents
优化模块性的软件结构 Download PDFInfo
- Publication number
- CN1535416A CN1535416A CNA028007379A CN02800737A CN1535416A CN 1535416 A CN1535416 A CN 1535416A CN A028007379 A CNA028007379 A CN A028007379A CN 02800737 A CN02800737 A CN 02800737A CN 1535416 A CN1535416 A CN 1535416A
- Authority
- CN
- China
- Prior art keywords
- module
- modules
- input
- software
- certain
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
- Computer And Data Communications (AREA)
Abstract
在某一个基于模块的软件结构中,通过使用某种间接调用技术使得模块替代或者模块去除所带来的影响最小化。多个模块(M0-M4)之间的多个交互作用被认为是某一种客户/服务器关系的概念,某个服务器模块(例如M3)被某个客户模块(例如M1)利用该服务器模块的引用(&M3)所调用。将被调用的该模块(M3)的引用(&M3)做为某一个输入被供应到该客户模块(M1)。每一个模块都适于把采取一个预定值的某个输入参数识别为某个空引用。当将被调用的模块被标志为某个空引用时,就不对该模块进行调用。
Description
本发明涉及软件组件的设计和再利用,并且,更具体而言,涉及包含易于再利用的组件的软件结构。本发明还涉及根据现存的软件结构产生一个新的、基于模块的软件结构的方法。
不通过画草图书写某个程序而通过改变或者再利用多个现存程序组件来生成新软件的方法已很普遍。但是,假定在某个软件结构中的多个模块之间相互发生作用,则现存程序中某个模块被去除或者被替代可以对该结构其余部分有着非常显著的影响。更具体而言,由于调用另一个模块(例如,某个过程)的多个模块存储了此将被调用的模块的引用,所以在该程序中的多个改变可使得这些被存储的引用作废。
已提出了各种各样的建议使得在新程序中的现存软件模块再利用更简单化。在这些建议之中,在美国专利5,771,386中已有采纳了适于对这些组件模块进行再利用的、基于模块的某个软件结构的一项建议。
尤其是,美国专利5,771,386描述了由相应于被编译的和单个链接的程序单元的多个模块构成的某一个软件结构,这些程序单元选自它们的某个库。每个程序单元都有具备预定义结构的一个文件头,该文件头包括,在其中这些预定位置,与那个程序单元数据或者过程相关的地址数据。希望调用数据的某个过程或者在某个给定程序单元中的某个过程不需要知道正被讨论的数据的或者过程的地址,这是由于它通过编程来知道在其中将找到所希望的数据或过程的地址的该程序单元文件头之中的位置。此被描述的软件结构还包含了存储有这些各种各样程序单元文件头的存储器位置的一份目录。
美国专利5,771,386的该软件结构能够再利用多个软件模块而只对其进行最少的改变,以及能够从这样的模块中汇编某个程序而不必编译该汇编过的程序。然而,此软件结构的这些组件模块为已被编译的和单个链接的程序单元,并且对软件的多个改变常常可能牵扯到某个程序多个更为基本组件。此外,此已知的软件结构要求某个预定的文件头结构来用于这些软件模块,该预定的文件头结构强加了某种程度的不灵活性于此设计。
本发明的一个目的是提供一种软件结构,使它的更低层组件能够被修改(例如,被去除或者被替代)而减少对该结构其它那些组件的影响。
本发明进一步的目的是提供一种方法,该方法根据某个现存结构产生一个新的、基于模块的软件结构并投入相对少的时间和成本来实现这些改变。
在本文档中,对软件“组件”或者软件“多个模块”的多个引用是指任何软件实体,可以直接地或者间接地接收输入参数以及可以直接地或者间接地提供输出参数,因此,这些引用包括:例如,函数/过程,操作系统任务,或者更多通用的概念,诸如某一层。
本发明考虑了以下方面。在某个软件结构中的多个模块之间的交互作用可以被认为是某一种客户/服务器关系的概念。某个“服务器”模块被某个“客户”模块所调用。某一个给定模块既可以调用其它那些模块而其自身又可以被其它那些模块所调用,因此,该给定模块既可是一个客户又可是一个服务器。每个客户模块接受它各自的多个服务器模块的这个(些)引用做为一个输入而不必预先与它可调用的这些模块引用一起编程。换言之,使用了间接调用的某一种形式。更一般来讲,需要它的某个(些)服务器模块的这个(些)引用的任何模块将从它自己的某个(些)客户模块得到。
本发明的软件结构能够使多个模块被互换或被取消而对相应编码进行较少的修改,而同时维护这些模块的完整性。因此,在软件开发期间就节省了时间和成本。可采纳此结构用于任何结构化模块的软件。
在根据本发明的优选实施方案的该软件结构中,该结构中一个模块的替代是直接的-对该新模块的引用,而不是对旧(被替代的)模块的引用,被简单做为某一个输入传送到这个(些)相关客户模块。因此,仅仅在到该系统的某个输入的层次上需要改变,而不需要在调用该被替代的服务器模块的客户模块中的每一个里的改变。
在根据本发明的优选实施方案的该软件结构中,去除某个模块是通过由某个空引用替代对旧(被去除的)模块的引用来实现的,即,常量引用采用所有模块被预先编程以辨别为不对应于该结构中的任何模块的值。接收了该空引用的客户模块识别出此空引用对应于某一个并不存在的模块,因此,客户模块不对其做调用。
由于根据本发明的该软件结构的模块不再存储引用至潜在的服务器模块,去除或者替代这些服务器模块对那些潜在的调用模块几乎没有影响。
本发明根据现存的、基于模块的结构提供了产生新的软件结构的一种方法。
本发明及其附加特征——它们可被有选择的使用以实现此有益的发明,参照来自下列所描述并被阐明的多个附图来看是显而易见的。
图1是在软件结构中两个交互作用模块的示意表示;
图2是包含五个交互作用模块的常规软件结构的示意表示;
图3是包含五个交互的模块根据本发明的软件结构的示意表示;
图4示出了在图2的该常规软件结构中的模块替代;
图5示出了根据本发明的,图3的该软件结构中的模块替代;
图6示出了在图2的该常规软件结构中的模块去除;
图7示出了根据本发明的图3的该软件结构中的模块去除;以及
图8表示了在移动电话中的一个无线电通信驱动程序,它实施根据本发明的软件结构。
首先对多个引用标识的使用将作出一些注释。附图中相同的实体由相同的字母编码表示。各种各样类同实体可在某一单个附图中示出。在那种情形,某个数值被加到该字母编码以便相互区分类似实体。应注意到,多个模块被指示为“Mx”,其中x是指示每个模块的某个数字,并且某个模块的引用通过使用“&”符号来表示。因此,模块Mx的引用写成“&Mx”。在此描述和权利要求中,某个引用标识中的任何数值如果适宜的话都可以被省略。
从图1来思考,将更好理解在本发明中使用的图形约定,图1示出了两个交互作用模块M1和M2。在此附图(及其它所有图)中,某个指向一个模块的指针代表了对此模块的一个调用,对比之下,从一个模块出来的某个指针代表了此模块对另一个模块所做的一个调用。标识在某个指针旁的文字是与正在讨论中的调用有关的输入/输出。因此,在图1中所示的例子,对模块M1做某个调用而该模块接受标识为“M1的输入”的某个参数作为一个输入。该模块M1对模块M2做一个调用,它传送给M2标识为“M1的输出”和“M2的输入”的某个参数。该模块M2依次对某一个按顺序的模块(未图示)做一个调用,传送给其标识为“M2的输出”的某一个参数。
为帮助理解本发明,下列描述用根据本发明的某一个实施方案实现的某个对应的结构来比较包含了五个交互作用模块的某个常规软件结构的例子。可以理解,本发明可被扩展到多个更复杂的系统,并且,总的来说,本发明适用于包含模块的任何数目的多个结构。
图2代表某个常规软件结构的情形,该软件结构由可调用其它四个模块M1,M2,M3和M4中任何一个的某一个模块M0。该模块M1自身可调用模块M3。模块M0存储了它可调用的这四个模块的引用:&M1,&M2,&M3和M4。类似地,模块M1存储了它可调用的模块引用&M3。在调用期间以及在这些模块之间,不传送模块引用参数。
图3表示根据本发明由相同模块M0到M4组成的软件结构,其中M0可调用其它四个模块M1到M4中的任何一个,并且模块M1自身可调用模块M3。然而,在此情形中不存在被存储的引用。恰恰相反,模块M0接收它可调用的四个模块的引用&M1、&M2、&M3和&M4做为输入参数。相似的,模块M1从M0接收它可调用的模块的引用&M3。进一步讲,在此结构中的所有模块被设计成识别:一个引用对应一个并不存在模块的常量值(空引用),从而不需要对该模块做一个调用。
更具体而言,每个模块能适于比较被接收模块的引用和该空引用,并且,仅仅如果该比较的结果为负值,则调用对应于接收的引用的模块。“调用”所采取的形式将根据实现——例如,它可包含到相应于被接收的模块引用的某个地址的跳转。
将能理解到,这些模块可以接收对应于不是模块引用的参数的输入(未在图3示出)。而对应于模块引用的输入与其它输入的区分是通过根据用来实现该结构的程序设计语言而变化的已知的手段来实现的。例如,对应于模块引用的某个消息的文件头或者格式可以不同于其它多个输入的文件头或者格式。
图2和图3中的软件结构之间差异的重要性将从替代和去除来自该最初结构的某个模块作用的下列描述中得以体会。
图4和图5示出了模块M3分别在图2的常规结构中以及根据本发明的图3的结构中被某个新模块M5所替代的情形。
从图4中将看到,在常规软件结构的情形中,模块M3被模块M5所替代使模块M0和M1的修改成为必要,以便用该新引用&M5替代作废的引用&M3。因此在此情形中某个模块的替代要求对其它两个模块所进行的改变。
与此对照,从图5中将看到,在实施了本发明的结构的情形中,由新模块M5所替代的模块M3不需要对模块M0和M1做任何改变。仅仅是做为输入被传送到模块M0的引用发生改变(从&M3到&M5)。模块M0将正确调用新模块M5这是因为模块M0已被安排调用四个模块,它们的引用做为输入被它所接收。因为,模块M0已被安排把它的第三个输入参数传送到模块M1,以及模块M1已被安排调用其引用做为从M0的输入所接收的,所以由模块M1对M5的调用也将自动正确进行。通过使用本发明的间接调用技术,当模块M3被模块M5所替代时,仅仅M0的一个输入参数必须被修改。模块M0和M1不被改变。
图6和图7模块M5分别从图4的常规结构中以及从根据本发明的图5的结构中被去除的情形。
从图6中将看到,在常规软件结构的情形中,模块M5的去除再次使模块M0和M1的修改成为必要。在此情形,必须改变模块M0和M1以便它们不对该被去除的模块M5进行调用。因此,在此情形中某一个模块的去除要求对其它两个模块进行改变。
与此相对照,从图7中将看到,在实施本发明的该结构的情形中,模块M5的去除不需要对模块M0和M1的改变。再一次,仅仅是做为输入被传送到模块M0的引用发生改变(从&M5到空引用)。模块M0被安排成把此空引用做为一个输入传送到模块M1,并且模块M0和M1被安排成识别对由空引用所指示的某个模块不需要进行调用。因此自动取消对被去除的模块M5的这些调用。
以上所给出的比较性例子强调这样的事实:本发明使在一个基于模块软件结构中的模块的改变对该结构其余部分的影响减小。
在根据本发明的该软件结构中,客户机/服务器链的第一个模块(例如,图3、图5和图7例子中的M0)从存储器导出,或者从内部参数导出,即需要它本身或者传送给其它模块的模块引用中导出。在这些模块引用从存储器中提供的情形中,当替代/去除在该链中某一模块“向下装入”的时候有必要进行少量重新编程。在这些模块引用起源于多个内部参数的情形中,则当替代/去除某一个“向下装入”的模块的时候需要对此第一个模块进行少量重新编程。但是,所要求的该重新编程仅涉及到此被替代的/被去除的模块的模块引用的起源而不涉及到在常规情形中所可能要求的、此被替代的/被去除的模块的所有潜在客户模块的那种重新编程。
图8示出了在移动电话技术领域中,本发明具体应用的一个例子,特别涉及到在一个移动电话之中的无线电通信驱动程序。在本例中,模块对应于函数。
正如图8所示,在某个移动电话中的该无线电通信驱动程序包括一个函数,本文指示为“Radio_init”,即初始化无线电。该Radio_init函数调用其它两个函数:一个本文指示为“PLL-init”,即初始化在该无线电中的锁相环,而另一个本文指示为“PLL-load”,即对该PLL进行编程。函数PLL-init和PLL-load根据在该移动电话里所使用的特殊无线电类型而变化。函数Radio_init更通用,而且特别根据所使用的无线电类型而不变化。通过根据本发明采纳某种结构,其中该Radio_init函数不存储PLL-init函数和PLL-load函数的引用但是接收这些引用做为一个输入,PLL-init函数及PLL-load函数的不同集合可以和某个给定的Radio_init函数相配合而不需要对该Radio_init模块进行任何重新编程。在对使用不同类型无线电通信的移动电话的无线电通信驱动程序软件的开发期间,这就节省了时间和成本。
这些附图及其本文此前所述,示出了而不是限制了本发明。明显有非常多的选择落在此附加的权利要求的范围之内。
在某一个权利要求中的任何引用标记都不应该仅按字面意思对该权利要求加以限制。
Claims (8)
1.一种包含多个模块(M0-M4)的软件结构,所述多个模块中的至少一个是适于调用使用所述被调用模块的引用(&M3)的所述多个模块中的另一个(M3)的某一个模块(M1),
其中将被调用的该模块的该引用(&M3)做为输入被提供到所述调用模块(M1)。
2.如权利要求1的软件结构,其中所述多个模块(M0-M4)中的每一个都适于识别具有一个预定值的某一个输入参数为一个空引用,以及当将被调用的模块被该空引用所指示时不进行调用。
3.如权利要求1的软件结构,其中每一个模块(Mx)对应从包含函数、过程、操作系统任务和多个层的组中选择的一个软件实体。
4.根据包含多个模块(M0-M4)的、现有的和基于模块的一个结构所产生新的、基于模块的一个软件结构的一种方法,所述多个模块中的至少一个是适于调用使用所述被调用模块的引用(&M3)的所述多个模块中的另一个(M3)的某一个模块(M1),其中将被调用的该模块的该引用(&M3)做为输入被提供到所述调用模块(M1),该方法包含这些步骤:
消除所述多个模块(M3)中的至少一个,以及
改变对应于被消除的模块的该引用(&M3)的输入值。
5.如权利要求4的结构生成方法,其中所述多个模块(M0-M4)中的每一个都适于识别具有一个预定值的某一个输入参数作为一个空引用,并且都适于当将被调用的该模块被该空引用所指示的时候不进行某一个调用,以及其中改变的步骤包含用某一个空引用替代对应于被去除的模块的该引用(&M3)的输入。
6.如权利要求4的结构生成方法,并且该方法包含用具有一个不同引用(&M5)的替代模块(M5)来替代被去除的模块的步骤,其中改变的步骤包含用对应于替代模块的该引用(&M5)的输入来替代对应于此被改变的模块的该引用(&M3)。
7.如权利要求4的结构生成方法,其中每一个模块(Mx)都对应于从包含函数、过程、操作系统任务和层组成的组中选择的某一个软件实体。
8.一种包含锁相环的无线电通信电话,该锁相环由具有根据权利要求1的结构的通过无线电通信驱动程序软件所控制。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP01400723 | 2001-03-20 | ||
EP01400723.1 | 2001-03-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1535416A true CN1535416A (zh) | 2004-10-06 |
Family
ID=8182657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA028007379A Pending CN1535416A (zh) | 2001-03-20 | 2002-03-08 | 优化模块性的软件结构 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20040015828A1 (zh) |
EP (1) | EP1405177A2 (zh) |
JP (1) | JP2004523845A (zh) |
KR (1) | KR20030007647A (zh) |
CN (1) | CN1535416A (zh) |
WO (1) | WO2002075521A2 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110005B (zh) * | 2006-07-19 | 2012-03-28 | 鸿富锦精密工业(深圳)有限公司 | 自定义触摸板的电子装置及方法 |
US8566787B2 (en) * | 2008-09-15 | 2013-10-22 | Infosys Limited | System and method for improving modularity of large legacy software systems |
EP2982406A4 (en) * | 2013-04-01 | 2016-12-07 | Terumo Corp | GUIDEWIRE |
IL272925A (en) * | 2020-02-26 | 2021-08-31 | Delta T Az Ltd | cooling garment |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6654773B2 (en) * | 2001-02-27 | 2003-11-25 | Tajea Corporation | Method of deterministic garbage collection |
-
2002
- 2002-03-08 JP JP2002574061A patent/JP2004523845A/ja not_active Withdrawn
- 2002-03-08 KR KR1020027015601A patent/KR20030007647A/ko not_active Application Discontinuation
- 2002-03-08 CN CNA028007379A patent/CN1535416A/zh active Pending
- 2002-03-08 EP EP02702670A patent/EP1405177A2/en not_active Withdrawn
- 2002-03-08 WO PCT/IB2002/000763 patent/WO2002075521A2/en not_active Application Discontinuation
- 2002-03-15 US US10/099,687 patent/US20040015828A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
WO2002075521A2 (en) | 2002-09-26 |
US20040015828A1 (en) | 2004-01-22 |
KR20030007647A (ko) | 2003-01-23 |
JP2004523845A (ja) | 2004-08-05 |
WO2002075521A3 (en) | 2004-01-15 |
EP1405177A2 (en) | 2004-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1062579B1 (en) | Apparatus and method for conversion of messages | |
US7555750B1 (en) | Update package generator employing partial predictive mapping techniques for generating update packages for mobile handsets | |
CN1187944C (zh) | 在报头压缩/解压缩应用中的静态校验和信息的再利用 | |
US5432931A (en) | Digital telecommunication system with multiple databases having assured data consistency | |
JP3522181B2 (ja) | バックアップデータ管理装置及び方法 | |
CN1113310C (zh) | 向主控设备提供从属设备权力信息的装置和方法 | |
CN1535416A (zh) | 优化模块性的软件结构 | |
CN1870490A (zh) | 同步传输系统中时钟源的选择方法 | |
CN1835619A (zh) | 无线通信网络小区配置模型优化设备 | |
US20030084399A1 (en) | Operation processing apparatus and operation processing method | |
NZ280973A (en) | Converting data between different database structures for telecom switching systems | |
CN1846211A (zh) | 用于代码转换系统的接口 | |
US5321844A (en) | Method for error correction of software errors in a communication system | |
CN1295601C (zh) | 进行软件应用的时间优化的替换 | |
CN1889462A (zh) | 实现网管和网元配置操作的方法与系统 | |
US7599567B2 (en) | Image encoding apparatus and image encoding method | |
CN1913559A (zh) | 一种实现数据业务割接的方法及系统 | |
CN1855049A (zh) | 存储器配置系统与方法 | |
CN1271438A (zh) | 使用分组交换网的自适应处理器系统 | |
CN1274111C (zh) | 用于控制电信系统中的基站的方法以及电信系统 | |
US5884020A (en) | Method for modifying the software procedures of a communications system | |
CN1713143A (zh) | 一种嵌入式程序的兼容性升级方法 | |
CN1400549A (zh) | 在数据库中检索数据和向拨号上网用户分配ip地址的方法 | |
US5987177A (en) | Method for compressing image signal and method for expanding the compressed image signal | |
CN1710539A (zh) | 软件更新方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |