Aspect-Oriented Programming
|
|
|
- Duane Bertram Harrington
- 9 years ago
- Views:
Transcription
1 Aspect-Oriented Programming An Introduction to Aspect-Oriented Programming and AspectJ Niklas Påhlsson Department of Technology University of Kalmar S Kalmar SWEDEN Topic Report for Software Engineering
2 ABSTRACT Separation of concerns is an important software engineering principle. It refers to the ability to identify, encapsulate, and manipulate those parts of software that are relevant to a particular concern (concept, goal, purpose, etc.). The leading programming paradigm used today is object oriented programming (OOP). OOP is a technology that is well known and is reflected in the entire spectrum of current software methodologies and development tools. However, OOP has its limitations, some design decisions can not be illustrated with the object oriented model. This report is an introduction to a programming paradigm called Aspect-Oriented Programming, a programming technique that makes it possible to express those programs that OOP fail to support. This report also includes an introduction to AspectJ, an AOP implementation in Java. The reader of this report is expected to have at least basic understandings in object oriented programming. KEYWORDS Aspect-Oriented Programming, Separation of Concerns, AspectJ 2
3 CONTENTS 1. Introduction Background Separation of Concerns Cross-cutting concerns Implications A simple cross-cutting example Current solutions AOP Fundamentals What is Aspect-Oriented Programming? Aspect Weaver Development stages Aspectual decomposition Concern implementation Aspectual recomposition AOP Language Implementations AspectJ AOP implementation in AspectJ Aspects Joinpoints Pointcuts Advices HelloWorld, AOP version Discussion Will AOP replace OOP or other programming paradigms? AOP benefits AOP disadvantages Conclusions References
4 1. INTRODUCTION The leading programming paradigm used today is object oriented programming (OOP). OOP is a technology that is well known and is reflected in the entire spectrum of current software methodologies and development tools. However, OOP has its limitations, some design decisions can t be illustrated with the object oriented model. Xerox PARC (Palo Alto Research Center) has worked on developing programming techniques that makes it possible to express those programs that OOP fail to support. This programming technique is called Aspect-Oriented Programming (AOP). The term Aspect-Oriented Programming includes Multidimensional Separation of Concerns, Subject-Oriented Programming, Adaptive Programming and Composition Filters. In this report the term Aspect-Oriented Programming is used to describe the space of programmatic mechanisms for expressing crosscutting concerns since this is more commonly used. The reader of this report is expected to have at least basic understandings in object oriented programming. 2. BACKGROUND SEPARATION OF CONCERNS Separation of concerns is an important software engineering principle. It refers to the ability to identify, encapsulate, and manipulate those parts of software that are relevant to a particular concern (concept, goal, purpose, etc.). Concerns can range from high-level notations like security and quality of services to low-level notations like buffering, caching and logging. They can also be functional, such as business logics or non-functional like synchronisation. A typical system consists of several concerns. In the simplest form there are the core concerns, i.e. the natural components of the software. Except for these core concerns, there are system level concerns, like security, logging, authentication, persistence and so on; concerns that tend to affect several other concerns. For instance, if a logging feature is to be implemented in an application, it is likely that all the underlying modules will have code for logging, making the underlying modules less specialized and makes it very hard to predict what effects changes in the code for logging will have. Even though the object oriented model offers some ability for separation of concerns, it still has difficulty localizing concerns which do not fit naturally into a single program module, or even several closely related program modules Cross-cutting concerns The problems discussed above, are called cross-cutting concerns, as they cross-cut several other modules in the system. Crosscutting concerns are behaviours that span multiple, often unrelated, implementation modules. In additional, crosscutting concerns cannot be neatly separately from each other. Examples of crosscutting concerns are: Security (authorization and auditing) Logging and debugging Synchronization Persistence 4
5 Why are the cross-cutting concerns a problem then? When modules in a system may interact simultaneously with several requirements, which mean that concerns are tightly intermixed, code tangling occurs. Since cross-cutting concerns spread over many modules, related implementations also spread over those modules. The concerns are poorly localized, and this is called code scattering Implications Code tangling combined with code scattering affects software development in several ways, for example: Harder to reuse code Since a module implements several concerns, it will be difficult to reuse the code. Lower productivity Redundant implementation of multiple concerns shifts the developer s focus from the main concern to the peripheral concerns. Lower code quality The two symptoms produces code with hidden problems. Limited evolution of the system A limited view and constrained resources often produces designs that address only current concerns. Addressing future requirements often requires reworking the implementation. Since the implementation isn t modularized, that means touching many modules. Modifying each subsystem for such changes can lead to inconsistency. It also requires considerable testing effort to ensure that such implementation changes have not caused bugs A simple cross-cutting example To illustrate the cross-cutting concern, here is a small example of this. The simple UML diagram above shows a very simple figure editor. An abstract class, FigureElement, has two concrete classes, Point and Line, so far so good. Now, imagine that the 5
6 screen manager should be notified whenever a FigureElement moves. This requires every method that moves a FigureElement to do the notification. The red box in the figure is drawn around every method that must implement this concern, just as the Point and Line boxes are drawn around every method that implements those concerns. Notice that the box for DisplayUpdating fits neither inside nor around the other boxes in the figure, instead it cuts across the other boxes. This is what is called a cross-cutting concern Current solutions Since the cross-cutting concerns are not new phenomenas, a few techniques have emerged to modularize their implementations. Today s methods of a general type of separation of concerns, includes among others, design patterns, application frameworks, application servers, mix-in classes and domain specific solutions. The main disadvantage of these solutions is that the core concern must be transformed to fit the solution selected for the problem. This report will not go any further into these methods. Instead, it will focus on a relatively new programming paradigm called Aspect-Oriented Programming. 3. AOP FUNDAMENTALS 3.1. What is Aspect-Oriented Programming? Aspect-Oriented Programming (AOP) is a new programming paradigm developed at Xerox PARC. AOP strives to help the developer to separate concerns to overcome the problems with cross-cutting concerns described earlier, and it provides language mechanisms that explicitly capture crosscutting structure. This makes it possible to program crosscutting concerns in a modular way, and get the usual benefits of improved modularity: simpler code that is easier to develop and maintain, and that has greater potential for reuse. This is done by improving code modularization using aspects. What OOP has done for object encapsulation and inheritance, AOP does for crosscutting concerns. An aspect is, by definition, modular units that cross-cut the structure of other units. An aspect is similar to a class by having a type, it can extend classes and other aspects, it can be abstract or concrete and have fields, methods, and types as members. It encapsulates behaviours that affect multiple classes into reusable modules. AOP languages use five main elements to modularize crosscutting concerns: Joinpoints A means of identifying joinpoints. A means of specifying behaviour at joinpoints. Encapsulated units combining joinpoints specifications and behaviour enhancements. A method of attachment of units to program. The joinpoints are well-defined points in the execution of a program like method calls, field access, conditional checks, loop beginnings, assignments and object constructions. More about how the AOP language modularizes crosscutting concerns in section 4 where an implementation of AOP in Java, AspectJ, is introduced. An important notice is that AOP does not make crosscutting concerns to anything else than a crosscutting concern. AOP will turn a tangled and scattered implementation of a crosscutting concern into a modularized implementation of a crosscutting concern. When AOP is applied, the concern will still be crosscutting, but the structure will be clearer. 6
7 3.2. Aspect Weaver Compiling a program developed using AOP is a little bit different than usual compiling. AOP lets codes and aspects to be woven together by an aspect weaver before the program is compiled into an executable. Aspect weavers work by generating a joinpoint representation of the component program, and then executing (or compiling) the aspect programs with respect to it Development stages Aspect-Oriented Programming involves three different development steps. To explain each step a simple credit card processing module example is used Aspectual decomposition In the first step, the requirements are decomposed to identify crosscutting and common concerns. Here, the core concerns are separated from the crosscutting system level concerns. In our simple credit card processing module, we could identify these three concerns: core credit card processing, logging and authentication Concern implementation In the second step of the development, each concern is implemented separately. In the credit card processing module, we would implement the core credit card processing unit, logging unit and authentication unit separately. 7
8 Aspectual recomposition In the last step, an aspect integrator specifies recomposition rules by creating modularization units (aspects). The recomposition process is also called weaving or integrating. Back to the credit card processing module, we would specify each operation s start and completion to be logged and that each operation must be authenticated before it proceeds with the business logic AOP Language Implementations One might wonder what tools are available that enables aspect-oriented software development. The most documented and used tool for AOP is AspectJ, an AOP implementation in Java. Later on, in this report, AspectJ will be introduced. There are many other implementations of AOP in other languages, in different shapes, for example, Squeak/Smalltalk, C, C++, C#, Perl, well, the most common languages are supported. All these implementations have something in common. They all are under development and/or only very early versions are available and this makes it hard to use AOP in serious projects. 4. ASPECTJ AspectJ is a free aspect-oriented extension to Java. With just a few new constructs, AspectJ provides support for modular implementation of crosscutting concerns. In AspectJ s dynamic joinpoint model, joinpoints are well-defined points in the execution of the program. Since AspectJ s language construction extends the Java language, so every Java program is also a valid AspectJ program AOP implementation in AspectJ The weaver in AspectJ is a compiler, and apart from the compiler, AspectJ also includes tools for debugging and documenting the code. The AspectJ compiler produces standard class files that follow Java bytecode specification. The bytecode can then be interpreted in any compliant Java Virtual Machine (JVM) Aspects In AspectJ, an aspect is declared by a keyword, aspect, and is defined in terms of joinpoints, pointcuts and advices Joinpoints The central concept in AOP, as in AspectJ, is the joinpoints. Joinpoints are well defined points in a program s execution. AspectJ limits the available joinpoints to: Constructor call Object and class initialization execution Method call Read/write access to a field Exception handler execution Joinpoints are predefined in AspectJ. When writing an aspect, you will need to specify what joinpoint you want to take action on when defining pointcuts. 8
9 Pointcuts Pointcuts, or pointcut designators, are program constructs to designate joinpoints and collect specific context at those points. The criteria can be explicit function names or function names specified by wildcards Advices Pointcuts are used in the definition of advice. An advice is code that runs upon meeting certain conditions. In AspectJ there are three different advices; before advice, after advice and around advice HelloWorld, AOP version HelloWorld may not be the best example to show the strength in AspectJ and AOP, but since it is a standard practise to start with that and any program that might show some of the benefits of AOP would take too much place in the report, here is a standard HelloWorld program. First, we have a simple class containing two methods for printing messages: The aspect in this example will add greeting and gratitude manners. Before the program prints a message, it should print Good day!, and after the message, it should print See you soon!. So, this is how the implementation looks: In MannersAspect, a pointcut called callsaymessage is defined. This captures all calls to public static methods with names that start with say and that have any type of parameters (or none). In our example, it would capture sayhello and sayhellotoperson. The pointcut has two advices, before and after reaching the callsaymessage printing Good day! and See you soon!. What about the around advice then? How does it work? The around advice is called instead of the code that the pointcut refers to. In an around advice, a proceed call can be made to call the real code. This can be used as a verifier, to determine if a method should be called or not. 9
10 If you want to learn more about AspectJ, I recommend the official homepage for AspectJ. Here you can download AspectJ. There is also support for some of the most common development environments for the Java platform, for example JBuilder, Emacs, Forte and Eclipse. You will also find lots of papers, examples and tutorials there. 5. DISCUSSION 5.1. Will AOP replace OOP or other programming paradigms? One question that arises early is the one above; will AOP replace the methods we know today? AOP is a very new programming paradigm, just outcome from the academic world. Sure, it can and probably will add new standard in programming, but it will not replace anything we use today. When OOP became the new standard in the programming world, procedural/functional programming did not disappear. They are a part of OOP, and so will OOP be in AOP, it will constitute the base of AOP, just as procedural is to OOP. AOP complements object-oriented programming by facilitating another type of modularity that pulls together the prevalent implementation of a crosscutting concern into a single unit. When programming in AOP you use procedures, function, objects and aspects, each when most suitable. AOP is not the final answer to separation of concerns, there will be new developments in this area in the future, but it is likely that AOP will be a part of these solutions, just as OOP is a part of AOP AOP benefits Since AOP strives to help the developer to separate concerns to overcome the problems with cross-cutting concerns, the benefits of AOP are the same benefits that come out of the ability to modularize implementations of crosscutting concerns. AOP helps overcoming the problems caused by code tangling and code scattering. As we saw earlier, code scattering and tangling leads to some implications, like lower productivity, hard to reuse code and evolving the system. AOP addresses each concern separately with minimal coupling, which resulting in a modularized implementation even in the presence of other crosscutting concerns. Such an implementation produces a system with less duplicated code. The modularized implementation also results in a system that is easier to understand and maintain. As the aspect modules can be unaware of other crosscutting concerns, it is also easy to add newer functionality by creating new aspects. The modularized implementation of crosscutting concern also makes code more encapsulated and this make code more reusable. In the discussions above, AOP is only used in development concerns, for example logging. The system s behaviour does not change when adding or removing these aspects. There is however some other concerns AOP can be used to solve. For instance, an aspect can verify that an objects state is correct in method calls, and that parameters to methods are within the range of acceptable values. When the system works, is tested and going to be released, the aspect can be removed without affecting the system AOP disadvantages As AOP is a new technology, it is not very well tested and documented. AOP is today only theory; nothing is tested in the real world with large scaled projects, so there are no guarantees that the theory works practical. 10
11 It is a limited amount of developing tools for AOP today. AspectJ is the leading AOP implementation, and there are others, but all in early versions. This makes it hard to estimate risks using AOP. 6. CONCLUSIONS Aspect-Oriented Programming introduces a new way of handling crosscutting concerns, a problem hard to solve in ordinary object-oriented programming. As this is becoming a bigger and bigger problem as system grows and become more and more complicated, it is not unlikely that AOP will get its breakthrough in the near future. The problems with AOP today are the lack of development tools and documentation/results of other projects. It is hard to predict what AOP will become in the future, but one thing is clear, AOP will be part of future programming paradigms. 11
12 7. REFERENCES AOP (2002) ( ) Aspect-Oriented Programming Enables Better Code Encapsulation and Reuse (2002) ( ) Aspect-Oriented Software Development (2002) ( ) AspectJ (2002) ( ) Background: Aspect-Oriented Programming (2000) ( ) Hofmeister C., Nord R., Soni D. (2000) Applied Software Architecture, Addison-Wesley, USA Hürsch W., Lopes C. (1995) Separation of Concerns, Technical report by the College of Computer Science, Northeastern University, USA I want my AOP! (2002) ( ) Java Technology (2002) ( ) Kiczales et al. (1997) Aspect-Oriented Programming, in European Conference on Object Oriented Programming (ECOOP), Finland Kiczales et al. (2001) An Overview of AspectJ, in European Conference on Object Oriented Programming (ECOOP), Budapest, Hungary Lamping (1999) The role of the base in aspect oriented programming, in European Conference on Object Oriented Programming (ECOOP), Lisbon, Portugal 12
Progress Report Aspect Oriented Programming meets Design Patterns. Academic Programme MSc in Advanced Computer Science. Guillermo Antonio Toro Bayona
Progress Report Aspect Oriented Programming meets Design Patterns Academic Programme MSc in Advanced Computer Science Guillermo Antonio Toro Bayona Supervisor Dr. John Sargeant The University of Manchester
Generating Aspect Code from UML Models
Generating Aspect Code from UML Models Iris Groher Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich, Germany [email protected] Stefan Schulze Siemens AG, CT SE 2 Otto-Hahn-Ring 6 81739 Munich,
Chapter 5 Aspect Oriented Programming
2I1AC3 : Génie logiciel et Patrons de conception Chapter 5 Aspect Oriented Programming J'ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé. Je ne
New Generation of Software Development
New Generation of Software Development Terry Hon University of British Columbia 201-2366 Main Mall Vancouver B.C. V6T 1Z4 [email protected] ABSTRACT In this paper, I present a picture of what software development
Keywords Aspect-Oriented Modeling, Rule-based graph transformations, Aspect, pointcuts, crosscutting concerns.
Volume 4, Issue 5, May 2014 ISSN: 2277 128X International Journal of Advanced Research in Computer Science and Software Engineering Research Paper Available online at: www.ijarcsse.com Functional and Non-Functional
Aspect-oriented software engineering
M21_SOMM5152_09_SE_C21.qxd 1/7/10 2:31 PM Page 565 21 Aspect-oriented software engineering Objectives The objective of this chapter is to introduce you to aspect-oriented software development, which is
Unification of AOP and FOP in Model Driven Development
Chapter 5 Unification of AOP and FOP in Model Driven Development I n this chapter, AOP and FOP have been explored to analyze the similar and different characteristics. The main objective is to justify
A COMPARISON OF AOP BASED MONITORING TOOLS
STUDIA UNIV. BABEŞ BOLYAI, INFORMATICA, Volume LVI, Number 3, 2011 A COMPARISON OF AOP BASED MONITORING TOOLS GRIGORETA S. COJOCAR AND DAN COJOCAR Abstract. The performance requirements of a software system
Integration of Application Business Logic and Business Rules with DSL and AOP
Integration of Application Business Logic and Business Rules with DSL and AOP Bogumiła Hnatkowska and Krzysztof Kasprzyk Wroclaw University of Technology, Wyb. Wyspianskiego 27 50-370 Wroclaw, Poland [email protected]
How To Combine Feature-Oriented And Aspect-Oriented Programming To Support Software Evolution
Combining Feature-Oriented and Aspect-Oriented Programming to Support Software Evolution Sven Apel, Thomas Leich, Marko Rosenmüller, and Gunter Saake Department of Computer Science Otto-von-Guericke-University
Composing Concerns with a Framework Approach
Composing Concerns with a Framework Approach Constantinos A. Constantinides 1,2 and Tzilla Elrad 2 1 Mathematical and Computer Sciences Department Loyola University Chicago [email protected] 2 Concurrent
Using an Aspect Oriented Layer in SOA for Enterprise Application Integration
19 Using an Aspect Oriented Layer in SOA for Enterprise Application Integration Chinthaka D. Induruwana School of Computer Science, University of Manchester, Kilburn Building, Oxford Road M13 9PL [email protected]
Encapsulating Crosscutting Concerns in System Software
Encapsulating Crosscutting Concerns in System Software Christa Schwanninger, Egon Wuchner, Michael Kircher Siemens AG Otto-Hahn-Ring 6 81739 Munich Germany {christa.schwanninger,egon.wuchner,michael.kircher}@siemens.com
Combining Feature-Oriented and Aspect-Oriented Programming to Support Software Evolution
Combining Feature-Oriented and Aspect-Oriented Programming to Support Software Evolution Sven Apel, Thomas Leich, Marko Rosenmüller, and Gunter Saake Department of Computer Science University of Magdeburg,
How to Model Aspect-Oriented Web Services
How to Model Aspect-Oriented Web Services Guadalupe Ortiz Juan Hernández [email protected] [email protected] Quercus Software Engineering Group University of Extremadura Computer Science Department Pedro
Combining Static and Dynamic Impact Analysis for Large-scale Enterprise Systems
Combining Static and Dynamic Impact Analysis for Large-scale Enterprise Systems The 15th International Conference on Product-Focused Software Process Improvement, Helsinki, Finland. Wen Chen, Alan Wassyng,
An Aspect-Oriented Product Line Framework to Support the Development of Software Product Lines of Web Applications
An Aspect-Oriented Product Line Framework to Support the Development of Software Product Lines of Web Applications Germán Harvey Alférez Salinas Department of Computer Information Systems, Mission College,
Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces
Software Engineering, Lecture 4 Decomposition into suitable parts Cross cutting concerns Design patterns I will also give an example scenario that you are supposed to analyse and make synthesis from The
The Nature and Importance of a Programming Paradigm
Multiple Software Development Paradigms and Multi-Paradigm Software Development Valentino Vranić [email protected] Abstract: While OOP (including OOA/D) is reaching the level of maturity of structured
Aspect-Oriented Web Development in PHP
Aspect-Oriented Web Development in PHP Jorge Esparteiro Garcia Faculdade de Engenharia da Universidade do Porto [email protected] Abstract. Aspect-Oriented Programming (AOP) provides another way of
The Concern-Oriented Software Architecture Analysis Method
The Concern-Oriented Software Architecture Analysis Method Author: E-mail: Student number: Supervisor: Graduation committee members: Frank Scholten [email protected] s0002550 Dr. ir. Bedir Tekinerdoǧan
The Service Revolution software engineering without programming languages
The Service Revolution software engineering without programming languages Gustavo Alonso Institute for Pervasive Computing Department of Computer Science Swiss Federal Institute of Technology (ETH Zurich)
Introducing a Graduate Course on. called Aspect-Oriented Software Development
Int. J. Engng Ed. Vol. 21, No. 2, pp. 361±368, 2005 0949-149X/91 $3.00+0.00 Printed in Great Britain. # 2005 TEMPUS Publications. Introducing a Graduate Course on Aspect-Oriented Software Development*
Chapter 13: Program Development and Programming Languages
15 th Edition Understanding Computers Today and Tomorrow Comprehensive Chapter 13: Program Development and Programming Languages Deborah Morley Charles S. Parker Copyright 2015 Cengage Learning Learning
Distributed Systems Development: Can we Enhance Evolution by using AspectJ?
Distributed Systems Development: Can we Enhance Evolution by using AspectJ? Cormac Driver Siobhán Clarke Distributed Systems Group, Computer Science Department, Trinity College Dublin, Ireland {Cormac.Driver,
Toward Configurable Access Control for. Healthcare Information Systems
Toward Configurable Access Control for Healthcare Information Systems Kung Chen a and Da-Wei Wang b a Department of Computer Science, National Chengchi University b Institute of Information Science, Academia
Aspects for Testing Aspects?
Aspects for Testing Aspects? Dehla Sokenou, Stephan Herrmann Technische Universität Berlin Software Engineering Group Sekr. FR 5-6, Franklinstr. 28/29, D-10587 Berlin [dsokenou stephan]@cs.tu-berlin.de
Aspect Oriented Programming. with. Spring
Aspect Oriented Programming with Spring Problem area How to modularize concerns that span multiple classes and layers? Examples of cross-cutting concerns: Transaction management Logging Profiling Security
XPoints: Extension Interfaces for Multilayered Applications
XPoints: Extension Interfaces for Multilayered Applications Mohamed Aly, Anis Charfi, Sebastian Erdweg, and Mira Mezini Applied Research, SAP AG [email protected] Software Technology Group, TU
Integration of Application Business Logic and Business Rules with DSL and AOP
e-informatica Software Engineering Journal, Volume 4, Issue, 200 Integration of Application Business Logic and Business Rules with DSL and AOP Bogumiła Hnatkowska, Krzysztof Kasprzyk Faculty of Computer
Chapter 13: Program Development and Programming Languages
Understanding Computers Today and Tomorrow 12 th Edition Chapter 13: Program Development and Programming Languages Learning Objectives Understand the differences between structured programming, object-oriented
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming Java has become enormously popular. Java s rapid rise and wide acceptance can be traced to its design
McGraw-Hill The McGraw-Hill Companies, Inc., 20 1. 01 0
1.1 McGraw-Hill The McGraw-Hill Companies, Inc., 2000 Objectives: To describe the evolution of programming languages from machine language to high-level languages. To understand how a program in a high-level
Implementing Application and Network Security using Aspectoriented
Application and Network Security using Aspectoriented Programming F.E. Tshivhase 1, H.S. Venter 2, J.H.P. Eloff 3 1 [email protected], 2 [email protected], 3 [email protected] Information and Computer
25.1 Translational Frameworks (MDA with transformations)
Literature TU Dresden Fakultät für Informatik Institut für Software- und Multimediatechnik 25. From Code Frameworks to Model-Driven Architecture (MDA) and Component-Based Software Development (CBSD) Prof.
Designing an Enterprise Application Framework for Service-Oriented Architecture 1
Designing an Enterprise Application Framework for Service-Oriented Architecture 1 Shyam Kumar Doddavula, Sandeep Karamongikar Abstract This article is an attempt to present an approach for transforming
Case Studies of Running the Platform. NetBeans UML Servlet JSP GlassFish EJB
September Case Studies of Running the Platform NetBeans UML Servlet JSP GlassFish EJB In this project we display in the browser the Hello World, Everyone! message created in the session bean with servlets
Tutorial on Writing Modular Programs in Scala
Tutorial on Writing Modular Programs in Scala Martin Odersky and Gilles Dubochet 13 September 2006 Tutorial on Writing Modular Programs in Scala Martin Odersky and Gilles Dubochet 1 of 45 Welcome to the
Java (12 Weeks) Introduction to Java Programming Language
Java (12 Weeks) Topic Lecture No. Introduction to Java Programming Language 1 An Introduction to Java o Java as a Programming Platform, The Java "White Paper" Buzzwords, Java and the Internet, A Short
Incorporating Aspects into the UML
Incorporating Aspects into the UML Mark Basch University of North Florida Department of Computer and Information Sciences Jacksonville, FL 32224-2645 (904) 620-2985 [email protected] Arturo Sanchez University
Software Engineering and Technology Trends
Laboratory Software Engineering and Technology Trends Christopher Giblin [email protected] Overall Trends Internet Constant change in usage and application styles Open Source vs. Proprietary Development
Quality Ensuring Development of Software Processes
Quality Ensuring Development of Software Processes ALEXANDER FÖRSTER,GREGOR ENGELS Department of Computer Science University of Paderborn D-33095 Paderborn, Germany {alfo engels}@upb.de ABSTRACT: Software
Algorithms, Flowcharts & Program Design. ComPro
Algorithms, Flowcharts & Program Design ComPro Definition Algorithm: o sequence of steps to be performed in order to solve a problem by the computer. Flowchart: o graphical or symbolic representation of
Fundamentals of Java Programming
Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors
Software Evolution and Aspect-Oriented Programming
Software Evolution and Aspect-Oriented Programming Belgian Symposium and Contact Day Monday, 3 May 2004 Het Pand, Gent Software Evolution and Aspect-Oriented Programming Co-organised by FWO Scientific
Parsing Technology and its role in Legacy Modernization. A Metaware White Paper
Parsing Technology and its role in Legacy Modernization A Metaware White Paper 1 INTRODUCTION In the two last decades there has been an explosion of interest in software tools that can automate key tasks
Identification of Crosscutting in Software Design
Identification of Crosscutting in Software Design Klaas van den Berg Software Engineering Group University of Twente P.O. Box 217 7500 AE Enschede the Netherlands +31 53 4893783 [email protected]
Aspect-Oriented Software Development
Aspect-Oriented Software Development Dr. Awais Rashid Computing Department Lancaster University, UK Awais Rashid, 2005. Fundamental to Next Generation Software AOSD is vital to our [IBM Software Group
A Comparative Analysis of Structured and Object-Oriented Programming Methods ASAGBA, PRINCE OGHENEKARO; OGHENEOVO, EDWARD E. CPN, MNCS.
JASEM ISSN 1119-8362 All rights reserved Full-text Available Online at www.bioline.org.br/ja J. Appl. Sci. Environ. Manage. December, 2008 Vol. 12(4) 41-46 A Comparative Analysis of Structured and Object-Oriented
Software Engineering. System Models. Based on Software Engineering, 7 th Edition by Ian Sommerville
Software Engineering System Models Based on Software Engineering, 7 th Edition by Ian Sommerville Objectives To explain why the context of a system should be modeled as part of the RE process To describe
Verifying Semantic of System Composition for an Aspect-Oriented Approach
2012 International Conference on System Engineering and Modeling (ICSEM 2012) IPCSIT vol. 34 (2012) (2012) IACSIT Press, Singapore Verifying Semantic of System Composition for an Aspect-Oriented Approach
Software Engineering. Software Engineering. Component-Based. Based on Software Engineering, 7 th Edition by Ian Sommerville
Software Engineering Component-Based Software Engineering Based on Software Engineering, 7 th Edition by Ian Sommerville Objectives To explain that CBSE is concerned with developing standardised components
What is a programming language?
Overview Introduction Motivation Why study programming languages? Some key concepts What is a programming language? Artificial language" Computers" Programs" Syntax" Semantics" What is a programming language?...there
Service Oriented Architectures
8 Service Oriented Architectures Gustavo Alonso Computer Science Department Swiss Federal Institute of Technology (ETHZ) [email protected] http://www.iks.inf.ethz.ch/ The context for SOA A bit of history
A methodology for secure software design
A methodology for secure software design Eduardo B. Fernandez Dept. of Computer Science and Eng. Florida Atlantic University Boca Raton, FL 33431 [email protected] 1. Introduction A good percentage of the
How To Create A C++ Web Service
A Guide to Creating C++ Web Services WHITE PAPER Abstract This whitepaper provides an introduction to creating C++ Web services and focuses on:» Challenges involved in integrating C++ applications with
Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali
Software development life cycle Software life cycle: Software Engineering - II ITNP92 - Object Oriented Software Design Dr Andrea Bracciali Module Co-ordinator 4B86 [email protected] Spring 2014 (elicitation)
Guiding Principles for Modeling and Designing Reusable Services
Guiding Principles for Modeling and Designing Reusable Services Max Dolgicer Managing Director International Systems Group, Inc. [email protected] http://www.isg-inc.com Agenda The changing notion
USING ASPECT-ORIENTED SOFTWARE DEVELOPMENT IN REAL-TIME EMBEDDED SYSTEMS SOFTWARE A Review of Scheduling, Resource Allocation and Synchronization
USING ASPECT-ORIENTED SOFTWARE DEVELOPMENT IN REAL-TIME EMBEDDED SYSTEMS SOFTWARE Pericles Leng Cheng Department of Computer Science, Cyprus College 6, Diogenes Street, Engomi, Nicosia 1516 [email protected]
Implementing QoS Aware Component-Based Applications
Implementing QoS Aware Component-Based Applications Avraam Chimaris and George A. Papadopoulos Department of Computer Science, University of Cyprus 75 Kallipoleos Street, POB 20537, CY-1678, Nicosia, Cyprus
A Modular Approach to Teaching Mobile APPS Development
2014 Hawaii University International Conferences Science, Technology, Engineering, Math & Education June 16, 17, & 18 2014 Ala Moana Hotel, Honolulu, Hawaii A Modular Approach to Teaching Mobile APPS Development
UML SUPPORTED SOFTWARE DESIGN
UML SUPPORTED SOFTWARE DESIGN Darko Gvozdanović, Saša Dešić, Darko Huljenić Ericsson Nikola Tesla d.d., Krapinska 45, HR-0000 Zagreb, Croatia, tel.: +385 365 3889, faks: +385 365 3548, e-mail: [email protected]
The Java Series. Java Essentials I What is Java? Basic Language Constructs. Java Essentials I. What is Java?. Basic Language Constructs Slide 1
The Java Series Java Essentials I What is Java? Basic Language Constructs Slide 1 What is Java? A general purpose Object Oriented programming language. Created by Sun Microsystems. It s a general purpose
Glassbox: Open Source and Automated Application Troubleshooting. Ron Bodkin Glassbox Project Leader [email protected]
Glassbox: Open Source and Automated Application Troubleshooting Ron Bodkin Glassbox Project Leader [email protected] First a summary Glassbox is an open source automated troubleshooter for Java
Program Understanding in Software Engineering
Taming the complexity: The need for program understanding in software engineering Raghvinder S. Sangwan, Ph.D. Pennsylvania State University, Great Valley School of Graduate Professional Studies Robert
AOJS: Aspect-Oriented JavaScript Programming Framework for Web Development
AOJS: Aspect-Oriented JavaScript Programming Framework for Web Development Hironori Washizaki,Atsuto Kubo,Tomohiko Mizumachi,Kazuki Eguchi,Yoshiaki Fukazawa Waseda University, 3-4-1, Okubo, Shinjuku-ku,
Chapter 12 Programming Concepts and Languages
Chapter 12 Programming Concepts and Languages Chapter 12 Programming Concepts and Languages Paradigm Publishing, Inc. 12-1 Presentation Overview Programming Concepts Problem-Solving Techniques The Evolution
Using Aspects to Design a Secure System
Using Aspects to Design a Secure System Geri Georg Indrakshi Ray Robert France Agilent Technologies Fort Collins, CO [email protected] Colorado State University Fort Collins, CO [email protected]
ARM-BASED PERFORMANCE MONITORING FOR THE ECLIPSE PLATFORM
ARM-BASED PERFORMANCE MONITORING FOR THE ECLIPSE PLATFORM Ashish Patel, Lead Eclipse Committer for ARM, IBM Corporation Oliver E. Cole, President, OC Systems, Inc. The Eclipse Test and Performance Tools
Performance Analysis of Aspect Oriented Programming for Cloud Service Monitoring
Performance Analysis of Aspect Oriented Programming for Cloud Service Monitoring TejasN.Rao 1,, Akash Kumar, S. V. Shanmuga Sunder and K. Chandrasekaran Department of Computer Science and Engineering,
Load balancing using Remote Method Invocation (JAVA RMI)
Load balancing using Remote Method Invocation (JAVA RMI) Ms. N. D. Rahatgaonkar 1, Prof. Mr. P. A. Tijare 2 1 Department of Computer Science & Engg and Information Technology Sipna s College of Engg &
Construction Principles and Design Patterns. Flyweight, Bridge, Builder
Construction Principles and Design Patterns Flyweight, Bridge, Builder 1 The Flyweight Design Pattern: Structure Use: To avoid employing a large number of objects with similar state When objects with intrinsic
