SOFTWARE ENGINEERING
Department of computer science and Engineering
                Parul University
  UNIT 3 Structured System Design
Design Concepts, Design Model, Software Architecture, Data Design, Architectural Styles
and Patterns, Architectural Design, Alternative architectural designs, Modeling
Component level design and its modeling, Procedural Design, Object Oriented Design.
                                Design
• Mitch Kapor, the creator of Lotus 1-2-3, presented a “software
 design manifesto” in Dr. Dobbs Journal. He said:
  • Good software design should exhibit:
  • Firmness: A program should not have any bugs that inhibit its function.
  • Commodity: A program should be suitable for the purposes for which it
   was intended.
  • Delight: The experience of using the program should be pleasurable
   one.
                                                                      3
                          Analysis Model -> Design Model
                                                                                                            Co m p o n e n t -
 sc e na r i o- ba se d                                   f l ow- or i e nt e d                             L e v e l D e sig n
    e l e me nt s                                             e l e me nt s
use-cases - text                                     data flow diagrams
use-case diagrams                                    control-flow diagrams
activity diagrams                                    processing narratives
swim lane diagrams
                                                                                    In t e rf a c e D e sig n
                                Analysis Model
                                                                                  A r c h it e c t u ra l D e sig n
            c l a ss- ba se d                    be ha v i or a l
             e l e me nt s                       e l e me nt s
       class diagrams                      state diagrams
       analysis packages                   sequence diagrams
       CRC models                                                                   D a t a / Cla ss D e sig n
       collaboration diagrams
                                                                                  Design Model
                                                                                                                                  4
                            Design and Quality
• The design must implement all of the explicit requirements contained in the
 analysis model, and it must accommodate all of the implicit requirements
 desired by the customer.
• The design must be a readable, understandable guide for those who generate
 code and for those who test and subsequently support the software.
• The design should provide a complete picture of the software, addressing the
 data, functional, and behavioral domains from an implementation perspective.
                                                                         5
                                  Quality Guidelines
• A design should exhibit an architecture that
(1) has been created using recognizable architectural styles or patterns
(2) is composed of components that exhibit good design characteristics and
(3) can be implemented in an evolutionary fashion
• For smaller systems, design can sometimes be developed linearly.
• A design should be modular; that is, the software should be logically partitioned into
 elements or subsystems
• A design should contain distinct representations of data, architecture, interfaces, and
                                                                                  6
 components.
• A design should lead to data structures that are appropriate for the classes to be
 implemented and are drawn from recognizable data patterns.
• A design should lead to components that exhibit independent functional characteristics.
• A design should lead to interfaces that reduce the complexity of connections between
 components and with the external environment.
• A design should be derived using a repeatable method that is driven by information
 obtained during software requirements analysis.
• A design should be represented using a notation that effectively communicates its
 meaning.                                                                         7
                               Design Principles
• The design should be traceable to the analysis model.
• The design should “minimize the intellectual distance” between the software
 and the problem as it exists in the real world.
• The design should be structured to accommodate change.
• Design is not coding, coding is not design.
• The design should be assessed for quality as it is being created, not after the
 fact.
• The design should be reviewed to minimize conceptual (semantic) errors.   8
                             Fundamental Concepts
• Abstraction—data, procedure, control
• Architecture—the overall structure of the software
• Patterns—”conveys the essence” of a proven design solution
• Separation of concerns—any complex problem can be more easily handled if it is
 subdivided into pieces
• Modularity—compartmentalization of data and function
• Hiding—controlled interfaces
• Functional independence—single-minded function and low coupling         9
• Refinement—elaboration of detail for all abstractions
• Aspects—a mechanism for understanding how global requirements affect
 design
• Refactoring—a reorganization technique that simplifies the design
• OO design concepts
• Design Classes—provide design detail that will enable analysis classes
 to be implemented
                                                                      10
Data Abstraction
            door
                  manufacturer
                  model number
                  type
                  swing direction
                  inserts
                  lights
                     type
                     number
                  weight
                  opening mechanism
 implemented as a data structure
                                      11
Procedural Abstraction
                    open
                         details of enter
                         algorithm
   implemented with a "knowledge" of the
   object that is associated with enter
                                            12
                                             Architecture
“The overall structure of the software and the ways in which that structure provides conceptual
integrity for a system.” [SHA95a]
•Structural properties. This aspect of the architectural design representation defines the components of
a system (e.g., modules, objects, filters) and the manner in which those components are packaged and
interact with one another. For example, objects are packaged to encapsulate both data and the
processing that manipulates the data and interact via the invocation of methods
•Extra-functional properties.      The architectural design description should address how the design
architecture achieves requirements for performance, capacity, reliability, security, adaptability, and other
system characteristics.
•Families of related systems. The architectural design should draw upon repeatable patterns that are
commonly encountered in the design of families of similar systems. In essence, the design should have
the ability to reuse architectural building blocks.
                                                                                                   13
                                           Patterns
Design Pattern Template
•Pattern name—describes the essence of the pattern in a short but expressive name
•Intent—describes the pattern and what it does
•Also-known-as—lists any synonyms for the pattern
•Motivation—provides an example of the problem
•Applicability—notes specific design situations in which the pattern is applicable
•Structure—describes the classes that are required to implement the pattern
•Participants—describes the responsibilities of the classes that are required to implement the
pattern
•Collaborations—describes how the participants collaborate to carry out their responsibilities
•Consequences—describes the “design forces” that affect the pattern and the potential trade-offs
that must be considered when the pattern is implemented
•Related patterns—cross-references related design patterns                                14
                      Separation of Concerns
• Any complex problem can be more easily handled if it is subdivided into
 pieces that can each be solved and/or optimized independently
• A concern is a feature or behavior that is specified as part of the
 requirements model for the software
• By separating concerns into smaller, and therefore more manageable
 pieces, a problem takes less effort and time to solve.
                                                                   15
                                     Modularity
• "Modularity is the single attribute of software that allows a program to be intellectually
 manageable" [mye78].
• Monolithic software (i.e., A large program composed of a single module) cannot be
 easily grasped by a software engineer.
   • The number of control paths, span of reference, number of variables,
     and overall complexity would make understanding close to impossible.
• In almost all instances, you should break the design into many modules, hoping to
 make understanding easier and as a consequence, reduce the cost required to build
 the software.
                                                                                     16
                          Modularity: Trade-offs
What is the "right" number of modules
for a specific software design?
                                  module development cost
  cost of
 software
                                                                                  module
                                                                                integration
                                                                                    cost
       optimal number                                       number of modules
      of modules
                                                                                              17
                    Information Hiding
                   module
                                     • algorithm
                     controlled
                     interface       • data structure
                                     • details of external interface
                                     • resource allocation policy
clients
                          "secret"
 a specific design decision
                                                                       18
                     Why Information Hiding?
• Reduces the likelihood of “side effects”
• Limits the global impact of local design decisions
• Emphasizes communication through controlled interfaces
• Discourages the use of global data
• Leads to encapsulation—an attribute of high quality design
• Results in higher quality software
                                                               19
       Stepwise Refinement
open
       walk to door;
       reach for knob;
       open door;        repeat until door opens
                         turn knob clockwise;
       walk through;     if knob doesn't turn, then
       close door.           take key out;
                             find correct key;
                             insert in lock;
                         endif
                         pull/push door
                         move out of way;
                         end repeat
                                                      20
Sizing Modules: Two Views
   What's              How big
   inside??            is it??
  MODULE
                                 21
                               Functional Independence
• Functional independence is achieved by developing modules with "single-minded" function and an
  "aversion" to excessive interaction with other modules.
• Cohesion is an indication of the relative functional strength of a module.
    • A cohesive module performs a single task, requiring little interaction with other
      components in other parts of a program. Stated simply, a cohesive module
      should (ideally) do just one thing.
• Coupling is an indication of the relative interdependence among modules.
    • Coupling depends on the interface complexity between modules, the point at
      which entry or reference is made to a module, and what data pass across the
      interface.
                                                                                            22
                                Aspects
• Consider two requirements, A and B.          Requirement A crosscuts
 requirement B “if a software decomposition [refinement] has been
 chosen in which B cannot be satisfied without taking A into account.
 [Ros04]
• An aspect is a representation of a cross-cutting concern.
                                                                 23
                                       Refactoring
• Fowler [FOW99] defines refactoring in the following manner:
   • "refactoring is the process of changing a software system in such a way that it does not
    alter the external behavior of the code [design] yet improves its internal structure.”
• When software is refactored, the existing design is examined for
   • Redundancy
   • Unused design elements
   • Inefficient or unnecessary algorithms
   • Poorly constructed or inappropriate data structures
   • Or any other design failure that can be corrected to yield a better design.
                                                                                         24
                          OO Design Concepts
• Design classes
   • Entity classes
   • Boundary classes
   • Controller classes
• Inheritance—all responsibilities of a superclass is immediately inherited by all
 subclasses
• Messages—stimulate some behavior to occur in the receiving object
• Polymorphism—a characteristic that greatly reduces the effort required to
 extend the design                                                         25
                                          Design Classes
• Analysis classes are refined during design to become entity classes
• Boundary classes are developed during design to create the interface (e.G., Interactive screen
 or printed reports) that the user sees and interacts with as the software is used.
   • Boundary classes are designed with the responsibility of managing the way entity objects are represented
     to users.
• Controller classes are designed to manage
   • The creation or update of entity objects;
   • the instantiation of boundary objects as they obtain information from entity objects;
   • complex communication between sets of objects;
   • validation of data communicated between objects or between the user and the application.       26
             high
The Design
             a na ly sis m ode l
  Model
                       class diagr ams
                       analysis packages
                                                      use- cases - t ext            class diagr ams
                                                                                                                  Requirement s:
                       CRC models                     use- case diagr ams                                          const raint s
                                                                                    analysis packages
                       collabor at ion diagr ams
                                                      act ivit y diagr ams          CRC models                     int eroperabilit y
                       dat a f low diagr ams          sw im lane diagr ams          collabor at ion diagr ams      t arget s and
                       cont r ol- f low diagr ams     collabor at ion diagr ams     dat a f low diagr ams
                       pr ocessing nar r at ives      st at e diagr ams             cont r ol- f low diagr ams
                                                                                                                      conf igurat ion
                                                      sequence diagr ams            pr ocessing nar r at ives
                                                                                    st at e diagr ams
                                                                                    sequence diagr ams
                       design class r ealizat ions
                       subsyst ems
                       collabor at ion diagr ams      t echnical int er f ace        component diagr ams
                                                                                                                  design class r ealizat ions
                                                        design                       design classes
                                                                                                                  subsyst ems
                                                      Navigat ion design             act ivit y diagr ams
                                                                                                                  collabor at ion diagr ams
                                                      GUI design                     sequence diagr ams
                                                                                                                  component diagr ams
             de sign m ode l                                                                                      design classes
                                                                                  r ef inement s t o:             act ivit y diagr ams
                      r ef inement s t o:                                                                         sequence diagr ams
                                                                                     component diagr ams
                        design class r ealizat ions                                  design classes
                        subsyst ems                                                  act ivit y diagr ams
              low       collabor at ion diagr ams                                    sequence diagr ams           deployment diagr ams
                           archit ect ure                int erface               component -level               deployment -level
                             element s                   element s                   element s                       element s
                                                                                                                                          27
                                                                    process dimension
                                Design Model Elements
• Data elements
   • Data model --> data structures
   • Data model --> database architecture
• Architectural elements
                                                                                                                                                                         Com pone nt -
                                                                        scenar io- based                                       f low- or ient ed                         Le v e l De sign
                                                                          element s                                               element s
   • Application domain                                                use-cases - text
                                                                       use-case diagrams
                                                                                                                          data flow diagrams
                                                                                                                          control-flow diagrams
                                                                       activit y diagrams                                 processing narratives
   • Analysis classes, their relationships, collaborations and behaviors
                                                                       swim lane diagrams
                                                                                                                                                     Int e rfa c e De sign
     are transformed into design realizations                                                          Analysis Model
   • Patterns and “styles”                                                         class- based                         behavior al
                                                                                                                                                   Arc hit e c t ura l De sign
                                                                                    element s                           element s
• Interface elements                                                          class diagrams
                                                                              analysis packages
                                                                              CRC models
                                                                                                                  state diagrams
                                                                                                                  sequence diagrams
                                                                                                                                                    Da t a / Cla ss De sign
   • The user interface (UI)
                                                                              collaboration diagrams
   • external interfaces to other systems, devices, networks or other                                                                              Design Model
     producers or consumers of information
   • Internal interfaces between various design components.
• Component elements
• Deployment elements
                                                                                                                                                                 28
                        Architectural Elements
• The architectural model [Sha96] is derived from three sources:
  • information about the application domain for the software to be built;
  • specific requirements model elements such as data flow diagrams or
   analysis classes, their relationships and collaborations.
  • the availability of architectural patterns and styles.
                                                                      29
                  Interface Design Elements
• These interface design elements allow the software to communicate
 externally and enable internal communication and collaboration
 among the components that populate the software architecture.
                                                                 30
Interface Elements
                     31
                Component-Level Design Elements
• The component-level design for software is the equivalent to a set of detailed
 drawings (and specifications) for each room in a house.
• These drawings depict wiring and plumbing within each room, the location of
 electrical receptacles and wall switches, faucets, sinks, showers, tubs, drains, cabinets,
 and closets.
• The component-level design for software fully describes the internal detail of each
 software component.
• To accomplish this, the component-level design defines data structures for all local
 data objects and algorithmic detail for all processing.
                                                                                    32
       Component Elements
SensorManagement
                            Sensor
                                     33
                            Deployment Elements
Deployment-level          design
elements indicate how software
functionality and subsystems will
be allocated within the physical
computing environment that will
support the software.
                                                  34
THANKS…
          35