Software Architecture

The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both.


There are many “-ilities” you must take into consideration with every project.

1. Usability
2. Maintainability (Changeability/Flexibility / Testibility)
3. Security
4. Functionality* – Ability of the system to do the work for which it was intended
5. Extensibility
6. Upgradeability* – Does/can the system have an relatively smooth upgrade path
7. Availability (or Reliability)
8. Scalability
9. Lookibility * – Generally shiny and nice looking
10. Portability