My beloved guide "Sun Certified Enterprise Architect for J2EE, Study Guide" by Paul Allen and Joseph Bambara says the following on page #27:
Architecture is the overall structure of a system, and it can contain subsystems that interface with other subsystems. Architecture considers the scalability, security, and portability of the system. The implementation normally follows the architecture. At the architectural level, all implementation details are hidden.
The software architecture is the high-level structure of a software system. The important properties of software architecture must consider whether it is at a high enough level of abstraction that the system can be viewed as a whole. Also, the structure must support the functionality required of the system. Thus, the dynamic behavior of the system must be taken into account when the architecture is designed.
The structure or architecture must also conform to the system capabilities (also known as nonfunctional requirements). These likely include performance, security and reliability requirements associated with current functionality, as well as flexibility or extensibility requirements associated with accommodating future functionality at a reasonable cost of change.
These requirements may conflict, and tradeoffs among alternatives are an essential part of the design of architecture.
- Recognize the effect of each of the following characteristics on J2EE technology: scalability maintainability, reliability, availability, extensibility, performance, manageability, and security.