Views Customizable abstractions for context-aware applications in MANETs
- 格式:pdf
- 大小:113.04 KB
- 文档页数:7
C#中abstract的⽤法详解abstract可以⽤来修饰类,⽅法,属性,索引器和时间,这⾥不包括字段. 使⽤abstrac修饰的类,该类只能作为其他类的基类,不能实例化,⽽且abstract修饰的成员在派⽣类中必须全部实现,不允许部分实现,否则编译异常. 如:using System;namespace ConsoleApplication8{class Program{static void Main(string[] args){BClass b = new BClass();b.m1();}}abstract class AClass{public abstract void m1();public abstract void m2();}class BClass : AClass{public override void m1(){throw new NotImplementedException();}//public override void m2()//{// throw new NotImplementedException();//}}}Abstract classes have the following features:抽象类拥有如下特征:1,抽象类不能被实例化, 但可以有实例构造函数, 类是否可以实例化取决于是否拥有实例化的权限 (对于抽象类的权限是abstract, 禁⽌实例化),即使不提供构造函数, 编译器也会提供默认构造函数;2,抽象类可以包含抽象⽅法和访问器;3,抽象类不能使⽤sealed修饰, sealed意为不能被继承;4,所有继承⾃抽象类的⾮抽象类必须实现所有的抽象成员,包括⽅法,属性,索引器,事件;abstract修饰的⽅法有如下特征:1,抽象⽅法即是虚拟⽅法(隐含);2,抽象⽅法只能在抽象类中声明;3,因为抽象⽅法只是声明, 不提供实现, 所以⽅法只以分号结束,没有⽅法体,即没有花括号部分;如public abstract void MyMethod();4,override修饰的覆盖⽅法提供实现,且只能作为⾮抽象类的成员;5,在抽象⽅法的声明上不能使⽤virtual或者是static修饰.即不能是静态的,⼜因为abstract已经是虚拟的,⽆需再⽤virtual强调.抽象属性尽管在⾏为上与抽象⽅法相似,但仍有有如下不同:1,不能在静态属性上应⽤abstract修饰符;2,抽象属性在⾮抽象的派⽣类中覆盖重写,使⽤override修饰符;抽象类与接⼝:1,抽象类必须提供所有接⼝成员的实现;2,继承接⼝的抽象类可以将接⼝的成员映射位抽象⽅法.如:interface I{void M();}abstract class C: I{public abstract void M();}抽象类实例:// abstract_keyword.cs// 抽象类using System;abstract class BaseClass // 抽象类{protected int _x = 100; //抽象类可以定义字段,但不可以是抽象字段,也没有这⼀说法.protected int _y = 150;public BaseClass(int i) //可以定义实例构造函数,仅供派⽣的⾮抽象类调⽤; 这⾥显式提供构造函数,编译器将不再提供默认构造函数. {fielda = i;}public BaseClass(){}private int fielda;public static int fieldsa = 0;public abstract void AbstractMethod(); // 抽象⽅法public abstract int X { get; } //抽象属性public abstract int Y { get; }public abstract string IdxString { get; set; } //抽象属性public abstract char this[int i] { get; } //抽象索引器}class DerivedClass : BaseClass{private string idxstring;private int fieldb;//如果基类中没有定义⽆参构造函数,但存在有参数的构造函数,//那么这⾥派⽣类得构造函数必须调⽤基类的有参数构造函数,否则编译出错public DerivedClass(int p): base(p) //这⾥的:base(p)可省略,因为基类定义了默认的⽆参构造函数{fieldb = p;}public override string IdxString //覆盖重新属性{get{return idxstring;}set{idxstring = value;}}public override char this[int i] //覆盖重写索引器{get { return IdxString[i]; }}public override void AbstractMethod(){_x++;_y++;}public override int X // 覆盖重写属性{get{return _x + 10;}}public override int Y // 覆盖重写属性{get{return _y + 10;}}static void Main(){DerivedClass o = new DerivedClass(1);o.AbstractMethod();Console.WriteLine("x = {0}, y = {1}", o.X, o.Y);}}以上所述是⼩编给⼤家介绍的C#中abstract的⽤法详解,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
customize-cra override "customizecra override" refers to the process of personalizing or modifying a specific feature or element of an application or software. This article will provide a step-by-step guide on how to perform a "customizecra override" and the benefits it can bring.Introduction:Customization is an essential aspect of software development and user experience. It allows users to tailor an application or software according to their specific needs and preferences. The "customizecra override" process enables users to override default settings, functionalities, or styles of a particular feature within an application. By doing so, users can enjoy a more personalized and enhanced user experience. In this article, we will walk you through the steps required to perform a "customizecra override" effectively.Step 1: Identify the Feature to OverrideThe first step in the "customizecra override" process is to identify the feature or element within the application that you intend to modify. It could be anything from the appearance of a button to the behavior of a search function. Once you have identified the target feature, proceed to the next step.Step 2: Familiarize Yourself with the CodebaseTo perform a successful "customizecra override," it's crucial to have a good understanding of the application's underlying codebase. Familiarize yourself with the relevant components, modules, and stylesheets related to the feature you want to override. This step might require some technical knowledge or assistance from developers if you are not proficient in coding.Step 3: Create a Customization StrategyBefore making any changes, it's essential to have a clear plan or strategy about what you want to achieve with your customization. Determine the specific modifications or enhancements you wish to apply to the feature. Outline the goals, requirements, and desired outcome of your customization. This strategy will serve as a roadmap for the next steps.Step 4: Set Up a Development EnvironmentTo safely perform a "customizecra override," it's recommended to set up a separate development environment. This ensures that any changes you make won't affect the production version of the application. Clone the project repository or create a local copy towork on.Step 5: Modify the Target FeatureUsing your chosen code editor or integrated development environment (IDE), navigate to the relevant files associated with the feature you want to customize. Make the necessary modifications according to your customization plan. This might involve changing the existing code, adding new code, or modifying existing stylesheets.Step 6: Test and DebugAfter completing the customization, it's crucial to thoroughly test and debug your changes. Run the application in the development environment and verify if the modifications are working as intended. Test various scenarios and edge cases to ensure that the customization doesn't introduce any errors or conflicts.Step 7: Refine and IterateBased on the testing phase, you might discover areas that require further refinement or improvement. It's common to iterate on the customization process, making additional adjustments until the desired outcome is achieved. Pay attention to user feedback or anypotential issues that arise during testing.Step 8: Document and ShareOnce the customization is finalized and tested successfully, document the steps you followed, including any code changes, stylesheets modifications, or additional dependencies used. This documentation will be useful for future reference or sharing your customization with other users or developers.Conclusion:Performing a "customizecra override" allows users to tailor an application's features to their specific needs. By following thestep-by-step guide outlined in this article, you can effectively implement a customization process. Remember to have a clear plan, familiarize yourself with the codebase, and thoroughly test your changes to ensure a smooth and successful customization experience.。
1.面向对象的思想主要包括什么?答:个人认为一各程序语言要成为真正的面向对象的程序设计语言,它必须符合下列条件: 1抽象(abstraction)—抽象能够有效地管理一个问题的复杂性,其作法是划分出与该问题相关的一组对象.2 封装(Encapsulation)—封装是指将一个抽象的内部实现隐藏在特定的对象之内.3 多态(polymorphism)—多态会提供相同方法的多种操作方法的多种操作实作.例如,不同的对象都会拥有一个Save方法,但是每一个Save方法会执行不同的操作.4 继承(inheritance)—Visual C# 2005 最令人兴奋之处就是其继承特性.v c#2005则提供了真正的方法继承,因此您可以重复使用一个类的实例.2.什么是中的用户控件自己动手作自己的控件来取代.NET提供的控件。
这种控件就是用户控件。
后缀为.ascx3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?什么是多态? CTS、CLS和CLR分别作何解释?应用程序域:应用程序域(通常是AppDomain)是用于隔离应用程序的虚拟进程。
在同一个应用程序作用域中创建的所有对象(换句话说,从该应用程序的入口点开始沿着对象激活序列的任何地方)都在同一个应用程序域中创建。
多个应用程序域可以存在于一个操作系统进程中,使它们成为隔离应用程序的简便方式。
操作系统进程通过使用各不相同的内存地址空间来提供隔离。
尽管它是有效的,但也是代价昂贵的,并且不能达到大型Web 服务器所需要的数量。
与其相比,公共语言运行时通过管理在应用程序域中运行的代码的内存使用来强制进行应用程序隔离。
这样就确保它不会访问应用程序域以外的内存。
需要注意的是,只有类型安全的代码才能以这种方式管理(当在应用程序域中加载不安全代码时,运行时不能保证隔离)。
理解应用程序域:应用程序域是.NET 运行库的逻辑进程表示,操作系统进程可以包含多个应用程序域。
Visual Abstracts示例1. 什么是Visual Abstracts?Visual Abstracts是一种科学传播的新形式,它通过图形和简洁的文字呈现科学研究的关键信息,使复杂的研究内容更易于理解和传播。
Visual Abstracts通常用于学术期刊、学术会议或社交媒体上,以吸引读者的注意并概括研究的核心内容。
2. Visual Abstracts的优势2.1 提高可视化效果Visual Abstracts通过图形和图表的方式,将研究的关键结果和发现直观地展示给读者。
相比于传统的文字摘要,Visual Abstracts更容易引起读者的兴趣和注意,提高了信息的可视化效果。
2.2 简洁明了的信息传递Visual Abstracts通过简洁明了的文字和图形,将研究的要点和重要信息传达给读者。
它避免了繁琐的技术术语和复杂的研究方法的描述,使得读者更容易理解和记忆研究的关键内容。
2.3 提高科学传播的效率Visual Abstracts的简洁和可视化特点使得科学研究更易于传播。
读者可以通过浏览Visual Abstracts来了解研究的主要结果,从而决定是否深入阅读全文。
这种高效的科学传播方式有助于提高科学研究的影响力和可见度。
3. Visual Abstracts的制作步骤3.1 确定关键信息在制作Visual Abstracts之前,首先需要确定研究的关键信息。
这包括研究的背景、目的、方法、结果和结论等。
通过梳理和整理这些关键信息,可以为制作Visual Abstracts提供清晰的思路。
3.2 设计布局和图形在制作Visual Abstracts时,需要设计合适的布局和图形来展示关键信息。
合理的布局能够使信息有序地呈现,而图形的使用可以增加可视化效果。
常用的图形包括流程图、柱状图、折线图等,根据研究内容选择合适的图形进行呈现。
3.3 编写简洁的文字描述除了图形之外,Visual Abstracts还需要简洁明了的文字描述来补充图形的信息。
In the future,mobile phones are expected to undergo significant transformations, becoming more advanced and integrated into our daily lives.Heres a glimpse into what future mobile phones might look like:1.Advanced AI Integration:Future mobile phones will likely have more sophisticated artificial intelligence capabilities.They will be capable of understanding and predicting user behavior,offering personalized suggestions and assistance.2.Flexible and Foldable Displays:The technology for flexible screens will improve, allowing phones to be rolled up or folded when not in use.This will make them more portable and less prone to breakage.3.Extended Battery Life:With the advancement in battery technology,future mobile phones will have longerlasting batteries,possibly with wireless charging capabilities that can be charged from a distance.4.Augmented Reality AR Integration:Phones will have builtin AR capabilities,allowing users to overlay digital information onto the real world,enhancing gaming,navigation, and social interactions.5.Seamless Connectivity:Future mobile phones will connect effortlessly with other devices and networks,including5G and beyond,ensuring highspeed internet access and smooth data transfer.6.Enhanced Security Features:As cyber threats become more sophisticated,mobile phones will incorporate advanced security measures such as biometric authentication, secure data encryption,and intrusion detection systems.7.Health Monitoring:Future mobile phones may come with builtin health monitoring tools,such as heart rate monitors,blood pressure sensors,and even sleep tracking, providing users with valuable health data.8.Environmental Adaptability:Phones will be designed to withstand harsher conditions, with improved water and dust resistance,as well as the ability to operate in extreme temperatures.9.EcoFriendly Materials:There will be a shift towards using sustainable and recyclable materials in the construction of mobile phones,reducing their environmental impact.10.Customizable Interfaces:Users will have the ability to customize their phonesinterface to suit their preferences,including the layout,color scheme,and even the level of interaction with AI assistants.11.Voice and Gesture Control:Future mobile phones will likely have more advanced voice recognition and gesture control,reducing the need for physical buttons and improving user experience.12.Holographic Projection:Some models may feature holographic projection capabilities, allowing users to interact with3D images and videos.13.Integration with Wearable Tech:Mobile phones will work more closely with wearable technology,such as smartwatches and health bands,providing a seamless user experience across devices.14.Smart Home Control:Phones will serve as central hubs for controlling smart home devices,allowing users to manage their homes lighting,temperature,and security systems from their mobile device.15.Virtual Personal Assistants:AIpowered personal assistants will become more humanlike,offering emotional intelligence and the ability to learn from user interactions to provide better service.The future of mobile phones is exciting,with technology continually pushing the boundaries of what is possible.These devices will not only be tools for communication and entertainment but also integral parts of our lives,enhancing our experiences and making our daily tasks more efficient and enjoyable.。
Annotation实战【自定义AbstractProcessor】前言在使用Java的过程中,每个开发人员都接触过@Override, @Deprecated 等等各式各样的注解,这些东西是java最基础的一些原生定义好的annotation。
本文通过一个实例演示如果自定义自己的annotation,使得在编译源码代码阶段进行额外操作。
案例源码预热简单说一下annotation的基本知识,从java的官方技术文档可以直接找到annotation的技术点。
Annotations, a form of metadata, provide data about a program thatisnot part ofthe program itself. Annotations have no direct effect onthe operation ofthe code they annotate.Annotations是一种元数据,其作用在于提供程序本身以外的一些数据信息,也就是说Annotation他不会属于程序代码本身,不参与逻辑运算,故而不会对原程序代码的操作产生直接的影响。
一般来说Annotation有如下三种使用情形:Information for the compiler— Annotations can be used by the compiler to detect errors or suppress * warnings.∙Compile-time and deployment-time processing— Software tools can process annotation information to generate code, XML files, and so forth.∙Runtime processing— Some annotations are available to be examined at runtime.∙为编译器提供辅助信息— Annotations可以为编译器提供而外信息,以便于检测错误,抑制警告等.∙编译源代码时进行而外操作—软件工具可以通过处理Annotation信息来生成原代码,xml文件等等.∙运行时处理—有一些annotation甚至可以在程序运行时被检测,使用.具体annotation的详细知识点可以参考技术文档,本文案例针对的是编译源代码时进行而外操作。
DatasheetCustom WaveView ADVComplete Transistor-Level Analysis and Debugging EnvironmentOverviewCustom WaveView™ ADVprovides a complete transistor-level analysis and debuggingenvironment for pre-processingand post-processing SPICE andFastSPICE simulations. CustomWaveView ADV is integrated withSynopsys’ HSPICE®, FineSim® andCustomSim™ to streamline thedebugging and analysis process forSPICE and FastSPICE simulationand increase design productivity.The combination of CustomWaveView ADV with Synopsyscircuit simulators provides designteams with a high-performance,productive simulation debug andanalysis environment for complexSoC design.IntroductionCustom WaveView ADV is a netlist-based debugging environment for SPICEand FastSPICE simulators such as HSPICE, FineSim and CustomSim.Custom WaveView ADV is also tightly integrated with Custom WaveView, enablingwaveform cross-probing. Together, these tools aid designers in rapidly performingcustomized advanced analyses in a highly-productive design debugging andwaveform analysis environment.Custom WaveView ADV Design BrowserThe Custom WaveView ADV Design Browser allows quick access to the mostcomplex hierarchy design data with complete design and file display. The DesignBrowser will import a netlist and allow traversing of the design hierarchy, displaysignal and element list, and tracing connections contained in the hierarchy. Theseviews, shown in Figure 1, work in concert to provide rapid access to all of thecontents of the design hierarchy. In addition to displaying the design hierarchy, theDesign Browser will also display the associated file hierarchy containing the design.A powerful search function allows the user to find design components in thehierarchy based on string, signal, instance, and module names.Figure 1. Custom WaveView ADV’s main window concisely presents hierarchy,netlist, connection and linting data for easy analysis and debugDebuggingSourceView and ConnectionViewThe SourceView and ConnectionView shows the contents of the SPICE netlist and creates a visualization of the connections contained within the netlist (see Figure 1).SourceViewThe SourceView displays the hierarchical content of the SPICE netlist, allowing the designer to query the contents of a design or cell. Selecting a subcircuit in the SourceView displays the contents of that subcircuit as well as displaying the interface pins and netnames, and parameters in the ConnectionView. ConnectionViewThe ConnectionView creates design connectivity visualization of the object selected in the Hierarchy Browser. Included in the diagram are the name of the object, its terminal names and the nets that connect to it. In the case of subcircuits, the internal netnames are also displayed, making it easy to follow nets up and downthe hierarchy through subcircuit boundaries. CustomWaveView ADV’s Net Tracer can also be used to follow changing net names with ease through the design’s hierarchy.Signal TracingSignal flow can be traced in both SourceView and ConnectionView. In SourceView, the statements representing a selected net are highlighted and can be traced subsequently. In ConnectionView, devices or subcircuits connecting a selected signal are displayed and new connections can be displayed for pins/ports of the connected elements.SPICE Lint ViewCustom WaveView ADV’s SPICE Lint View performs user-selected compatibility checks that can be used to verify that the netlists being simulated conform to the proper syntax before wasting time on a long simulation before finding a problem. These checks are performed automatically as the netlist is read in with all errors or warnings being flagged in the SPICE Lint Window as well as the corresponding net and device being displayed in the SourceView and ConnectionView.SPICE Syntax RulesChecks for basic SPICE netlist syntax and structure errors such as: missing or redundant END statements, missing or mismatched model device names, missing ground nodes, invalid signal names, etc. Over 40 different syntax and structure checks are performed.Connection RulesFinds and flags problems with floating nodes or blocks, global nodes that are not driven by any source,DC-floating MOS gate and nodes, dangling element terminals, and floating transient sources. This helps the designer to deliver a quality netlist to the simulator of choice.Parameter Passing and Parameter Rule ChecksParameter passing rule checks verify that all passed parameters are properly defined before use and properly passed through the hierarchy. Parameters that are redefined or recursively defined are also found.The parameter rule checks also finds and flags parameter values that are set above user definable thresholds. This includes looking for element parameter Negative capacitance/resistance, out-of-range element values and sizes, non-positive subcircuit multiplier and PWL stimuli statements with sharp slews.Design Connectivity Rule ChecksLooks for static DC issues such as conducting device or path, leakage device or path, as well as pulse source errors and scale errors.Custom WaveView IncludedThe Waveform Window is Custom WaveView (included with a Custom WaveView ADV license), the industry standard for waveform analysis and measurement. Custom WaveView provides a host of capabilities for displaying, measuring, manipulating and saving simulation results. In addition to multiple panels containing waveforms, Custom WaveView also provides the ability to display more than one waveform tab allowing the designer to mix and match time and frequency domains in a single session. Custom WaveView is a full analog and mixed-signal display and analysis environment, reading simulation results from either analog or digital simulators and allowing complete conversion between views. For instance, Custom WaveView can read inthe analog results of an HSPICE simulation, convert those waveforms to digital (single or multi-bit with user selectable thresholds) and export those results for use in a digital simulation.Full cross-probing is supported between both Custom WaveView ADV and Custom WaveView.Other UtilitiesHierarchical Netlist Flatten and ExportHierarchical netlists can be flattened and exported to tools that require flat netlist views. The hierarchy information is preserved via net names in the flat netlist.Source Waveform PreviewStimuli statements (Pulse, PWL, Sine, Exp or SFFM) statements can be extracted from netlists and displayed prior to simulations to verify their correctness.Parameter ReportsA final report on all parameters in a netlist can be produced show their final values as passed to simulation.Total Device Area ReportsThe widths and lengths of transistors in netlists can be extracted and reported to help verify correct netlist construction. This capability helps eliminate errors like missing unit values that would result in one-meter transistors (rather than 1 micron) or 10-Farad capacitors (rather than 10 femtoFarads).HSPICE .Measure Statement Extraction and ReplayCustomExplorer contains the ability to scan a netlist and extract out all HSPICE .Measure statements and save them in a file. These statements retain their full design hierarchy and can be modified and replayed against existing simulation results. This capability eliminates lost simulation time when the designer determines, after a simulation, that additional .Measure needs to be performed, or when a given .Measure was incorrect during the simulation. In the latter case, the simulation does not need to be rerun as the incorrect .Measure can be fixed and replayed against the results, saving time and effort.Batch Waveform CompareA powerful capability in Custom WaveView ADV is the Batch Waveform Compare utility. This utility allows designers to compare two sets of simulation runs in batch and produce a text report of the differences. The Batch Waveform Compare system uses a simple rules file that controls the comparisons. Users can define what signals are to be compared and the tolerances of the comparisons. Using sample-based comparison techniques, the Batch Waveform Compare utility compares golden-to-target simulation results and supports both analog and digital waveforms. This capability helps eliminate the vast majority of manual “eyeballing”of analog or digital signals. Users have reported reducing as much as one full week of manual effort to 15 minutes for analyzing 100 analog waveforms.Extensible and OpenCustom WaveView ADV is open and extensible and can be controlled in both GUI or Batch mode with scripting. The GUI is also extensible, allowing CAD teams to craft custom measurements and provide them across their organizations through the regular menu system.Regression Scripting with the Analysis Command Environment (ACE)The Analysis Command Environment (ACE) is a Tcl-based extension language that provides near-complete control of Custom WaveView ADV. The ACE scripting environment contains hundreds of functions and can control the GUI, the waveform panels, the menu system or the measurement capabilities of either tool. Often used by CAD teams to extend the tools, the ACE scripting capability can also be used to perform Regression Scripting allowing designers to make changes to their design and then replay a wide variety of analyses in batch mode, freeing the designer to work on other aspects of the design. Encapsulating these analyses also means sharing best design practices across an organization improving quality and simplifying the collection of data for design reviews.Industry Standard Design Platform IntegrationsCustom WaveView ADV is also integrated into industry-standard design platforms to help maximize designer productivity during the design phase. A native integration of this tool into Synopsys’ Galaxy Custom Designer®system helps form a complete environment for analog block authoring in a single platform for both cell-based and custom design. Other design platform integrations include:`Cadence Design Systems: Virtuoso® Composer and ADE``JEDAT: Asca Circuit Design and Debugging Environment``Mentor Graphics: Design Architect® IC``Synopsys: Laker™ Custom Layout``Automation System`Supported File FormatsCustom WaveView ADV provides support for over 45 different file formats giving it the highest support of simulation file formats in the industry.`Supported Simulator Formats`–Synopsys• CustomSim and CustomSim FT (HSIM, XA and NanoSim — WDF, WDB, .Out and Vector)• HSPICE and HSPICE RF (.Tr0, .Ac0, .Sw0…— Binary and ASCII)• VCS (VCD and VPD)• Saber (AI/PL — Binary and ASCII)–Cadence Design Systems• Spectre (PSF, WSF — Binary and ASCII)• UltraSim (PSF, WSF — Binary and ASCII)• PSPICE (DAT)• Incisive (VCD)–Mentor Graphics• ModelSim (WLF)• Eldo (COU 4.3, 4.7 and Tr0)• ADMS (WDB and JWDB)• ADiT (Tr0 and Tb0)• HyperLynx (CSV)–Others• Agilent ADS (.ds — Binary and TouchStone S-Parameters — ASCII)• CSDF (ASCII)• Novas FSDB (Binary)• Legend (Tr0 Derivative)• SmartSPICE (Raw Derivative)• Five proprietary simulator formats are also available — please contact Synopsys–Data Formats• IBIS Models• Tektronix Agilent and Lecroy Scope Data• Text table data and Comma Separated Values (CSV)Synopsys, Inc. • 690 East Middlefield Road • Mountain View, CA 94043 • ©2016 Synopsys, Inc. All rights reserved. Synopsys is a trademark of Synopsys, Inc. in the United States and other countries. A list of Synopsys trademarks is available at /copyright.html . All other names mentioned herein are trademarks or registered trademarks of their respective owners.``Supported Netlist Formats–Synopsys HSPICE–DSPF–Cadence Spectre and CDL–Mentor Graphics Eldo–Standard SPICEPlatform Support``Microsoft Windows 64-bit``Red Hat Enterprise``SUSE Linux Enterprise (64)。
abstract 怎么读
“abstract”的发音为:英式英语[ˈæbstrækt],美式英语[ˈæbstrækt]。
在发音时,注意将重音放在第一个音节上,“æ”发类似“æb”的音,“strækt”部分要清晰发出“str”和“ækt”的音。
“abstract”是一个英语单词,可以用作形容词和名词。
作为形容词时,它的意思是“抽象的”,用来描述不具体、不实际、脱离实际的概念或思想。
作为名词时,它的意思是“摘要”,即对一篇文章、报告或研究的简短、概括性的总结。
此外,“abstract”还可以用作动词,意为“提取”、“抽取”,指从某物中提取出其本质或关键信息。
在计算机科学领域,“abstract”也常用来描述抽象类或抽象方法,这是一种编程概念,用于定义具有共同特性的类的方法,但不包含具体的实现。
总之,“abstract”是一个多功能的英语单词,在学术、商业和日常交流中都有广泛的应用。
正确掌握其发音和用法,有助于提高英语交流和理解能力。
F U S I O N E D I T I O NR E L E A S E11.1.2C ONTENTS I N B RIEFOverview (2)Smart View Panel (2)Context-Sensitive Ribbons (2)Integration with Outlook (3)Redesigned Options Dialog Box (3)Planning Features (4)Financial Management Features (5)Smart View and Disclosure Management Integration (5)New VBA Functions (5)EPM System New Features (6)OverviewThis document describes the new features introduced in Oracle Hyperion Smart View for Office, Fusion Edition Release 11.1.2.It is our goal to make Oracle products, services, and supporting documentation accessible to the disabled community. Smart View Release 11.1.2 supports accessibility features, which are described in Appendix A of the Smart View for Office User's Guide.Smart View PanelFrom the Smart View Panel, you can manage data source connections, access data and task lists, create reports, and open Oracle Crystal Ball Enterprise Performance Management, Fusion Edition workbooks if you are licensed for Crystal Ball EPM.The Smart View Panel, opened from the Smart View ribbon, is displayed by default on the right side of the Microsoft Office application. You can move, re-size, or close the Smart View Panel from the down arrow in the title bar.The Smart View Panel contains the following panes:l Home: A panel that displays links to shared connections and private connections as well asa list of recently used items - ad hoc grids, data forms, and tasks - which you can click toestablish a connection.l Shared Connections: A drop-down menu of available connections from Oracle's Hyperion®Shared Services and a tree view of the contents of the currently selected connection.l Private Connections: A drop-down menu of available connections saved on the local computer and a tree view of the contents of the currently selected connection. You can also enter a URL to connect directly to a data source here.l Task Lists: A tree list of tasks from which you can manage your tasks. This pane opens only when you select a task list from shared connections or private connections.l Simulation Workbook: (only if you are licensed for Crystal Ball EPM) A tree list of available Oracle Crystal Ball Enterprise Performance Management, Fusion Edition workbooks that you can open in Smart View.l Action Panel: A list of operations available based on the selection in the shared connection.private connection, or task list tree list.Context-Sensitive RibbonsSmart View operations in Microsoft Office applications are available through ribbon commands. The Smart View ribbon, which contains commands for common Smart View operations, is always present. When you connect to a data source (other than Oracle's Hyperion Reporting and Analysis), the corresponding data source ribbon is also displayed. For Oracle Hyperion Planning, Fusion Edition, Oracle Hyperion Financial Management, Fusion Edition, and Oracle's Hyperion® Enterprise®, when you enter ad hoc analysis, the data source ribbon is automatically 2New Featuresreplaced by its ad hoc version. Each ribbon displays only the commands permitted for that datasource, mode, and Office application.These are the new ribbons:l Smart Viewl Essbasel Planningl Planning Ad Hocl HFM (Financial Management )l HFM Ad Hocl Enterprise (Oracle's Hyperion® Enterprise®)l Enterprise Ad Hocl OBIEE (Oracle Business Intelligence Enterprise Edition)Note:Microsoft Office 2003 users can still access Smart View operations via menus.Integration with OutlookPlanning and Financial Management task lists are now integrated into Outlook, so users canintegrate their tasks into Outlook tasks and perform these tasks from within Outlook. Data formtasks are seamlessly launched from Outlook into the familiar Excel interface.Redesigned Options Dialog BoxThe Smart View Options dialog box has been redesigned to make options more easily accessible.Options are organized into categories to provide better user experience and accommodateprovider-specific options. Like other components of Smart View in this release, options areavailable to users only if they are supported by the currently connected data source.The following new options are available from the Options dialog box:l Change the language in which Smart View is displayed without having to re-install Smart Viewl In shortcut menus, choose whether to display Smart View and Microsoft items or only Smart View itemsl Reset all options to default setting with a click of the Reset buttonNew Features3Figure 1 Options Dialog BoxPlanning FeaturesThis release of Smart View supports a greatly expanded set of Planning functionality.l Planning task lists are now integrated into Outlook, so planners can integrate their tasks into Outlook tasks, and can perform these tasks from within Outlook. Planning data form tasks are seamlessly launched from Outlook into the familiar Excel interfacel Planning task lists are available in Office, including task status and task reports; users can perform tasks in Excel, and have them automatically synchronized with the Webl All process management end-user functionality can be accessed from Outlook and Excel l Data validation, including validation indicators and messagesl The ability to monitor the status of Planning jobs in the Job Consolel Composite data forms in Microsoft Office with shared dimensions that are automatically synchronized across multiple data formsl Mass Allocate and Grid Spread for spreading valuesl Copy data across versions for scenario-entity combinationsl Dynamic user variables that allow end users to select and change user variable values directly in data formsl Custom right-click menus for data and metadatal Member formula display4New Featuresl Setting Planning user preferences within Smart Viewl Data forms enabled for ad hoc allow users to slice data and save a slice to create reports or share with other usersFor information about Planning, see the Oracle Hyperion Planning New Features and OracleHyperion Planning User's Guide.Financial Management FeaturesIn this release, Smart Slices are available toFinancial Management users who connect to SmartView. Using Smart Slices, Financial Management users can create and save reports from theReport Designer and cascade reports across a selected dimension.Smart View and Disclosure Management IntegrationCustomers who use Smart View in Excel or Word to assemble financial reports can also useOracle Hyperion Disclosure Management, which allows you to assemble a reporting packagefor submission to a regulatory agency that includes financial statements, as well as supportingschedules and commentary which may exist in Excel, Word, or an Oracle Hyperion FinancialReporting, Fusion Edition report.The first release of Oracle Hyperion Disclosure Management offers a complete XBRL creationand management solution with Enterprise level XBRL mapping; XBRL Taxonomy management,editing and viewing; and Instance document creation, validation and viewing. While viewingSmart View queries in Word or Excel, users can perform data source level mapping with theXBRL Taxonomy Mapping Tool, that allows for re-usable taxonomy element mapping withinOracle Hyperion Financial Management, Fusion Edition, Oracle Hyperion Planning, FusionEdition, and Oracle Essbase.New VBA FunctionsThis release features the following new VBA functions.l HypFindMemberEx retrieves member information like dimension, alias, generation and level names.l HypSetAsDefault creates a connection default.l HypOpenForm opens a data form.l HypSetPages sets page members for the selected sheet.l HypGetPagePOVChoices returns the available member names and member description fora given dimension.l HypDeleteMetaData deletes Oracle Hyperion Smart View for Office, Fusion Edition metadata from the workbook.New Features5l HypGetSharedConnectionsURL returns the Shared Connections URL to be used (also shown in the Options dialog box).l HypSetSharedConnectionsURL sets the Shared Connections URL in the config file and Options dialog box.l HypIsConnectedToSharedConnections checks whether SmartView is connected to Shared Connections.EPM System New Featuresl Most Oracle Hyperion Enterprise Performance Management System products have adopted Oracle Diagnostic Logging (ODL) as the logging mechanism. The ODL framework provides uniform support for managing log files, including log file rotation, maximum log file size, and the maximum log directory size. For more information, see the “Using EPM System Logs” chapter of the Oracle Hyperion Enterprise Performance Management System Installation and Configuration Troubleshooting Guide.l Oracle Configuration Manager (OCM) integrates with My Oracle Support and provides configuration information for Oracle software. It assists in the troubleshooting,maintenance, and diagnostics of your EPM System deployment. For more information about Oracle Configuration Manager see the Oracle Hyperion Enterprise PerformanceManagement System Installation and Configuration Guide.l With this release, many EPM System products support hostnames that resolve to IPv6 addresses. See the Oracle Hyperion Enterprise Performance Management System Certification Matrix. IPv4 support (both hostname and IP address) remains unchanged from earlier releases.l Oracle Hyperion Enterprise Performance Management System supports the following types of SSL configurations:m Full SSL Deployment (including data access)m SSL Terminating at the Web Serverm SSL Accelerators (Off-loading)m Two-way SSLFor more information on the SSL configurations, see the Oracle Hyperion EnterprisePerformance Management System Security Administration Guide.6New FeaturesNew Features7COPYRIGHT NOTICESmart View New Features, 11.1.2Copyright © 2004, 2010, Oracle and/or its affiliates. All rights reserved.Authors: EPM Information Development TeamThis software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.If this software or related documentation is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:U.S. GOVERNMENT RIGHTS:Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065.This software is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications which may create a risk of personal injury. If you use this software in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure the safe use of this software. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software in dangerous applications.Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.This software and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.。
Views:Customizable Abstractions for Context-AwareApplications in MANETsKurt Schelfthout Distrinet-K.U.LeuvenCelestijnenlaan200A 3001Leuven,Belgium kurts@cs.kuleuven.beTom HolvoetDistrinet-K.U.LeuvenCelestijnenlaan200A3001Leuven,Belgiumtom@cs.kuleuven.beY olande BerbersDistrinet-K.U.LeuvenCelestijnenlaan200A3001Leuven,Belgiumyolande@cs.kuleuven.beABSTRACTProgramming applications for highly dynamic environments such as mobile ad hoc networks(MANETs)is complex,since the work-ing context of applications changes continuously.This paper presents “views”as abstractions for representing and maintaining context information,tailored to applications in MANETs.An application agent can define a view by declaratively describing the context in-formation it is interested in.A supporting middleware platform, called ObjectPlaces,ensures that the information represented by a view continuously reflects the agent’s context information,de-spite the dynamic situation in a MANET.We elaborate on the dis-tributed protocol that ObjectPlaces uses to maintain the information of views,and give a thorough evaluation.1.INTRODUCTIONGiven the increasing pervasiveness of networks due to the ad-vent of wireless communication,the next generation of distributed systems presumes little network infrastructure,and is comprised of computing devices(nodes)that can be carried around,or are placed on moving vehicles.Mobile computing nodes connected in such an ad hoc way form a mobile ad hoc network(MANET).An application developed for MANETs necessarily consists of distributed agents that need to communicate among each other to achieve a common goal.Given the dynamics of a MANET,this communication between application agents is complex:the nodes on which these agents live are mobile,and can disappear from a conversation at any time.Dealing with this complexity at the ap-plication level is hard,so an application developer benefits greatly from a coordination middleware that offers high level mechanisms to manage communication among agents.ObjectPlaces is a coordination middleware that supports afirst order abstraction of an agent’s context.For our purposes,an agent’s context is the aggregate of all available information on currently reachable nodes in the MANET.An agent’s context thus changes because(1)information on a reachable node is changed,or(2) the set of reachable nodes changes.In ObjectPlaces,an agent can gather context by defining a view.A view is built by the middleware Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on thefirst page.To copy otherwise,to republish,to post on servers or to redistribute to lists,requires prior specific permission and/or a fee.SELMAS’05at ICSE’05May15-16,2005,St.Louis,Missouri,USA. Copyright2005ACM1-59593-116-3/00/0004...$5.00.based on a declarative specification that describes“how far”over the network the view reaches,and in what information the viewing agent is interested in.The most important property of a view is that it is an actively maintained structure,that changes as the agent’s context changes. The agent can listen for new context events,e.g.the arrival of a new node carrying interesting information.A motivating example for such an active notion of context occurred in a real world ap-plication,wherein we are currently applying the ObjectPlaces mid-dleware.In this application,automatic guided vehicles(AGVs)in a warehouse coordinate to transport goods.AGVs communicate to avoid collisions(among other things);an AGV thus needs to be notified actively when another vehicle enters in a possible col-lision range.Other examples are rescue workers that want to be notified of incoming and leaving ambulances,battlefield scenarios where soldiers want to be notified of incoming transports,etc.If the middleware does not support an active context representation,the application programmer is forced to program such a representation using polling.In the following section,we describe the ObjectPlaces middle-ware in more detail,as well its relation to existing coordination middleware.In Sect.3we describe a protocol to maintain a view in a MANET.Then,the ObjectPlaces middleware and specifically the notion of a view is evaluated analytically and empirically in Sect.4.Finally,we conclude.2.VIEWS ON OBJECTPLACESIn ObjectPlaces,each agent can maintain”viewable data”in a local collection of objects called an objectplace1.The objects in an objectplace represent information that is of interest to other agents, and so contribute to the overall context information available.Other agents can gather copies of objects from objectplaces on nodes in their neighborhood using a view.In other words,context informa-tion is made available by putting it in a local objectplace,and can be gathered by building a view.Agents can coordinate by influencing each other’s context,much like what happens in everyday traffic: when a car driver is going to take a right turn,he or she turns on the turning indicator.Other drivers can see this”context change”,and react appropriately.First we describe how an agent can manipulate its local object-place,then views are described in more detail.The section is con-cluded with a discussion of ObjectPlaces in relation to existing work.1”ObjectPlaces”-the middleware-is written in plural and with two capitals,”objectplace”-the software entity-is written without capitals.2.1Manipulating an objectplaceAn objectplace by itself is basically a tuplespace variant:an ob-jectplace is a set of objects that can be manipulated by operations such as put,read and take.Contrary to existing tuplespace ap-proaches however,an objectplace has a fundamentally asynchronous interface:operations return control to the client immediately(an agent that uses the middleware is called a client of the middleware), and results are returned as they are available via a callback.This is important in order to allow views to be built efficiently and conve-niently,see Sect.2.3.For clarity,we have made two simplifications.First,although an objectplace can be manipulated remotely,for this paper the reader can assume that an objectplace is only locally accessible.Views, discussed in the next section,provide a way for clients to observe the contents of remote objectplaces.Second,although a client can create objectplaces at will,we assume that the middleware offers exactly one objectplace on each node.Similar to tuplespaces,in order to read or take objects from an objectplace,clients indicate what objects they want to read by means of a template.A template is a function from the set of objects to a boolean value.Every object for which the template function returns true matches with the template.The operations on an objectplace are the following:put(Set,Callback)puts the given set of objects in the objectplace.Returns true to the callback if all objects were successfullyadded.take(ObjectTmplt,Callback)removes the objects matching with the template from the objectplace and returns them to thecallback.watch(ObjectTmplt,EventTmplt,Lease,Callback)observes the content of the objectplace.Returns copies of objects match-ing the object template to the callback(the objectplace is notchanged).The event template is used to indicate in whatevents on the matching object the client is interested in.Eventtemplate and lease are described in detail shortly.A watch operation’s event template can match with three pos-sible events:isPresent,isPut or isTaken.If the event tem-plate matches with isPresent,the objectplace returns copies of all matching objects it currently contains to the callback,and re-turns the empty set if there are no matches(this is important for so-called test-for-absence operations,where the client needs to know there are no matching objects).If isPresent is the only event with which the event template matches,the watch operation isfin-ished.However,when the event template also matches with isPut or isTaken,the objectplace must return copies of matching ob-jects that are either put in or taken from the objectplace.In order to do so,the operation is registered by the objectplace,and when an appropriate event occurs on an object matched by the object tem-plate,the client is notified.An event template that matches with isPresent and isPut for example,first returns copies of ob-jects currently contained in the objectplace.When new matching objects are put in the objectplace,copies of these are returned in a subsequent call to the callback.Objects returned to the callback are also annotated with the event that occurred on the object,so the client can distinguish between events.To unregister watch operations that are waiting for an event,a watch can be provided with a Lease object.A client calls the discard operation on the Lease to unregister the corresponding watch operation.The same lease can be given as an argument to more than one watch;in that case,upon discard all these opera-tions are unregistered atomically.2.2ViewsA view is a local collection of objects,reflecting the contents of multiple objectplaces on reachable nodes in the network based on a declarative specification.This collection is continuously updated by the middleware,both with respect to changing contents of the objectplaces in the view,as with respect to changes in the network topology.A view thus represents the context of the viewing agent. To build a view,a client specifies:A distance metric and a bound determines“how far”over the net-work the client’s view will reach.An example is a hop count-metric with a bound of three:the view will span objectplacesreachable in a maximum of three hops from the node wherethe view is issued.An object template constrains what objects will be included in the view.Given these parameters,the ObjectPlaces middleware searches the network for nodes satisfying the constraints(using the protocol described in Sect.3).On these nodes’objectplaces,a watch op-eration with the given object template is executed.The watch’s event template matches with all possible events.The results of all these watch operations,which are events indicating the presence, arrival or removal of objects in an objectplace,are sent to the node issuing the view.This allows the viewing node to keep the view up to date with respect to changes in the content of the participating objectplaces.Changes in the network are handled by managing the watch registrations on the nodes in the view.When it is detected that a node moves out of the view,the view’s watch on the object-place of that node is unregistered,and the viewing node is notified; when a node moves into the view,a watch on its objectplace is reg-istered and consequently the viewing node is notified as well.How this detection is done is discussed in Sect. 3.A view is actively maintained in this way until it is released by the client.Any client on any node can build a view,and clients can specify as many views as they want.Each client can have its own set of views to observe the context that it is interested in.A client can not only specify constraints on the content of the view based on its interests,the content can also be represented in a client specific way(e.g.as a sorted collection).In its raw form, a view is built out of the events generated by the watch operations on the participating nodes,as well as events generated by the mid-dleware when a node leaves or joins the ers of the middle-ware can program their own representation using these raw events. For example,we have provided an implementation of a view as a collection,supporting a collection interface common in object-oriented API’s(i.e.java.util.Collection in Java).This allows sorting and iterating over the collection for example.The collection is updated as watch events are generated,e.g.when an isPut is received,the corresponding objects are added to the ually,a view is described as such a collection in this paper,since it is the most common usage pattern.Other represen-tations of a view can be an accumulation to a single value,e.g. the average of an attribute of the objects in the view,or translating objects in the view to objects the agent understands,to deal with heterogeneous agents.Both the contents and the representation of a view can thus be customized.As an example,suppose a car arriving at an intersection wants to know the positions of other cars,since the car has to give way from the right.It builds a view on all cars within50meters(distance metric and bound),containing position and car id objects(object template).The car chooses a sorted list as representation,closest carfirst.A traffic monitor nearby also builds a view on nearbycars,and car id objects,but accumulates the car id’s in a counter for traffic information purposes.In both cases,the content of the view is partly the same(car id’s),but the representation is different (a sorted list,vs.a count of the unique id’s).In conclusion,a view is a powerful abstraction that can be put to good use for coordination,since it is an active representation of a agent’s context.A view takes the heterogeneous nature of a MANET into account,because both the contents and the represen-tation of a view can be tailored to each client’s wishes.2.3Discussion and Related WorkThe ObjectPlaces middleware can be seen as a hybrid between two well known approaches for coordination:publish/subscribe systems and tuplespaces.In a publish/subscribe(P/S)system(e.g.[3,14]),publishers send notifications of state changes to a list of subscribers.Sub-scribers are not known in advance but let the P/S middleware know of their interest in certain events through the use of subscriptions. The P/S middleware handles the delivery of notifications to the right subscribers.ObjectPlaces can be seen as a P/S variant:a view is a subscrip-tion to events on objectplaces in the vicinity of a client.Clients ”publish events”by manipulating objects in their local objectplace, which triggers watch operations of views that are observing that ob-jectplace.The resulting events are then delivered to viewing clients. ObjectPlaces solves a problem when applying P/S middleware in MANETS:in[4]it is described that,due to the appearance and reappearance of nodes in a MANET,there is a phase immediately after reconnection in which a mobile subscriber needs to wait until events are published so that the subscriber can assess the current state of publishers.For example in STEAM[9],a P/S middleware for MANETs,publishers are burdened with sending events period-ically to account for possible newly arrived subscribers.Generally, this problem is handled by buffering previous events on reliable andfixed infrastructure,e.g.[5][15].Such afixed infrastructure is however not available in MANETs.In ObjectPlaces this problem is handled naturally.Objects are put in a local objectplace;newly arrived clients can be brought up to date immediately by querying neighboring objectplaces using a view.At the same time,the view subscribes to events on the objectplace,and so keeps the viewing client up to date in the future as well.The objectplaces thus act as a buffer in which clients can store observable state. Tuplespaces(TS)systems,with Linda[2]as afirst incarnation, provide a shared collection of data,called tuples,and a set of op-erations(read,write,take)on the collection to manipulate the data. Throughout the years,Linda has spawned many variants,e.g.[1] [16].Directly applying tuplespace systems in MANETs is difficult since clients need to know the location of a tuplespace to interact in beforehand,or a shared tuplespace must be discovered and agreed upon at runtime.Since there is no reliable infrastructure available in a MANET,solving this problem is not trivial.In ObjectPlaces, the solution is to let agents manipulate a local objectplace,com-bined with the use of a view to gather the contents of objectplaces on reachable nodes.From this viewpoint,a view is the necessary ”discovery mechanism”that detects reachable objectplaces accord-ing to client-specific constraints.As another point,objectplace operations are specifically designed to support views efficiently.Existing tuplespace approaches lack the event-based,asynchronous interface an objectplace provides. An event-based interface is necessary since a view requires active maintenance,so the viewing agent needs to be notified whenever an objectplace in its view changes.Since a tuplespace provides mostly synchronous operations(e.g.rd,rdp),a tuplespace would have to be polled regularly to keep the view up to date,which is an inefficient solution.With a watch operation,the client can query both the current contents(isPresent)and subscribe to events on the objectplace(isPut and isTaken).This ensures that the ob-jectplace notifies the client when appropriate,thus eliminating the need for polling.Although existing models do support event-like operations(e.g. JavaSpaces’notify[16]or LIME’s reactions[10]),these are not sufficient.For example,JavaSpaces notify can”only”send notifi-cations of incoming tuples,while a view also needs to react to ob-jects that are removed from an objectplace in order to be up to date. Another issue is that an objectplace supports both querying the cur-rent contents and subscribing to events atomically:otherwise,a view may miss some objects.JavaSpaces can support this by pro-viding a transaction mechanism,but we feel this is too heavyweight for application in a MANET.Also in programmable or extensible tuplespaces like TuCSoN[11]and MARS[1],extending the in-terface with asynchronous operation is possible,but these mecha-nisms are too heavyweight for application in MANETs.The ob-jectplace’s watch operation solves the problem by allowing clients to specify an appropriate event template.Finally,we discuss the relation of ObjectPlaces to a number of coordination middleware approaches specifically for MANETs. LIME[10]is a middleware for mobile agents and mobile nodes that attaches a personal tuplespace to each agent in the applica-tion,and shares these tuplespaces transparently when two agents are on the same or connected node.The LIME middleware was extended recently in EgoSpaces[12].In EgoSpaces,clients can build a view over the locally available network,similarly based on a distance metric.EgoSpaces’view is always represented as a tu-plespace(supporting primitives like in,inp,...).In ObjectPlaces, the representation of the view can be tailored to the client’s wishes (e.g.a sorted collection),thus supporting heterogeneous agents bet-ter.Furthermore,while it is possible to register reactions on a view in EgoSpaces,these can react”only”to incoming tuples[7].It is unclear how an agent can be notified of a tuple leaving it’s view (except by polling),a necessary precondition for building an up to date client-side representation such as in ObjectPlaces.TOTA[8](Tuples On The Air)is a middleware that provides ap-plications with the notion of a self-maintaining distributed tuple. Each node in the network hosts a tuplespace.A distributed tuple is propagated to nearby nodes,and can be changed with each propa-gation according to an application-specific rule(e.g.counting the number of hops from the root).This tuple is then maintained by the middleware as the network changes.An important difference with ObjectPlaces is that a view is specific for every client,while a dis-tributed tuple is the same for all observers.In other words,while in TOTA the”sender”of a message(the agent that adds a distributed tuple)determines both who it reaches and what the content is,in ObjectPlaces the”receivers”of a message(the clients that build a view)can determine both content and representation.3.VIEW PROTOCOLThe construction of a view in a MANET requires a distributed protocol that is able tofind and maintain a set of reachable nodes in the network given a bound on a distance metric.This means that the protocol should be able to:(1)notify the viewing node when a node enters or leaves the view(2)register and deregister watch operations on nodes entering and leaving the view respec-tively;(3)route the events generated by the watch operations to the node where the view was defined.Existing ad hoc routing pro-tocols(for an overview,we refer to[13])are not adequate becausethey can only provide afixed”distance metric”(usually hop count). Since the distance metric used for building the view is application specific and determined at runtime,we need a protocol that doesfit our requirements.This protocol can be viewed as an alternative to the one proposed in[12].We assume from the underlying network layer that:(1)a single-hop broadcast is available that broadcasts a message to all nodes within communication reach,represented by the function broadcast (message);(2)a reliable single-hop unicast that sends a messageto a designated node within communication reach,represented by the function unicast(message,id receiver).We can reasonably expect these functions to be built based on data link standards such as IEEE802.11[6].Algorithm1The view protocol.on timeout t br1:removeOutdated(participants,f p.t br)2:broadcast(dist msg(id view,0,id root))on receive content message c3:updateT ime(participants,timestamp(c),c.id sender)4:updateV iew(participants,c.events)5:Process Participant:on timeout t br6:removeOutdated(neighbors,f n.t br)7:id parent=findP arent(neighbors)8:d current=calculateDistance(neighbors,id parent)9:if d current≤bound then10:broadcast(dist msg(id view,d current,id participant))11:events=objplace.watch(object template,allEvents,cb) 12:unicast(cont msg(id view,events,id participant),id parent) 13:else14:alive=false15:stop timeron receive distance message d16:updateT ime(neighbors,timestamp(d),d.id sender)17:updateDistance(neighbors,d.distance,d.id sender)18:alive=true19:start timeron receive content message c20:if alive then21:unicast(c,id parent)The data structures necessary for the protocol are depicted in Ta-ble1,while the protocol is depicted as Algorithm1.The protocol builds and maintains a shortest path spanning tree,starting on the node with the client issuing the view,called the root.This tree de-termines which nodes are included in the view-these are called the participants in the view.In the text and in algorithm1the protocolis described as if there is only one view-this is only for exposi-tory purposes.In reality this protocol is executed for every viewin which a node participates.That is why with each message a unique view id,id view is transmitted.The data structures in table1are also for one single view,and are duplicated for every view in which a node participates.The length of a path is determined by the distance metric,whichis a parameter of the protocol.This allows building a shortest path based on hop count,but also on any other distance metric such as physical distance,or bandwidth.The only constraint on the dis-tance metric is that it increases monotonically the further it gets propagated from the root,to ensure that the distance does not grow out of bounds as it gets propagated in a loop.Such a metric can always be chosen,by including a hop count with any other metric the client chooses(e.g.physical distance)[12].The view building process starts when a client issues a view.The node on which this client is located is responsible for building and maintaining it,and is the root for that view.The rootfirst builds a unique id for the view,consisting of its own id and a sequence number that is unique on each node.Two activities now occur in parallel:the building and maintaining of the shortest path spanning tree,and the building and maintaining of the contents of the view. The contents of the view is maintained at the root and consists of a list of participants and the objects their objectplaces currently con-tain.The spanning tree.To build and maintain the spanning tree, the root and all participants regularly broadcast distance messages. This allows participants to determine what their distance is from the root(d current),given the view’s distance metric.The root starts the tree-building process by broadcasting a distance message with the id of the new view,its own id and a distance of zero(line2). Nodes that receive a distance message check whether they are par-ticipants in the view.To this end,each participant maintains a list of its neighbors-nodes from which it has recently received a dis-tance message.Upon receipt of a distance message,the participant records the time the distance message was received from that neigh-bor(function updateT ime,l.16),and the distance that neighbor broadcasted(function updateDistance,l.17).The participant sets the alive variable to indicate it should check whether it is in a view, and starts a timer(if the participant already was in the view,these have no effect).After every broadcast period,given by t br,a participant recalcu-lates its distance from the root based on its list of neighbors.First, neighbors for which the timestamp of the distance message that was last received is older than a given timeout,are removed(us-ing removeOutdated,l.6).This timeout is given as a neighbor freshness factor f n that is multiplied with t br to determine the ac-tual timeout.The participant then determines the neighbor that is closest to the root using findP arent(l.7).Based on its parent’s distance,it calculates its own distance from the root d current us-ing the distance metric(l.8).If it is within the bound,it broadcasts a distance message itself(l.10),and repeats the process every t br time to account for changes in the tree.Otherwise,it goes to sleep, waiting for new distance messages to come in that might change the situation(l.14-15).The end result of this protocol is that each node regularly checks whether or not is in the view,and knows a parent in the tree which is the closest to the root of all its neighbors. The contents of the view.Each node that is in the view,deter-mines the objects it contributes to the view by executing a watch operation on its local objectplace.The resulting events of this watch are transported to the root using content messages.The events variable is the set of buffered events at the participant that have not been sent to the root yet(we are stretching notation in line 11,since these events are actually sent to callback cb).A node that receives such a content message from one of its children forwards it to its parent,so that it reaches the root(l.21).The root main-tains a list of participants of the view.For each content message it receives,it updates the objects that participant contributes to the view(using updateV iew,l.4).It also records the reception times-tamp of each content message(l.3),and removes those participants it hasn’t heard from for f p.t br time,where f p is the freshness of the participants(l.1).This means that participants must periodi-cally send a content message to the root,even when there are no events to be returned(events={})to ensure that the root does not consider them out of the view(l.12).This protocol tolerates mobility of any node and disappearanceRoot Participant Distance msg Content msg id view id view id view id view participants=neighbors=id sender id sender {(id participant,timestamp,{object})}{(id neighbor,timestamp,distance)}distance{event} distance metric,bound id parent,d currentobject template distance metric,boundobject templateTable1:Contents of data structures and communication messages.of participants.New nodes are discovered by the periodic broad-casting of the distance messages.Nodes that should be removed from view are detected because they discover for themselves that they don’t have any more neighbors,or their distance has gone out of bounds.Changes in the spanning tree are similarly detected through exchange of distance messages.Using the spanning tree to deliver events.When sending con-tent messages,the spanning tree is actually used as a multi-hop routing tree to the root.Although the shortest path from partici-pant to root may not always be known,at least some path exists (possibly temporarily containing cycles)and events are delivered as long as every node on the path forwards the content message to its parent.However,in the case where a node that received an event goes down before forwarding the event,the event is lost.To compensate for this loss,one can choose to use a reliable link protocol from node to root,such as the alternating1-bit protocol.Each event re-ceived by the root would then have to be acknowledged before the node can send another event.Although this makes the protocol re-liable,it also induces additional overhead.One possible solution is to use unreliable best-effort event delivery,which may be tolerable for some applications where the view may be slightly incorrect or out of date.Regularly,the view may be“flushed”and current state from all nodes is sent again.Propagation of other parameters.The parameters of the view, such as the distance metric,also need to be sent from the root to the participants.This was not discussed,but is done in a straight-forward way:whenever a node receives a distance message with an id view it does not know,it requests the relevant view parame-ters from the sender of the distance message.When the node deter-mines it is not in the view,it may delete this information-or decide to keep it for a while longer because it might become a participant in the view later.We do not elaborate further.4.EV ALUATIONThe following parameters influence the correctness and the per-formance of the view:(1)the broadcast period t br,(2)the freshness for neighbors f n,and(3)the freshness for participants f p.Instead of letting the application designer choose these experimentally,we mathematically derive bounds on these parameters,supporting the designer in making the right trade-offs.The view protocol is influenced by uncontrollable factors con-cerning the dynamics of MANETs.In order to keep the presenta-tion clear,we focus on the dynamics of the network only-in other words we assume for the rest of this section that the contents of the objectplaces stays the same.We focus on this problem because this is where any problems and bad assumptions will be revealed. Specifically,we take into account the number of nodes on a given area and the speed of these nodes.The speed influences how busy the protocol will be updating changes,and the concentration deter-mines connectivity,or the number of nodes in the view.We study how accurately the protocol can represent the perfect view,which is obtained by“stopping time”and comparing the view the protocol built at that time with how the view should look,given the current position and connectivity of the nodes.There are two kinds of errors:false exclusions,objects that are not in the view but should be;and false inclusions,objects that should not be in the view but are.4.1False exclusionsAfirst way how false exclusions occur is when a node enters the view,while the view didn’t notice the new arrival yet.The critical parameter to minimize this kind of false exclusion is the broadcast period.When this period is short enough,a new node entering the view receives a distance message from a neighbor early,and the view updates fast.Suppose nodes have communication range r, and relative speed v r,and we want to detect a node when it has traveled at most distance l into communication range of any par-ticipant.The worst case scenario occurs when an undetected node moves straight at another in the view.In this case,the maximum broadcast period to ensure that a node is detected is:t br≤r−lv r, with no transmission delay and no message loss.Supposing a message can get lost with probability p loss,then the minimum broadcast period to ensure that a node is detected at a distance l with minimum probability p detect is:t br≤r−ln.v r,with n the number of resends until a probability of receiving a message p detect is reached.From the inequality p detect≥1−p n loss,it follows that n≥log(1−p detect)loss.To incorporate message delays,these bounds should be tighter: one should subtract the message delay from a node to its neighbor and subtract the delay to send the contents from the new participant to the root.The second way a false exclusion occurs is when the root re-moves a participant while it should not,because a content message did not reach it in time.We write the time it takes to send a message i as t d,i(from the start of sending to the end of receiving),the time of reception of message i as t rec,i and the freshness of a participant as f p.For each two consecutive content messages1and2it should be true at the root that t rec,2≤t rec,1+f p.t br,otherwise a par-ticipant is removed in error.After some calculation,this becomes: t d,2−t d,1≤(f p−1).t br.This inequality gives a lower bound for both the freshness and the broadcast period.The inequality shows that the bound is dependent on the difference between two delays only.This means that if the delay increases fairly slowly,the proto-col adapts to this increase.Only when the delay suddenly increases with a value of(f p−1).t br does a false exclusion result.In other words,the broadcast period and the freshness determine the robust-ness of the protocol to message delays and congestion.The upper and lower bound described above show the tradeoff between accuracy and performance.The smaller the broadcast pe-riod,the more accurate and responsive the view becomes.How-ever,sending more messages affects the performance,and causes congestion.Choosing a small broadcast period and freshness also causes errors in the view by decreasing the protocol’s tolerance for。