Practical Refactoring-Based Framework Upgrade
|
|
|
- Johnathan Pierce
- 10 years ago
- Views:
Transcription
1 Practical Refactoring-Based Framework Upgrade Ilie Şavga, Michael Rudolf, Sebastian Götz, Uwe Aßmann GPCE'08: Nashville, Tennessee Restructuring a Sign John Thompson, hatter, makes and sells hats for ready money. Benjamin Franklin, as cited in Kerievsky, 2004 Slide 2 of 24
2 Refactoring and Software Evolution "A large program that is d undergoes continuing change or becomes progressively less ful." Lehman and Belady, p. 250 Lehman's first law "As a large program is continuously changed, its complexity increases unless work is done to maintain or reduce it." Lehman and Belady, p. 253 Lehman's second law "Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure." Fowler et al., 1999, xvi Behavior-preserving yet structural-improving Opdyke, 1992; Roberts, 1999 Slide 3 of 24 Software Frameworks and Plugins Framework Version 1 A software framework is a software component that embodies a skeleton solution for a family of related software products and is instantiated by modules containing custom code (plugins). String getname () void broadcast (String msg) Johnson and Foote, 1998 instance-of LAN void enter ( node){ node. broadcast(node.getname() + " enters the network"); Examples inspired by Demeyer et al., 2005 Slide 4 of 24
3 Framework Refactoring Breaking a Plugin Framework Version 2 Framework Version 1 ExtractSubclass String getname () String getname () void broadcast (String msg) Workstation void broadcast (String msg) instance-of Refactorings comprise 75-97% of application-breaking API changes. LAN void enter ( node){ node. broadcast(node.getname() + " enters the network"); Dig and Johnson, 2005; Dagenais and Robillard, 2008; Schäfer et al., 2008; Şavga et al., 2008; Slide 5 of 24 Refactoring-Driven Adaptation ExtractSubclass Adapter is a well-known design pattern to bridge a software component mismatch. Framework Version 2 generate String getname () GoF, 1995; delegate Workstation instance-of LAN void enter ( node){ node. broadcast(node.getname() + " enters the network"); delegate String getname () void broadcast (String msg) Adapter Version 1 The most structured way to deal with component evolution and upgrading, which is likely to result in new mismatches, arguably is by applying adaptation techniques. void broadcast (String msg) Becker et al., 2004 Slide 6 of 24
4 Comebacks: Refactoring Inverses on Adapters Version 1 Version 2 Framework Evolution r1 r2 r3 r4 Adaptation Adapters c1 c2 c3 c4 Plugins Slide 7 of 24 Comebacks: Refactoring Inverses on Adapters Version 1 Version 2 Version 3 Evolution Refactorings History Framework input Adapter Generator generate Adaptation Layers Plugins Slide 8 of 24
5 Adapter Design Pattern (Object Version) Adaptee specificrequest() adaptee Target Adapter request() { adapter.specificrequest(); request() Client target.request(); GoF, 1995 Slide 9 of 24 Refined Adapter Design Pattern (Object Version) AdapteeImpl request() Adaptee specificrequest() adaptee Target Adapter request() { adapter.specificrequest(); request() Client target.request(); GoF, 1995 Slide 10 of 24
6 Black-Box Interface Adapter Framework Version 2 <<AdapteeImpl>> TokenPacket <<Adaptee>> IPacket getcreator() getcreator() adaptee Adaptation Layer Version 1 <<Target>> IPacket <<Adapter>> IPacketAdapter whocreated() whocreated() <<Client>> LAN packet.whocreated(); Slide 11 of 24 White-Box Interface Adapter Framework Version 2 <<Client>> PrintServer print (packet.getcreator()); <<Target>> IPacket getcreator() Adaptation Layer Version 1 <<Adaptee>> IPacket whocreated() adaptee <<Adapter>> IPacketAdapter getcreator() <<AdapteeImpl>> LAN packet.whocreated(); Slide 12 of 24
7 Framework Re- by Inheritance Framework Version 1 PrintServer debug ( n){ Log.write(n.getName()); String getname() LAN n = new Secure();... utils.debug(n); Secure //encryption info String getdescription() Slide 13 of 24 Fragile Base Class Problem: Method Capture Framework Version 2 PrintServer debug ( n){ Log.write(n.getDescription()); String getname() String getdescription(){ this.getname(); LAN n = new Secure();... utils.debug(n); Secure //encryption info String getdescription() Steyaert et al, 1996; Mikhajlov and Sekerinski, 1998 Slide 14 of 24
8 Method Capture Solved: White-Box Class Adapter Framework Version 2 <<Client>> PrintServer call Debug ( n){ Log.write(n.getDescription()); <<Target>> String getname() String getdescription(){ this.getname(); Adaptation Layer Version 1 <<Adaptee>> adaptee adaptee String getname(){ adapter.getname(); <<Adapter>> Adapter //run-time method dispatch <<AdapteeImpl>> Secure //encryption info String getdescription() Slide 15 of 24 Exhaustive API Adaptation Framework -> Plugins Plugins -> Framework Framework Adapter Cache Adaptation Layers Plugins Slide 16 of 24
9 Framework<->Plugin Object Exchange Framework Version 1 public class PacketFactory{ private Hashmap packethistory; public Packet createpacket(packettype type, I creator){ Packet pckt = new Packet(type); pckt.setcreator(creator); packethistory.save(pckt); return pckt; Secure node = new Secure(); PacketType pt = PacketFactory.getEncryptedPacketType(); Packet packet = PacketFactory.createPacket(pt,node); Slide 17 of 24 Wrapping and Unwrapping New Framework public class PacketFactory{ private Hashmap packethistory; public Packet createpacket(packettype type, I creator){ Packet pckt = new Packet(type); pckt.setcreator(creator); packethistory.save(pckt); return pckt; Adaptation Layer unwrap wrap consult/update adapter cache Old Plugin Secure node = new Secure(); PacketType pt = TypeFactory.getEncryptedPacketType(); Packet packet = PacketFactory.createPacket(pt,node); Slide 18 of 24
10 Tool Validation: the ComeBack! Refactoring Engines, Code Analyzers Framework Binaries parsing acquisition Framework Fact Base Prolog Engine Refactoring History ComeBack! Comeback Library Adapter Fact Base pretty printing Adapter Layer ComeBack! homepage: Slide 19 of 24 Side-by-Side Plugin Execution Version 1 Version 2 Version 3 Evolution Refactorings History Framework input Adapter Generator generate Application Adaptation Layers Plugins Slide 20 of 24
11 Case Studies SalesPoint; JHotDraw Java-based frameworks: SalesPoint and JHotDraw application-driven refactoring detection no backward compatibility concern but 85% comebacks specified and executed, remaining changes adapted manually Effectiveness: all refactorings adapted Performance: up to 6.5% overhead <= static optimizations run-time optimizations Slide 21 of 24 Challenges and Limitations Adapter pattern limitations no field refactorings no comebacks for refactorings implying this limited recovery of deleted methods Object structure assumptions abusive reflective calls default serialization Non-available refactoring info quering Eclipse refactoring log investigating the of CVS Slide 22 of 24
12 Intrusive Refactoring-Based Adaptation Henkel and Diwan, 2005 CatchUp!: intrusively adapting plugins refactoring record-and-replay on application sources + re- of Eclipse refactoring info - requires plugin sources and implies new application release Dig at al., 2008 ReBA: intrusively adapting frameworks compensating refactorings for combining old and new APIs + preserve object identities; low performance overhead; recovering deleted implementation - no prove of soundess - (both): context-dependent (delete M and rename to M); no white-box adaptation (accidental overriding possible); Java-specific transformations Slide 23 of 24 Conclusions Comeback-based approach is rigorous and practical: refactorings treated as formal specification of syntactic change automatic and transparent API adaptation for most of applicationbreaking changes side-by-side plugin execution and fairly acceptable performance overhead (in tested applications) At least, a short-term solution Slide 24 of 24
13 Questions and Further Discussion Slide 25 of 24 References M.M. Lehman and L.A.Belady. Program evolution: processes of software change. In APIC Studies in Data Processing, San Diego, CA, USA, W. F. Opdyke. Refactoring Object-Oriented Frameworks. PhD thesis, Urbana-Champaign, IL, USA, D. B. Roberts. Practical analysis for refactoring. PhD thesis, University of Illinois at Urbana-Champaign, Urbana, Illinois, Martin Fowler, Kent Beck, John Brant,William Opdyke, and Don Roberts.. Addison-Wesley, R. Johnson and B. Foote. Designing reusable classes. Journal of Object-Oriented Programming, 1(2):22 35, June S. Demeyer, F. V. Rysselberghe, T. Girba, J. Ratzinger, R. Marinescu, T. Mens, B. D. Bois, D. Janssens, S. Ducasse, M. Lanza, M. Rieger, H. Gall, M. El-Ramly. The LANsimulation: A refactoring teaching example. In IWPSE 05: Proceedings of the Eighth International Workshop on Principles of Software Evolution, pages , Washington, DC, USA, IEEE Computer Society. D. Dig and R. Johnson. The role of refactorings in API evolution. In ICSM 05: Proceedings of the 21st IEEE International Conference on Software Maintenance (ICSM 05), pages , Washington, DC, USA, IEEE Computer Society. Barthélémy Dagenais and Martin P. Robillard. Recommending adaptive changes for framework evolution. In ICSE 08: Proceedings of the 30th international conference on Software engineering, pages , New York, NY, USA, ACM. Thorsten Schäfer, Jan Jonas, and Mira Mezini. Mining framework usage changes from instantiation code. In ICSE 08: Proceedings of the 30th international conference on Software engineering, pages , New York, NY, USA, ACM. GoF: E. Gamma, R. Helm, R. Johnson, and J. Vlisside. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, Reading, Massachtts, S. Becker, A. Brogi, I. Gorton, S. Overhage, A. Romanovsky, and M. Tivoli. Towards an engineering approach to component adaptation. In R. H. Reussner, J. A. Stafford, and C. A. Szyperski, editors, Architecting Systems with Trustworthy Components, volume 3938 of Lecture Notes in Computer Science, pages Springer, L. Mikhajlov and E. Sekerinski. A study of the fragile base class problem. Lecture Notes in Computer Science, Patrick Steyaert, Carine Lucas, Kim Mens, and Theo D Hondt. Re contracts: Managing the evolution of reusable assets. In OOPSLA 96 Conference on ObjectOriented Programming Systems, Languages and Applications, pages ACM Press, October SalesPoint homepage. www-st.inf.tu-dresden.de/salespoint/v3.1/index.html JHotDraw homepage. CORBA homepage. Microsoft COM homepage. J. Camara, C. Canal, J. Cubo, and J. Murillo. An aspectoriented adaptation framework for dynamic component evolution. In 3rd ECOOP Workshop on Reflection, AOP and Meta-Data for Software Evolution, pages 59 71, I. R. Forman, M. H. Conner, S. H. Danforth, and L. K. Raper. Release-to-release binary compatibility in SOM. In OOPSLA 95: Proceedings of the tenth annual conference on Objectoriented programming systems, languages, and applications, pages , New York, NY, USA, ACM Press. S. Malabarba, R. Pandey, J. Gragg, E. Barr, and J. F. Barnes. Runtime support for type-safe dynamic java classes. In ECOOP 00: Proceedings of the 14th European Conference on Object-Oriented Programming, pages , London, UK, Springer-Verlag. I.Balaban, F. Tip, and R. Fuhrer. Refactoring support for class library migration. In OOPSLA 05: Proceedings of the 20th annual ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, pages , New York, NY, USA, ACM Press. K. Chow and D. Notkin. Semi-automatic update of applications in response to library changes. In ICSM 96: Proceedings of the 1996 International Conference on Software Maintenance, page 359, Washington, DC, USA, IEEE Computer Society. J. Henkel and A. Diwan. Catchup!: capturing and replaying refactorings to support API evolution. In ICSE 05: Proceedings of the 27th international conference on Software engineering, pages , New York, NY, USA, ACM Press. D. Dig, S. Negara, V. Mohindra, and R. Johnson. ReBA: Refactoring-aware binary adaptation of evolving libraries. In ICSE 08: International Conference on Software Engineering, Leipzig, Germany, May R. Keller and U. Hoelzle. Binary component adaptation. Lecture Notes in Computer Science, 1445: , S. Roock and A. Havenstein. Refactoring tags for automatic refactoring of framework dependent applications. In XP 02: Proceedings of Extreme Programming Conference, pages , Robert K. Yin. Case Study Research: Design and Methods. SAGE Publications, December I. Savga and M. Rudolf. Refactoring-based adaptation of adaptation specifications. In SERA 08: Best Paper Selection Proceedings of Software Engineering Research, Management and Applications, Prague, Czech Republic, August Springer Verlag. Slide 26 of 24
14 CbAddClass: Proof Slide 27 of 24 CbPushDownMethod: Definition Slide 28 of 24
15 CbPushDownMethod: Proof Slide 29 of 24 CbExtractClass: Definition Slide 30 of 24
16 Creating Adaptation Layer: AddAdapter Slide 31 of 24 References S. Demeyer, S. Ducasse, and O. Nierstrasz. Finding refactorings via change metrics. In OOPSLA 00: Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pages , New York, NY, USA, ACM Press. G. Antoniol, M. D. Penta, and E. Merlo. An automatic approach to identify class evolution discontinuities. In IWPSE 04: Proceedings of the Principles of Software Evolution, 7th International Workshop on (IWPSE 04), pages 31 40, Washington, DC, USA, IEEE Computer Society. C. Gorg and P. Weisgerber. Detecting and visualizing refactorings from software archives. In IWPC 05: Proceedings of the 13th International Workshop on Program Comprehension, pages , Washington, DC, USA, IEEE Computer Society. L. Zou and M.W. Godfrey. Detecting merging and splitting using origin analysis. In WCRE 03: Proceedings of the 10th Working Conference on Reverse Engineering, page 146, Washington, DC, USA, IEEE Computer Society. F. V. Rysselberghe and S. Demeyer. Reconstruction of successful software evolution using clone detection. In IWPSE 03: Proceedings of the 6th International Workshop on Principles of Software Evolution, page 126, Washington, DC, USA, IEEE Computer Society. P. Weissgerber and S. Diehl. Identifying refactorings from source-code changes. In ASE 06: Proceedings of the 21st IEEE International Conference on Automated Software Engineering (ASE 06), pages , Washington, DC, USA, IEEE Computer Society. D. Dig, C. Comertoglu, D. Marinov, and R. Johnson. Automated detection of refactorings in evolving components. In D. Thomas, editor, ECOOP, volume 4067 of Lecture Notes in Computer Science, pages Springer, D. Dig, K. Manzoor, R. Johnson, and T. N. Nguyen. Refactoring-aware configuration management for object-oriented programs. In ICSE, Molhadoref homepage. C. Bitter. Using Aspect-Oriented Techniques for Adaptation. Master Thesis, TU Dresden, T. Mens and S. Demeyer. Evolution metrics. In Proc. Int. Workshop on Principles of Software Evolution, L. Tahvildari, K. Kontogiannis, and J. Mylopoulos. Quality-driven software reengineering. Journal of System Software, 66(3): , F. Bannwart and P. Müller. Changing programs correctly: Refactoring with specifications. In J. Misra, T. Nipkow, and E. Sekerinski, editors, FM, volume 4085 of Lecture Notes in Computer Science, pages Springer, T. Mens, N. V. Eetvelde, S. Demeyer, and D. Janssens. Formalizing refactorings with graph transformations: Research articles. Journal of Software Maintenance and Evolution:Research and Practice, 17(4): , N.V.Eetvelde. A Graph Transformation Approach to Refactoring. University of Antwerp. PhD. Thesis, Slide 32 of 24
Component-Based Software Engineering (CBSE) Announcements
Component-Based Software Engineering (CBSE) Announcements Prof. Dr. Uwe Aßmann Technische Universität Dresden Institut für Software- und Multimediatechnik http://st.inf.tu-dresden.de 11-0.1, Apr 05, 2011
Towards Software Configuration Management for Test-Driven Development
Towards Software Configuration Management for Test-Driven Development Tammo Freese OFFIS, Escherweg 2, 26121 Oldenburg, Germany [email protected] Abstract. Test-Driven Development is a technique where
IMPROVING JAVA SOFTWARE THROUGH PACKAGE STRUCTURE ANALYSIS
IMPROVING JAVA SOFTWARE THROUGH PACKAGE STRUCTURE ANALYSIS Edwin Hautus Compuware Europe P.O. Box 12933 The Netherlands [email protected] Abstract Packages are an important mechanism to decompose
Génie Logiciel et Gestion de Projets. Evolution
Génie Logiciel et Gestion de Projets Evolution 1 Roadmap Evolution: definitions Re-engineering Legacy systems Reverse engineering Software Visualisation Re-engineering Patterns 2 Evolution: Definitions
Supporting Software Development Process Using Evolution Analysis : a Brief Survey
Supporting Software Development Process Using Evolution Analysis : a Brief Survey Samaneh Bayat Department of Computing Science, University of Alberta, Edmonton, Canada [email protected] Abstract During
Understanding Software Static and Dynamic Aspects
Understanding Software Static and Dynamic Aspects Welf Löwe IPD, Universität Karlsruhe PF 6980, 76128 Karlsruhe Germany [email protected] Andreas Ludwig IPD, Universität Karlsruhe PF 6980, 76128 Karlsruhe
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
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
ASSISTING REFACTORING TOOL DEVELOPMENT THROUGH REFACTORING CHARACTERIZATION
ASSISTING REFACTORING TOOL DEVELOPMENT THROUGH REFACTORING CHARACTERIZATION Raúl Marticorena, Carlos López Language and Informatic Systems, University of Burgos, EPS Campus Vena Edificio C, Burgos, Spain
Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering
Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 2 GoF Design Patterns Creational 1 GoF Design Patterns Principles Emphasis on flexibility and reuse through decoupling of classes. The underlying
An Automatic Reversible Transformation from Composite to Visitor in Java
An Automatic Reversible Transformation from Composite to Visitor in Java Akram To cite this version: Akram. An Automatic Reversible Transformation from Composite to Visitor in Java. CIEL 2012, P. Collet,
sql-schema-comparer: Support of Multi-Language Refactoring with Relational Databases
sql-schema-comparer: Support of Multi-Language Refactoring with Relational Databases Hagen Schink Institute of Technical and Business Information Systems Otto-von-Guericke-University Magdeburg, Germany
The Class Blueprint A Visualization of the Internal Structure of Classes
The Class Blueprint A Visualization of the Internal Structure of Classes Michele Lanza Software Composition Group University Of Bern Bern, Switzerland [email protected] Stéphane Ducasse Software Composition
Software Refactoring using New Architecture of Java Design Patterns
Software Refactoring using New Architecture of Java Design Patterns Norddin Habti, Prashant 1, 1 Departement d informatique et de recherche operationnelle, Universite de Montreal, Quebec, Canada (Dated:
Exploiting Dynamic Information in IDEs Eases Software Maintenance
Exploiting Dynamic Information in IDEs Eases Software Maintenance David Röthlisberger Software Composition Group, University of Bern, Switzerland [email protected] Abstract The integrated development
VISUALIZATION APPROACH FOR SOFTWARE PROJECTS
Canadian Journal of Pure and Applied Sciences Vol. 9, No. 2, pp. 3431-3439, June 2015 Online ISSN: 1920-3853; Print ISSN: 1715-9997 Available online at www.cjpas.net VISUALIZATION APPROACH FOR SOFTWARE
A Case Study for Program Refactoring
A Case Study for Program Refactoring Berthold Hoffmann, Javier Pérez 2, and Tom Mens 3 Universität Bremen, Germany 2 Universidad de Valladolid, Spain 3 Service de Génie Logiciel, Université de Mons-Hainaut,
Towards an Appropriate Software Refactoring Tool Support
Towards an Appropriate Software Refactoring Tool Support MARIJA KATIĆ, KREŠIMIR FERTALJ Department of Applied Computing Faculty of Electrical Engineering and Computing, University of Zagreb Unska 3, 10
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study
Does the Act of Refactoring Really Make Code Simpler? A Preliminary Study Francisco Zigmund Sokol 1, Mauricio Finavaro Aniche 1, Marco Aurélio Gerosa 1 1 Department of Computer Science University of São
SAPM Overview. Semester Summary. Project management. Tools (1) Dr. James A. Bednar
SAPM Overview Semester Summary Dr. James A. Bednar [email protected] http://homepages.inf.ed.ac.uk/jbednar In this lecture we review the topics we have covered this semester, focusing on what I consider
Supporting Software Change in the Programming Language
Supporting Software Change in the Programming Language Oscar Nierstrasz and Marcus Denker Software Composition Group University of Bern www.iam.unibe.ch/ scg Keywords: sofware evolution, languages, traits,
Curriculum Vitae. Zhenchang Xing
Curriculum Vitae Zhenchang Xing Computing Science Department University of Alberta, Edmonton, Alberta T6G 2E8 Phone: (780) 433 0808 E-mail: [email protected] http://www.cs.ualberta.ca/~xing EDUCATION
Industrial Application of Clone Change Management System
Industrial Application of Clone Change Management System Yuki Yamanaka, Eunjong Choi, Norihiro Yoshida, Katsuro Inoue, Tateki Sano Graduate School of Information Science and Technology, Osaka University,
Software Engineering Process. Kevin Cathey
Software Engineering Process Kevin Cathey Where are we going? Last Week iphone Application Technologies Workshop This Week Software Engineering Process Thanksgiving Break Write some code, yo 2 Dec Options:
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
An Exception Monitoring System for Java
An Exception Monitoring System for Java Heejung Ohe and Byeong-Mo Chang Department of Computer Science, Sookmyung Women s University, Seoul 140-742, Korea {lutino, [email protected] Abstract. Exception
Referências Bibliográficas
Referências Bibliográficas ALPAYDIN, E. Introduction to Machine Learning (Adaptive Computation and Machine Learning). MIT Press, ISBN 0262012111. 2004. AMSTEL, M. F.; BRAND, M. G. J.; PROTIC, Z. Version
Aspect Mining in Procedural Object-Oriented Code
Aspect Mining in Procedural Object-Oriented Code Muhammad Usman BHATTI 1 Stéphane DUCASSE 2 Awais RASHID 3 1 CRI, Université de Paris 1 Sorbonne, France 2 INRIA - Lille Nord Europe, France 3 Computing
The JWAM Framework: Inspired By Research, Reality-Tested By Commercial Utilization
The JWAM Framework: Inspired By Research, Reality-Tested By Commercial Utilization Holger Breitling, Carola Lilienthal, Martin Lippert, Heinz Züllighoven University of Hamburg Computer Science Department,
JSquash: Source Code Analysis of Embedded Database Applications for Determining SQL Statements
JSquash: Source Code Analysis of Embedded Database Applications for Determining SQL Statements Dietmar Seipel 1, Andreas M. Boehm 1, and Markus Fröhlich 1 University of Würzburg, Department of Computer
Gadget: A Tool for Extracting the Dynamic Structure of Java Programs
Gadget: A Tool for Extracting the Dynamic Structure of Java Programs Juan Gargiulo and Spiros Mancoridis Department of Mathematics & Computer Science Drexel University Philadelphia, PA, USA e-mail: gjgargiu,smancori
How do APIs evolve? A story of refactoring
JOURNAL OF SOFTWARE MAINTENANCE AND EVOLUTION: RESEARCH AND PRACTICE J. Softw. Maint. Evol.: Res. Pract. 2006; 00:1 26 [Version: 2003/05/07 v1.1] Research How do APIs evolve? A story of refactoring Danny
Program Understanding with Code Visualization
Program Understanding with Code Visualization Arif Iftikhar Department of Computer Science National University of Computer and Emerging Sciences 852-B Faisal Town, Lahore, Pakistan [email protected]
A Case Study on Model-Driven and Conventional Software Development: The Palladio Editor
A Case Study on Model-Driven and Conventional Software Development: The Palladio Editor Klaus Krogmann, Steffen Becker University of Karlsruhe (TH) {krogmann, sbecker}@ipd.uka.de Abstract: The actual benefits
Curriculum Vitae. Shan Shan Huang
Curriculum Vitae Shan Shan Huang College of Computing Georgia Institute of Technology 266 Ferst Drive Atlanta, GA 30332-0765 Phone: (404)275-3312 Email: [email protected] http://www.freeflygeek.com Research
RANKING REFACTORING PATTERNS USING THE ANALYTICAL HIERARCHY PROCESS
RANKING REFACTORING PATTERNS USING THE ANALYTICAL HIERARCHY PROCESS Eduardo Piveta 1, Ana Morra 2, Maelo Penta 1 João Araújo 2, Pedro Guerrro 3, R. Tom Price 1 1 Instituto de Informática, Universidade
The Central Role of APIs in Mashup and Cloud Platforms and Need for an Agile API Development Method
The Central Role of APIs in Mashup and Cloud Platforms and Need for an Agile API Development Method Valeh H. Nasser Department of Computer Science University of Calgary Calgary, Canada [email protected]
Curriculum Vitae. Ceccato Mariano
Curriculum Vitae Ceccato Mariano Mariano Ceccato is tenured researcher in FBK (Fondazione Bruno Kessler) in Trento, Italy. He received the master degree in Software Engineering from the University of Padova,
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,
Software Visualization Tools for Component Reuse
Software Visualization Tools for Component Reuse Craig Anslow Stuart Marshall James Noble Robert Biddle 1 School of Mathematics, Statistics and Computer Science, Victoria University of Wellington, New
REST Client Pattern. [Draft] Bhim P. Upadhyaya ABSTRACT
REST Client Pattern [Draft] Bhim P. Upadhyaya EqualInformation Chicago, USA [email protected] ABSTRACT Service oriented architecture (SOA) is a common architectural practice in large enterprises. There
Refactoring-aware Configuration Management for Object-Oriented Programs
Refactoring-aware Configuration Management for Object-Oriented Programs Danny Dig, Kashif Manzoor, Ralph Johnson University of Illinois at Urbana-Champaign {dig, manzoor2, [email protected] Tien N. Nguyen
Migrating Legacy Software Systems to CORBA based Distributed Environments through an Automatic Wrapper Generation Technique
Migrating Legacy Software Systems to CORBA based Distributed Environments through an Automatic Wrapper Generation Technique Hyeon Soo Kim School of Comp. Eng. and Software Eng., Kum Oh National University
Colligens: A Tool to Support the Development of Preprocessor-based Software Product Lines in C
Colligens: A Tool to Support the Development of Preprocessor-based Software Product Lines in C Flávio Medeiros 1, Thiago Lima 2, Francisco Dalton 2, Márcio Ribeiro 2, Rohit Gheyi 1, Baldoino Fonseca 2
CodeCrawler Lessons Learned in Building a Software Visualization Tool
CodeCrawler Lessons Learned in Building a Software Visualization Tool Michele Lanza [email protected] - Software Composition Group - University of Berne, Switzerland Abstract Software visualization tools
Teaching Object-Oriented Concepts with Eclipse
Teaching Object-Oriented Concepts with Eclipse Matthias Meyer, Lothar Wendehals Software Engineering Group Department of Computer Science University of Paderborn Warburger Straße 100 33098 Paderborn, Germany
CodeCrawler An Extensible and Language Independent 2D and 3D Software Visualization Tool
CodeCrawler An Extensible and Language Independent 2D and 3D Software Visualization Tool Michele Lanza Software Engineering Group Department of Informatics University of Zurich, Switzerland Stéphane Ducasse
.NET and J2EE Intro to Software Engineering
.NET and J2EE Intro to Software Engineering David Talby This Lecture.NET Platform The Framework CLR and C# J2EE Platform And Web Services Introduction to Software Engineering The Software Crisis Methodologies
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
Test-Driven Development
Test-Driven Development An Introduction Mattias Ståhlberg [email protected] Debugging sucks. Testing rocks. Contents 1. What is unit testing? 2. What is test-driven development? 3. Example 4.
A Thread Monitoring System for Multithreaded Java Programs
A Thread Monitoring System for Multithreaded Java Programs Sewon Moon and Byeong-Mo Chang Department of Computer Science Sookmyung Women s University, Seoul 140-742, Korea [email protected], [email protected]
Using Library Dependencies for Clustering
Using Library Dependencies for Clustering Jochen Quante Software Engineering Group, FB03 Informatik, Universität Bremen [email protected] Abstract: Software clustering is an established approach
Development of Tool Extensions with MOFLON
Development of Tool Extensions with MOFLON Ingo Weisemöller, Felix Klar, and Andy Schürr Fachgebiet Echtzeitsysteme Technische Universität Darmstadt D-64283 Darmstadt, Germany {weisemoeller klar schuerr}@es.tu-darmstadt.de
CSC408H Lecture Notes
CSC408H Lecture Notes These lecture notes are provided for the personal use of students taking Software Engineering course in the Summer term 2005 at the University of Toronto. Copying for purposes other
A Framework of Model-Driven Web Application Testing
A Framework of Model-Driven Web Application Testing Nuo Li, Qin-qin Ma, Ji Wu, Mao-zhong Jin, Chao Liu Software Engineering Institute, School of Computer Science and Engineering, Beihang University, China
Deployment Pattern. Youngsu Son 1,JiwonKim 2, DongukKim 3, Jinho Jang 4
Deployment Pattern Youngsu Son 1,JiwonKim 2, DongukKim 3, Jinho Jang 4 Samsung Electronics 1,2,3, Hanyang University 4 alroad.son 1, jiwon.ss.kim 2, dude.kim 3 @samsung.net, [email protected] 4
Integrating Service Oriented MSR Framework and Google Chart Tools for Visualizing Software Evolution
2012 Fourth International Workshop on Empirical Software Engineering in Practice Integrating Service Oriented MSR Framework and Google Chart Tools for Visualizing Software Evolution Yasutaka Sakamoto,
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.
Tales of Empirically Understanding and Providing Process Support for Migrating to Clouds
Tales of Empirically Understanding and Providing Process Support for Migrating to Clouds M. Ali Babar Lancaster University, UK & IT University of Copenhagen Talk @ MESOCA, Eindhoven, the Netherlands September,
BugMaps-Granger: A Tool for Causality Analysis between Source Code Metrics and Bugs
BugMaps-Granger: A Tool for Causality Analysis between Source Code Metrics and Bugs César Couto 1,2, Pedro Pires 1, Marco Túlio Valente 1, Roberto S. Bigonha 1, Andre Hora 3, Nicolas Anquetil 3 1 Department
The WebShop E-Commerce Framework
The WebShop E-Commerce Framework Marcus Fontoura IBM Almaden Research Center 650 Harry Road, San Jose, CA 95120, U.S.A. e-mail: fontouraalmaden.ibm.com Wolfgang Pree Professor of Computer Science Software
How To Develop A Model Driven Development Framework
MODELTALK: A Framework for Developing Domain Specific Executable Models Atzmon HenTov Pontis Ltd. Glil Yam 46905, Israel [email protected] David H. Lorenz The Open University of Israel 108 Ravutski St.,
Run-time Variability Issues in Software Product Lines
Run-time Variability Issues in Software Product Lines Alexandre Bragança 1 and Ricardo J. Machado 2 1 Dep. I&D, I2S Informática Sistemas e Serviços SA, Porto, Portugal, [email protected] 2 Dep.
Analizo: an Extensible Multi-Language Source Code Analysis and Visualization Toolkit
Analizo: an Extensible Multi-Language Source Code Analysis and Visualization Toolkit Antonio Terceiro 1, Joenio Costa 2, João Miranda 3, Paulo Meirelles 3, Luiz Romário Rios 1, Lucianna Almeida 3, Christina
