1.The role of an architect?
The architect is responsible for creating the blueprint for the system and must consider not only the functional requirement of the system but also the nonfunctional requirement as well. Is the system capable, scalable, secure, extensible? The architect must consider these issues. Architects are responsible for interacting with customers, beta testers, and end users to make sure that user requirements are satisfied.
Picture 1:Balancing architecture, design, and reality.
2. Architectural Design and Principle?
The software architecture is the high-level structure of a software system. At this level, all implementation details are hidden. The key difference between architecture and design is in the level of detail.
Architecture Terminology:
Abstraction is a term for something that is factored out of a design so
that it can be used repeatedly.
Boundaries are the area where two components interact.
Brittleness is the degree to which small changes will break large portions of the system.
Capabilities are the nonfunctional, observable system qualities, including scalability, manageability, performance, availability, reliability, and security, that are defined in terms of context.
Friction is how much interaction occurs between two components.Friction is measured by how a change in one component affects the other.
Layering is a hierarchy of separation. Surface area is a list of methods that are exposed to the
client.
Picture 2: Basic 3-tier architecture.
3. Capabilities and System Quality.
System quality | Definition |
Availability | The degree to which a system is accessible. The term 24*7(*multiply) describes total availability. |
Reliability | The ability to ensure the integrity and consistency of an application and its transactions. |
Manageability | The ability to manage the system resources to ensure the availability and performance of a system. |
Flexibility | The ability to address the architectural and hardware configuration changes without a great deal of impact to the underlying system. |
Performance | The ability to carry out functionality in a timeframe that meets specified goals. |
Capacity | The ability to run multiple tasks per unit of time. |
Scalability | The ability to support the required availability and performance as transactional load increases. |
Extensibility | The ability to extend functionality. |
Validity | The ability to predict and confirm results based on a specified input or users gesture. |
Reusability | The ability to use a component in more than one context without changing its internals. |
Security | The ability to ensure that information is not accessed and modified unless done so in accordance with the enterprise policy. |