What happens with the passage of time after first release: e.g. as requests per second from outside world (humans and systems), data storage volumes, bug fix requests and feature requests from stakeholders increase without bound?
- difficulty in changing architecture of code and of data
- difficulty in radically changing interface to outside world (e.g. GUI and APIs),
- dependency of maintenance on ease of software life cycle steps after coding, i.e. testing, integration, deployment, monitoring, debugging.
- need for deployed software to be capable of being replicated on development machines, for ease of debugging
- need of software to satisfy future stakeholders, esp maintainers
- importance of human and time factors, identifying time context of every data item, seeking and streaming, and distributed systems in scaling data
- need to apply security fixes to deployed technologies,
- need to deal with changes to deployed technologies (e.g. OS versions, library versions),
- changes in the technologies in vogue. Discipline required not to change old code that works.
- need for data security, including possibility of barring access to programmer or DBA
- need to record input requests from external world (after redaction), to cater for unforeseen aspect of data architecture such as analytics.
- need to foresee software architecutre as a precursor to a distributed system