Your best source of information and news about microsoft, windows and drivers on the internet

ARTICLES TOP 50 Spyware Virus Vista SOFT Vista HELP

Quality

You are currently browsing the articles from MS Windows Vista Compatible Software matching the category Quality.

Software Architecture: QAW, ADD, ATAM, CBAM, ARID and SDLC

SEI – Software Architecture Tools and Methods

Active Reviews for Intermediate Designs (ARID)
Architecture-Based System Evolution
Architecture Competence Assessment
Architecture Expert (ArchE)
Architecture Tradeoff Analysis Method (ATAM)
Attribute-Driven Design (ADD) Method
Cost Benefit Analysis Method (CBAM)
Mission Thread Workshop
Quality Attribute Workshop (QAW)

Attribute-Driven Design (ADD) is a process to developing a software architecture. It is presented within the context of the Evolutionary Delivery Life Cycle (EDLC), a software lifecycle based around architecture. The EDLC describes two feedback loops:

  • Concept – Requirements – Architecture and high-level Design
  • Iterative Development – Delivery – Feedback – Redesign from Feedback
  1. Determine the primary quality attributes and requirements for the given module, as well as any use-case constraints provided with the module.
  2. Select architectural patterns or tactics (using your architect’s magic bag of tricks) that are designed to support your given quality attributes and requirements. These patterns and tactics will naturally drive the division of labor into submodules.
  3. Document the expectation of submodules with your use cases and multiple views (the “4+1 views” approach).
  4. Define and document the API for every submodule so they satisfy (3).
  5. Verify use cases and annotate them as constraints to the submodules. Recursively refine every submodule with this process that is too big to be atomic.

Scenario-Based Evaluations

Scenario-based evaluations are a powerful method for reviewing an architecture design. In a scenario-based evaluation, the focus is on the scenarios that are most important from the business perspective, and which have the greatest impact on the architecture. Consider using one of the following common review methodologies:

  • Software Architecture Analysis Method (SAAM). SAAM was originally designed for assessing modifiability, but later was extended for reviewing architecture with respect to quality attributes such as modifiability, portability, extensibility, integratability, and functional coverage.
  • Architecture Tradeoff Analysis Method (ATAM). ATAM is a refined and improved version of SAAM that helps you review architectural decisions with respect to the quality attributes requirements, and how well they satisfy particular quality goals.
  • Active Design Review (ADR). ADR is best suited for incomplete or in-progress architectures. The main difference is that the review is more focused on a set of issues or individual sections of the architecture at a time, rather than performing a general review.
  • Active Reviews of Intermediate Designs (ARID). ARID combines the ADR aspect of reviewing in-progress architecture with a focus on a set of issues, and the ATAM and SAAM approach of scenario-based review focused on quality attributes.
  • Cost Benefit Analysis Method (CBAM). This CBAM focuses on analyzing the costs, benefits, and schedule implications of architectural decisions.
  • Architecture Level Modifiability Analysis (ALMA). ALMA evaluates the modifiability of architecture for business information systems (BIS).
  • Family Architecture Assessment Method (FAAM). FAAM evaluates information system family architectures for interoperability and extensibility.

Representing and Communicating Your Architecture Design

4+1. This approach uses five views of the complete architecture. Four of the views describe the architecture from different approaches: the logical view (such as the object model), the process view (such as concurrency and synchronization aspects), the physical view (the map of the software layers and functions onto the distributed hardware infrastructure), and the development view. A fifth view shows the scenarios and use cases for the software. For more information, see “Architectural Blueprints—The “4+1” View Model of Software Architecture” at http://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf.

What Is An Architectural Style?

Category Architecture styles
Communication Service-Oriented Architecture (SOA), Message Bus
Deployment Client/Server, N-Tier, 3-Tier
Domain Domain Driven Design
Structure Component-Based, Object-Oriented, Layered Architecture

Summary of Key Architectural Styles

Architecture style Description
Client/Server Segregates the system into two applications, where the client makes requests to the server. In many cases, the server is a database with application logic represented as stored procedures.
Component-Based Architecture Decomposes application design into reusable functional or logical components that expose well-defined communication interfaces.
Domain Driven Design An object-oriented architectural style focused on modeling a business domain and defining business objects based on entities within the business domain.
Layered Architecture Partitions the concerns of the application into stacked groups (layers).
Message Bus An architecture style that prescribes use of a software system that can receive and send messages using one or more communication channels, so that applications can interact without needing to know specific details about each other.
N-Tier / 3-Tier Segregates functionality into separate segments in much the same way as the layered style, but with each segment being a tier located on a physically separate computer.
Object-Oriented A design paradigm based on division of responsibilities for an application or system into individual reusable and self-sufficient objects, each containing the data and the behavior relevant to the object.
Service-Oriented Architecture (SOA) Refers to applications that expose and consume functionality as a service using contracts and messages.

Architectural Patterns and Styles

Evans, Eric. Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley, 2004.

Nilsson, Jimmy. Applying Domain-Driven Design and Patterns: With Examples in C# and NET. Addison-Wesley, 2006.

For more information about architectural styles, see the following resources:

The ATAM is based upon a set of attribute-specific measures of the system
•Analytic (performance & availability)
•Qualitative (modifiability, safety, security)
The ATAM workshops typically takes three days and the involvement of 10-20 people
•Evaluators
•Architects
•and other system stakeholders
Benefits:
•clarified quality attribute requirements
•improved architecture documentation
•documented basis for architectural decisions
•identified risks early in the life-cycle
•increased communication among stakeholders

An architecture evaluation doesn’t tell you “yes” or “no” or “6,75 out of 10”. It tells you were the risks are.
Nonrisks are good decisions that rely on assumptions that are frequently implicit in the architecture.
A sensitivity point is a property of one or more components (and/or component relationships) that is critical for achieving a particular quality attribute response.
A trade-off point is a property that affects more than one attribute and is a sensitivity point for more than one attribute.
It meets its quality goals
•Predictable behaviour
•Performance
•Modifiable
•Security
The system can be built
•Staff
•Budget
•Legacy
•Time
Summary of the ATAM Steps
1.Introduction
2.Evaluating a Software Architecture
3.ATAM overview
4.The ATAM for <system name>
5.Summary of Business Drivers
6.Summary of Architecture Presentation
7.Quality Attribute Utility Tree
Utility
•Performance
Data latency
?(M, L) Minimize storage latency on customer DB to 200 ms
?(H,M) Deliver video in real time
Transaction throughput
?(M,M) Maximize average throughput to authentication server
•Modifiability
New Product Categories
•Availability
Hardware Failure
?(L,M) power output at site 1 requires traffic redirect to site 3 in < 3 s
?(H,M) network failure is detected and recovered in < 1,5 min
•Security
Data confidentiality
?(L,H) customer database authorisation works 99,999% of time
8.Scenario Generation, Consolidation, and Prioritisation
9.Analysis of Architectural Approaches
10.Risks, Sensitivities, trade-offs, Nonrisks, and Other Issues
11.Conclusions
A common technique for refining the design over time, until it satisfies all of the requirements and adheres to all of the constraints, is an iterative technique consisting of the five major stages shown in Figure

Benefits of ATAM

–Financial gains
–Forced preparation
–Captured rationale
–Early detection of problems
–Validation of requirements
–Improved architecture
•Scenario – A scenario is a short statement describing an interaction of one of the stakeholders with the system
•Stakeholder – An individual, team, or organization (or classes thereof) with interests in, or concerns relative to, a system
•Architectural view – A representation of a whole system from the perspective of a related set of concerns
•Functional requirements – specify what software has to do.
•Non-functional requirements specify how well it should be done.
Scenarios are used to
–Represent stakeholders’ interests
–Understand quality attribute requirements
Scenarios should cover a range of
–Anticipated uses of (use case scenarios),
–Anticipated changes to (growth scenarios), or
–Unanticipated stresses (exploratory scenarios) to the system.
A good scenario makes clear what the stimulus is that causes it and what  responses are of interest.
Use case scenario
–Remote user requests a database report via the Web during peak period and receives it within 5 seconds.
Growth scenario
Add a new data server to reduce latency in scenario 1 to 2.5 seconds within 1 person-week.
Exploratory scenario
–Half of the servers go down during normal operation without affecting overall system availability.
Scenarios should be as specific as possible.
Evaluation Team probes architectural approaches from the point of view of specific quality attributes to identify risks.
–Identify the approaches that pertain to the  highest priority quality attribute requirements
–Generate quality-attribute specific questions for highest priority quality attribute requirement
–Ask quality-attribute specific questions
–Identify and record risks and non-risks, sensitivity points and tradeoffs
Quality attribute questions probe styles to elicit  architectural decisions which bear on quality attribute requirements.
Examples
Performance
• How are priorities assigned to processes?
• What are the message arrival rates?
• What are transaction processing times?
Modifiability
•Are there any places where layers/facades are circumvented ?
•What components rely on detailed knowledge of  message formats?
• What components are connected asynchronously?

System-quality trade-off points

Availability Efficiency Flexibility Integrity Interoperability Maintainability Portability Reliability Reusability Robustness Testability Usability
Availability + +
Efficiency - - - - - - - -
Flexibility - - + + + +
Integrity - - - - -
Interoperability - + - +
Maintainability + - + + +
Portability - + + - + + -
Reliability + - + + + + +
Reusability - + - - +
Robustness + - + +
Testability + - + + + +
Usability - + -

Common Quality Attributes

Category Quality attribute Description
Design Qualities Conceptual Integrity Conceptual integrity defines the consistency and coherence of the overall design. This includes the way that components or modules are designed, as well as factors such as coding style and variable naming.
Maintainability Maintainability is the ability of the system to undergo changes with a degree of ease. These changes could impact components, services, features, and interfaces when adding or changing the functionality, fixing errors, and meeting new business requirements.
Reusability Reusability defines the capability for components and subsystems to be suitable for use in other applications and in other scenarios. Reusability minimizes the duplication of components and also the implementation time.
Run-time Qualities Availability Availability defines the proportion of time that the system is functional and working. It can be measured as a percentage of the total system downtime over a predefined period. Availability will be affected by system errors, infrastructure problems, malicious attacks, and system load.
Interoperability Interoperability is the ability of a system or different systems to operate successfully by communicating and exchanging information with other external systems written and run by external parties. An interoperable system makes it easier to exchange and reuse information internally as well as externally.
Manageability Manageability defines how easy it is for system administrators to manage the application, usually through sufficient and useful instrumentation exposed for use in monitoring systems and for debugging and performance tuning.
Performance Performance is an indication of the responsiveness of a system to execute any action within a given time interval. It can be measured in terms of latency or throughput. Latency is the time taken to respond to any event. Throughput is the number of events that take place within a given amount of time.
Reliability Reliability is the ability of a system to remain operational over time. Reliability is measured as the probability that a system will not fail to perform its intended functions over a specified time interval.
Scalability Scalability is ability of a system to either handle increases in load without impact on the performance of the system, or the ability to be readily enlarged.
Security Security is the capability of a system to prevent malicious or accidental actions outside of the designed usage, and to prevent disclosure or loss of information. A secure system aims to protect assets and prevent unauthorized modification of information.
System Qualities Supportability Supportability is the ability of the system to provide information helpful for identifying and resolving issues when it fails to work correctly.
Testability Testability is a measure of how easy it is to create test criteria for the system and its components, and to execute these tests in order to determine if the criteria are met. Good testability makes it more likely that faults in a system can be isolated in a timely and effective manner.
User Qualities Usability Usability defines how well the application meets the requirements of the user and consumer by being intuitive, easy to localize and globalize, providing good access for disabled users, and resulting in a good overall user experience.

Output of ARID

•Initial Architecture
•System overview from a business perspective:
–Most important functions
–Any relevant technical, managerial, economic, or political constraint
–Business goals that relate to the project
–Major stakeholders
–Major quality attributes
•Set of seed of scenarios
•Set of scenarios and their prioritization from the brainstorming
•The Utility Tree
•Issues and problems
Sensitivity – A property of a component that is critical to success of system.
–The number of simultaneous database clients will affect the number of transaction a database can process per second. This assignment is a sensitivity point for the performance
–Keeping a backup database affects reliability
–Power of encryption (Security) sensitive to number of bits of the key
Tradeoff point- A property that affects more than one attribute or sensitivity point.
–In order to achieve the required level of performance in the discrete event generation component, assembly language had to be used thereby reducing the portability of this component.
–Keeping the backup database affects performance also so it’s a trade-off between reliability and performance
Risk
–The decision to keep backup is a risk if the performance cost is excessive
–Rules for writing business logic modules in the second tier of your 3-tier style are not clearly articulated. This could result in replication of functionality thereby compromising modifiability of the third tier.
Non Risk
–The decision to keep backup is a non-risk if the performance cost is not excessive
–Assuming message arrival rates of once per second, a processing time of less than 30 ms, and the existence of one higher priority process, a 1 second soft deadline seems reasonable Performance.
common application architecture with components grouped by different areas of concern.

Common application architecture

Enterprise Architecture and System Architecture

What we Hear in Industry?

? How do I use these architecture methods in my organization (with our processes)?
? What do I do with a software architecture once I create it?
? So I have all these quality attribute scenarios – now what?
? How is software architecture different from EA, DoDAF, C4ISR, or system architecture? Do I need all of them? How (or can they) work together?
? When do I design my architecture?
? When am I done architecting?
? How/when do I evaluate my architecture?

? How do I use the output of an architecture evaluation?
? How is architecture different from the UML designs I have now?
? Can I design an architecture and still be agile?
? Can I use architecture concepts, methods, and techniques in my small teams and small projects?
? Can I design an architecture if I develop my products iteratively?
? How much requirements work do I need to do before I begin architecture design?
? How and when do I get architecture requirements?

The Architecture Tradeoff Analysis Initiative at the Carnegie Mellon Software Engineering Institute (SEI) has developed a number of architecture-centric methods currently in use including the SEISM Architecture Tradeoff Analysis Method (ATAM), the SEI Quality Attribute Workshop (QAW), the SEI Cost Benefit Analysis Method (CBAM), SEI Active Reviews for Intermediate Designs (ARID), and the SEI Attribute-Driven Design (ADD) method.

Architecture-centric development involves iteratively
• creating the business case for the system
• understanding the requirements
• creating or selecting the software architecture
• documenting and communicating the software architecture
• analyzing or evaluating the software architecture
• implementing the system based on the software architecture
• ensuring that the implementation conforms to the software architecture

Enhancing the ATAM: ATAM Steps & Enhancements

Step 1 – Present the ATAM: Add information such as multiple response measures for scenarios and tactics used to achieve a desired quality attribute response.
Step 2 – Present business drivers: Elicit additional information on business goals: rationale, barriers, enablers, and schedule and cost constraints.
Step 3 – Present architecture: Elicit additional information on the architecture, for example, architectural elements, relations, and their properties, and design rationale.
Step 4 – Identify architectural approaches: Cross reference approaches listed with supplementary architectural information.
Step 5 – Generate quality attribute utility tree:
Step 6 – Analyze architectural approaches: Supplement scenario refinement by eliciting worst-case and best-case response measures. Systematically elicit alternative architectural approaches for dealing with scenarios. Explicitly document suggested alternative architectural approaches for dealing with scenarios.
Step 7 – Brainstorm and prioritize scenarios
Step 8 – Analyze architectural approaches: Supplement scenario refinement by eliciting worst-case and best-case response measures. Refine the top one-third but analyze a handful of the highest priority scenarios. Systematically elicit alternative architectural approaches for dealing with scenarios. Explicitly document suggested alternative architectural approaches for dealing with scenarios.
Step 9 – Present results:  Include information about alternative architectural approaches generated during the evaluation.

Business Drivers Presentation

(~ 12 slides; 45 minutes)
Description of the business environment, history, market differentiators, driving requirements, stakeholders, current need, and how the proposed system will meet those needs/requirements
Description of business constraints (e.g., time to market, customer demands, standards, costs)
Description of the technical constraints (e.g., commercial off-the-shelf [COTS] products, interoperation with other systems, required hardware or software platform, reuse of legacy code)
Quality attribute requirements and the business needs from which they are derived

The CBAM requires additional business information to be elicited during this step, including

• the rationale for each business goal
• the dependencies among and priorities of the business goals
• barriers to adopting the business goals and strategies for overcoming them
• enablers of adopting the business goals and strategies for exploiting them
• schedule and cost constraints from the business side; for example, time to market as a business goal
• the relationship between business goals and quality goals

Architecture Presentation

(~ 20 slides; 60 minutes)
Driving architectural requirements, the measurable quantities you associate with them and any existing standards/models/approaches for meeting them
Important architectural information: context diagram, module or layer view, component-andconnector view, deployment view
Architectural approaches, patterns, or tactics employed, including which quality attributes they address and a description of how the approaches address them
• use of COTS products and how they are chosen/integrated
• trace of 1 to 3 of the most important use case scenarios
• trace of 1 to 3 of the most important change scenarios
• architectural issues/risks with respect to meeting the driving architectural requirements
• glossary

Enhancing the CBAM: CBAM Steps & Enhancements

Step 1 – Collate scenarios: Completed during the ATAM evaluation
Step 2 – Refine scenarios: Partially completed during the ATAM evaluation when the desired-case, best-case, and worst-case response
measures for the scenarios were elicited from the stakeholders. The architect completes this step by determining the current-case response measures for the scenarios carried forward.
Step 3 – Prioritize scenarios: Enhanced business goals and traceability from scenarios to quality attributes to business goals gathered during the ATAM evaluation help guide this step.
Step 4 – Assign intra-scenario utility: Enhanced business goals gathered during the ATAM evaluation help guide this step.
Step 5 – Develop architectural strategies and determine quality attribute response levels: Some architectural approaches may have been identified during the ATAM evaluation. New ones can be added prior to or during this step, using activities from the ADD method. When the expected-case response measure is being determined, the ATAM analysis template might be used to record risks.
Step 6 – Determine the utility of the expected quality attribute response levels by interpolation
Step 7 – Calculate the total benefit obtained from an architectural strategy: Risks from the ATAM evaluation provide input into variations in benefits.
Step 8 – Choose architectural strategies based on the ROI: Enhanced business goals about cost and schedule constraints gathered during the ATAM evaluation help guide this step. Risks from the ATAM evaluation provide input into variations in costs.
Step 9 – Confirm results with intuition: The association of business goals to quality attributes to scenarios to architectural decisions helps confirm that the
selected architectural decisions best meet the business goals.

  • Separation of concerns. Divide your application into distinct features with as little overlap in functionality as possible. The important factor is minimization of interaction points to achieve high cohesion and low coupling. However, separating functionality at the wrong boundaries can result in high coupling and complexity between features even though the contained functionality within a feature does not significantly overlap.
  • Single Responsibility principle. Each component or module should be responsible for only a specific feature or functionality, or aggregation of cohesive functionality.
  • Principle of Least Knowledge (also known as the Law of Demeter or LoD). A component or object should not know about internal details of other components or objects.
  • Don’t repeat yourself (DRY). You should only need to specify intent in one place. For example, in terms of application design, specific functionality should be implemented in only one component; the functionality should not be duplicated in any other component.
  • Minimize upfront design. Only design what is necessary. In some cases, you may require upfront comprehensive design and testing if the cost of development or a failure in the design is very high. In other cases, especially for agile development, you can avoid big design upfront (BDUF). If your application requirements are unclear, or if there is a possibility of the design evolving over time, avoid making a large design effort prematurely. This principle is sometimes known as YAGNI (“You ain’t gonna need it”).

Design Practices

  • Keep design patterns consistent within each layer. Within a logical layer, where possible, the design of components should be consistent for a particular operation. For example, if you choose to use the Table Data Gateway pattern to create an object that acts as a gateway to tables or views in a database, you should not include another pattern such as Repository, which uses a different paradigm for accessing data and initializing business entities. However, you may need to use different patterns for tasks in a layer that have a large variation in requirements, such as an application that contains business transaction and reporting functionality.
  • Do not duplicate functionality within an application. There should be only one component providing a specific functionality—this functionality should not be duplicated in any other component. This makes your components cohesive and makes it easier to optimize the components if a specific feature or functionality changes. Duplication of functionality within an application can make it difficult to implement changes, decrease clarity, and introduce potential inconsistencies.
  • Prefer composition to inheritance. Wherever possible, use composition over inheritance when reusing functionality because inheritance increases the dependency between parent and child classes, thereby limiting the reuse of child classes. This also reduces the inheritance hierarchies, which can become very difficult to deal with.
  • Establish a coding style and naming convention for development. Check to see if the organization has established coding style and naming standards. If not, you should establish common standards. This provides a consistent model that makes it easier for team members to review code they did not write, which leads to better maintainability.
  • Maintain system quality using automated QA techniques during development. Use unit testing and other automated Quality Analysis techniques, such as dependency analysis and static code analysis, during development. Define clear behavioral and performance metrics for components and sub-systems, and use automated QA tools during the build process to ensure that local design or implementation decisions do not adversely affect the overall system quality.
  • Consider the operation of your application. Determine what metrics and operational data are required by the IT infrastructure to ensure the efficient deployment and operation of your application. Designing your application’s components and sub-systems with a clear understanding of their individual operational requirements will significantly ease overall deployment and operation. Use automated QA tools during development to ensure that the correct operational data is provided by your application’s components and sub-systems.

Application Layers

  • Separate the areas of concern. Break your application into distinct features that overlap in functionality as little as possible. The main benefit of this approach is that a feature or functionality can be optimized independently of other features or functionality. In addition, if one feature fails, it will not cause other features to fail as well, and they can run independently of one another. This approach also helps to make the application easier to understand and design, and facilitates management of complex interdependent systems.
  • Be explicit about how layers communicate with each other. Allowing every layer in an application to communicate with or have dependencies upon all of the other layers will result in a solution that is more challenging to understand and manage. Make explicit decisions about the dependencies between layers and the data flow between them.
  • Use abstraction to implement loose coupling between layers. This can be accomplished by defining interface components such as a façade with well known inputs and outputs that translate requests into a format understood by components within the layer. In addition, you can also use Interface types or abstract base classes to define a common interface or shared abstraction (dependency inversion) that must be implemented by interface components.
  • Do not mix different types of components in the same logical layer. Start by identifying different areas of concern, and then group components associated with each area of concern into logical layers. For example, the UI layer should not contain business processing components, but instead should contain components used to handle user input and process user requests.
  • Keep the data format consistent within a layer or component. Mixing data formats will make the application more difficult to implement, extend, and maintain. Every time you need to convert data from one format to another, you are required to implement translation code to perform the operation and incur a processing overhead.

Components, Modules, and Functions

  • A component or an object should not rely on internal details of other components or objects. Each component or object should call a method of another object or component, and that method should have information about how to process the request and, if appropriate, how to route it to appropriate subcomponents or other components. This helps to create an application that is more maintainable and adaptable.
  • Do not overload the functionality of a component. For example, a UI processing component should not contain data access code or attempt to provide additional functionality. Overloaded components often have many functions and properties providing business functionality mixed with crosscutting functionality such as logging and exception handling. The result is a design that is very error prone and difficult to maintain. Applying the single responsibility and separation of concerns principles will help you to avoid this.
  • Understand how components will communicate with each other. This requires an understanding of the deployment scenarios your application must support. You must determine if all components will run within the same process, or if communication across physical or process boundaries must be supported—perhaps by implementing message-based interfaces.
  • Keep crosscutting code abstracted from the application business logic as far as possible. Crosscutting code refers to code related to security, communications, or operational management such as logging and instrumentation. Mixing the code that implements these functions with the business logic can lead to a design that is difficult to extend and maintain. Changes to the crosscutting code require touching all of the business logic code that is mixed with the crosscutting code. Consider using frameworks and techniques (such as aspect oriented programming) that can help to manage crosscutting concerns.
  • Define a clear contract for components. Components, modules, and functions should define a contract or interface specification that describes their usage and behavior clearly. The contract should describe how other components can access the internal functionality of the component, module, or function; and the behavior of that functionality in terms of pre-conditions, post-conditions, side effects, exceptions, performance characteristics, and other factors.
  1. Identify Architecture Objectives. Clear objectives help you to focus on your architecture and on solving the right problems in your design. Precise objectives help you to determine when you have completed the current phase, and when you are ready to move to the next phase.
  • Identify your architecture goals at the start. The amount of time you spend in each phase of architecture and design will depend on these goals. For example, are you building a prototype, testing potential paths, or embarking on a long-running architectural process for a new application?
  • Identify who will consume your architecture. Determine if your design will be used by other architects, or made available to developers and testers, operations staff, and management. Consider the needs and experience of your audience to make your resulting design more accessible to them.
  • Identify your constraints. Understand your technology options and constraints, usage constraints, and deployment constraints. Understand your constraints at the start so that you do not waste time or encounter surprises later in your application development process.
  1. Key Scenarios. Use key scenarios to focus your design on what matters most, and to evaluate your candidate architectures when they are ready.
  2. Application Overview. Identify your application type, deployment architecture, architecture styles, and technologies in order to connect your design to the real world in which the application will operate.
  3. Key Issues. Identify key issues based on quality attributes and crosscutting concerns. These are the areas where mistakes are most often made when designing an application.
  • Business Critical. The use case has a high usage level or is particularly important to users or other stakeholders when compared to other features, or it implies high risk.
  • High Impact. The use case intersects with both functionality and quality attributes, or represents a crosscutting concern that has an end-to-end impact across the layer and tiers of your application. An example might be a Create, Read, Update, Delete (CRUD) operation that is security-sensitive.
  1. Candidate Solutions. Create an architecture spike or prototype that evolves and improves the solution and evaluate it against your key scenarios, issues, and deployment constraints before beginning the next iteration of your architecture.
•Architecture is important
–it should be analyzed
•Architecture can be prescribed
–decisions should be analyzed
•Architecture is central for communicating
–it should be documented
•Architecture is expensive to change
–it is cheaper to analyze early
•Architecture affects the entire project
–many stakeholders should be involved
•Requirements can be understood early
–architecture should be designed to meet them
Architecture structure can be divided into three types:
1. module structures,
2.component-connector structures,
3. allocation structures.

Architecture Structure

Whiteboard Your Architecture
Modules: uses, decomposition, layers, class/generalization, etc.
Component-and-Connector: client-server, concurrency, process, share-data, etc.
Allocation: work assignment, deployment, implementation, etc.
Q. My stakeholders handed me the requirements already and I have a pretty good understanding of the system. Can I start designing my software architecture now?
A. SEI’s answer: Not yet. You need to know two more things before you can start: Quality Attributes and Patterns/tactics.

Quality Attribute

(this is one of the SEI’s babies. You may want to pay great attention to it) Some general quality attributes:
  • availability,
  • modifiability,
  • performance,
  • security,
  • testability,
  • usability, etc.
  • Maintainability
  • Portability
  • Reusability
  • Testability
SEI came up with a quality scenario consisting six parts:
1. Source,
2. Stimulus,
3 Artifact,
4. Environment,
5. Response,
6. Response Measure.
shows the security issues identified in a typical Web application architecture.

The Architecture Business Cycle

Web Site

Paper

Article

Software Architecture Life-Cycle Integration

Papers

Article

Presentation

Quality Attribute Workshops

Web Site

Papers

Presentation

Attribute-Driven Design (ADD)

Web Site

Papers

Architecture Tradeoff Analysis Method (ATAM)

Web Site

Papers

Article

Cost-Benefit Analysis Method (CBAM)

Web Site

Papers

Presentation

Active Reviews for Intermediate Designs (ARID)

Web Site

Papers

Suggested Books on Software Architecture

Software Architecture in Practice (2nd Edition) (The SEI Series in Software Engineering) by Len Bass, Paul Clements, and Rick Kazman
Evaluating Software Architectures: Methods and Case Studies by Paul Clements, Rick Kazman, and Mark Klein
Essential Software Architecture by Ian Gorton
Pattern-Oriented Software Architecture Volume 1: A System of Patterns by Frank Buschmann, Regine Meunier, Hans Rohnert, and Peter Sommerlad
Pattern-Oriented Software Architecture Volume 4: A Pattern Language for Distributed Computing by Frank Buschmann, Kevlin Henney, and Douglas C. Schmidt
Patterns of Enterprise Application Architecture by Martin Fowler
Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions by Gregor Hohpe
Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives by Nick Rozanski and Eóin Woods

Documenting Software Architectures: Views and Beyond by Paul Clements, Felix Bachmann, Len Bass, and David Garlan

patterns & practices Solution Assets

For more information on solution assets available from the Microsoft patterns & practices group, see the following resources:

  • Composite Client Application Guidance for WPF for both desktop and Silverlight makes it easier to create modular applications. For more information, see “Composite Client Application Guidance” at http://msdn.microsoft.com/en-us/library/cc707819.aspx.
  • Enterprise Library contains a series of application blocks that address crosscutting concerns. For more information, see “Enterprise Library” at http://msdn.microsoft.com/en-us/library/cc467894.aspx.
  • Software Factories speed development of specific types of application such as Smart Clients, WPF applications, and Web Services. For more information, see “patterns & practices: by Application Type” at http://msdn.microsoft.com/en-gb/practices/bb969054.aspx.
  • Unity Application Block for both enterprise and Silverlight scenarios provides features for implementing dependency injection, service location, and inversion of control. For more information, see “Unity Application Block” at http://msdn.microsoft.com/en-us/library/dd203101.aspx.
  • Detailed guidance for a wide range of enterprise architecture, design, development, and deployment scenarios. These include scenarios such as solution development fundamentals, client development, server development, and services development. For more information, see the patterns & practices home page at http://msdn.microsoft.com/en-us/library/ms998572.aspx.

Additional Resources

ASP.NET Web Forms. This is the standard UI design and implementation technology for .NET Web applications. An ASP.NET Web Forms application needs only to be installed on the Web server, with no components required on the client desktop.

ASP.NET Web Forms with AJAX. Use AJAX with ASP.NET Web Forms to process requests between the server and client asynchronously to improve responsiveness, provide richer experience to the client, and reduce the number of post backs to the server. AJAX is an integral part of ASP.NET in .NET Framework 3.5 and later.

ASP.NET MVC. This technology allows you to use ASP.NET to build applications based on the Model-View-Controller (MVC) pattern. ASP.NET MVC supports test-driven development and clear separation of concerns between UI processing and UI rendering. This approach helps to avoid mixing presentation information with logic code.

Microsoft BizTalk Server. BizTalk currently has its own workflow engine that is geared toward orchestration, such as enterprise integration with system-level workflows. A future version of BizTalk may use WF as well as XLANG (an extension of the Web Service Definition Language used to model service orchestration and collaboration), which is the existing orchestration technology in BizTalk. You can define the overall design and flow of loosely coupled, long-running business processes by using BizTalk Orchestration Services within and between applications.

See the following articles:

For information on some of the popular third party libraries and frameworks that you might find useful for managing crosscutting concerns, see the following resources:

For more information on implementing and auditing quality attributes, see the following resources:

  • Does this architecture succeed without introducing any new risks?
  • Does this architecture mitigate more known risks than the previous iteration?
  • Does this architecture meet additional requirements?
  • Does this architecture enable architecturally significant use cases?
  • Does this architecture address quality attribute concerns?
  • Does this architecture address additional crosscutting concerns?

Filed under: Architecture, Design, Patterns, Reference Tagged: Agile, Architect, Architecture, Books, Class, CMM, Design, Diagrams, Frameworks, Graphs, Guides, HLD, Images, Lib, Library, LLD, Objects, OO, Quality, Refer, Reference, Scrum, SDLC, SEI, Tiers, Verticals, Waterfall, XP

Written by Visitor Blogs on May 13th, 2010 with no comments.
Read more articles on Graphs and SDLC and Objects and Diagrams and Agile and Scrum and Lib and Waterfall and LLD and Verticals and CMM and SEI and Class and HLD and OO and Refer and books and library and otherSoftware and Guides and Design and Quality and images and reference and Tiers and Frameworks and Architect and Patterns and Architecture and xp.

Installing Mac OS X Leopard on a PC

…“You can build your system for a lot less than a real Mac and get the performance of a top-dollar Apple machine. This is fact and a lot of the real Mac users will deny, but it is fact. My machine runs a e4300 Core Duo Processor over-clocked to 3.40 GHZ. Where can you get a 3.4-GHz Mac? It will cost you a fortune. I have 1066-MHz DDR2 memory. Where can you get that on a real Mac???”

“Why run OS X? Well, when you are just used to Windows, it is like living inside a house and not experimenting the whole world out there. Once you get out of it, it is just amazing. Mac is just that: You just feel like glued to the computer. Everything is just beautiful, the interface, the stability. Once you experiment it, you don’t want to go back to windows.

Written by vistasucks on October 31st, 2007 with 2 comments.
Read more articles on Quality and Mobile and Upgrading and Switching and Tips & Tricks and vs and Nvidia and IBM and Leopard and Sony and HP and nvidia and PC and OSX and xp and Microsoft and Hardware and Windows and Security and Apple and Dell and Intel and ATI and News and vista and software.

PCMag: Leopard “the most polished and easiest to use OS”

A

Written by vistasucks on October 30th, 2007 with no comments.
Read more articles on Upgrading and Switching and PC and Business and Quality and Leopard and vs and Mobile and OSX and Review and xp and Windows and Security and Microsoft and Mac and News and vista and Apple and software.

The fastest Vista laptop of 2007 is…

A

Written by vistasucks on October 30th, 2007 with no comments.
Read more articles on Quality and Upgrading and Switching and PC and Mobile and vs and IBM and Sony and HP and OSX and Intel and Mac and Microsoft and Hardware and Windows and Apple and Dell and Review and News and vista and software.

Leopard will open the Mac OS X floodgates (and embarass Microsoft)

…As many of you are aware, I think Windows Vista is a blunder. And with its annoying UAC system, and horrifically slow operation, it won’t take long before the majority of home users agree with me. And if the recent figures showing Mac OS X is already gaining market share is any indication of the future, look for Leopard to outsell Vista by a staggering margin. Read the full article on C|Net.Com

Written by vistasucks on October 29th, 2007 with no comments.
Read more articles on Upgrading and Switching and PC and Business and Quality and Leopard and vs and Mobile and OSX and google and Microsoft and Windows and Security and Mac and Apple and News and vista and software.

Apple now the most valuable computer maker in the world!

The Unofficial Apple Weblog reports: …with the recent gains Apple passed an important milestone. Apple has a larger market capitalization than IBM, meaning simply that Apple is now the most valuable computer hardware maker in the world. Let me say that again: Apple is, as of this writing, trading above $185 per share giving it a market cap of $161b, compared to IBM at $153b, HP at $133b and Dell at a measly $65b. Read the article on Tuaw.Com

Written by vistasucks on October 26th, 2007 with no comments.
Read more articles on iPhone and vs and Mobile and iPod and HP and IBM and Apple TV and Quality and Business and Dell and Apple and Mac and News and Intel and Switching and PC and Hardware.

« Older articles

No newer articles