Introduction to Software Design

About This Presentation
Title:

Introduction to Software Design

Description:

... software design methodologies as well as application domain-specific knowledge. ... The demarcation of a horizontal domain is based on the types of concerns ... – PowerPoint PPT presentation

Number of Views:39
Avg rating:3.0/5.0
Slides: 59
Provided by: robertw8
Learn more at: https://www.ecs.csun.edu

less

Transcript and Presenter's Notes

Title: Introduction to Software Design


1
Introduction to Software Design
2
Outline
  • Problems in software architectural design
  • Function, form, and fabrication (the Vitruvian
    triad)
  • The scope of design
  • The psychology and philosophy of design
  • General methodology of design

3
Problems in Software Architectural Design
  • An ad hoc approach to design does not scale with
    respect to the size and complexity of the
    application.
  • As the number of functions and quality attributes
    grows, so does the need for more control of the
    application design.

4
Obstacles to Achieving High-Quality Architectural
Design
  • A lack of awareness of the importance of
    architectural design to software development.
  • A lack of understanding of the role of the
    software architect.
  • A widespread view than designing is an art form,
    not a technical activity.
  • A lack of understanding of the design process.

5
Obstacles to Achieving High-Quality Architectural
Design (Contd)
  • A lack of design experience in a development
    organization.
  • Insufficient software architecture design methods
    and tools.
  • A lack of understanding of how to evaluate
    designs.
  • Poor communication among stakeholders.

6
When Are the Architecture Design Activities Done?
  • They can be practiced during any phase of the
    development process.
  • However, to be of greatest benefit they should be
    done as early as possible.
  • These activities can be viewed as a linear set of
    steps that can be repeated whenever missing
    information or hidden assumptions are identified.

7
Solving These Problems Involves
  • Evangelizing the importance of software
    architecture.
  • Improving software architecture education.
  • Using architectural methods and tools.

8
Function, Form, and Fabrication The Vitruvian
Triad
  • In hisTen Books on Architecture Vitruvius wrote
    that the result of architecting should be an
    artifact exhibiting the principles of firmitas,
    utilitas, and venustas.
  • These three principles are know as the Vitruvian
    Triad.

9
The Vitruvian Triad
  • Firmitas will be observed if, whatever the
    building materials may be, they have been chosen
    with care but not with excessive frugality.
    (fabrication/durability)
  • Utilitas will be observed if the design allows
    faultless, unimpeded use through the disposition
    of the spaces and the allocation of each type of
    space is properly oriented, appropriate, and
    comfortable. (function/usefulness)
  • Venustas will be upheld when the appearance of
    the work is pleasing and elegant, and the
    proportions of its elements have properly
    developed principles of symmetry. (form/beauty)

10
The Vitruvian Triad (Contd)
  • Architectural design is what brings function and
    form together.
  • Function in the architectural sense means need,
    purpose, utility, or intended use of the system.
  • An application system is constructed based on the
    specification of its form, which satisfies its
    function (i.e., need, purpose, etc.).
  • The form includes the specification of distinct
    quality attributes that, through a realization of
    components in a system, satisfies the function.

11
Function and Product Planning
  • An applications architecture must address
    end-user needs.
  • The architecture must be (partially) perceivable
    to the users of the application.
  • Architecting begins with a specification of an
    application or system in terms of the functions,
    capabilities, and other qualities that it must
    possess.

12
Form and Interaction Design
  • According to Alan Cooper design can be divided
    into interaction design and program design.
  • Interaction design is that which directly affects
    the ultimate end user of the application.
  • All other design is called program design.
  • Poor interface design contributes to cognitive
    friction or the resistance encountered by a
    human intellect when it engages with a complex
    system of rules that change as the problem
    permutes.
  • The interaction design is the users conceptual
    model or virtuality.

13
Interaction Design Human/Computer Interaction
(HCI)
  • Four threads of research
  • Software engineering methodologies of prototyping
    and iterative development.
  • Software psychology and human factors of
    computing systems.
  • Computer graphics and software user interfaces.
  • Models, theories, and frameworks of cognitive
    science.

14
The Application Domain
  • The application domain is that part of the world
    in which an applications effects will be felt,
    evaluated, and approved by users.
  • The virtuality of a software application must be
    congruent with the application domain.
  • Use cases are an example of an application domain
    modeling technique.

15
Fabrication
  • Vitruviuss firmitas is the principle of quality
    (soundness, durability).
  • The quality of a system is based on both the
    design of the system and the selection of
    technologies used to build it.
  • The system must be realizable it must be
    possible to build the system with available
    resources of time, staff, budget, existing
    components, etc.

16
The Scope of Design
  • An design activity can be seen from many points
    of view
  • Psychological design is a creative process that
    requires knowledge in software engineering,
    computer science, logic, cognitive science,
    linguistics, programming languages, and software
    design methodologies as well as application
    domain-specific knowledge.
  • Systematic design is an architecting or
    engineering activity that involves finding
    optimized solutions while balancing obstacles.
  • Organizational design is a set of steps or
    activities of the system life cycle, beginning
    with needs analysis and ending with the produce
    end of life.

17
Tasks and Activities of Design
  • Origin of the task
  • Organization
  • Novelty
  • Production
  • Technology
  • Horizontal domain
  • Quality attributes

18
Origin of the Task
  • Possible origins for a design task
  • Product planning (especially for commercial
    software)
  • In-house software (custom systems)
  • Systems integration
  • Production and field testing

19
Organization
  • The design process is usually organized around
    the structure of the development organization.
  • Two common types of organization are
  • Product-oriented product development and
    production responsibilities are divided among
    different divisions based on product type.
  • Problem-oriented work is organized according to
    a division of labor along domain boundaries such
    as database administration, user interface
    design, etc.
  • Each organizational type affects the choice of
    design activities and how they are performed.

20
Novelty
  • Some design task require much more invention and
    creative problem solving than others. The
    novelty of the problem can be categorized as
    follows
  • Original design
  • Adaptive design
  • Variant design

21
Original Design
  • Starts with a clean slate.
  • May be created through the synthesis of known
    solution principles and existing technology.
  • May require inventing something new.

22
Adaptive Design
  • Starts with known or established solution
    principles.
  • Adapts the principles to fit the current problem.
  • May involve some original design as new
    components are added to meet new requirements.

23
Variant Design
  • Starts with an existing design.
  • Modifies the design with respect to some
    nonfunctional quality attributes.
  • For example, changes to improve performance of
    certain operations, or be able to handle greater
    user loads.

24
Production
  • Software may be created for either
  • A One-off custom system
  • Commercial software for sale
  • For one-off systems functionality,
    maintainability, performance, reliability and/or
    availability are typically the most important
    qualities.
  • For Commercial systems functionality,
    performance, extensibility, adaptability, and
    usability are commonly the paramount qualities.

25
Technology
  • Different technologies require different design
    methods. Some technology areas that affect
    design methods are
  • Information representation
  • Data storage
  • Data transformation
  • Business logic
  • User interface design
  • Vendor platforms

26
Horizontal Domain
  • Systems can be characterized by their relative
    complexity.
  • Systems can be divided horizontally into layers
    or horizontal domains where each layer has its
    own complexities.
  • The demarcation of a horizontal domain is based
    on the types of concerns addressed by design and
    the patterns, methods, and tools specific to a
    domain.

27
Example of Horizontal Domains
  • Integrated enterprises (B2B)
  • Enterprise integration systems of applications
    (integrated applications)
  • Enterprise applications (point or vertical
    solutions)
  • Software libraries, databases, application
    servers, operating systems (platforms)

28
Quality Attributes
  • One of the largest factors that affect the design
    task is the set of required quality attributes of
    the system.
  • The architect must find a balance among the
    competing quality attributes.
  • Many passes through the design process may be
    needed as design tradeoffs are considered and
    proposed designs are evaluated.

29
Common Quality Attributes
  • Functionality
  • Buildability
  • Cost and time to market
  • Performance
  • Usability
  • Security
  • Availability and reliability
  • Modifiability

30
Architecture versus Engineering Design
  • The difference between software architecture
    design and software engineering design can be
    characterized based on scope and complexity.
  • Engineering design concentrates on implementing
    specific quality attributes using technologies.
  • Architectural design concentrates on formulating
    the quality attributes and system characteristics
    and selecting the working principles that balance
    many competing quality attributes.

31
The Psychology and Philosophy of Design
  • Design is a creative problem-solving activity
    that involves intuitive and discursive thought.
  • Intuitive thinking, mostly subconscious, is
    characterized by insight and inspiration usually
    triggered by some association of ideas.
  • Discursive thinking is conscious and deliberate,
    where facts and relationships are analyzed and
    combined in various ways, evaluated, and then
    disposed of.

32
Problems, Obstacles, and Solutions
Problems, Obstacles, and Solutions
Problems, Obstacles, and Solutions
  • Design is the activity of finding or creating
    solutions to problems given a set of obstacles to
    overcome.
  • Systematic approaches to design can add a degree
    of predictability with respect to the time
    required for design and its resulting quality.
  • Systematic approaches dont hinder creativity,
    but rather serve as a catalyst for creative
    thought.

33
Problems, Obstacles, and Solutions
Problems, Obstacles, and Solutions
Problems, Obstacles, and Solutions (Contd)
  • There is no one best design method.
  • There are both good and poor choices for which
    method to employ in a given set of circumstances.
  • Object-oriented design is a popular choice but is
    not always the best, especially when you are not
    at the level of objects and classes.

34
Aristotelian Reasoning
  • In software design reason can be used as a
    meta-tool for both understanding and discoursing.
  • The three rational operations used in the
    formation of knowledge definition, predication,
    and inference, can be used in architectural
    design.
  • Definition and predication can be used for
    understanding and inference can be used for
    discoursing.

35
Aristotelian Reasoning (Contd)
  • Definition and predication are the basis of
    abstract thinking.
  • Inference is used in the assessment of
    architectural designs.
  • After using the operations of definition and
    predication to understand the problem it still
    may not be represented in a way that facilitates
    the discovery of existing solutions.

36
Aristotelian Reasoning (Contd)
  • We use divide and conquer to refine our
    understanding and look for solutions to our new
    set of problems.
  • In order to master the art of software
    architecture, the architect needs to practice
    these techniques until they are part of his or
    her subconscious.

37
General Methodology of Design
  • Elements of Design
  • Purposeful thinking
  • Analysis
  • Abstraction
  • Synthesis
  • General heuristics

38
Purposeful Thinking
  • Design requires systematic thinking.
  • This does not preclude creativity or intuition.
  • But a purely intuitive approach has
    disadvantages
  • The right solution rarely comes at the right
    time.
  • The results depend on the skill of the architect.
  • The solution might be negatively influenced by
    preconceived ideas.

39
Purposeful Thinking (Contd)
  • The architect should analyze the design for
    errors or weak points in the early stages of
    development.
  • A discursive design approach helps reduce errors
    by enforcing systematic testing of design ideas
    and assumptions early.

40
Purposeful Thinking (Contd)
  • Creativity is inhibited or encouraged by
    different influences.
  • Some techniques for encouraging creativity are
  • Interrupt the activity to create incubation
    periods (but be careful too many interruptions
    can be disruptive).
  • Apply different solution-finding methods.
  • Move from abstract to concrete ideas.

41
Purposeful Thinking (Contd)
  • Some techniques for encouraging creativity
    (Contd)
  • Find and collect information form design
    catalogues (such as design patterns).
  • Divide work among architecture team members.
  • Make realistic plans Realistic planning is found
    to encourage motivation and creativity, while
    unrealistic planning is inhibiting.

42
Analysis
  • Analysis is the decomposition of complex systems
    into elements and their relationships.
  • Activities include identification, definition,
    and structuring for the purpose of acquiring
    information about a subject that can be
    transformed into knowledge.
  • Analytic methods are use at all stages of
    software design.

43
Analysis (Contd)
  • Structured analysis in software emphasizes a
    functional hierarchy.
  • Object-oriented analysis emphasizes an object
    hierarchy.
  • Weak-spot analysis of a design can be done by
    evaluating it with respect to metamodels.
  • Most software design problems are the result of a
    lack of understanding of the problem being solved.

44
Abstraction
  • Abstraction reduces the complexity of a problem
    while emphasizing the essential characteristics
    of it.
  • Abstractions aid in the discovery of solutions.
  • Abstractions are sometimes invented but often
    discovered.
  • A given problem may have many abstractions.

45
Synthesis
  • Synthesis is the combining of individual elements
    or parts to produce a new effect.
  • With respect to design it is the integration of
    subproblem solutions and the evaluation of the
    resulting system.

46
General Heuristics
  • Heuristics are techniques that are characterized
    as the searching for suitable solutions. Some
    heuristics are
  • Persistent questions
  • Negation
  • Forward steps
  • Backward steps
  • Factorization
  • Systematic variation
  • Division of labor and collaboration

47
The Method of Persistent Questions
  • Requirements are almost never complete.
  • The architect must engage in persistent
    questioning to stimulate ideas and remove
    preconceived notions.
  • Architects may keep a database of questions for
    various purposes.

48
The Method of Negation
  • The method starts with a known solution that is
    divided into (truthful) statements about its
    parts.
  • These statements are negated, one by one, to
    stimulate the creation of alternate solutions.

49
The Method of Forward Steps
  • This method starts with a first solution attempt
    and tries to follow as many solution paths as
    possible, by making decisions that lead to
    implementation.
  • This is a good brainstorming technique.

50
The Method of Backward Steps
  • In this method the architect starts with a goal
    in mind rather than the initial problem.
  • All possible paths that could have led up to the
    goal are retraced.
  • This method is useful for organizing and
    engineering department around the products
    architecture and for preparing an engineering
    process.

51
The Method of Factorization
  • The method involves breaking a complex system
    into less complex elements or factors.
  • This technique is used to find the essential
    problems being solved.
  • This may involve taking what appears to be an
    indivisible component and finding a way to divide
    it into two components and a interface.

52
The Method of Systematic Variation
  • The method starts with a generalized
    classification structure that represents the
    various problem characteristics and possible
    solutions.
  • By systematically varying a single
    characteristic, the architect may discover more
    optimized solutions.

53
Summary
  • Design is a creative problem-solving activity
    that involves finding or creating solutions to
    problems given a set of obstacles.
  • The three Aristotelian operations of reason can
    be used in formulating problems and rationalizing
    about their solutions.
  • The operations of definition and predication are
    used to gain understanding of the problem.

54
Division of Labor and Collaboration
  • Implementing large and complex tasks requires a
    division of labor.
  • Software development tasks are commonly based not
    only on functional areas but also on the
    technology used.
  • This division causes an information exchange
    problem.
  • Systematic methods and the creation of models can
    help overcome this problem.

55
Summary (Contd)
  • Inference is used to find new solutions and
    evaluate existing solutions.
  • There are three principles of architecture
    utilitas (function), firmitas (fabrication,
    quality), and venustas (form).
  • Function is expressed as problems and, through
    analysis, is divided into subproblems.
  • Analysis involves the rational operators of
    definition and predication.

56
Summary (Contd)
  • Product planning, the first phase of design,
    transforms the subproblems into a functional
    specification.
  • During conceptual design the functional
    specification is used to elaborate the functional
    design and the structural design.
  • The functional design corresponds to the
    externally facing or interaction design of the
    system (aimed at reducing cognitive friction).

57
Summary (Contd)
  • The structural design is concerned with the
    internal physical design of the software itself.
  • Heuristic design methods are applied to produce
    several candidate structural architectural
    designs.
  • The architecture design candidates are evaluated,
    disposed of, or further refined during embodiment
    design.

58
Summary (Contd)
  • The same rational operators and design methods
    are applied, but now the focus is on elaboration.
  • Detail design involves implementation and testing.
Write a Comment
User Comments (0)