Software Design and Architecture Global Analysis Muhammad Nasir m.nasir@iiu.edu.pk
Agenda Global Analysis Factor Analysis Developing Strategies Organizational Factors Technological Factors Product Factors Developing Strategies
Global Analysis The purpose of the Global Analysis is two fold. Analyze the factors that influence the architecture And develop strategies for accommodating these factors in the architecture design.
Global Analysis We call it Global Analysis for three reasons: Many factors affect the entire system. So as the whole architecture. Global analysis occurs throughout the architecture design rather than at one point in time. Global analysis considers the factors as group not individually and develop strategies that accommodate all factors. As some factors contradict each other.
Analyzing the Factors The factors that effect the architecture design fall in to three categories. Organizational Factors Technological Factors Product Factors
Organizational Factors Organizational factors constraint the design choices. Some of them, such as development schedule and budget, apply only to a specific product being developed. Other organizational factors are organizational attitudes and software processes that effect every product. If you ignore these factors, the architecture may not be able to be implemented.
Typical Organizational Factors Q1: Management Build Versus Buy Schedule versus Functionality Environment Business Goals Q2: Staff skills, interests, strengths, weaknesses Application domain Specialized implementation techniques Specialized analysis techniques
Typical Organizational Factors Q3: Process and development environment Development platform Development Process and tools Configuration Management Process and Tools Production Process and Tools Testing Process and Tools Release Process and Tools Q4: Development Schedule Time to Market Delivery of features Release schedule Q5: Development Budget Head Count Cost of Development Tools
Technological Factors The Technological factors have a more obvious influence on the architecture. Architecture design choices are limited by the kind of software and hardware, architecture technology, and standards that are currently available. Technology changes over the period of time and product must adapt it and architecture should be designed with flexibility in mind.
Typical Technological Factors T1: General-purpose hardware Processors Network Memory Disk T2: Domain-specific Hardware Domain Specific Hardware Domain Specific Software T3: Software Technology Operating System User Interface Software Components Implementation Language Design Patterns Frameworks
Typical Technological Factors T4: Standards Operating system Database Data Formats Communication Algorithms and Techniques Coding Conventions
Product Factors Product factors are the primary influence on the architecture. This category covers the functional features of your product, and qualities like performance, dependability and cost. These factors may be different in future versions of the product, so your architecture should be designed to support the changes you can reasonably expect.
Typical Product Factors P1: Functional Features Functional Features P2: User Interface User Interaction Model User Interaction Features P3: Performance Sensor data rate Start-up and shutdown times Recovery Time P4: Dependability Availability Reliability Safety Dependability: The trustworthiness of a computing system which allows reliance to be justifiably placed on the service it delivers. Reliability: The term reliability refers to the ability of a computer-related hardware or software component to consistently perform according to its specifications. Safety: Safety is the state of being "safe" (from French sauf), the condition of being protected against physical, social, spiritual, financial, political, emotional, occupational, psychological, educational or other types or consequences of failure, damage, error, accidents, harm or any other event which could be considered non-desirable.
Typical Product Factors P5: Failure detection, reporting, recovery Error Classification Error Logging Diagnostics Recovery P6: Services Software Installation and upgrade Maintenance of domain-specific hardware Software testing Maintenance of Software P7: Product Cost Hardware Budget Software Licensing budget
Global Analysis Activities
Factor Analysis Activities Step 1: Identify and describe the Factors Step 2: Characterize the flexibility or the changeability of the Factors Step 3: Analyze the impact of the Factors
Sample Organizational Factor Table
Factor Analysis - Example Organizational Factor Flexibility/ Changeability Impact O2. Staff Skills Experience in multithreaded application. One in-house developer has this skill. The subject area is too complex to rely on training alone. There is moderate impact on meeting the performance
Factor Analysis - Example Organizational Factor Flexibility/ Changeability Impact O2. Development Schedule Time to market Time to market is two years There is no flexibility There can be a large impact on architecture choice. In commerce, time to market (TTM) is the length of time it takes from a product being conceived until its being available for sale. TTM is important in industries where products are outmoded quickly. A common assumption is that TTM matters most for first-of-a-kind products, but actually the leader often has the luxury of time, while the clock is clearly running for the followers.
Factor Analysis - Example Organizational Factor Flexibility/ Changeability Impact O2. Development Budget Head Count There are 12 developers The organization can hire one or two permanent developers or a large number of contractors There is a moderate impact on meeting the schedule. In commerce, time to market (TTM) is the length of time it takes from a product being conceived until its being available for sale. TTM is important in industries where products are outmoded quickly. A common assumption is that TTM matters most for first-of-a-kind products, but actually the leader often has the luxury of time, while the clock is clearly running for the followers.
Developing Strategies The second global analysis activity is to develop strategies for the architecture design. Developing strategies also has three steps Step 1: Identify Issues and Influencing Factors Step 2: Develop solutions and Specific Strategies Step 3: Identify Related Strategies
Step 1: Identify Issues and Influencing Factors Using the Factor table, Identify a handful of important Issues. An Issue may arise from limitation or constraints imposed by factors. E.g. Aggressive development schedule may take it impossible to satisfy all the product requirements.
Step 2: Develop solutions and Specific Strategies For each Issue develop strategies that address the issue and ensure the implementation of the architecture. Reduce the factor’s influence Reduce the overall time and effort.
Step 3: Identify Related Strategies Whenever a strategy belong to more than one issue, don’t repeat the strategy. Describe it at once and reference it whenever required. Use standard format to describe an strategy i.e. Issue Card
Issue Card
Developing Strategies - Example