The ability to modify or add functionality without impacting the existing functionality.The key to an extensible design is to make an effective OO design. Extensibility pays the most towardsthe font end of a system.
Some rough guidelines:
More than 25 top-level classes will lead to problemsEvery use case should be able to be implemented using domain model methodsJ2EE supports extensibility because it is component-based and allows you to separate the roles of anapp. JSPs can handle presentation. Servlets can handle routing, and EJBs can handle business logic.
Architectural performance is concerned with creating an architecture that forces end-to-endperformance.The purpose of an architecture that ensures performance is to control expensive calls and to identifybottlenecks.If you know the boundaries of the various parts of the system, the technologies, and the capabilitiesof the technologies you can do a good job of controlling performance.You want to minimize the number of network calls your distributed app makes
make a few
calls that get a lot of data vs. lots of calls that get small amounts of data.Try to minimize process-to-process calls because they are expensive.Use resource pooling to reduce the number of expensive resources that need to be created likenetwork connections, database connections, etc.
Manageability refers to the ability to manage a system to ensure the health of the system.A single tier or monolithic app would be more manageable from a management perspective than amulti-tier system but this must be weighed against the possibility of a change rippling through amonolithic app.A simple architecture may not be as flexible or available as a more complex system but the amount of effort required to keep the system up & functioning will be less.A component-based architecture like J2EE offsets some of the manageability problems caused by amulti-tier system.
Security ensures that info is neither modified nor disclosed except in accordance with the securitypolicy.Tradeoffs: personal privacy, ease of use, and expense.A highly secure system is:More costlyHarder to define and developRequires more watchdog activities
Principles of Security:
The user is correctly ID
d thru an authentication mechanismAuthority
The user can perform only allowed activitiesIntegrity
Data can only be modified in allowed waysPrivacy
Data is disclosed to authorized entities in authorized waysAuditability
The system maintains logs of actions taken for later analysis