Refreshments and sandwiches from 18:00.
If you’ve been involved in large scale software development for any length of time, you’ll surely recognise the following symptoms of application architecture and design decay:
- you keep having to cut’n’paste repetitive code (along, of course, with any associated bugs), as proper re-use of code isn’t a viable option due to poor code factoring
- this in turn leads to duplication existing all over the place – making a single simple functional change then requires amendments to be made all over the place
- the chaotic package structure of the application means there is a prohibitively expensive learning curve for new staff – there’s no clarity of responsibility defining which package does what
- everyone keeps treading on everyone else’s toes when making changes to the system – lack of any consistent packaging rules make intelligent work scheduling difficult
- automated testing is difficult, it’s impossible to test any package in isolation due to poor dependency management
- bug fixing is difficult, spaghetti-like class dependencies make it difficult to track the source of an error
- all in all, the whole application seems to be unstable, simple functional changes require large-scale code reworking, and everything breaks all the time
In this talk, Mark discusses an architectural reference model (ARM) for large scale applications, which he has successfully employed on three large enterprise application developments in the last few years (two in the finance sector, and one in on-line auctioning).
The ARM is made up of of five architectural strata (Interface, Application, Domain, Infrastructure and Platform). The overriding purpose of the ARM is to provide a clear set of rules for large scale application decomposition, which encourage separation of concerns, maximise re-use of code (primarily) within the application and (secondarily) across applications, lead to good code factoring without duplication, and increase application stability in the face of changing requirements.
Mark Collins-Cope has been working in the Software Engineering field for over 20 years. Having graduated with a first-class honours degree in Computer Science, he has played a variety of roles within the software industry, including project management, requirements analysis, technical architecture, software design and development, teaching and writing.
He has worked for a variety of companies, both large and small, including The Instruction Set, Hoskyns, Cap Gemini, and Ratio. He has also written for a number of industry publications and journals (Enterprise Architect, Application Development Advisor, C++ report, Exe magazine, etc.) and was formerly editor of Threads – an open systems related technical journal. He is currently editor of ObjectiveView, a technical journal focusing on software development (back copies can be obtained from the ObjectiveView home page). He presents fairly regularly at many software engineering conferences (TOOLS, OOIS, Component Computing, Enterprise Architecture, etc.)