Hub C - Software Performance
You are here
Cloud based systems like Gmail, Dropbox etc. are in widespread use by both professional organisations and the general public. The ongoing management and monitoring of these type of systems produces huge amounts of data. Lero’s research work seeks to improve the performance and reliability of such cloud applications through ongoing monitoring, testing, migration and integration making it particularly relevant to software companies that run large scale distributed cloud based systems. To the end user, the value is perceived as the continued availability and reliability of cloud based services like Gmail, Dropbox, etc.
Lero’s research also looks at the design and performance of parallel processor architectures, to maximise performance while minimising power consumption, which is especially relevant to today’s large-scale data centres.
MAKING AN IMPACT - LERO'S TEAM DEVELOPING SOLUTIONS
Bridging the Software Architectural Gap
Software applications are becoming increasingly large and complex. For example, some dated reports of Mac Office state that it contains 30m lines of code. Windows XP was reported as consisting of 45m! Considering there are 40 lines of text on an average book-page, that means that Mac Office is a 750k page epic while XP comes in at a block-busting 1.125m pages.
To make matters worse, these lines of code are not quite as palatable as the English lines of text you will find in most novels. They contain a huge number of inter. And yet these systems must still be effectively managed as a whole across their initial development and subsequent evolution. For example, given the scale, different parts of a system may be farmed out to different sub-teams of developers and these parts must work together when re-integrated. Likewise the development team must ensure that all parts of the resultant system perform at an acceptable speed for the user, even when crunching large data sets. Other system-wide concerns include security, configurability (for each customer) and maintainability.
These are typically the concerns of software architects: members of the development team who’s core job is to structure the system to maximize its ability to meet these system-wide concerns. But even if the architect does manage to define the appropriate architecture for their software system, it may not be realized in the implementation. This can be for a multitude of reasons: implementation is concerned with micro-detailed specification (programming) of how to achieve the system’s functionality, and developers may be unable to keep the architect’s macro-level perspective in mind; larger development team may not be fully aware of all the subtleties of the architecture, particularly as new developers come onboard; and the developers may be aware of the architecture but are under time-to-market pressures that make them deviate in their implementation;
Whatever the reason, the resultant inconsistency between the intended architecture and the implemented architecture means that the criteria that the architect was trying to embody in the system may not be fully addressed.
Performance is a critical dimension of quality and a major concern of any software project. However, it is not uncommon that performance issues occur and materialise into serious problems in a significant percentage of applications (e.g., outages on production environments or even cancellation of software projects). This situation is partially explained by the pervasive nature of performance, influenced by every aspect of the design, code, and execution environment of an application, which makes it hard to assess.
For these reasons, Lero’s Software Performance hub is concerned with software performance issues, with a particular emphasis on Large Scale Systems (LSS), such as, the Cloud, Big Data and distributed and mobile applications such as the Internet-of-Things. These systems have become commonplace in the software industry. While working with them is often challenging, Lero is exploring three directions that are critical for the developers of software applications using LSS:
- Assessing and optimising the performance of datacentres and the Cloud which host a large part of today’s software applications
- Supporting the developers of complex and data-intensive software applications in the era of Big Data
- for the distributed and mobile software world.