Quality Attributes In Software Architecture & Design Patterns

  1. QUALITY ATTRIBUTES
    QUALITY: The

    extent to which a product satisfies stated and implied it’s needs when
    used under those specified conditions.
    FUNCTIONALITY: It is the ability of the system to do the work for which it was
    intended.
    (OR)
    The capability of the software product to provide functions or work to do which meet
    those requirements needed when this software product is used under specified
    conditions.
    For example, A task requires that many or most of the system’s elements work in a
    coordinated manner to complete the job, just as framers, electricians, plumbers,
    drywall hangers, painters, and finish carpenters all come together to cooperatively
    build a house.
    To design a good Software Architecture it constraints it’s allocation to structure some
    Quality Attributes in particular to adopt those needs required by that product or any
    architecture are important.
    Hence the need of good software architecture design is to best go-forth with the
    quality attributes importance under to know both what are functional & non-
    functional requirements?

  2. FUNCTIONAL REQUIREMENTS: It

    states that those system services provide,
    how the system should reset to particular inputs and how the system should
    behave in those particular situations. It also states that what the system
    should not to do.
    NON-FUNCTIONAL REQUIREMENTS: It states that what those system
    services like timing constraints, constraints on development process,
    standards are offered at a given time. It also offers these systems applicable
    as a whole rather than individual features or services it provides.
    Finally, the Quality Attributes that are required at a particular time which
    are meant in the design of good Software Architecture design are:
    Availability, Installability,
    Integrity, Interoperability,
    Performance, Reliability,
    Recoverability, Robustness,
    Safety, Usability,
    Efficiency, Flexibility,
    Maintainability, Portability,
    Reusability, Scalability,
    Supportability, and, Testability.

  3. QUALITY ATTRIBUTES SCENARIOS:
    •A

    quality attribute scenario is a quality-attribute-specific requirement that are requried to
    design a good Software Architecture. It consists of “6” parts like,
    Source of Stimulus: This is some entity (a human, a computer system, or any other
    actuator) that generated the stimulus.
    Stimulus: The stimulus is a condition that needs to be considered when it arrives at a
    system.
    Environment: The stimulus occurs within certain conditions. The system may be in an
    overload condition or may be running when the stimulus occurs, or some other
    condition may be true.
    Artifact: Some artifact is stimulated. This may be the whole system or some pieces of
    it.
    Response: The response is the activity undertaken after the arrival of the stimulus.
    Response Measure: When the response occurs, it should be measurable in some
    fashion so that the requirement can be tested.

  4. SYSTEM QUALITY SCENARIOS:

    The following are the main system quality attributes
    required in the design of good Software Architecture are:
    1. Availability Scenario,
    2. Modifiability Scenario,
    3. Performance Scenario,
    4. Security Scenario,
    5. Testability Scenario,
    6. Usability Scenario,
    7. Scalability Scenario, and,
    8. Portability Scenario.
    1. AVAILABILITY SCENARIO:
     “What’s the probability that the system works when I need it?”
     Concerns:
     Mean time to failure,
     Fault Detection,
     Repair Time,
     Fault Making, and, …..,.
     Hence Availability Scenario can be given as,

  5. 3. PERFORMANCE SCENARIO:

    Performance is about timing.
     Events (interrupts, messages, requests from users, or the passage of time) occur,
    and the system must respond to them.
     There are a variety of characterizations of event arrival and the response but
    basically performance is concerned with how long it takes the system to respond
    when an event occurs.

  6. COMMUNICATING QUALITY ATTRIBUTES

    CONCEPTS USING GENERAL SCENARIOS:
     One of the uses of general scenarios is to enable stakeholders to communicate.
     The below table gives the stimuli possible for each of the attributes used in the design
    of a good Software Architecture that shows a number of different concepts.
     Some stimuli occur during runtime and others occur before i.e., after runtime.
     So, the problem for the Software Architect or any person is to must understand that
    which of these stimuli represent the same occurrence, which are aggregates of other
    stimuli, and which are independent.

  7. BUSINESS QUALITIES
    Next, in

    the design of a Software Architecture the Business Qualities Attributes are mainly
    described in the following ways:
     Time to Market,
     Cost & Benefit,
     Projected Lifetime of the System,
     Targeted Market,
     Rollout Schedule, and,
     Integration with Legacy Systems.

  8. ARCHITECTURE QUALITIES
    Finally, in

    the design of a Software Architecture the Architecture Qualities Attributes are
    mainly described in the following ways:
     Conceptual Integrity,
    Correctness & Completeness, and,
    Build-ability.