Servers at the National Archive (UK) [Photo credit: National Archives UK)
The scale of a system is a slightly subjective measurement, but generally relies on:
- lines of code
- number of users
- number of stakeholders
- scale of system's purpose
- data stored and used
- interdependencies between elements of the system
- hardware required
These sprawling systems have unique challenges and are often highly depended on by many, so must meet these challenges well. For example, their scale means that, probabilistically, small pieces will break at different times and the system must not crash upon these breaks. Often, these systems also have to allow for evolution throughout their own lifetime as well.
- Planning - know the goal, know the target users if there are any, know the entity requesting the system and have an idea of what can be realistically achieved given the project's time, labour and cost budgets
- Analysis - get an in-depth idea of what is required for each component of the system, using any existing cases and models available
- Design - select and develop a design that can handle the requirements for system architecture, interface and data storage to produce the system's specifications; prototypes may be useful here to test
- Implementation - build the system according to the specifications, get it installed and running, and have at least a basic support system set up to deal with the inevitable bugs, future optimization, user faults and plethora of other issues that may arise
More recently, there has been talk that ultra-large-scale systems (also known as large-scale complex IT systems) are emerging too3, requiring even more careful engineering to ensure their usability. An example of this in today's world is air traffic control systems but more are expected to emerge in the near future.
Melbourne airport air traffic control tower [Photo credit: Wong]
1. Peter Eeles (2008). Architecting Large-Scale Systems. [ONLINE] Available at: http://www.websphereusergroup.co.uk/wug/files/presentations/25/25_19_ArchitectLargeSystems.pdf. [Last Accessed 29/04/2014].
2. Dario Landa-Silva (). Large Scale Systems Design. [ONLINE] Available at: http://www.cs.nott.ac.uk/~jds/teaching/archive/G52LSSLecture2.pdf. [Last Accessed 29/04/2014].
3. Northrop, L. et al. , (2006). Ultra-Large-Scale Systems: The Software Challenge of the Future. 1st ed. Pittsburgh, PA: Carnegie Mellon University.