MatchO provides support for matching objects within Java in the form of a Pattern interface which has various implementations for various types of objects. The underlying ideas are explained in the paper:
Joost Visser, Matching Objects Without Language Extension. Accepted for publication in the Dec/Nov 2006 issue of the Journal of Object Technology. Until that time, a draft version is available.
FUNCTIONALITY
MatchO currently sports the following features:
Pattern matching on lists and arrays.
Pattern matching on various tree representations:
Antlr's abstract syntax trees (antlr.collections.AST).
Maximally shared annotated terms of the ATerm Library (aterm.ATerm).
JJTraveler's visitables (jjtraveler.Visitable).
Non-linear pattern matching.
Substitution.
Generic pattern-matching (covering all types mentioned above).
Mixing of patterns and visitors (for matching at arbitrary depths and for 'active patterns').
MatchO can be used in combination with parser generators like Antlr or JJForester to perform pattern matching on parse trees.
USAGE
To learn how to use the library, see the paper.
Since the full MatchO library provides matching behaviour for a range of tree representations, you might be interested in only downloading a sub-set that fits your needs. The following jars are available:
Joost Visser, Matching Objects Without Language Extension. Accepted for publication in the Dec/Nov 2006 issue of the Journal of Object Technology. Draft version: pdf.
If you visited this page before November 2005, you found here previous snapshots of MatchO which is now obsolete. If you have questions about such previous versions, please contact me.
Devnology Podcast 019, Interview with Per John and Joost Visser of the Software Improvement Group about software quality and related topics, June 2011.
Jelle de Groot, Ariadi Nugroho, Thomas Bäck, and Joost Visser, What is the value of your software?, In proceedings of the Third International Workshop on Managing Technical Debt (MTD 2012), 2012. SIG
Aigerim Issabayeva, Ariadi Nugroho, and Joost Visser, Issue Handling Performance in Proprietary Software Projects, In proceedings of the 9th Working Conference on Mining Software Repositories (MSR 2012), 2012. SIG
Andrzej Olszak, Eric Bouwers, Bo Nørregaard Jørgensen, and Joost Visser, Detection of Seed Methods for Quantification of Feature Confinement, In proceedings of the 50th International Conference on Objects, Models, Components, Patterns (TOOLS Europe 2012), 2012. SIG
Steven Raemaekers, Arie van Deursen, and Joost Visser, An Analysis of Dependence on Third-party Libraries in Open Source and Proprietary Systems, in proceedings of the Sixth International Workshop on Software Quality and Maintainability (SQM 2012), 2012. SIG
Joost Visser, Change is the Constant, keynote article in ERCIM News 88, special issue on Evolving Software, January 2012.
2011
Eric Bouwers and Joost Visser, Continuous Architecture Evaluation, Abstract of presentation at the 10th BElgian-NEtherlands software eVOLution seminar (BENEVOL 2011). PDF
Joost Visser, Improving Software Quality with Clear, Standards-Based Metricswebinar, IT Metrics & Productivity Institute (ITMPI), Computer Aid, November 2011.
Tiago L. Alves, José Pedro Correia, and Joost Visser, Benchmark-based Aggregation of Metrics to Ratings, In Proceedings of the Joint Conference of the 21th International Workshop on Software Measurement (IWSM) and the 6th International Conference on Software Process and Product Measurement (Mensura), pp20-29, IEEE Computer Society, 2011. SIGDOI
Eric Bouwers, Arie van Deursen, and Joost Visser, Dependency Profiles for Software Architecture Evaluations, In proceedings of the 27th IEEE International Conference on Software Maintenance (ICSM 2011), p540-543, IEEE, 2011. DOITRSIG
Eric Bouwers, José Pedro Correia, Arie van Deursen, and Joost Visser, Quantifying the Analyzability of Software Architectures, in proceedings of the 9th Working IEEE/IFIP Conference on Software Architecture (WICSA 2011), pp. 83-92,IEEE Computer Society, 2011. SIGDOI
Ariadi Nugroho, Tobias Kuipers, and Joost Visser, An Empirical Model of Technical Debt and Interest, in proceedings of the 2nd International Workshop on Managing Technical Debt (MTD 2011), pages 1-8, ACM, 2011. SIGDOI
Dennis Bijlsma, Miguel Ferreira, Bart Luijten, and Joost Visser, Faster Issue Resolution with Higher Technical Quality of Software, Software Quality Journal, 2011. DOI
Robert Baggen, José Pedro Correia, Katrin Schill, and Joost Visser, Standardized Code Quality Benchmarking for Improving Software Maintainability, Software Quality Journal, 2011. DOI
Jácome Cunha, Joost Visser, Tiago Alves, and João Saraiva, Type-safe Evolution of Spreadsheets, In proceedings of the 14th international conference on Fundamental Approaches to Software Engineering (FASE 2011), Lecture Notes in Computer Science, Volume 6603, pp 186-201, Springer, 2011. DOIPDF
Generative and Transformational Techniques in Software Engineering III, International Summer School, GTTSE 2009, Braga, Portugal, July 6-11, 2009. Revised Papers, editors: João M. Fernandes, Ralf Lämmel, Joost Visser and João Saraiva, Lecture Notes in Computer Science, Volume 6491, 2011. DOIebook
Tiago Alves, Christiaan Ypma, and Joost Visser, Deriving Metric Thresholds from Benchmark Data, In proceedings of the 26th IEEE International Conference on Software Maintenance (ICSM 2010), September 12-18, 2010, Timișoara, Romania, IEEE Computer Society, 2010. PDFSIGDOI
Bart Luijten, Joost Visser, and Andy Zaidman (TU Delft), Assessment of Issue Handling Efficiency, In proceedings of the 7th IEEE Working Conference on Mining Software Repositories (MSR 2010), May 2-3, 2010, Cape Town, South Africa, pages 94-97, IEEE Computer Society, 2010. PDFSIGDOI
Bart Luijten and Joost Visser, Faster Defect Resolution with Higher Technical Quality of Software, In proceedings of the 4th International Workshop on Software Quality and Maintainability (SQM 2010), March 15, 2010, Madrid, Spain, 2010. PDFSIG
Robert Baggen, Katrin Schill, and Joost Visser, Standardized Code Quality Benchmarking for Improving Software Maintainability, In proceedings of the 4th International Workshop on Software Quality and Maintainability (SQM 2010), March 15, 2010, Madrid, Spain, 2010. PDFSIG
Eric Bouwers, Carola Lilienthal, Joost Visser, and Arie van Deursen, A Cognitive Model for Software Architecture Complexity, In Proceedings of the 18th International Conference on Program Comprehension (ICPC 2010), IEEE Computer Society, 2010. TRDOI
Alcino Cunha and Joost Visser, Transformation of Structure-Shy Programs with Application to XPath Queries and Strategic Functions, In Science of Computer Programming, Volume 76, Issue 6, 1 June 2011, Pages 516-539, Special issue on Partial Evaluation and Program Manipulation (selected paper of PEPM 2007), Elsevier, 2010. DOI
Jácome Cunha, João Saraiva, and Joost Visser, Discovery-based Edit Assistance for Spreadsheets, In proceedings of 2009 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC 2009), pages 233-237, IEEE Computer Society, 2009. DOI
Paulo F. Silva, Joost Visser, and José N. Oliveira, Galois: A Language for Proofs Using Galois Connections and Fork Algebras, In proceedings of the ACM SIGSAM 2009 International Workshop on Programming Languages for Mechanized Mathematics Systems (PLMMS 2009), to appear, 2009. PDF
Tiago L. Alves and Joost Visser, Static Estimation of Test Coverage, In proceedings of the Ninth IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2009), pages 55-64, IEEE Computer Society, 2009. DOISIG
Jose Pedro Correia, Yiannis Kanellopoulos, and Joost Visser, A Survey-based Study of the Mapping of System Properties to ISO/IEC 9126 Maintainability Characteristics, In proceedings of the 25th IEEE International Conference on Software Maintenance (ICSM 2009), pages 61-70, IEEE Computer Society, 2009. DOISIG
Eric Bouwers, Joost Visser, and Arie van Deursen, Criteria for the Evaluation of Implemented Architectures, In proceedings of the 25th IEEE International Conference on Software Maintenance (ICSM 2009), pages 73-82, IEEE Computer Society, 2009. DOISIG
José Pedro Correia, Yiannis Kanellopoulos, and Joost Visser, Mapping System Properties to ISO/IEC 9126 Maintainability Characteristics, In the Third International Workshop on Software Quality and Maintainability (SQM 2009), to appear.
Christos Tjortjis and Joost Visser: 3rd International Workshop on Software Quality and Maintainability. In proceedings of the 13th European Conference on Software Maintenance and Reengineering (CSMR 2009), pages 271-272, IEEE, 2009. DOI
Jácome Cunha, João Saraiva, and Joost Visser, From Spreadsheets to Relational Databases and Back, In proceedings of the 2009 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-based Program Manipulation (PEPM 2009), pages 179-188, ACM, 2009. DOI
2008
Tiago L. Alves and Joost Visser, A Case Study in Grammar Engineering, In proceedings of the 1st International Conference on Software Language Engineering (SLE 2008), pages 285-304, Lecture Notes in Computer Science 5452, Springer, 2008. DOISIG
Thomas Dean and Joost Visser, Industrial Realities of Program Comprehension (IRPC 2008), In proceedings of the 16th IEEE International Conference on Program Comprehension (ICPC 2008), pp. 283-284, IEEE Computer Society Press, 2008 DOI
José Pedro Correia and Joost Visser, Benchmarking Technical Quality of Software Products, In proceedings of the 15th Working Conference on Reverse Engineering (WCRE 2008), pages 297-300, IEEE Computer Society Press, 2008. DOISIG
José Pedro Correia and Joost Visser, Certification of Technical Quality of Software, In Proceedings of the 2nd International Workshop on Foundations and Techniques for Open Source Software Certification (OpenCert 2008), satellite event of the 4th International Conference on Open Source Systems (OSS 2008), Research Report 398, pages 35-51, United Nations University – International Institute for Software Technology (UNU-IIST), 2008. PDF See also Software Product Certification by SIG and TÜViT.
Tiago L. Alves, Paulo F. Silva, and Joost Visser, Constraint-aware Schema Transformation, In proceedings of The Ninth International Workshop on Rule-Based Programming (Rule 2008). (PDF) SIG
Joost Visser, Coupled Transformation of Schemas, Documents, Queries, and Constraints, In Proceedings of the 3rd International Workshop on Automated Specification and Verification of Web Systems (WWV 2007), ENTCS, volume 200, issue 3, pages 3-23, 2008. DOI
Yiannis Kanellopoulos, Ilja Heitlager, Christos Tjortjis, and Joost Visser, Interpretation of Source Code Clusters in Terms of ISO/IEC-9126 Quality Characteristics, In proceedings of the 12th European Conference on Software Maintenance and Reengineering, (CSMR 2008), pages 63-72, IEEE Computer Society. DOI
Generative and Transformational Techniques in Software Engineering II, International Summer School, GTTSE 2007, Braga, Portugal, July 2-7. 2007, Revised Papers, Lämmel, Ralf; Visser, Joost; Saraiva, Joao (Eds.), Lecture Notes in Computer Science, Vol. 5235, 2008.
2007
Ilja Heitlager, Tobias Kuipers, and Joost Visser, Observing Unit Test Maturity in the Wild, Presentation abstract, 13th Dutch Testing Day 2007 (Test Dag). (PDF)
Ilja Heitlager, Tobias Kuipers, and Joost Visser, A Practical Model for Measuring Maintainability, In proceedings of the 6th International Conference on the Quality of Information and Communications Technology (QUATIC 2007), pages 30-39, IEEE Computer Society Press, 2007. (PDF) DOISIG
Huib van den Brink, Rob van der Leek, and Joost Visser, Quality Assessment for Embedded SQL, In proceedings of the Seventh IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2007), IEEE Computer Society Press, 2007. (PDF) SIG
Luís Barbosa, Jácome Cunha and Joost Visser, A Type-level Approach to Component Prototyping, In SYANCO '07: International workshop on Synthesis and analysis of component connectors, pages 23-36, ACM, September, 2007. (PDF,DOI)
Tobias Kuipers, Joost Visser, and Gerjon de Vries, Monitoring the Quality of Outsourced Software, In proceedings of the Workshop on Tools for Managing Globally Distributed Software Development (TOMAG 2007), 2007. (PDF) SIG
Tobias Kuipers and Joost Visser, Maintainability Index Revisited - position paper, System Quality and Maintainability (SQM 2007), satellite of CSMR 2007. (PDF)
Tiago Alves and Joost Visser, SdfMetz: Extraction of Metrics and Graphs From Syntax Definitions - Tool Demonstration, In Seventh Workshop on Language Descriptions, Tools and Applications (LDTA 2007), ENTCS, to appear, 2007. (PDF)
Alcino Cunha and Joost Visser, Transformation of Structure-Shy Programs, Applied to XPath Queries and Strategic Functions, In Proceedings of the 2007 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, PEPM 2007, pages 11-20, ACM 2007. DOIPDF
Pablo Berdaguer, Alcino Cunha, Hugo Pacheco, Joost Visser. Coupled Schema Transformation and Data Conversion For XML and SQL. In M. Hanus (Ed.), PADL 2007: Practical Aspects of Declarative Languages, LNCS 4354, pp. 290-304, Springer, 2007. (PDF). This paper is supported by the 2LT library.
2006
Joost Visser, Matching Objects Without Language Extension. In Journal of Object Technology, Vol 5, No 8, Nov/Dec 2006, pages 81-100. (HTML, PDF) The paper is supported by the MatchO library.
Alexandra Silva and Joost Visser, Strong Types for Relational Databases (Functional Pearl). In Haskell '06: Proceedings of the 2006 ACM SIGPLAN workshop on Haskell, pp 25-36, ACM Press. pdf This paper is supported by the CoddFish library.
Alcino Cunha, Joost Visser. Strongly Typed Rewriting For Coupled Software Transformation. In Proceedings of the 7th International Workshop on Rule Based Programming (RULE 2006), ENTCS, Volume 174, Issue 1, April 2007, Pages 17-34. pdf This paper is supported by the 2LT library.
Alcino Cunha, José Nuno Oliveira, Joost Visser. Type-safe Two-level Data Transformation. In Formal Methods 2006, LNCS 4085, pp. 284-299, 2006. Springer-Verlag. pdf A preliminary version with additional material appended appeared as technical report DI-PURe-06.03.01 (see below).
Alcino Cunha, José Nuno Oliveira, Joost Visser. Type-safe Two-level Data Transformations -- with derecursivation and dynamic typing, Technical Report DI-PURe-06.03.01, Departamento de Informática, Universidade do Minho, March 2006. pdf This paper is supported by the 2LT library.
Joost Visser Structure Metrics for XML Schema. Proceedings of XATA 2006. pdf This paper is supported by the XsdMetz tool.
Generative and Transformational Techniques in Software Engineering, International Summer School, GTTSE 2005, Braga, Portugal, July 4-8, 2005. Revised Papers, Lämmel, Ralf; Saraiva, João; Visser, Joost (Eds.), Lecture Notes in Computer Science, Vol. 4143, 2006.
2005
Tiago Alves and Joost Visser, Metrication of SDF Grammars. Technical Report, DI-PURe-05.05.01, Departamento de Informática, Universidade do Minho, May 2005. pdf This paper is supported by the SdfMetz tool.
Tiago Alves and Joost Visser, Grammar-centered Development of VDM Support. In Fitzgerald, J. S., Larsen, P. G., Plat, N. (eds.), Towards Next Generation Tools for VDM: Contributions to the First International Overture Workshop, Newcastle, July 2005, Technical Report CS-TR969, School of Computing Science, Newcastle University, June 2006. (PDF)
Joost Visser, J.N. Oliveira, L.S. Barbosa, J.F. Ferreira, and A. Mendes, Camila Revival: VDM meets Haskell. In Fitzgerald, J. S., Larsen, P. G., Plat, N. (eds.), Towards Next Generation Tools for VDM: Contributions to the First International Overture Workshop, Newcastle, July 2005, Technical Report CS-TR969, School of Computing Science, Newcastle University, June 2006. (PDF)
Tiago Alves and Joost Visser, Development of an Industrial Strength Grammar for VDM. Technical Report, DI-PURe-05.04.29, Departamento de Informática, Universidade do Minho, April 2005. pdf
Tiago Alves, Paulo Silva, Joost Visser, and José Nuno Oliveira. Strategic Term Rewriting And Its Application To A VDM-SL to SQL Conversion. Formal Methods 2005, Lecture Notes in Computer Science, Volume 3582, July 2005, Pages 399-414, Springer. pdf
2004
Tobias Kuipers en Joost Visser. Portal voor Broncodeanalyse. In Informatie, juni 2004, jaargang 46. pdf
João Saraiva and Joost Visser. Tutorial on Strategic Programming Across Programming Paradigms. 8th Brazilian Symposium on Programming Languages (SBLP 2004). (PDF)
Arie van Deursen and Joost Visser. Source Model Analysis using the JJTraveler Visitor Combinator Framework. Software Practice and Experience 34(14):1345-1379, 2004. Preliminary version: pdf
Tobias Kuipers and Joost Visser. A Tool-based Methodology for Software Portfolio Monitoring. International Workshop on Software Audits and Metrics (SAM 2004), April 2004, Porto, Portugal. (PDF) (slides)
Tobias Kuipers en Joost Visser. Evolueren met Portfoliomonitoring. In Informatie, jan-feb 2004, jaargang 46. pdf
2003
Ralf Lämmel, Eelco Visser, and Joost Visser. Strategic Programming Meets Adaptive Programming. In Proc. of Aspect-Oriented Software Development (AOSD'03), pages 168--177. ACM Press 2003. pdfbib
Joost Visser. Generic Traversal over Typed Source Code Representations. Phd thesis, University of Amsterdam, February 2003. pdfbib
Ralf Lämmel and Joost Visser. A Strafunski Application Letter. In PADL 2003: Practical Aspects of Declarative Languages, volume 2562 of Lecture Notes in Computer Science (LNCS), pages 357-375. Springer, January 2003. pdfbib
Tobias Kuipers and Joost Visser, Object-oriented tree traversal with JJForester. In Science of Computer Programming 47(1): 59-87, 2003. An earlier version appeared in ENTCS 44(2), 2001.
2002
Ralf Lämmel and Joost Visser. Design Patterns for Functional Strategic Programming. In Proc. of Third ACM SIGPLAN Workshop on Rule-Based Programming RULE'02, Pittsburgh, USA, October 2002. ACM Press. pdf, bib.
Arie van Deursen and Joost Visser. Building program understanding tools using visitor combinators. In 10th International Workshop on Program Comprehension (IWPC 2002), pages 137-146. IEEE Computer Society, 2002. pdfbib
Ralf Lämmel and Joost Visser. Typed combinators for generic traversal. In PADL 2002: Practical Aspects of Declarative Languages, volume 2257 of Lecture Notes in Computer Science (LNCS). Springer, 2002. pdf, bib.
Ralf Lämmel and Joost Visser. Strategic polymorphism requires just two combinators! In Preproceedings of IFL 2002, Implementation of Functional Languages, September 2002.
Merijn de Jonge and Joost Visser. Workshop on Generative Programming 2002 (GP2002), Lecture Notes in Computer Science, Volume 2319, Jan 2002, Page 331.
Merijn de Jonge and Joost Visser. Grammars As Feature Diagrams. Presented at the Generative Programming Workshop 2002, Austin, Texas. pdfbib
Arie van Deursen, Paul Klint, and Joost Visser. Domain-Specific Languages. In The Encyclopedia of Library and Information Science. Marcel Dekker Inc. 2002, pages 113-127.
Arie van Deursen, Paul Klint, and Joost Visser. Domain-Specific Languages. In The Encyclopedia of Microcomputers. Marcel Dekker Inc. 2002, pages 53-68.
2001
Joost Visser. Visitor combination and traversal control. ACM SIGPLAN Notices, 36(11):270-282, November 2001. OOPSLA 2001 Conference Proceedings: Object-Oriented Programming Systems, Languages, and Applications, Preliminary version: pdf, bib.
Tobias Kuipers and Joost Visser. Object-oriented tree traversal with JJForester. In Mark van den Brand and Didier Parigot, editors, Electronic Notes in Theoretical Computer Science, volume 44(2). Elsevier Science Publishers, 2001 (Proc. of Language Descriptions, Tools and Applications (LDTA 2001)). pdf, bib.
Mark van den Brand, Jan Heering, Hayco de Jong, Merijn de Jonge, Tobias Kuipers, Paul Klint, Leon Moonen, Pieter Olivier, Jeroen Scheerder, Jurgen Vinju, Eelco Visser, and Joost Visser. The ASF+SDF Meta-Environment: a component-based language development environment. In Compiler Construction 2001 (CC 2001), LNCS. Springer, 2001. Tool demo. pdf, bib.
Merijn de Jonge, Eelco Visser, and Joost Visser, Collaborative Software Development. Technical report SEN-R0113, CWI, 2001. ps.Zpdfbib
Merijn de Jonge, Eelco Visser, and Joost Visser. XT: a bundle of program transformation tools - system description. In Mark van den Brand and Didier Parigot, editors, Electronic Notes in Theoretical Computer Science, volume 44(2). Elsevier Science Publishers, 2001 (Proc. of Language Descriptions, Tools and Applications (LDTA 2001)). pdf, bib.
Merijn de Jonge and Joost Visser. XT capita selecta. In Proceedings of the Second Stratego Users Day. To appear, February 2001. pdf, bib.
2000
Merijn de Jonge and Joost Visser. Grammars as contracts. In Generative and Component-based Software Engineering (GCSE), volume 2177 of Lecture Notes in Computer Science (LNCS), Erfurt, Germany, October 2000. Springer. pdf, bib.
Ralf Laemmel, Joost Visser, and Jan Kort. Dealing with large bananas. In Johan Jeuring, editor, Workshop on Generic Programming, Ponte de Lima, July 2000. Technical Report UU-CS-2000-19, Universiteit Utrecht. pdf, bib.
Arie van Deursen, Paul Klint, and Joost Visser. Domain-Specific Languages - An Annotated Bibliography. ACM SIGPLAN Notices, 35(6), June 2000. Supply additions!pdfbib
Ralf Laemmel and Joost Visser. Type-safe functional strategies. In Scottish Functional Programming Workshop, St Andrews, July 2000. Draft Proceedings. pdf.
Jan Kort, Ralf Laemmel, and Joost Visser. Functional transformation systems. In 9th International Workshop on Functional and Logic Programming, Benicassim, Spain, September 2000. pdf, bib.
1999
Merijn de Jonge, Tobias Kuipers, and Joost Visser. HASDF: A Generalized LR-parser Generator for Haskell. Technical Report SEN-R9902, CWI, 1999. bib.
1996
Joost Visser, Evolving Algebras, Master's Thesis, Delft University of Technology, 1996. Archived at ASM Home. Includes an elaborate tutorial on monads and monad transformers (Chapter 9, pages 109-143) using Gofer (precursor of Haskell).
Drafts
Claudia Mónica Necco, José Nuno Oliveira, and Joost Visser, Extended Static Checking By Strategic Rewriting of Pointfree Relational Expressions, Draft.
For pdfs of older publications, see my old home page. Likewise for slides of old talks.
In many areas of computing, languages play a central role. Programming languages, data definition languages, scripting languages, mark-up-languages, query languages, etc. Unfortunately, it is common practise in software engineering to apply mostly ad-hoc techniques when dealing with language syntaxes. Grammar Engineering seeks to remedy this situation by regarding grammars as valueable software artifacts, and applying good engineering practises to their development, deployment, and maintenance.
In this project you will implement a tool-suite for Grammar Engineering. The tool-suite will include (i) support for grammar reconstruction from language reference manuals, (ii) a combinator library for reshaping grammars, and (iii) support for generating parsers, XML shema's, transformation libraries, and other software components from grammars. Your tool-suite will use the Syntax Definition Formalism (SDF) as internal representation format. To design your tool-suite you will take inspiration from published work and previously developed prototypes.
The implementation of this tool-suite will normally require some technology that it is fit to implement all of the above components while this technology should then also benefit from the provided components. Here are some options:
A Haskell-centric approach with combinator parsing.
An ASF+SDF Meta-Environment approach with its SGLR parsing technology.
General-purpose programming languages and main-stream parser generators like ANTLR.
For example, in the Haskell scenario, the tool-suite is implemented in Haskell and it would
be useful for the Haskell programmer. That is, the tool-suite would then help with deploying
Haskell-based parsers, XML components and others while processing SDF grammars as input.
See also: the Grammar Ware page.
Location: The project, or part of it may be conducted at the Vrije Universiteit or CWI in Amsterdam, The Netherlands.
Supervisors: Joost Visser (UMinho), Ralf Laemmel (VU & CWI, The Netherlands)
(back to top)
Benchmarking Generic Programs
Generic Programming encompasses programming techniques that allow the construction of programs that work for just about any kind of data type. Examples of generic programming solutions are Strafunski, traversal functions in ASF+SDF, Generic Haskell, Polytypic Programming, and visitor combinators.
In this project you will perform thorough benchmarking of various generic programming approaches, and investigate some options for improving the efficiency of generic programs. To this end, you will develop a benchmark suite of generic programming problems, and corresponding solutions for each approach under scrutiny. You will investigate both time and space consumption by the various approaches. You will publish your benchmark suite and the results of running it on the internet, such that in future others can take advantage of it when comparing and evaluating generic programming approaches in future.
Location: The project, or part of it may be conducted at the Vrije Universiteit or CWI in Amsterdam, The Netherlands.
Supervisors: Joost Visser (UMinho), Ralf Laemmel (VU & CWI, The Netherlands)
Software Portfolio Monitoring
background
The Software Improvement Group (SIG) offers a tool-based service, called Software
Portfolio Monitoring (SPM). The objective of SPM is to provide ICT management
of large corporations with objective and up-to-date information about their
software portfolio. The method to achieve this is to periodically run software
analysis tools on the entire portfolio, to aggregate and interpret the data
thus obtained, and to present the data in extremely condensed form to the
management board.
The SIG has developed a suite of software analysis tools, which goes by the name
of the Software Analysis Toolkit (SAT). Through a graphical user interface, SAT
allows application of a wide variety of analyses to large legacy software
systems, and to visualize the results. The SAT is interactive and extendible.
Challenge
In this project you will apply the SAT to a number of large software systems.
These will include large high-profile open source software systems, as well as
large proprietary systems owned by some of Holland's largests corporations. You
will apply statistical tools to the acquired data to discover trends, outliers,
and to aggregate the data to a minimal set of meaningful indicators. Finally,
you will produce a presentation of the indicators for each of the analysed
systems, which will serve as a benchmark with which systems to be analysed in
future can be compared.
Location: The project, or part of it, may be conducted at the Software Improvement Group, The Netherlands.
Supervisor: Joost Visser (UMinho)
Software Analysis Development Kit
Background
The Software Improvement Group (SIG) offers several services to its clients that
involve the application of software analysis tools to the software systems of
these clients. To support this, SIG has developed the Software Analysis Toolkit
(SAT). The SAT offers an interactive user interface that allows a user to select
system sources, run all kinds of analyses on them, and visualize the results.
The SAT is extendible. Its architecture consists of a framework that can be
instantiated by supplying specific analysis and visualization components.
Challenge
The SIG wishes to make the SAT available to external parties. Not just to use
SAT, but also to extend it with new analysis and visualization functionality. In
other words, the SAT needs to be turned into a "development platform", analogous
to for instance Sun's Development Kit (SDK).
In this project, you will modify the design of SAT such that it can be used as
a development platform. This implies that you will create and document APIs to
be used by developers of analysis and visualization components. These APIs will
need to be designed around a component model, such that analysis and
visualization components can easily be parameterized and combined. Also, you
will design and create a development community portal, i.e. a website where the
SAT development kit can be downloaded, and where analysis and visualization
components can be shared by the development community.
Location: The project, or part of it, may be conducted at the Software Improvement Group, The Netherlands.
Supervisor: Joost Visser (UMinho)
Spaghetti Surfing
Create a Hierarchical Graph Browser.
In many areas of science and engineering, hierarchical graphs are used to
represented information. (In a hierarchical graph, each node can itself be a
graph again.) These graphs can be stored in a database with a very simple data
model, but containing a huge number of nodes and edges. Unfortunately, when
looking at such a huge graph with an ordinary graph visualization tool, you
will only see a chaotic ball of spaghetti.
In this project, you will use the Graph Visualization Framework to create a
browser for large hierarchical graphs. Your browser will support some filtering
and selection operations that allow interactive exploration of the spaghetti
jungle.
Supervisor: Joost Visser
Unraveling Legacy Software
Create components for unraveling legacy software.
Most software systems used by companies today has resulted from development and
maintenance activities spread over 10 to 30 years. During this time, these
legacy systems have become unmanageably large and complex.
The Software Analysis Toolkit (SAT) has been developed by the Software
Improvement Group (SIG) to support the performance of Software Risk Assessments
on legacy software systems. The SAT has been made available for academic use.
In this project, you will add analysis and/or visualization components to the
SAT. Select the component you will build by discussing some alternatives with
one of SIG's engineers (don't worry they are nice guys). You will be given the
opportunity to run your components via SAT on a few real legacy systems of
considerable size (between 100.000 and 10.000.000 lines of code).
Supervision: Joost Visser
Aspectual Generator for JJTraveler
JJTraveler is a Java framework that allows construction of object graph
traversals in an elegant, combinatorial style. To use JJTraveler within a
particular application, its classes must implement the Visitable interface of
JJTraveler, and an application-specific Visitor class must be generated.
In this project, you will use an aspect-oriented programming tool (AspectJ) to
automatically generate application-specific instantiations of the JJTraveler
framework. This tool allows you, for instance, to insert additional methods at
compilation time into given classes. You can demonstrate that your aspectual
generator works by applying it to an interesting class hierarchy from some
arbitrary open source project.
Supervision: Joost Visser
Marriage of ANTLR and JJTraveler
ANTLR is a popular parser generator for Java. During parsing it can create a
so-called heterogeneous Abstract Syntax Tree (AST). Unfortunately, you need to
define the classes of the AST nodes manually, even though they could be derived
from the grammar.
JJTraveler is a Java framework that allows construction of object graph
traversals in an elegant, combinatorial style. To use JJTraveler within a
particular application, its classes must implement the Visitable interface of
JJTraveler, and an application-specific Visitor class must be generated.
In this project you will extend ANTLR with the capability of generating a class
hierarchy from an input grammar. These classes will implement the Visitable
interface of the JJTraveler framework. The generator will also insert
statements into the grammar that create the various nodes of these classes. You
can demonstrate that your marriage is successful by applying it to a large
ANTLR grammar from the web, and implement a few non-trivial visitors.
Supervision: Joost Visser
This page explains how to create, customize, and use updatable pretty-printers in Haskell, using the support offered by the Sdf2Haskell? generator of Strafunski.
The Haskell standard libraries come with a nice module of pretty-print combinators, originally devised by John Hughes and Simon Peyton-Jones (Text.PrettyPrint.HughesPJ). These combinators allow you to write a function of type X -> Doc to pretty-print values of type X to the abstract document type Doc. The obtained document of type Doc can subseqently be rendered to a String representation with a (parameterizable) render function.
Strafunski
Strafunski is a Haskell-based bundle for generic programming based on the notion of a functional strategy. A functional strategy is a function that is (i) generic, in the sense that it is applicable to values of any type, and (ii) updatable, in the sense that its generic behaviour can be specialized for specific types. For more info see the Strafunski home page.
Generic & updatable pretty-printers
On this page, we explain how Strafunski and pretty-printing combinators can be combined to allow one to construct pretty-printers that are:
generic, in the sense that they can pretty-print values of any type in a generic way,
updatable, in the sense that they can be customized with specific behaviour for values of specific types.
The solution involves a few additional combinators, that are available with Strafunski, and (optionally) some support from the Sdf2Haskell? generator, also available with Strafunski.
See also: media items 2012 stelt hoogleraar softwaresystemen aan #8221;, news item in Computable, May 2012. naar een transparante softwaremarkt, Dossier ...
Home Publications In the News Events 2009 2009 Tools 2LT CoddFish XsdMetz SdfMetz MatchO Strafunski Related Product Certification at SIG TFM Seminar group pages ...
This page lists several downloads related to Strafunski: Sdf2HaskellDownloads HaskellATermLibraryDownloads StrategyLibDownloads Strafunski can also ...
!MatchO Matching Objects What is !MatchO? !MatchO provides support for matching objects within Java in the form of a Pattern interface which has various implementations ...
The following is a list of student project proposals. Grammar Engineering In many areas of computing, languages play a central role. Programming languages, data ...
TWiki.Personal/Joost Web Preferences The following settings are web preferences of the TWiki.Personal/Joost web. These preferences overwrite the site level preferences ...
My current activities are listed here. Concluded activities follow below (incomplete). Organization of GTTSE 2005 (OC Chair) Moderator of PUReCafe. ...
The UMinho Haskell Libraries contain support for representing and operating on relations ( graphs). For a snapshot see: http://www.di.uminho.pt/~joost.visser ...
This page explains how to create, customize, and use updatable pretty printers in Haskell, using the support offered by the Sdf2Haskell generator of Strafunski. Background ...
Version 2.3 Sdf2Haskell 2.3.tar.gz (full distribution) Sdf2Haskell rts 2.3.zip (run time stuff only, i.e. what you need to use generated code) Tested with ...
This is a subscription service to be automatically notified by e mail when topics change in this Personal/Joost web. This is a convenient service, so you do not ...
Joost Visser is Head of Research at the Software Improvement Group (SIG) in Amsterdam, The Netherlands. In that role, Joost is responsible for innovation of tools and services, academic relations, internship coordination, and general research. Joost also holds a part-time position as Professor of "Large-Scale Software Systems" at the Radboud University Nijmegen, The Netherlands.
Joost has worked for SIG before: in 2002-2003 he contributed to the initiation of Software Risk Assessment and Sofware Monitoring services. In the meantime, Joost was a researcher in the LMF Group at the Departamento de Informática of the Universidade do Minho in Braga, Portugal, and member of the Computer Science and Technology Center (CCTC). Joost carried out his PhD research at the Centre for Mathematics and Computer Science (CWI) in Amsterdam.
PC member for ICSM 2012 Industry Track: 28th IEEE International Conference on Software Maintenance
PC member for SQM 2012: 6th International Workshop on Software Quality and Maintainability
Track chair for QUATIC 2012: Thematic track Quality in ICT Evolution of the 8th International Conference on the Quality of Information and Communications Technology
PC member for GREENS 2012: First International Workshop on Green and Sustainable Software
Organizer of MTD 2012: 3rd International Workshop on Managing Technical Debt
PC member for CSMR 2012: 16th European Conference on Software Maintenance and Reengineering
PC member for the Quality Evolution in ICT track of QUATIC 2010: the 7th International Conference on the Quality of Information and Communications Technology.
PC member for SOAME: the workshop on SOA Migration and Evolution 2010.
PC member for SQM 2010: the 4th International Workshop on Software Quality and Maintainability.
PC member for REMIDI 2010: the 4th International Workshop on Tool-Supported Development and Management in Distributed Software Projects.
PC member for CSMR 2010: the 14th European Conference on Software Maintenance and Reengineering.
PC member for OpenCert 2010: 4th International Workshop on Foundations and Techniques for Open Source Software Certification.
PC member for LDTA 2010: the 10th Workshop on Language Descriptions, Tools and Applications.
PC member for IWPSE-EVOL 2009: the Joint 10th International Workshop on Principles of Software Evolution (IWPSE) and 5th International ERCIM Workshop on Software Evolution (EVOL).
Organizer of GTTSE 2009: The 3rd International Summer School on Generative and Transformational Techniques in Software Engineering.
Workshop chair of SQM 2009: Third International Workshop on Software Quality and Maintainability.
PC member for PEPM 2009: ACM SIGPLAN 2009 Workshop on Partial Evaluation and Program Manipulation.
My current activities are listed here. Concluded activities follow below (incomplete). Organization of GTTSE 2005 (OC Chair) Moderator of PUReCafe. ...
!MatchO Matching Objects What is !MatchO? !MatchO provides support for matching objects within Java in the form of a Pattern interface which has various implementations ...
Home Publications In the News Events 2009 2009 Tools 2LT CoddFish XsdMetz SdfMetz MatchO Strafunski Related Product Certification at SIG TFM Seminar group pages ...
See also: media items 2012 stelt hoogleraar softwaresystemen aan #8221;, news item in Computable, May 2012. naar een transparante softwaremarkt, Dossier ...
The UMinho Haskell Libraries contain support for representing and operating on relations ( graphs). For a snapshot see: http://www.di.uminho.pt/~joost.visser ...
Version 2.3 Sdf2Haskell 2.3.tar.gz (full distribution) Sdf2Haskell rts 2.3.zip (run time stuff only, i.e. what you need to use generated code) Tested with ...
This page lists several downloads related to Strafunski: Sdf2HaskellDownloads HaskellATermLibraryDownloads StrategyLibDownloads Strafunski can also ...
The following is a list of student project proposals. Grammar Engineering In many areas of computing, languages play a central role. Programming languages, data ...
This page explains how to create, customize, and use updatable pretty printers in Haskell, using the support offered by the Sdf2Haskell generator of Strafunski. Background ...
This is a subscription service to be automatically notified by e mail when topics change in this Personal/Joost web. This is a convenient service, so you do not ...
TWiki.Personal/Joost Web Preferences The following settings are web preferences of the TWiki.Personal/Joost web. These preferences overwrite the site level preferences ...
This is a subscription service to be automatically notified by e-mail when topics change in this Personal/Joost web. This is a convenient service, so you do not have to come back and check all the time if something has changed. To subscribe, please add a bullet with your WikiName in alphabetical order to this list:
Format: <space><space><space>, followed by: * Main.yourWikiName (if you want that the e-mail address in your home page is used) * Main.yourWikiName - yourEmailAddress (if you want to specify a different e-mail address) * Main.anyTWikiGroup (if you want to notify all members of a particular TWikiGroup)
Related topics:TWikiUsers, TWikiRegistration
The following settings are web preferences of the TWiki.Personal/Joost web. These preferences overwrite the site-level preferences in TWikiPreferences, and can be overwritten by user preferences (your personal topic, i.e. TWikiGuest in the TWiki.Main web)
Preferences:
If yes, set SITEMAPLIST to on, do not set NOSEARCHALL, and add the "what" and "use to..." description for the site map. Make sure to list only links that include the name of the web, e.g. Personal/Joost.Topic links.
Set SITEMAPLIST = off
Set SITEMAPWHAT = Home Page of Joost Visser
Set SITEMAPUSETO =
Exclude web from a web="all" search: (Set to on for hidden webs)
Set NOSEARCHALL =
Default template for new topics and form(s) for this web:
WebTopicEditTemplate? : Default template for new topics in this web. (Site-level is used if topic does not exist)
Web preferences that are not allowed to be overridden by user preferences:
Set FINALPREFERENCES = WEBTOPICLIST, DENYWEBVIEW, ALLOWWEBVIEW, DENYWEBCHANGE, ALLOWWEBCHANGE, DENYWEBRENAME, ALLOWWEBRENAME
Notes:
A preference is defined as: 6 spaces * Set NAME = value Example:
Set WEBBGCOLOR = #FFFFC0
Preferences are used as TWikiVariables by enclosing the name in percent signs. Example:
When you write variable %WEBBGCOLOR% , it gets expanded to #999966 .
The sequential order of the preference settings is significant. Define preferences that use other preferences first, i.e. set WEBCOPYRIGHT before WIKIWEBMASTER since %WEBCOPYRIGHT% uses the %WIKIWEBMASTER% variable.
You can introduce new preferences variables and use them in your topics and templates. There is no need to change the TWiki engine (Perl scripts).
TWiki's Personal/Joost web
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost
The Personal/Joost web of TWiki. TWiki is a Web-Based Collaboration Platform for the Corporate World.en-usCopyright 2020 by contributing authorsTWiki Administrator [webmaster@di.uminho.pt]The contributing authors of TWikiTWikiDIUM.Personal/Joost
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost
/twiki/pub/Main/LocalLogos/um_eengP.jpgPublicationList
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/PublicationList
var gaJsHost (("https:" document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src '" gaJsHost "google analytics ... (last changed by JoostVisser)2012-07-24T06:03:32ZJoostVisserWebHome
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/WebHome
var gaJsHost (("https:" document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src '" gaJsHost "google analytics ... (last changed by JoostVisser)2012-06-04T01:01:25ZJoostVisserNewsItems
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/NewsItems
See also: media items 2012 stelt hoogleraar softwaresystemen aan #8221;, news item in Computable, May 2012. naar een transparante softwaremarkt, Dossier ... (last changed by JoostVisser)2012-05-25T21:05:42ZJoostVisserMenuTopics
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/MenuTopics
Home Publications In the News Events 2009 2009 Tools 2LT CoddFish XsdMetz SdfMetz MatchO Strafunski Related Product Certification at SIG TFM Seminar group pages ... (last changed by JoostVisser)2011-07-02T16:20:30ZJoostVisserWebLeftBar
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/WebLeftBar
.zg div {margin:0px 5px 5px 0px; width:117px;} .zg div inner {border: solid 1px #999966; background color:#999966; color:#FFFFFF; text align:center; font family:arial ... (last changed by JoostVisser)2009-11-14T11:08:16ZJoostVisserStrafunskiDowloads
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/StrafunskiDowloads
This page lists several downloads related to Strafunski: Sdf2HaskellDownloads HaskellATermLibraryDownloads StrategyLibDownloads Strafunski can also ... (last changed by JoostVisser)2009-11-08T11:23:50ZJoostVisserStrategyLibDownloads
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/StrategyLibDownloads
Version 5.0 StrategyLib 5.0.zip Tested with: GHC 6.4.1. (last changed by JoostVisser)2007-07-19T07:04:45ZJoostVisserMatchO
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/MatchO
!MatchO Matching Objects What is !MatchO? !MatchO provides support for matching objects within Java in the form of a Pattern interface which has various implementations ... (last changed by JoostVisser)2007-07-11T21:46:16ZJoostVisserWebSearchAdvanced
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/WebSearchAdvanced
(last changed by TWikiGuest)2007-05-17T14:51:20ZguestStudentProjectProposals
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/StudentProjectProposals
The following is a list of student project proposals. Grammar Engineering In many areas of computing, languages play a central role. Programming languages, data ... (last changed by JoostVisser)2007-02-16T17:28:18ZJoostVisserWebCss
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/WebCss
.natMiddle .natExternalLink:after { margin left:0px; margin right:0px; content:""; } .natRevision { width:0px; height:0px; overflow:hidden; } .natBreadCrumbs ... (last changed by JoostVisser)2007-02-16T17:09:03ZJoostVisserWebPreferences
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/WebPreferences
TWiki.Personal/Joost Web Preferences The following settings are web preferences of the TWiki.Personal/Joost web. These preferences overwrite the site level preferences ... (last changed by JoostVisser)2007-02-16T16:54:49ZJoostVisserWebSideBar
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/WebSideBar
(last changed by JoostVisser)2007-02-14T19:05:40ZJoostVisserListOfActivities
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/ListOfActivities
My current activities are listed here. Concluded activities follow below (incomplete). Organization of GTTSE 2005 (OC Chair) Moderator of PUReCafe. ... (last changed by JoseBacelarAlmeida)2007-02-12T19:37:47ZJoseBacelarAlmeidaRelationsInHaskell
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/RelationsInHaskell
The UMinho Haskell Libraries contain support for representing and operating on relations ( graphs). For a snapshot see: http://www.di.uminho.pt/~joost.visser ... (last changed by JoostVisser)2006-06-14T22:29:37ZJoostVisserHaskellATermLibraryDownloads
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/HaskellATermLibraryDownloads
Version 1.5 haterm 1.5.zip Tested with: GHC 6.4.1. Version 1.4 haterm 1.4.zip (last changed by JoostVisser)2004-12-21T18:26:52ZJoostVisser
MatchO provides support for matching objects within Java in the form of a Pattern interface which has various implementations for various types of objects. The underlying ideas are explained in the paper:
Joost Visser, Matching Objects Without Language Extension. Accepted for publication in the Dec/Nov 2006 issue of the Journal of Object Technology. Until that time, a draft version is available.
FUNCTIONALITY
MatchO currently sports the following features:
Pattern matching on lists and arrays.
Pattern matching on various tree representations:
Antlr's abstract syntax trees (antlr.collections.AST).
Maximally shared annotated terms of the ATerm Library (aterm.ATerm).
JJTraveler's visitables (jjtraveler.Visitable).
Non-linear pattern matching.
Substitution.
Generic pattern-matching (covering all types mentioned above).
Mixing of patterns and visitors (for matching at arbitrary depths and for 'active patterns').
MatchO can be used in combination with parser generators like Antlr or JJForester to perform pattern matching on parse trees.
USAGE
To learn how to use the library, see the paper.
Since the full MatchO library provides matching behaviour for a range of tree representations, you might be interested in only downloading a sub-set that fits your needs. The following jars are available:
Joost Visser, Matching Objects Without Language Extension. Accepted for publication in the Dec/Nov 2006 issue of the Journal of Object Technology. Draft version: pdf.
If you visited this page before November 2005, you found here previous snapshots of MatchO which is now obsolete. If you have questions about such previous versions, please contact me.
Devnology Podcast 019, Interview with Per John and Joost Visser of the Software Improvement Group about software quality and related topics, June 2011.
Jelle de Groot, Ariadi Nugroho, Thomas Bäck, and Joost Visser, What is the value of your software?, In proceedings of the Third International Workshop on Managing Technical Debt (MTD 2012), 2012. SIG
Aigerim Issabayeva, Ariadi Nugroho, and Joost Visser, Issue Handling Performance in Proprietary Software Projects, In proceedings of the 9th Working Conference on Mining Software Repositories (MSR 2012), 2012. SIG
Andrzej Olszak, Eric Bouwers, Bo Nørregaard Jørgensen, and Joost Visser, Detection of Seed Methods for Quantification of Feature Confinement, In proceedings of the 50th International Conference on Objects, Models, Components, Patterns (TOOLS Europe 2012), 2012. SIG
Steven Raemaekers, Arie van Deursen, and Joost Visser, An Analysis of Dependence on Third-party Libraries in Open Source and Proprietary Systems, in proceedings of the Sixth International Workshop on Software Quality and Maintainability (SQM 2012), 2012. SIG
Joost Visser, Change is the Constant, keynote article in ERCIM News 88, special issue on Evolving Software, January 2012.
2011
Eric Bouwers and Joost Visser, Continuous Architecture Evaluation, Abstract of presentation at the 10th BElgian-NEtherlands software eVOLution seminar (BENEVOL 2011). PDF
Joost Visser, Improving Software Quality with Clear, Standards-Based Metricswebinar, IT Metrics & Productivity Institute (ITMPI), Computer Aid, November 2011.
Tiago L. Alves, José Pedro Correia, and Joost Visser, Benchmark-based Aggregation of Metrics to Ratings, In Proceedings of the Joint Conference of the 21th International Workshop on Software Measurement (IWSM) and the 6th International Conference on Software Process and Product Measurement (Mensura), pp20-29, IEEE Computer Society, 2011. SIGDOI
Eric Bouwers, Arie van Deursen, and Joost Visser, Dependency Profiles for Software Architecture Evaluations, In proceedings of the 27th IEEE International Conference on Software Maintenance (ICSM 2011), p540-543, IEEE, 2011. DOITRSIG
Eric Bouwers, José Pedro Correia, Arie van Deursen, and Joost Visser, Quantifying the Analyzability of Software Architectures, in proceedings of the 9th Working IEEE/IFIP Conference on Software Architecture (WICSA 2011), pp. 83-92,IEEE Computer Society, 2011. SIGDOI
Ariadi Nugroho, Tobias Kuipers, and Joost Visser, An Empirical Model of Technical Debt and Interest, in proceedings of the 2nd International Workshop on Managing Technical Debt (MTD 2011), pages 1-8, ACM, 2011. SIGDOI
Dennis Bijlsma, Miguel Ferreira, Bart Luijten, and Joost Visser, Faster Issue Resolution with Higher Technical Quality of Software, Software Quality Journal, 2011. DOI
Robert Baggen, José Pedro Correia, Katrin Schill, and Joost Visser, Standardized Code Quality Benchmarking for Improving Software Maintainability, Software Quality Journal, 2011. DOI
Jácome Cunha, Joost Visser, Tiago Alves, and João Saraiva, Type-safe Evolution of Spreadsheets, In proceedings of the 14th international conference on Fundamental Approaches to Software Engineering (FASE 2011), Lecture Notes in Computer Science, Volume 6603, pp 186-201, Springer, 2011. DOIPDF
Generative and Transformational Techniques in Software Engineering III, International Summer School, GTTSE 2009, Braga, Portugal, July 6-11, 2009. Revised Papers, editors: João M. Fernandes, Ralf Lämmel, Joost Visser and João Saraiva, Lecture Notes in Computer Science, Volume 6491, 2011. DOIebook
Tiago Alves, Christiaan Ypma, and Joost Visser, Deriving Metric Thresholds from Benchmark Data, In proceedings of the 26th IEEE International Conference on Software Maintenance (ICSM 2010), September 12-18, 2010, Timișoara, Romania, IEEE Computer Society, 2010. PDFSIGDOI
Bart Luijten, Joost Visser, and Andy Zaidman (TU Delft), Assessment of Issue Handling Efficiency, In proceedings of the 7th IEEE Working Conference on Mining Software Repositories (MSR 2010), May 2-3, 2010, Cape Town, South Africa, pages 94-97, IEEE Computer Society, 2010. PDFSIGDOI
Bart Luijten and Joost Visser, Faster Defect Resolution with Higher Technical Quality of Software, In proceedings of the 4th International Workshop on Software Quality and Maintainability (SQM 2010), March 15, 2010, Madrid, Spain, 2010. PDFSIG
Robert Baggen, Katrin Schill, and Joost Visser, Standardized Code Quality Benchmarking for Improving Software Maintainability, In proceedings of the 4th International Workshop on Software Quality and Maintainability (SQM 2010), March 15, 2010, Madrid, Spain, 2010. PDFSIG
Eric Bouwers, Carola Lilienthal, Joost Visser, and Arie van Deursen, A Cognitive Model for Software Architecture Complexity, In Proceedings of the 18th International Conference on Program Comprehension (ICPC 2010), IEEE Computer Society, 2010. TRDOI
Alcino Cunha and Joost Visser, Transformation of Structure-Shy Programs with Application to XPath Queries and Strategic Functions, In Science of Computer Programming, Volume 76, Issue 6, 1 June 2011, Pages 516-539, Special issue on Partial Evaluation and Program Manipulation (selected paper of PEPM 2007), Elsevier, 2010. DOI
Jácome Cunha, João Saraiva, and Joost Visser, Discovery-based Edit Assistance for Spreadsheets, In proceedings of 2009 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC 2009), pages 233-237, IEEE Computer Society, 2009. DOI
Paulo F. Silva, Joost Visser, and José N. Oliveira, Galois: A Language for Proofs Using Galois Connections and Fork Algebras, In proceedings of the ACM SIGSAM 2009 International Workshop on Programming Languages for Mechanized Mathematics Systems (PLMMS 2009), to appear, 2009. PDF
Tiago L. Alves and Joost Visser, Static Estimation of Test Coverage, In proceedings of the Ninth IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2009), pages 55-64, IEEE Computer Society, 2009. DOISIG
Jose Pedro Correia, Yiannis Kanellopoulos, and Joost Visser, A Survey-based Study of the Mapping of System Properties to ISO/IEC 9126 Maintainability Characteristics, In proceedings of the 25th IEEE International Conference on Software Maintenance (ICSM 2009), pages 61-70, IEEE Computer Society, 2009. DOISIG
Eric Bouwers, Joost Visser, and Arie van Deursen, Criteria for the Evaluation of Implemented Architectures, In proceedings of the 25th IEEE International Conference on Software Maintenance (ICSM 2009), pages 73-82, IEEE Computer Society, 2009. DOISIG
José Pedro Correia, Yiannis Kanellopoulos, and Joost Visser, Mapping System Properties to ISO/IEC 9126 Maintainability Characteristics, In the Third International Workshop on Software Quality and Maintainability (SQM 2009), to appear.
Christos Tjortjis and Joost Visser: 3rd International Workshop on Software Quality and Maintainability. In proceedings of the 13th European Conference on Software Maintenance and Reengineering (CSMR 2009), pages 271-272, IEEE, 2009. DOI
Jácome Cunha, João Saraiva, and Joost Visser, From Spreadsheets to Relational Databases and Back, In proceedings of the 2009 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-based Program Manipulation (PEPM 2009), pages 179-188, ACM, 2009. DOI
2008
Tiago L. Alves and Joost Visser, A Case Study in Grammar Engineering, In proceedings of the 1st International Conference on Software Language Engineering (SLE 2008), pages 285-304, Lecture Notes in Computer Science 5452, Springer, 2008. DOISIG
Thomas Dean and Joost Visser, Industrial Realities of Program Comprehension (IRPC 2008), In proceedings of the 16th IEEE International Conference on Program Comprehension (ICPC 2008), pp. 283-284, IEEE Computer Society Press, 2008 DOI
José Pedro Correia and Joost Visser, Benchmarking Technical Quality of Software Products, In proceedings of the 15th Working Conference on Reverse Engineering (WCRE 2008), pages 297-300, IEEE Computer Society Press, 2008. DOISIG
José Pedro Correia and Joost Visser, Certification of Technical Quality of Software, In Proceedings of the 2nd International Workshop on Foundations and Techniques for Open Source Software Certification (OpenCert 2008), satellite event of the 4th International Conference on Open Source Systems (OSS 2008), Research Report 398, pages 35-51, United Nations University – International Institute for Software Technology (UNU-IIST), 2008. PDF See also Software Product Certification by SIG and TÜViT.
Tiago L. Alves, Paulo F. Silva, and Joost Visser, Constraint-aware Schema Transformation, In proceedings of The Ninth International Workshop on Rule-Based Programming (Rule 2008). (PDF) SIG
Joost Visser, Coupled Transformation of Schemas, Documents, Queries, and Constraints, In Proceedings of the 3rd International Workshop on Automated Specification and Verification of Web Systems (WWV 2007), ENTCS, volume 200, issue 3, pages 3-23, 2008. DOI
Yiannis Kanellopoulos, Ilja Heitlager, Christos Tjortjis, and Joost Visser, Interpretation of Source Code Clusters in Terms of ISO/IEC-9126 Quality Characteristics, In proceedings of the 12th European Conference on Software Maintenance and Reengineering, (CSMR 2008), pages 63-72, IEEE Computer Society. DOI
Generative and Transformational Techniques in Software Engineering II, International Summer School, GTTSE 2007, Braga, Portugal, July 2-7. 2007, Revised Papers, Lämmel, Ralf; Visser, Joost; Saraiva, Joao (Eds.), Lecture Notes in Computer Science, Vol. 5235, 2008.
2007
Ilja Heitlager, Tobias Kuipers, and Joost Visser, Observing Unit Test Maturity in the Wild, Presentation abstract, 13th Dutch Testing Day 2007 (Test Dag). (PDF)
Ilja Heitlager, Tobias Kuipers, and Joost Visser, A Practical Model for Measuring Maintainability, In proceedings of the 6th International Conference on the Quality of Information and Communications Technology (QUATIC 2007), pages 30-39, IEEE Computer Society Press, 2007. (PDF) DOISIG
Huib van den Brink, Rob van der Leek, and Joost Visser, Quality Assessment for Embedded SQL, In proceedings of the Seventh IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2007), IEEE Computer Society Press, 2007. (PDF) SIG
Luís Barbosa, Jácome Cunha and Joost Visser, A Type-level Approach to Component Prototyping, In SYANCO '07: International workshop on Synthesis and analysis of component connectors, pages 23-36, ACM, September, 2007. (PDF,DOI)
Tobias Kuipers, Joost Visser, and Gerjon de Vries, Monitoring the Quality of Outsourced Software, In proceedings of the Workshop on Tools for Managing Globally Distributed Software Development (TOMAG 2007), 2007. (PDF) SIG
Tobias Kuipers and Joost Visser, Maintainability Index Revisited - position paper, System Quality and Maintainability (SQM 2007), satellite of CSMR 2007. (PDF)
Tiago Alves and Joost Visser, SdfMetz: Extraction of Metrics and Graphs From Syntax Definitions - Tool Demonstration, In Seventh Workshop on Language Descriptions, Tools and Applications (LDTA 2007), ENTCS, to appear, 2007. (PDF)
Alcino Cunha and Joost Visser, Transformation of Structure-Shy Programs, Applied to XPath Queries and Strategic Functions, In Proceedings of the 2007 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, PEPM 2007, pages 11-20, ACM 2007. DOIPDF
Pablo Berdaguer, Alcino Cunha, Hugo Pacheco, Joost Visser. Coupled Schema Transformation and Data Conversion For XML and SQL. In M. Hanus (Ed.), PADL 2007: Practical Aspects of Declarative Languages, LNCS 4354, pp. 290-304, Springer, 2007. (PDF). This paper is supported by the 2LT library.
2006
Joost Visser, Matching Objects Without Language Extension. In Journal of Object Technology, Vol 5, No 8, Nov/Dec 2006, pages 81-100. (HTML, PDF) The paper is supported by the MatchO library.
Alexandra Silva and Joost Visser, Strong Types for Relational Databases (Functional Pearl). In Haskell '06: Proceedings of the 2006 ACM SIGPLAN workshop on Haskell, pp 25-36, ACM Press. pdf This paper is supported by the CoddFish library.
Alcino Cunha, Joost Visser. Strongly Typed Rewriting For Coupled Software Transformation. In Proceedings of the 7th International Workshop on Rule Based Programming (RULE 2006), ENTCS, Volume 174, Issue 1, April 2007, Pages 17-34. pdf This paper is supported by the 2LT library.
Alcino Cunha, José Nuno Oliveira, Joost Visser. Type-safe Two-level Data Transformation. In Formal Methods 2006, LNCS 4085, pp. 284-299, 2006. Springer-Verlag. pdf A preliminary version with additional material appended appeared as technical report DI-PURe-06.03.01 (see below).
Alcino Cunha, José Nuno Oliveira, Joost Visser. Type-safe Two-level Data Transformations -- with derecursivation and dynamic typing, Technical Report DI-PURe-06.03.01, Departamento de Informática, Universidade do Minho, March 2006. pdf This paper is supported by the 2LT library.
Joost Visser Structure Metrics for XML Schema. Proceedings of XATA 2006. pdf This paper is supported by the XsdMetz tool.
Generative and Transformational Techniques in Software Engineering, International Summer School, GTTSE 2005, Braga, Portugal, July 4-8, 2005. Revised Papers, Lämmel, Ralf; Saraiva, João; Visser, Joost (Eds.), Lecture Notes in Computer Science, Vol. 4143, 2006.
2005
Tiago Alves and Joost Visser, Metrication of SDF Grammars. Technical Report, DI-PURe-05.05.01, Departamento de Informática, Universidade do Minho, May 2005. pdf This paper is supported by the SdfMetz tool.
Tiago Alves and Joost Visser, Grammar-centered Development of VDM Support. In Fitzgerald, J. S., Larsen, P. G., Plat, N. (eds.), Towards Next Generation Tools for VDM: Contributions to the First International Overture Workshop, Newcastle, July 2005, Technical Report CS-TR969, School of Computing Science, Newcastle University, June 2006. (PDF)
Joost Visser, J.N. Oliveira, L.S. Barbosa, J.F. Ferreira, and A. Mendes, Camila Revival: VDM meets Haskell. In Fitzgerald, J. S., Larsen, P. G., Plat, N. (eds.), Towards Next Generation Tools for VDM: Contributions to the First International Overture Workshop, Newcastle, July 2005, Technical Report CS-TR969, School of Computing Science, Newcastle University, June 2006. (PDF)
Tiago Alves and Joost Visser, Development of an Industrial Strength Grammar for VDM. Technical Report, DI-PURe-05.04.29, Departamento de Informática, Universidade do Minho, April 2005. pdf
Tiago Alves, Paulo Silva, Joost Visser, and José Nuno Oliveira. Strategic Term Rewriting And Its Application To A VDM-SL to SQL Conversion. Formal Methods 2005, Lecture Notes in Computer Science, Volume 3582, July 2005, Pages 399-414, Springer. pdf
2004
Tobias Kuipers en Joost Visser. Portal voor Broncodeanalyse. In Informatie, juni 2004, jaargang 46. pdf
João Saraiva and Joost Visser. Tutorial on Strategic Programming Across Programming Paradigms. 8th Brazilian Symposium on Programming Languages (SBLP 2004). (PDF)
Arie van Deursen and Joost Visser. Source Model Analysis using the JJTraveler Visitor Combinator Framework. Software Practice and Experience 34(14):1345-1379, 2004. Preliminary version: pdf
Tobias Kuipers and Joost Visser. A Tool-based Methodology for Software Portfolio Monitoring. International Workshop on Software Audits and Metrics (SAM 2004), April 2004, Porto, Portugal. (PDF) (slides)
Tobias Kuipers en Joost Visser. Evolueren met Portfoliomonitoring. In Informatie, jan-feb 2004, jaargang 46. pdf
2003
Ralf Lämmel, Eelco Visser, and Joost Visser. Strategic Programming Meets Adaptive Programming. In Proc. of Aspect-Oriented Software Development (AOSD'03), pages 168--177. ACM Press 2003. pdfbib
Joost Visser. Generic Traversal over Typed Source Code Representations. Phd thesis, University of Amsterdam, February 2003. pdfbib
Ralf Lämmel and Joost Visser. A Strafunski Application Letter. In PADL 2003: Practical Aspects of Declarative Languages, volume 2562 of Lecture Notes in Computer Science (LNCS), pages 357-375. Springer, January 2003. pdfbib
Tobias Kuipers and Joost Visser, Object-oriented tree traversal with JJForester. In Science of Computer Programming 47(1): 59-87, 2003. An earlier version appeared in ENTCS 44(2), 2001.
2002
Ralf Lämmel and Joost Visser. Design Patterns for Functional Strategic Programming. In Proc. of Third ACM SIGPLAN Workshop on Rule-Based Programming RULE'02, Pittsburgh, USA, October 2002. ACM Press. pdf, bib.
Arie van Deursen and Joost Visser. Building program understanding tools using visitor combinators. In 10th International Workshop on Program Comprehension (IWPC 2002), pages 137-146. IEEE Computer Society, 2002. pdfbib
Ralf Lämmel and Joost Visser. Typed combinators for generic traversal. In PADL 2002: Practical Aspects of Declarative Languages, volume 2257 of Lecture Notes in Computer Science (LNCS). Springer, 2002. pdf, bib.
Ralf Lämmel and Joost Visser. Strategic polymorphism requires just two combinators! In Preproceedings of IFL 2002, Implementation of Functional Languages, September 2002.
Merijn de Jonge and Joost Visser. Workshop on Generative Programming 2002 (GP2002), Lecture Notes in Computer Science, Volume 2319, Jan 2002, Page 331.
Merijn de Jonge and Joost Visser. Grammars As Feature Diagrams. Presented at the Generative Programming Workshop 2002, Austin, Texas. pdfbib
Arie van Deursen, Paul Klint, and Joost Visser. Domain-Specific Languages. In The Encyclopedia of Library and Information Science. Marcel Dekker Inc. 2002, pages 113-127.
Arie van Deursen, Paul Klint, and Joost Visser. Domain-Specific Languages. In The Encyclopedia of Microcomputers. Marcel Dekker Inc. 2002, pages 53-68.
2001
Joost Visser. Visitor combination and traversal control. ACM SIGPLAN Notices, 36(11):270-282, November 2001. OOPSLA 2001 Conference Proceedings: Object-Oriented Programming Systems, Languages, and Applications, Preliminary version: pdf, bib.
Tobias Kuipers and Joost Visser. Object-oriented tree traversal with JJForester. In Mark van den Brand and Didier Parigot, editors, Electronic Notes in Theoretical Computer Science, volume 44(2). Elsevier Science Publishers, 2001 (Proc. of Language Descriptions, Tools and Applications (LDTA 2001)). pdf, bib.
Mark van den Brand, Jan Heering, Hayco de Jong, Merijn de Jonge, Tobias Kuipers, Paul Klint, Leon Moonen, Pieter Olivier, Jeroen Scheerder, Jurgen Vinju, Eelco Visser, and Joost Visser. The ASF+SDF Meta-Environment: a component-based language development environment. In Compiler Construction 2001 (CC 2001), LNCS. Springer, 2001. Tool demo. pdf, bib.
Merijn de Jonge, Eelco Visser, and Joost Visser, Collaborative Software Development. Technical report SEN-R0113, CWI, 2001. ps.Zpdfbib
Merijn de Jonge, Eelco Visser, and Joost Visser. XT: a bundle of program transformation tools - system description. In Mark van den Brand and Didier Parigot, editors, Electronic Notes in Theoretical Computer Science, volume 44(2). Elsevier Science Publishers, 2001 (Proc. of Language Descriptions, Tools and Applications (LDTA 2001)). pdf, bib.
Merijn de Jonge and Joost Visser. XT capita selecta. In Proceedings of the Second Stratego Users Day. To appear, February 2001. pdf, bib.
2000
Merijn de Jonge and Joost Visser. Grammars as contracts. In Generative and Component-based Software Engineering (GCSE), volume 2177 of Lecture Notes in Computer Science (LNCS), Erfurt, Germany, October 2000. Springer. pdf, bib.
Ralf Laemmel, Joost Visser, and Jan Kort. Dealing with large bananas. In Johan Jeuring, editor, Workshop on Generic Programming, Ponte de Lima, July 2000. Technical Report UU-CS-2000-19, Universiteit Utrecht. pdf, bib.
Arie van Deursen, Paul Klint, and Joost Visser. Domain-Specific Languages - An Annotated Bibliography. ACM SIGPLAN Notices, 35(6), June 2000. Supply additions!pdfbib
Ralf Laemmel and Joost Visser. Type-safe functional strategies. In Scottish Functional Programming Workshop, St Andrews, July 2000. Draft Proceedings. pdf.
Jan Kort, Ralf Laemmel, and Joost Visser. Functional transformation systems. In 9th International Workshop on Functional and Logic Programming, Benicassim, Spain, September 2000. pdf, bib.
1999
Merijn de Jonge, Tobias Kuipers, and Joost Visser. HASDF: A Generalized LR-parser Generator for Haskell. Technical Report SEN-R9902, CWI, 1999. bib.
1996
Joost Visser, Evolving Algebras, Master's Thesis, Delft University of Technology, 1996. Archived at ASM Home. Includes an elaborate tutorial on monads and monad transformers (Chapter 9, pages 109-143) using Gofer (precursor of Haskell).
Drafts
Claudia Mónica Necco, José Nuno Oliveira, and Joost Visser, Extended Static Checking By Strategic Rewriting of Pointfree Relational Expressions, Draft.
For pdfs of older publications, see my old home page. Likewise for slides of old talks.
In many areas of computing, languages play a central role. Programming languages, data definition languages, scripting languages, mark-up-languages, query languages, etc. Unfortunately, it is common practise in software engineering to apply mostly ad-hoc techniques when dealing with language syntaxes. Grammar Engineering seeks to remedy this situation by regarding grammars as valueable software artifacts, and applying good engineering practises to their development, deployment, and maintenance.
In this project you will implement a tool-suite for Grammar Engineering. The tool-suite will include (i) support for grammar reconstruction from language reference manuals, (ii) a combinator library for reshaping grammars, and (iii) support for generating parsers, XML shema's, transformation libraries, and other software components from grammars. Your tool-suite will use the Syntax Definition Formalism (SDF) as internal representation format. To design your tool-suite you will take inspiration from published work and previously developed prototypes.
The implementation of this tool-suite will normally require some technology that it is fit to implement all of the above components while this technology should then also benefit from the provided components. Here are some options:
A Haskell-centric approach with combinator parsing.
An ASF+SDF Meta-Environment approach with its SGLR parsing technology.
General-purpose programming languages and main-stream parser generators like ANTLR.
For example, in the Haskell scenario, the tool-suite is implemented in Haskell and it would
be useful for the Haskell programmer. That is, the tool-suite would then help with deploying
Haskell-based parsers, XML components and others while processing SDF grammars as input.
See also: the Grammar Ware page.
Location: The project, or part of it may be conducted at the Vrije Universiteit or CWI in Amsterdam, The Netherlands.
Supervisors: Joost Visser (UMinho), Ralf Laemmel (VU & CWI, The Netherlands)
(back to top)
Benchmarking Generic Programs
Generic Programming encompasses programming techniques that allow the construction of programs that work for just about any kind of data type. Examples of generic programming solutions are Strafunski, traversal functions in ASF+SDF, Generic Haskell, Polytypic Programming, and visitor combinators.
In this project you will perform thorough benchmarking of various generic programming approaches, and investigate some options for improving the efficiency of generic programs. To this end, you will develop a benchmark suite of generic programming problems, and corresponding solutions for each approach under scrutiny. You will investigate both time and space consumption by the various approaches. You will publish your benchmark suite and the results of running it on the internet, such that in future others can take advantage of it when comparing and evaluating generic programming approaches in future.
Location: The project, or part of it may be conducted at the Vrije Universiteit or CWI in Amsterdam, The Netherlands.
Supervisors: Joost Visser (UMinho), Ralf Laemmel (VU & CWI, The Netherlands)
Software Portfolio Monitoring
background
The Software Improvement Group (SIG) offers a tool-based service, called Software
Portfolio Monitoring (SPM). The objective of SPM is to provide ICT management
of large corporations with objective and up-to-date information about their
software portfolio. The method to achieve this is to periodically run software
analysis tools on the entire portfolio, to aggregate and interpret the data
thus obtained, and to present the data in extremely condensed form to the
management board.
The SIG has developed a suite of software analysis tools, which goes by the name
of the Software Analysis Toolkit (SAT). Through a graphical user interface, SAT
allows application of a wide variety of analyses to large legacy software
systems, and to visualize the results. The SAT is interactive and extendible.
Challenge
In this project you will apply the SAT to a number of large software systems.
These will include large high-profile open source software systems, as well as
large proprietary systems owned by some of Holland's largests corporations. You
will apply statistical tools to the acquired data to discover trends, outliers,
and to aggregate the data to a minimal set of meaningful indicators. Finally,
you will produce a presentation of the indicators for each of the analysed
systems, which will serve as a benchmark with which systems to be analysed in
future can be compared.
Location: The project, or part of it, may be conducted at the Software Improvement Group, The Netherlands.
Supervisor: Joost Visser (UMinho)
Software Analysis Development Kit
Background
The Software Improvement Group (SIG) offers several services to its clients that
involve the application of software analysis tools to the software systems of
these clients. To support this, SIG has developed the Software Analysis Toolkit
(SAT). The SAT offers an interactive user interface that allows a user to select
system sources, run all kinds of analyses on them, and visualize the results.
The SAT is extendible. Its architecture consists of a framework that can be
instantiated by supplying specific analysis and visualization components.
Challenge
The SIG wishes to make the SAT available to external parties. Not just to use
SAT, but also to extend it with new analysis and visualization functionality. In
other words, the SAT needs to be turned into a "development platform", analogous
to for instance Sun's Development Kit (SDK).
In this project, you will modify the design of SAT such that it can be used as
a development platform. This implies that you will create and document APIs to
be used by developers of analysis and visualization components. These APIs will
need to be designed around a component model, such that analysis and
visualization components can easily be parameterized and combined. Also, you
will design and create a development community portal, i.e. a website where the
SAT development kit can be downloaded, and where analysis and visualization
components can be shared by the development community.
Location: The project, or part of it, may be conducted at the Software Improvement Group, The Netherlands.
Supervisor: Joost Visser (UMinho)
Spaghetti Surfing
Create a Hierarchical Graph Browser.
In many areas of science and engineering, hierarchical graphs are used to
represented information. (In a hierarchical graph, each node can itself be a
graph again.) These graphs can be stored in a database with a very simple data
model, but containing a huge number of nodes and edges. Unfortunately, when
looking at such a huge graph with an ordinary graph visualization tool, you
will only see a chaotic ball of spaghetti.
In this project, you will use the Graph Visualization Framework to create a
browser for large hierarchical graphs. Your browser will support some filtering
and selection operations that allow interactive exploration of the spaghetti
jungle.
Supervisor: Joost Visser
Unraveling Legacy Software
Create components for unraveling legacy software.
Most software systems used by companies today has resulted from development and
maintenance activities spread over 10 to 30 years. During this time, these
legacy systems have become unmanageably large and complex.
The Software Analysis Toolkit (SAT) has been developed by the Software
Improvement Group (SIG) to support the performance of Software Risk Assessments
on legacy software systems. The SAT has been made available for academic use.
In this project, you will add analysis and/or visualization components to the
SAT. Select the component you will build by discussing some alternatives with
one of SIG's engineers (don't worry they are nice guys). You will be given the
opportunity to run your components via SAT on a few real legacy systems of
considerable size (between 100.000 and 10.000.000 lines of code).
Supervision: Joost Visser
Aspectual Generator for JJTraveler
JJTraveler is a Java framework that allows construction of object graph
traversals in an elegant, combinatorial style. To use JJTraveler within a
particular application, its classes must implement the Visitable interface of
JJTraveler, and an application-specific Visitor class must be generated.
In this project, you will use an aspect-oriented programming tool (AspectJ) to
automatically generate application-specific instantiations of the JJTraveler
framework. This tool allows you, for instance, to insert additional methods at
compilation time into given classes. You can demonstrate that your aspectual
generator works by applying it to an interesting class hierarchy from some
arbitrary open source project.
Supervision: Joost Visser
Marriage of ANTLR and JJTraveler
ANTLR is a popular parser generator for Java. During parsing it can create a
so-called heterogeneous Abstract Syntax Tree (AST). Unfortunately, you need to
define the classes of the AST nodes manually, even though they could be derived
from the grammar.
JJTraveler is a Java framework that allows construction of object graph
traversals in an elegant, combinatorial style. To use JJTraveler within a
particular application, its classes must implement the Visitable interface of
JJTraveler, and an application-specific Visitor class must be generated.
In this project you will extend ANTLR with the capability of generating a class
hierarchy from an input grammar. These classes will implement the Visitable
interface of the JJTraveler framework. The generator will also insert
statements into the grammar that create the various nodes of these classes. You
can demonstrate that your marriage is successful by applying it to a large
ANTLR grammar from the web, and implement a few non-trivial visitors.
Supervision: Joost Visser
This page explains how to create, customize, and use updatable pretty-printers in Haskell, using the support offered by the Sdf2Haskell? generator of Strafunski.
The Haskell standard libraries come with a nice module of pretty-print combinators, originally devised by John Hughes and Simon Peyton-Jones (Text.PrettyPrint.HughesPJ). These combinators allow you to write a function of type X -> Doc to pretty-print values of type X to the abstract document type Doc. The obtained document of type Doc can subseqently be rendered to a String representation with a (parameterizable) render function.
Strafunski
Strafunski is a Haskell-based bundle for generic programming based on the notion of a functional strategy. A functional strategy is a function that is (i) generic, in the sense that it is applicable to values of any type, and (ii) updatable, in the sense that its generic behaviour can be specialized for specific types. For more info see the Strafunski home page.
Generic & updatable pretty-printers
On this page, we explain how Strafunski and pretty-printing combinators can be combined to allow one to construct pretty-printers that are:
generic, in the sense that they can pretty-print values of any type in a generic way,
updatable, in the sense that they can be customized with specific behaviour for values of specific types.
The solution involves a few additional combinators, that are available with Strafunski, and (optionally) some support from the Sdf2Haskell? generator, also available with Strafunski.
See also: media items 2012 stelt hoogleraar softwaresystemen aan #8221;, news item in Computable, May 2012. naar een transparante softwaremarkt, Dossier ...
Home Publications In the News Events 2009 2009 Tools 2LT CoddFish XsdMetz SdfMetz MatchO Strafunski Related Product Certification at SIG TFM Seminar group pages ...
This page lists several downloads related to Strafunski: Sdf2HaskellDownloads HaskellATermLibraryDownloads StrategyLibDownloads Strafunski can also ...
!MatchO Matching Objects What is !MatchO? !MatchO provides support for matching objects within Java in the form of a Pattern interface which has various implementations ...
The following is a list of student project proposals. Grammar Engineering In many areas of computing, languages play a central role. Programming languages, data ...
TWiki.Personal/Joost Web Preferences The following settings are web preferences of the TWiki.Personal/Joost web. These preferences overwrite the site level preferences ...
My current activities are listed here. Concluded activities follow below (incomplete). Organization of GTTSE 2005 (OC Chair) Moderator of PUReCafe. ...
The UMinho Haskell Libraries contain support for representing and operating on relations ( graphs). For a snapshot see: http://www.di.uminho.pt/~joost.visser ...
This page explains how to create, customize, and use updatable pretty printers in Haskell, using the support offered by the Sdf2Haskell generator of Strafunski. Background ...
Version 2.3 Sdf2Haskell 2.3.tar.gz (full distribution) Sdf2Haskell rts 2.3.zip (run time stuff only, i.e. what you need to use generated code) Tested with ...
This is a subscription service to be automatically notified by e mail when topics change in this Personal/Joost web. This is a convenient service, so you do not ...
Joost Visser is Head of Research at the Software Improvement Group (SIG) in Amsterdam, The Netherlands. In that role, Joost is responsible for innovation of tools and services, academic relations, internship coordination, and general research. Joost also holds a part-time position as Professor of "Large-Scale Software Systems" at the Radboud University Nijmegen, The Netherlands.
Joost has worked for SIG before: in 2002-2003 he contributed to the initiation of Software Risk Assessment and Sofware Monitoring services. In the meantime, Joost was a researcher in the LMF Group at the Departamento de Informática of the Universidade do Minho in Braga, Portugal, and member of the Computer Science and Technology Center (CCTC). Joost carried out his PhD research at the Centre for Mathematics and Computer Science (CWI) in Amsterdam.
PC member for ICSM 2012 Industry Track: 28th IEEE International Conference on Software Maintenance
PC member for SQM 2012: 6th International Workshop on Software Quality and Maintainability
Track chair for QUATIC 2012: Thematic track Quality in ICT Evolution of the 8th International Conference on the Quality of Information and Communications Technology
PC member for GREENS 2012: First International Workshop on Green and Sustainable Software
Organizer of MTD 2012: 3rd International Workshop on Managing Technical Debt
PC member for CSMR 2012: 16th European Conference on Software Maintenance and Reengineering
PC member for the Quality Evolution in ICT track of QUATIC 2010: the 7th International Conference on the Quality of Information and Communications Technology.
PC member for SOAME: the workshop on SOA Migration and Evolution 2010.
PC member for SQM 2010: the 4th International Workshop on Software Quality and Maintainability.
PC member for REMIDI 2010: the 4th International Workshop on Tool-Supported Development and Management in Distributed Software Projects.
PC member for CSMR 2010: the 14th European Conference on Software Maintenance and Reengineering.
PC member for OpenCert 2010: 4th International Workshop on Foundations and Techniques for Open Source Software Certification.
PC member for LDTA 2010: the 10th Workshop on Language Descriptions, Tools and Applications.
PC member for IWPSE-EVOL 2009: the Joint 10th International Workshop on Principles of Software Evolution (IWPSE) and 5th International ERCIM Workshop on Software Evolution (EVOL).
Organizer of GTTSE 2009: The 3rd International Summer School on Generative and Transformational Techniques in Software Engineering.
Workshop chair of SQM 2009: Third International Workshop on Software Quality and Maintainability.
PC member for PEPM 2009: ACM SIGPLAN 2009 Workshop on Partial Evaluation and Program Manipulation.
My current activities are listed here. Concluded activities follow below (incomplete). Organization of GTTSE 2005 (OC Chair) Moderator of PUReCafe. ...
!MatchO Matching Objects What is !MatchO? !MatchO provides support for matching objects within Java in the form of a Pattern interface which has various implementations ...
Home Publications In the News Events 2009 2009 Tools 2LT CoddFish XsdMetz SdfMetz MatchO Strafunski Related Product Certification at SIG TFM Seminar group pages ...
See also: media items 2012 stelt hoogleraar softwaresystemen aan #8221;, news item in Computable, May 2012. naar een transparante softwaremarkt, Dossier ...
The UMinho Haskell Libraries contain support for representing and operating on relations ( graphs). For a snapshot see: http://www.di.uminho.pt/~joost.visser ...
Version 2.3 Sdf2Haskell 2.3.tar.gz (full distribution) Sdf2Haskell rts 2.3.zip (run time stuff only, i.e. what you need to use generated code) Tested with ...
This page lists several downloads related to Strafunski: Sdf2HaskellDownloads HaskellATermLibraryDownloads StrategyLibDownloads Strafunski can also ...
The following is a list of student project proposals. Grammar Engineering In many areas of computing, languages play a central role. Programming languages, data ...
This page explains how to create, customize, and use updatable pretty printers in Haskell, using the support offered by the Sdf2Haskell generator of Strafunski. Background ...
This is a subscription service to be automatically notified by e mail when topics change in this Personal/Joost web. This is a convenient service, so you do not ...
TWiki.Personal/Joost Web Preferences The following settings are web preferences of the TWiki.Personal/Joost web. These preferences overwrite the site level preferences ...
This is a subscription service to be automatically notified by e-mail when topics change in this Personal/Joost web. This is a convenient service, so you do not have to come back and check all the time if something has changed. To subscribe, please add a bullet with your WikiName in alphabetical order to this list:
Format: <space><space><space>, followed by: * Main.yourWikiName (if you want that the e-mail address in your home page is used) * Main.yourWikiName - yourEmailAddress (if you want to specify a different e-mail address) * Main.anyTWikiGroup (if you want to notify all members of a particular TWikiGroup)
Related topics:TWikiUsers, TWikiRegistration
The following settings are web preferences of the TWiki.Personal/Joost web. These preferences overwrite the site-level preferences in TWikiPreferences, and can be overwritten by user preferences (your personal topic, i.e. TWikiGuest in the TWiki.Main web)
Preferences:
If yes, set SITEMAPLIST to on, do not set NOSEARCHALL, and add the "what" and "use to..." description for the site map. Make sure to list only links that include the name of the web, e.g. Personal/Joost.Topic links.
Set SITEMAPLIST = off
Set SITEMAPWHAT = Home Page of Joost Visser
Set SITEMAPUSETO =
Exclude web from a web="all" search: (Set to on for hidden webs)
Set NOSEARCHALL =
Default template for new topics and form(s) for this web:
WebTopicEditTemplate? : Default template for new topics in this web. (Site-level is used if topic does not exist)
Web preferences that are not allowed to be overridden by user preferences:
Set FINALPREFERENCES = WEBTOPICLIST, DENYWEBVIEW, ALLOWWEBVIEW, DENYWEBCHANGE, ALLOWWEBCHANGE, DENYWEBRENAME, ALLOWWEBRENAME
Notes:
A preference is defined as: 6 spaces * Set NAME = value Example:
Set WEBBGCOLOR = #FFFFC0
Preferences are used as TWikiVariables by enclosing the name in percent signs. Example:
When you write variable %WEBBGCOLOR% , it gets expanded to #999966 .
The sequential order of the preference settings is significant. Define preferences that use other preferences first, i.e. set WEBCOPYRIGHT before WIKIWEBMASTER since %WEBCOPYRIGHT% uses the %WIKIWEBMASTER% variable.
You can introduce new preferences variables and use them in your topics and templates. There is no need to change the TWiki engine (Perl scripts).
TWiki's Personal/Joost web
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost
The Personal/Joost web of TWiki. TWiki is a Web-Based Collaboration Platform for the Corporate World.en-usCopyright 2020 by contributing authorsTWiki Administrator [webmaster@di.uminho.pt]The contributing authors of TWikiTWikiDIUM.Personal/Joost
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost
/twiki/pub/Main/LocalLogos/um_eengP.jpgPublicationList
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/PublicationList
var gaJsHost (("https:" document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src '" gaJsHost "google analytics ... (last changed by JoostVisser)2012-07-24T06:03:32ZJoostVisserWebHome
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/WebHome
var gaJsHost (("https:" document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src '" gaJsHost "google analytics ... (last changed by JoostVisser)2012-06-04T01:01:25ZJoostVisserNewsItems
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/NewsItems
See also: media items 2012 stelt hoogleraar softwaresystemen aan #8221;, news item in Computable, May 2012. naar een transparante softwaremarkt, Dossier ... (last changed by JoostVisser)2012-05-25T21:05:42ZJoostVisserMenuTopics
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/MenuTopics
Home Publications In the News Events 2009 2009 Tools 2LT CoddFish XsdMetz SdfMetz MatchO Strafunski Related Product Certification at SIG TFM Seminar group pages ... (last changed by JoostVisser)2011-07-02T16:20:30ZJoostVisserWebLeftBar
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/WebLeftBar
.zg div {margin:0px 5px 5px 0px; width:117px;} .zg div inner {border: solid 1px #999966; background color:#999966; color:#FFFFFF; text align:center; font family:arial ... (last changed by JoostVisser)2009-11-14T11:08:16ZJoostVisserStrafunskiDowloads
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/StrafunskiDowloads
This page lists several downloads related to Strafunski: Sdf2HaskellDownloads HaskellATermLibraryDownloads StrategyLibDownloads Strafunski can also ... (last changed by JoostVisser)2009-11-08T11:23:50ZJoostVisserStrategyLibDownloads
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/StrategyLibDownloads
Version 5.0 StrategyLib 5.0.zip Tested with: GHC 6.4.1. (last changed by JoostVisser)2007-07-19T07:04:45ZJoostVisserMatchO
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/MatchO
!MatchO Matching Objects What is !MatchO? !MatchO provides support for matching objects within Java in the form of a Pattern interface which has various implementations ... (last changed by JoostVisser)2007-07-11T21:46:16ZJoostVisserWebSearchAdvanced
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/WebSearchAdvanced
(last changed by TWikiGuest)2007-05-17T14:51:20ZguestStudentProjectProposals
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/StudentProjectProposals
The following is a list of student project proposals. Grammar Engineering In many areas of computing, languages play a central role. Programming languages, data ... (last changed by JoostVisser)2007-02-16T17:28:18ZJoostVisserWebCss
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/WebCss
.natMiddle .natExternalLink:after { margin left:0px; margin right:0px; content:""; } .natRevision { width:0px; height:0px; overflow:hidden; } .natBreadCrumbs ... (last changed by JoostVisser)2007-02-16T17:09:03ZJoostVisserWebPreferences
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/WebPreferences
TWiki.Personal/Joost Web Preferences The following settings are web preferences of the TWiki.Personal/Joost web. These preferences overwrite the site level preferences ... (last changed by JoostVisser)2007-02-16T16:54:49ZJoostVisserWebSideBar
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/WebSideBar
(last changed by JoostVisser)2007-02-14T19:05:40ZJoostVisserListOfActivities
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/ListOfActivities
My current activities are listed here. Concluded activities follow below (incomplete). Organization of GTTSE 2005 (OC Chair) Moderator of PUReCafe. ... (last changed by JoseBacelarAlmeida)2007-02-12T19:37:47ZJoseBacelarAlmeidaRelationsInHaskell
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/RelationsInHaskell
The UMinho Haskell Libraries contain support for representing and operating on relations ( graphs). For a snapshot see: http://www.di.uminho.pt/~joost.visser ... (last changed by JoostVisser)2006-06-14T22:29:37ZJoostVisserHaskellATermLibraryDownloads
http://wiki.di.uminho.pt/twiki/bin/view/Personal/Joost/HaskellATermLibraryDownloads
Version 1.5 haterm 1.5.zip Tested with: GHC 6.4.1. Version 1.4 haterm 1.4.zip (last changed by JoostVisser)2004-12-21T18:26:52ZJoostVisser