Spelling suggestions: "subject:"objectoriented programming."" "subject:"object_oriented programming.""
271 |
Dynamic software updates : a VM-centric approachSubramanian, Suriya 26 January 2011 (has links)
Because software systems are imperfect, developers are forced to fix bugs
and add new features. The common way of applying changes to a running
system is to stop the application or machine and restart with the new
version. Stopping and restarting causes a disruption in service that is at
best inconvenient and at worst causes revenue loss and compromises safety.
Dynamic software updating (DSU) addresses these problems by updating
programs while they execute. Prior DSU systems for managed languages like
Java and C# lack necessary functionality: they are inefficient and do not
support updates that occur commonly in practice.
This dissertation presents the design and implementation of Jvolve, a DSU
system for Java. Jvolve's combination of flexibility, safety, and
efficiency is a significant advance over prior approaches. Our key
contribution is the extension and integration of existing Virtual Machine
services with safe, flexible, and efficient dynamic updating
functionality. Our approach is flexible enough to support a large class of
updates, guarantees type-safety, and imposes no space or time overheads on
steady-state execution.
Jvolve supports many common updates. Users can add, delete, and change
existing classes. Changes may add or remove fields and methods, replace
existing ones, and change type signatures. Changes may occur at any level
of the class hierarchy. To initialize new fields and update existing ones,
Jvolve applies class and object transformer functions, the former for
static fields and the latter for object instance fields. These features
cover many updates seen in practice. Jvolve supports 20 of 22
updates to three open-source programs---Jetty web server, JavaEmailServer,
and CrossFTP server---based on actual releases occurring over a one to two
year period. This support is substantially more flexible than prior
systems.
Jvolve is safe. It relies on bytecode verification to statically type-check
updated classes. To avoid dynamic type errors due to the timing of an
update, Jvolve stops the executing threads at a DSU safe point and then
applies the update. DSU safe points are a subset of VM safe points, where
it is safe to perform garbage collection and thread scheduling. DSU safe
points further restrict the methods that may be on each thread's stack,
depending on the update. Restricted methods include updated methods for
code consistency and safety, and user-specified methods for semantic
safety. Jvolve installs return barriers and uses on-stack replacement to
speed up reaching a safe point when necessary. While Jvolve does not
guarantee that it will reach a DSU safe point, in our multithreaded
benchmarks it almost always does.
Jvolve includes a tool that automatically generates default object
transformers which initialize new and changed fields to default values and
retain values of unchanged fields in heap objects. If needed, programmers
may customize the default transformers. Jvolve is the first dynamic
updating system to extend the garbage collector to identify and transform
all object instances of updated types. This dissertation introduces the
concept of object-specific state transformers to repair application heap
state for certain classes of bugs that corrupt part of the heap, and a
novel methodology that employes dynamic analysis to automatically generate
these transformers. Jvolve's eager object transformation design and
implementation supports the widest class of updates to date.
Finally, Jvolve is efficient. It imposes no overhead during steady-state
execution. During an update, it imposes overheads to classloading and
garbage collection. After an update, the adaptive compilation system will
incrementally optimize the updated code in its usual fashion. Jvolve is the
first full-featured dynamic updating system that imposes no steady-state
overhead.
In summary, Jvolve is the most-featured, most flexible, safest, and
best-performing dynamic updating system for Java and marks a significant
step towards practical support for dynamic updates in managed language
virtual machines. / text
|
272 |
Reducing remodularization complexity through modular-objective decouplingChern, Rick 11 1900 (has links)
This dissertation defines "modular-objective coupling", and shows that programming language designs which imply reduced modular-objective coupling reduce complexity of remodularizations--behaviour-preserving restructurings for which the only intended goals are to change program source code structure.
We explicitly distinguish between two points of view on program structure: modular structure--the structure of a program as a set of static text documents, and objective structure--the structure of a program as a dynamic computational model during execution. We define modular-objective coupling as the degree to which changes in modular structure imply changes to objective structure, for a given programming language.
We use the term remodularization to refer to any behaviour-preserving source code restructuring, for which the only intended goal is to change modular structure. We argue that programming languages with strong modular-objective coupling introduce accidental complexity into remodularizations, by requiring complex objective structure changes to achieve intended modular structure changes. Our claim is that a programming language design which implies reduced modular-objective coupling reduces remodularization complexity in the language.
To validate this claim, we first present SubjectJ, a subject-oriented programming system that extends Java. The design of Java implies strong modular-objective coupling, while SubjectJ is designed for reduced modular-objective coupling. We then perform a series of remodularization case studies comparing Java and SubjectJ. Our results suggest that remodularizations are less complex in SubjectJ.
|
273 |
Investigation, Improvement and Development of Aspect-Oriented Design Patterns / Aspektinio projektavimo šablonų tyrimas, tobulinimas ir kūrimasVaira, Žilvinas 26 April 2012 (has links)
Software systems are permanently changed in order to meet new requirements and to adapt them to permanently changing technology. Design modularity decouples design concerns that probably can be changed and in this way facilitates further system changes. Unfortunately, some design concerns, called crosscutting concerns, cannot be modularized using traditional modularization methods and techniques. Modularization of crosscutting concerns is the research subject of the new emerging software engineering paradigm, aspect-oriented analysis and design. However, this paradigm is still not enough mature. It is still unknown, which design patterns developed in the object-oriented paradigm can be adapted for aspect-oriented paradigm and how to transform them from one paradigm to another in a systematic way. Despite the fact that some attempts have been done to solve this problem, the proposed solutions only eliminate crosscutting concerns in object-oriented design patterns, but do not generate pure aspect-oriented patterns. The thesis defines the class of object-oriented design patterns which can be transformed into pure aspect-oriented ones, proposes a systematic procedure for such transformation and investigates properties of resulting patterns from the viewpoint of their applicability in the design of aspect-oriented domain frameworks. This is the main contribution of the research work. The case study methodology has been used for the experimental research of the properties of... [to full text] / Programų sistemos yra dažnai keičiamos, siekiant jas pritaikyti prie pasikeitusių reikalavimų ir dėl nuolat kintančių technologijų. Modulinė sistemos architektūra įgalina nepriklausomus dalykinius turinius realizuoti nepriklausomais ar nedaug vienas nuo kito priklausomais moduliais, kuriuos galima keisti nepriklausomai vienas nuo kito. Tačiau esamomis priemonėmis galima atskirti ne visus turinius. Kai kurie dalykiniai turiniai yra susipynę tarpusavyje ir jų negalima realizuoti savarankiškais moduliais. Šiai problemai spręsti buvo pasiūlyta nauja programų sistemų inžinerijos paradigma – aspektinė paradigma. Tačiau sistemų projektavimo technologija joje kol kas dar nėra pakankamai brandi. Vis dar nėra žinoma, kuriuos objektinio projektavimo šablonus galima panaudoti aspektinėje paradigmoje ir kaip juos transformuoti, keliant iš vienos paradigmos į kitą. Nors keliuose darbuose yra parodoma, kaip objektinių šablonų realizacijas perrašyti aspektinėmis programavimo kalbomis, nė viename iš jų šablonų transformavimo klausimai nebuvo nagrinėti sistemiškai. Šioje disertacijoje nagrinėjami grynieji aspektinio projektavimo šablonai, kurie buvo transformuoti iš objektinių projektavimo šablonų, apibrėžiama sistemiška tokio transformavimo procedūra ir analizuojamas tokių šablonų taikymas aspektiniams dalykiniams karkasams projektuoti. Atskiro atvejo analizės tyrimo metodas disertacijoje yra naudojamas, siekiant išsiaiškinti, kokį poveikį grynieji aspektiniai šablonai padaro aspektinių... [toliau žr. visą tekstą]
|
274 |
Aspektinio projektavimo šablonų tyrimas, tobulinimas ir kūrimas / Investigation, Improvement and Development of Aspect-Oriented Design PatternsVaira, Žilvinas 26 April 2012 (has links)
Programų sistemos yra dažnai keičiamos, siekiant jas pritaikyti prie pasikeitusių reikalavimų ir dėl nuolat kintančių technologijų. Modulinė sistemos architektūra įgalina nepriklausomus dalykinius turinius realizuoti nepriklausomais ar nedaug vienas nuo kito priklausomais moduliais, kuriuos galima keisti nepriklausomai vienas nuo kito. Tačiau esamomis priemonėmis galima atskirti ne visus turinius. Kai kurie dalykiniai turiniai yra susipynę tarpusavyje ir jų negalima realizuoti savarankiškais moduliais. Šiai problemai spręsti buvo pasiūlyta nauja programų sistemų inžinerijos paradigma – aspektinė paradigma. Tačiau sistemų projektavimo technologija joje kol kas dar nėra pakankamai brandi. Vis dar nėra žinoma, kuriuos objektinio projektavimo šablonus galima panaudoti aspektinėje paradigmoje ir kaip juos transformuoti, keliant iš vienos paradigmos į kitą. Nors keliuose darbuose yra parodoma, kaip objektinių šablonų realizacijas perrašyti aspektinėmis programavimo kalbomis, nė viename iš jų šablonų transformavimo klausimai nebuvo nagrinėti sistemiškai. Šioje disertacijoje nagrinėjami grynieji aspektinio projektavimo šablonai, kurie buvo transformuoti iš objektinių projektavimo šablonų, apibrėžiama sistemiška tokio transformavimo procedūra ir analizuojamas tokių šablonų taikymas aspektiniams dalykiniams karkasams projektuoti. Atskiro atvejo analizės tyrimo metodas disertacijoje yra naudojamas, siekiant išsiaiškinti, kokį poveikį grynieji aspektiniai šablonai padaro aspektinių... [toliau žr. visą tekstą] / Software systems are permanently changed in order to meet new requirements and to adapt them to permanently changing technology. Design modularity decouples design concerns that probably can be changed and in this way facilitates further system changes. Unfortunately, some design concerns, called crosscutting concerns, cannot be modularized using traditional modularization methods and techniques. Modularization of crosscutting concerns is the research subject of the new emerging software engineering paradigm, aspect-oriented analysis and design. However, this paradigm is still not enough mature. It is still unknown, which design patterns developed in the object-oriented paradigm can be adapted for aspect-oriented paradigm and how to transform them from one paradigm to another in a systematic way. Despite the fact that some attempts have been done to solve this problem, the proposed solutions only eliminate crosscutting concerns in object-oriented design patterns, but do not generate pure aspect-oriented patterns. The thesis defines the class of object-oriented design patterns which can be transformed into pure aspect-oriented ones, proposes a systematic procedure for such transformation and investigates properties of resulting patterns from the viewpoint of their applicability in the design of aspect-oriented domain frameworks. This is the main contribution of the research work. The case study methodology has been used for the experimental research of the properties of... [to full text]
|
275 |
Enfoque para pruebas de unidad basado en la generación aleatoria de objetosBarrientos, Pablo Andrés 28 April 2014 (has links)
El testing del software es una tarea crucial y a la vez muy desafiante dentro del proceso de desarrollo de software. El testing permite encontrar errores y problemas del software contra la especificación del mismo y cumple un rol fundamental en el aseguramiento de la calidad del producto.
Entre los tipos de pruebas que se pueden realizar al software están las pruebas de unidad, carga, integración y funcionales. Cada una de ellas tiene distintos objetivos y son realizadas en diferentes etapas del desarrollo del software. En el primer tipo mencionado, se desarrollan pruebas a componentes individuales de un sistema de software. Los desarrolladores especifican y codifican pruebas para cubrir todos o al menos una parte significativa de los posibles estados/configuraciones del artefacto o unidad de software, para simular el entorno del componente y descubrir la presencia de errores o “bugs”. Dado que escribir todas esas pruebas de forma manual es costoso, las pruebas de unidad son generalmente realizadas de manera ineficiente o
simplemente dejadas de lado. El panorama es aún peor, más allá del esfuerzo, porque el testing no puede ser usado para probar la usencia de errores en el software sino tan solo la presencia. Por eso es necesario atacar el problema desde diferentes enfoques, cada uno teniendo sus fortalezas y ventajas.
Actualmente existen muchas técnicas para hacer testing de software, y la mayoría de ellos se basan en la automatización de pasos o caminos de ejecución, con valores fijos o componentes predefinidos (hard-coded) o estáticos, y condiciones específicas. En este trabajo de maestría, se presenta un enfoque para pruebas de unidad en la programación orientada a objetos, basado en la generación de objetos de manera aleatoria. El fundamento básico de este enfoque propuesto es el testing aleatorio. También se presenta una herramienta de testing de unidad que usa el enfoque dicho, y que fue escrita en un lenguaje orientado a objetos de amplia difusión.
El testing aleatorio (RT o random testing) como técnica no es nueva. Tampoco lo es la generación de valores aleatorios para pruebas. En el paradigma funcional, existe una herramienta muy conocida para probar especificaciones sobre funciones llamada QuickCheck. Ésta herramienta (escrita en Haskell) y sus ideas subyacentes son usadas como fundamento para la herramienta creada en este trabajo. La herramienta desarrollada en el presente trabajo cubre además características que existen en el paradigma orientado
a objetos de manera inherente, tales como el estado de los objetos (en particular los objetos singleton con estado), clases abstractas e interfaces, que no existen en la programación funcional pura.
La constribución de este trabajo de maestría es la presentación de una forma alternativa de realizar tests de unidad en la programación orientada a objetos (POO), basada en un trabajo anterior para el paradigma funcional. También se presenta una herramienta llamada YAQC4J que plasma esas ideas en un lenguaje orientado a objetos de amplia difusión. Finalmente se incluyen ejemplos que ilustran el uso de la herramienta, y se presenta una comparación con herramientas existentes que han intentado implementar el enfoque de testing. Este trabajo está dirigido a los desarrolladores de software interesados en conocer soluciones alternativas para el testing de unidad, y al mismo tiempo una forma complementaria a las ya existentes para pruebas de unidad.
|
276 |
Reducing remodularization complexity through modular-objective decouplingChern, Rick 11 1900 (has links)
This dissertation defines "modular-objective coupling", and shows that programming language designs which imply reduced modular-objective coupling reduce complexity of remodularizations--behaviour-preserving restructurings for which the only intended goals are to change program source code structure.
We explicitly distinguish between two points of view on program structure: modular structure--the structure of a program as a set of static text documents, and objective structure--the structure of a program as a dynamic computational model during execution. We define modular-objective coupling as the degree to which changes in modular structure imply changes to objective structure, for a given programming language.
We use the term remodularization to refer to any behaviour-preserving source code restructuring, for which the only intended goal is to change modular structure. We argue that programming languages with strong modular-objective coupling introduce accidental complexity into remodularizations, by requiring complex objective structure changes to achieve intended modular structure changes. Our claim is that a programming language design which implies reduced modular-objective coupling reduces remodularization complexity in the language.
To validate this claim, we first present SubjectJ, a subject-oriented programming system that extends Java. The design of Java implies strong modular-objective coupling, while SubjectJ is designed for reduced modular-objective coupling. We then perform a series of remodularization case studies comparing Java and SubjectJ. Our results suggest that remodularizations are less complex in SubjectJ.
|
277 |
The concept of self-defending objects and the development of security aware applicationsHolford, John William January 2006 (has links)
The self-defending object (SDO) concept is an extension to the object-oriented programming paradigm, whereby those objects that encapsulate the protected resources of a security aware application (SAA), are made aware of, and responsible for, the defence of those resources. That defence takes two forms, the enforcement of mandatory access control on protected resources and the generation of the corresponding portion of the SAA's audit trail. The SDO concept acts as the philosophy that guides the application level mandatory access control within SAAs which ensures that the provided access control is both complete and non bypassable. Although SDOs accept responsibility for controlling access to the protected data and functionality that they encapsulate, an SDO delegates the responsibility for making authorisation decisions to an associated authorisation object. Thus, SDOs fulfill their access control obligations by initiating the authorisation check and then enforcing the decision made on their behalf. A simple, yet effective mechanism for enforcing that access control at the object level involves controlling the ability to invoke those SDO methods that access protected resources. In the absence of previous research on this approach to the enforcement of application level access control, the primary aim of this research was to demonstrate that the SDO concept is a viable paradigm for developing SAAs. That aim was achieved in two stages. The first stage targeted the provision of a 'proof of concept', that demonstrated that the SDO concept could be applied to the development of non-distributed SAAs. The second stage demonstrated its applicability to the development of distributed SAAs. In the second stage, two versions of a distributed prototype were developed, one based on a traditional (proprietary) distributed computing model, (Java RMI), and the second using the currently popular Web services model, to demonstrate the general applicability of the SDO concept. Having already demonstrated that the SDO concept could be applied to SAAs executing on a single machine, the major focus of that research was to devise a mechanism by which SDOs could be transferred between machines. The research then concentrated on determining what impacts the adoption of the SDO concept would have on SAA development. Experimentation carried out using the distributed prototypes demonstrated that (1) the adoption of the SDO does not restrict the use of inheritance hierarchies that include SDOs, (2) the restriction of the lifetime of SDOs can be supported, (3) usage rights enforcement can be employed, and (4) the use of cryptographic techniques to provide additional security guarantees is not affected. A key feature of the SDO concept, is that no major changes need to be made to current development tools or methodologies, so its adoption is not hampered by significant financial or training impediments. This research demonstrated that the SDO concept is practical and constitutes a valuable extension to the object oriented paradigm that will help address the current lack of security in information systems. The SDO approach warrants additional research and adoption.
|
278 |
Design and implementation of a multi-stage, object-oriented programming languageNeverov, Gregory Michael January 2007 (has links)
Multi-stage programming is a valuable technique for improving the performance of computer programs through run-time optimization. Current implementations of multi-stage programming do not support run-time type introspection, which is a significant feature of modern object-oriented platforms such as Java and C#. This is unfortunate because many programs that use type introspection in these languages could be improved with multi-staging programming. The aim of this research is to investigate the interaction between multi-stage programming and object-oriented type introspection. This is done by the invention of a new programming language that is a multi-stage extension to C#. The language is capable of expressing traditional multi-stage programs as well as a new style of multi-stage programs that incorporate type introspection, most notably polytypic algorithms such as object serialization. A compiler for the language is implemented and freely available. The language is significant because it is the first object-oriented, multi-stage language; the first attempt to combine type introspection with multi-stage programming; and the first exploration of polytypic programming in a multi-stage context.
|
279 |
A user interface toolkit extension for cooperative problem solving /Huntington, Regina. Unknown Date (has links)
Thesis (MAppSc in Computer and Information Science)--University of South Australia, 1995
|
280 |
A new approach to the train algorithm for distributed garbage collection.Lowry, Matthew C. January 2004 (has links)
This thesis describes a new approach to achieving high quality distributed garbage collection using the Train Algorithm. This algorithm has been investigated for its ability to provide high quality collection in a variety of contexts, including persistent object systems and distributed object systems. Prior literature on the distributed Train Algorithm suggests that safe, complete, asynchronous, and scalable collection can be attained, however an approach that achieves this combination of behaviour has yet to emerge. The mechanisms and policies described in this thesis are unique in their ability to exploit the distributed Train Algorithm in a manner that displays all four desirable qualities. Further the mechanisms allow any number of mutator and collector threads to operate concurrently within a site; this is also a unique property amongst train-based mechanisms (distributed or otherwise). Confidence in the quality of the approach promoted in this thesis is obtained via a top-down approach. Firstly a concise behavioural model is introduced to capture fundamental requirements for safe and complete behaviour from train-based collection mechanisms. The model abstracts over the techniques previously introduced under the banner of the Train Algorithm. It serves as a self- contained template for correct train-based collection that is independent of a target object system for deployment of the algorithm. Secondly a means to instantiate the model in a distributed object system is described. The instantiation includes well-established techniques from prior literature, and via the model these are correctly refined and reorganised with new techniques to achieve asynchrony, scalability, and support for concurrency. The result is a flexible approach that allows a distributed system to exhibit a variety of local collection mechanisms and policies, while ensuring their interaction is safe, complete, asynchronous, and scalable regardless of the local choices made by each site. Additional confidence in the properties of the new approach is obtained from implementation within a distributed object system simulation. The implementation provides some insight into the practical issues that arise through the combination of distribution, concurrent execution within sites, and train-based collection. Executions of the simulation system are used to verify that safe collection is observed at all times, and obtain evidence that asynchrony, scalability, and concurrency can be observed in practice. / Thesis (Ph.D.)--School of Computer Science, 2004.
|
Page generated in 0.137 seconds