SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
c
                                              Copyright       Nancy Leveson, Sept. 1999




1980s:
  OO design: 	added inheritance, multiple inheritance, and
              polymorphism to ADT.
                 In process added complexity and increased
                 some types of connectivity.

                 Lots of claimed advantages -- so far empirical
                 evaluation is not supporting them well.

1990s:
  Architecture
  Patterns
  Frameworks
  Kits
  etc.




                                �
c
                                                 Copyright       Nancy Leveson, Sept. 1999




Software Design Principles

  Design is a creative, problem-solving activity.

     No recipe for doing it - always need some type of "magic".

     Quality and expertise of designers is determinant for success.

        Simon: An expert has over 50,000 chunks of domain
        knowledge at hand.
             Solving a problem involves mapping into knowledge
             available.
             The larger this knowledge and the more accessible,
             the more successful the process will be.
c
                                               Copyright       Nancy Leveson, Sept. 1999




Software Design Principles (2)

   Brooks, Curtis: Successful software development often
   depends on small number of exceptional designers who
   think on a system level.
       Curtis: 	Such people might not be particularly good
                programmers.

   Design problem: How to decompose system into parts
       each with a lower complexity than system as a whole
       while minimizing interaction between the parts
       such that the parts together solve the problem.

   No universal way of doing this.
c	
                                                  Copyright        Nancy Leveson, Sept. 1999




Four Primary Design Principles

 1. 	Separation of concerns

     Deal with separate aspects of a problem separate.


 2. Abstraction
     Identify important aspects of a phenomenon and ignore
     details that are irrelevant at this stage.

     Hierarchical abstraction: build hierarchical layers of abstraction
         Procedural (functional) abstraction
         Data abstraction
         Control abstraction (abstract from precise sequence of
             events handled, e.g., nondeterminacy)
c	
                                             Copyright        Nancy Leveson, Sept. 1999




Four Primary Design Principles (2)

  3. Simplicity
        Emphasis on software that is clear, simple, and
        therefore easy to check, understand, and modify.


  4. 	Restricted visibility

       Locality of information
c
                                               Copyright       Nancy Leveson, Sept. 1999




General Software Design Concepts

Implementations of the general principles
  Decomposition
     Can decompose with respect to time order, data flow,
     logical groupings, access to a common resource,
     control flow, or some other criterion.

     Functional decomposition seems to be a natural way for
     people to solve problems as evidenced by its wide use.

     Top-down decomposition: start at high levels of abstraction
     and progress to levels of greater and greater detail.

     Bottom-up: form and layer groups of instruction sequences
     until work way up to a complete solution.
c
                                                   Copyright       Nancy Leveson, Sept. 1999




General Software Design Concepts (2)

  Decomposition (con’t.)
      Iterative decision making process:
         List difficult decisions and decisions likely to change
         Design a module specification to hide each such decision
         Break module into further design decisions.
         Continue refining until all design decisions hidden
         in a module

   Program Families: design for flexibility, not generality
c
                                                   Copyright       Nancy Leveson, Sept. 1999




General Software Design Concepts (3)
  Virtual Machines
      A module provides a virtual machine: a set of operations
      that can be invoked in a variety of ways and orders to
      accomplish a variety of tasks.
      Don’t think of systems in terms of components that
      correspond to steps in processing.
      Do provide a set of virtual machines that are useful for
      writing many programs.

   Information Hiding

      Each design unit hides internal details of processing activities.

      Design units communicate only through well-defined interfaces.

      Each design unit specified by as little information as possible

      If internal details change, client units should need no change
c
                                                    Copyright       Nancy Leveson, Sept. 1999




General Software Design Concepts (4)
  Modularity
    Separation of concerns:
     1. 	Deal with details of each module in isolation (ignoring
         details of other modules)
     2. 	Deal with overall characteristics of all modules and their
         relationships in order to integrate them into a coherent
         system.

   Base on hierarchy and abstraction:
       Abstraction handled through information hiding
       Hierarchy by defining uses and is-composed-of relations

   Minimize connectivity
c
                                                Copyright       Nancy Leveson, Sept. 1999




General Software Design Concepts (5)
  Modularity (con’t.)
     Sample things to modularize and encapsulate:
        abstract data types
        algorithms (e.g., sort)
        input and output formats
        processing sequence
        machine dependencies (e.g., character codes)
        policies (e.g., when and how to do garbage collection)
        external interfaces (hardware and software)

    Benefits:
      Allows understanding each part of a system separately
      Aids in modifying system
      May confine search for a malfunction to a single module.




                              �
c
                                            Copyright       Nancy Leveson, Sept. 1999




Design Methods
  Set of guidelines, heuristics, and procedures on how to go
  about designing a system.

  Usually offer a notation to express result of design process.

  Trying to provide a systematic means for organizing the
  design process and its products.

  Design method may be based on:
      Functional decomposition

      Data flow

      Data structures

      Control flow 

      Objects

  Vary in degree of prescriptiveness




                              �   �
c	
                                                     Copyright        Nancy Leveson, Sept. 1999




David Budgen, Software Design Methods: Life Belt
or Leg Iron (IEEE Software, Sept/Oct. 99)
  Will the adoption of a design method help the software
  development process (be a life belt) or is there significant
  risk that its use will lead to suboptimum solution (be a
  leg iron)?

Argument:
    Two general design characteristics:
     1. 	Wicked nature of any design process:
           Adopting a particular solution approach to a problem
           may make task of solving it more intractible, i.e., the
           design process is not neutral.
      2. 	Expert designers engage in opportunistic behavior:
            As solution’s form emerges, problem solving strategy
            is adapted to meet new characteristics that are revealed,
            i.e., expert designers do not follow a single method.




                                  �
c
                                                         Copyright       Nancy Leveson, Sept. 1999




These challenge the belief that good software engineering design
solutions will most likely come from systematically following a
prescriptive procedural method.

60s and 70s: people recognized that a systematic approach to
development needed to cope with large-scale projects. Needed
a way to promulgate and encourage the adoption of desirable
practices.
   A procedural form (do this, then do this, then this ...) lent
   itself to this role.
   Also easily conveyed through books and courses, easy to
   teach, easy to write exam questions.
   Yourdan, Michael Jackson, etc.

   Met some real needs.

By late 70s, use of procedural form was entrenched.




                                   �
c
                                                   Copyright       Nancy Leveson, Sept. 1999




But some good practices that did not lend themselves to such a
form, e.g., information hiding (for which no satisfactory form of
procedural development practice has yet been devised).

Reaction in 80s to shortcomings was to pile more on
   More diagrammatical forms
   More models
   More complexity
       Arguably, much of this complexity stems from the paradox of
       object orientation, which seems to provide excellent paradigms
       for analysis and implementation, but present major difficulties
       for the designer.

In 90s, attempts to develop other paradigms for transferring design
knowledge, e.g., patterns and architectures.




                                     
                                 �
Peculiarity of software design: extent to which commercial
interests have dominated the codifying of associated practices
   More widely known design methods have been developed
   and marketed largely by consultants and commercial
   organizations.
   Not true for requirements or testing

   Suggests a real need for design skills, but does not create
   an objective forum for evaluation.

Conclusions:
   Life belt has become waterlogged and acting more like a leg iron.
   Need to stop pretending that software design is largely a matter
   of following a set of well-defined activities. Recognize it as a
   creative process that requires us to develop design skills needed
   to build software systems of the future.

   How do we identify, grow, and encourage those talents needed
   for the great designers who will create elegant and effective
   solutions to problems?




                                �

Mais conteúdo relacionado

Destaque

Exraindo informações de negócio a partir de logs de aplicações dom o ELK
Exraindo informações de negócio a partir de logs de aplicações dom o ELKExraindo informações de negócio a partir de logs de aplicações dom o ELK
Exraindo informações de negócio a partir de logs de aplicações dom o ELKMarcus Vinicius Leandro
 
Подарим детям сказку
Подарим детям сказкуПодарим детям сказку
Подарим детям сказкуNikita Kudelin
 
Theory Of Wing Sections
Theory  Of  Wing  SectionsTheory  Of  Wing  Sections
Theory Of Wing SectionsMohamed Yaser
 
Monitorando logs de aplicações com o ELK
Monitorando logs de aplicações com o ELKMonitorando logs de aplicações com o ELK
Monitorando logs de aplicações com o ELKMarcus Vinicius Leandro
 
Il buzzieqa magika
Il buzzieqa magikaIl buzzieqa magika
Il buzzieqa magikaclarodgers
 
AngularJS: A framework to make your life easier
AngularJS: A framework to make your life easierAngularJS: A framework to make your life easier
AngularJS: A framework to make your life easierWilson Mendes
 
Evac staff mtg 3 25-13rec
Evac staff mtg 3 25-13recEvac staff mtg 3 25-13rec
Evac staff mtg 3 25-13recllhoffman
 
Itec410 e busness_case_lec
Itec410 e busness_case_lecItec410 e busness_case_lec
Itec410 e busness_case_lecAhmad Ammari
 
Mba International Client Brochure
Mba International Client BrochureMba International Client Brochure
Mba International Client Brochurejcadogan
 
Questions 1 27
Questions 1 27Questions 1 27
Questions 1 27clarodgers
 
Compliance Software
Compliance SoftwareCompliance Software
Compliance Softwarecvrhijn
 
Tbadv492actual good version
Tbadv492actual good versionTbadv492actual good version
Tbadv492actual good versionZach Chmill
 
Autoretrats dels felins i les felines
Autoretrats dels felins i les felinesAutoretrats dels felins i les felines
Autoretrats dels felins i les felinesesther669
 
Monitore sua infraestrutura com o Elasticsearch
Monitore sua infraestrutura com o ElasticsearchMonitore sua infraestrutura com o Elasticsearch
Monitore sua infraestrutura com o ElasticsearchMarcus Vinicius Leandro
 
Як створити відеоролик?
Як створити відеоролик? Як створити відеоролик?
Як створити відеоролик? Libinnovate
 

Destaque (20)

Exraindo informações de negócio a partir de logs de aplicações dom o ELK
Exraindo informações de negócio a partir de logs de aplicações dom o ELKExraindo informações de negócio a partir de logs de aplicações dom o ELK
Exraindo informações de negócio a partir de logs de aplicações dom o ELK
 
Подарим детям сказку
Подарим детям сказкуПодарим детям сказку
Подарим детям сказку
 
Theory Of Wing Sections
Theory  Of  Wing  SectionsTheory  Of  Wing  Sections
Theory Of Wing Sections
 
Monitorando logs de aplicações com o ELK
Monitorando logs de aplicações com o ELKMonitorando logs de aplicações com o ELK
Monitorando logs de aplicações com o ELK
 
Il buzzieqa magika
Il buzzieqa magikaIl buzzieqa magika
Il buzzieqa magika
 
AngularJS: A framework to make your life easier
AngularJS: A framework to make your life easierAngularJS: A framework to make your life easier
AngularJS: A framework to make your life easier
 
Evac staff mtg 3 25-13rec
Evac staff mtg 3 25-13recEvac staff mtg 3 25-13rec
Evac staff mtg 3 25-13rec
 
Itec410 e busness_case_lec
Itec410 e busness_case_lecItec410 e busness_case_lec
Itec410 e busness_case_lec
 
Mba International Client Brochure
Mba International Client BrochureMba International Client Brochure
Mba International Client Brochure
 
Questions 1 27
Questions 1 27Questions 1 27
Questions 1 27
 
Software Series 3
Software Series 3Software Series 3
Software Series 3
 
Compliance Software
Compliance SoftwareCompliance Software
Compliance Software
 
Tbadv492actual good version
Tbadv492actual good versionTbadv492actual good version
Tbadv492actual good version
 
Lec3
Lec3Lec3
Lec3
 
Autoretrats dels felins i les felines
Autoretrats dels felins i les felinesAutoretrats dels felins i les felines
Autoretrats dels felins i les felines
 
Autisme
AutismeAutisme
Autisme
 
Monitore sua infraestrutura com o Elasticsearch
Monitore sua infraestrutura com o ElasticsearchMonitore sua infraestrutura com o Elasticsearch
Monitore sua infraestrutura com o Elasticsearch
 
Ocean user experience-swtokyo
Ocean user experience-swtokyoOcean user experience-swtokyo
Ocean user experience-swtokyo
 
Як створити відеоролик?
Як створити відеоролик? Як створити відеоролик?
Як створити відеоролик?
 
Bam cap mang
Bam cap mangBam cap mang
Bam cap mang
 

Semelhante a Software Series ]5

Abstract
AbstractAbstract
Abstractemaye
 
SE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design PatternsSE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design PatternsAmr E. Mohamed
 
SE2_Lec 19_Design Principles and Design Patterns
SE2_Lec 19_Design Principles and Design PatternsSE2_Lec 19_Design Principles and Design Patterns
SE2_Lec 19_Design Principles and Design PatternsAmr E. Mohamed
 
OO Development 6 - Software Design
OO Development 6 - Software DesignOO Development 6 - Software Design
OO Development 6 - Software DesignRandy Connolly
 
Devnology back toschool software reengineering
Devnology back toschool software reengineeringDevnology back toschool software reengineering
Devnology back toschool software reengineeringDevnology
 
04 designing architectures
04 designing architectures04 designing architectures
04 designing architecturesMajong DevJfu
 
06 styles and_greenfield_design
06 styles and_greenfield_design06 styles and_greenfield_design
06 styles and_greenfield_designMajong DevJfu
 
Life & Work of Butler Lampson | Turing100@Persistent
Life & Work of Butler Lampson | Turing100@PersistentLife & Work of Butler Lampson | Turing100@Persistent
Life & Work of Butler Lampson | Turing100@PersistentPersistent Systems Ltd.
 
Design in construction
Design in constructionDesign in construction
Design in constructionAsha Sari
 
Design in construction
Design in constructionDesign in construction
Design in constructionAsha Sari
 
FreeNEST concept introduction
FreeNEST concept introductionFreeNEST concept introduction
FreeNEST concept introductionnarsuman
 
Cs 1023 lec 4 (week 1)
Cs 1023 lec 4 (week 1)Cs 1023 lec 4 (week 1)
Cs 1023 lec 4 (week 1)stanbridge
 
Multimediaexercise
MultimediaexerciseMultimediaexercise
MultimediaexerciseRony Mohamed
 
System Analysis and Design
System Analysis and DesignSystem Analysis and Design
System Analysis and DesignAamir Abbas
 
01_Principles.pdf rata Tata principles and rules
01_Principles.pdf rata Tata principles and rules01_Principles.pdf rata Tata principles and rules
01_Principles.pdf rata Tata principles and ruleswearemaskedmascots
 
Design concept -Software Engineering
Design concept -Software EngineeringDesign concept -Software Engineering
Design concept -Software EngineeringVarsha Ajith
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programmingmukhtarhudaya
 

Semelhante a Software Series ]5 (20)

Abstract
AbstractAbstract
Abstract
 
SE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design PatternsSE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design Patterns
 
SE2_Lec 19_Design Principles and Design Patterns
SE2_Lec 19_Design Principles and Design PatternsSE2_Lec 19_Design Principles and Design Patterns
SE2_Lec 19_Design Principles and Design Patterns
 
OO Development 6 - Software Design
OO Development 6 - Software DesignOO Development 6 - Software Design
OO Development 6 - Software Design
 
Devnology back toschool software reengineering
Devnology back toschool software reengineeringDevnology back toschool software reengineering
Devnology back toschool software reengineering
 
04 designing architectures
04 designing architectures04 designing architectures
04 designing architectures
 
06 styles and_greenfield_design
06 styles and_greenfield_design06 styles and_greenfield_design
06 styles and_greenfield_design
 
Life & Work of Butler Lampson | Turing100@Persistent
Life & Work of Butler Lampson | Turing100@PersistentLife & Work of Butler Lampson | Turing100@Persistent
Life & Work of Butler Lampson | Turing100@Persistent
 
Design in construction
Design in constructionDesign in construction
Design in construction
 
Design in construction
Design in constructionDesign in construction
Design in construction
 
FreeNEST concept introduction
FreeNEST concept introductionFreeNEST concept introduction
FreeNEST concept introduction
 
Cs 1023 lec 4 (week 1)
Cs 1023 lec 4 (week 1)Cs 1023 lec 4 (week 1)
Cs 1023 lec 4 (week 1)
 
Multimediaexercise
MultimediaexerciseMultimediaexercise
Multimediaexercise
 
System Analysis and Design
System Analysis and DesignSystem Analysis and Design
System Analysis and Design
 
Looking Forwards to Going Backwards
Looking Forwards to Going BackwardsLooking Forwards to Going Backwards
Looking Forwards to Going Backwards
 
01_Principles.pdf rata Tata principles and rules
01_Principles.pdf rata Tata principles and rules01_Principles.pdf rata Tata principles and rules
01_Principles.pdf rata Tata principles and rules
 
Lição prova professor coordenador
Lição prova professor coordenadorLição prova professor coordenador
Lição prova professor coordenador
 
Design concept -Software Engineering
Design concept -Software EngineeringDesign concept -Software Engineering
Design concept -Software Engineering
 
Unit 3
Unit 3Unit 3
Unit 3
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 

Mais de Mohamed Yaser

7 habits of highly effective people
7 habits of highly effective people7 habits of highly effective people
7 habits of highly effective peopleMohamed Yaser
 
Us navy introduction to helicopter aerodynamics workbook cnatra p-401 [us n...
Us navy   introduction to helicopter aerodynamics workbook cnatra p-401 [us n...Us navy   introduction to helicopter aerodynamics workbook cnatra p-401 [us n...
Us navy introduction to helicopter aerodynamics workbook cnatra p-401 [us n...Mohamed Yaser
 
Aerodynamics of the helicopter 2
Aerodynamics of the helicopter 2Aerodynamics of the helicopter 2
Aerodynamics of the helicopter 2Mohamed Yaser
 
Seddon j. basic helicopter aerodynamics [bsp prof. books 1990]
Seddon j.   basic helicopter aerodynamics [bsp prof. books 1990]Seddon j.   basic helicopter aerodynamics [bsp prof. books 1990]
Seddon j. basic helicopter aerodynamics [bsp prof. books 1990]Mohamed Yaser
 
The 10 natural_laws_of_successful_time_and_life_management
The 10 natural_laws_of_successful_time_and_life_managementThe 10 natural_laws_of_successful_time_and_life_management
The 10 natural_laws_of_successful_time_and_life_managementMohamed Yaser
 
حياة بلا توتر
حياة بلا توترحياة بلا توتر
حياة بلا توترMohamed Yaser
 
¨قوة التفكير
¨قوة التفكير¨قوة التفكير
¨قوة التفكيرMohamed Yaser
 
المفاتيح العشرة للنجاح
المفاتيح العشرة للنجاحالمفاتيح العشرة للنجاح
المفاتيح العشرة للنجاحMohamed Yaser
 
أدارة الوقت
أدارة الوقتأدارة الوقت
أدارة الوقتMohamed Yaser
 
¨قوة التفكير
¨قوة التفكير¨قوة التفكير
¨قوة التفكيرMohamed Yaser
 
The 10 Natural Laws Of Successful Time And Life Management
The 10  Natural  Laws Of  Successful  Time And  Life  ManagementThe 10  Natural  Laws Of  Successful  Time And  Life  Management
The 10 Natural Laws Of Successful Time And Life ManagementMohamed Yaser
 
Copy of book1 in c++
Copy of book1  in  c++Copy of book1  in  c++
Copy of book1 in c++Mohamed Yaser
 
structure for aerospace eng
structure for aerospace engstructure for aerospace eng
structure for aerospace engMohamed Yaser
 
realitivistic relativity 2.0
  realitivistic relativity 2.0  realitivistic relativity 2.0
realitivistic relativity 2.0Mohamed Yaser
 

Mais de Mohamed Yaser (20)

7 habits of highly effective people
7 habits of highly effective people7 habits of highly effective people
7 habits of highly effective people
 
Us navy introduction to helicopter aerodynamics workbook cnatra p-401 [us n...
Us navy   introduction to helicopter aerodynamics workbook cnatra p-401 [us n...Us navy   introduction to helicopter aerodynamics workbook cnatra p-401 [us n...
Us navy introduction to helicopter aerodynamics workbook cnatra p-401 [us n...
 
Aerodynamics of the helicopter 2
Aerodynamics of the helicopter 2Aerodynamics of the helicopter 2
Aerodynamics of the helicopter 2
 
Seddon j. basic helicopter aerodynamics [bsp prof. books 1990]
Seddon j.   basic helicopter aerodynamics [bsp prof. books 1990]Seddon j.   basic helicopter aerodynamics [bsp prof. books 1990]
Seddon j. basic helicopter aerodynamics [bsp prof. books 1990]
 
The 10 natural_laws_of_successful_time_and_life_management
The 10 natural_laws_of_successful_time_and_life_managementThe 10 natural_laws_of_successful_time_and_life_management
The 10 natural_laws_of_successful_time_and_life_management
 
حياة بلا توتر
حياة بلا توترحياة بلا توتر
حياة بلا توتر
 
فن التفاوض
فن التفاوضفن التفاوض
فن التفاوض
 
¨قوة التفكير
¨قوة التفكير¨قوة التفكير
¨قوة التفكير
 
المفاتيح العشرة للنجاح
المفاتيح العشرة للنجاحالمفاتيح العشرة للنجاح
المفاتيح العشرة للنجاح
 
أدارة الوقت
أدارة الوقتأدارة الوقت
أدارة الوقت
 
¨قوة التفكير
¨قوة التفكير¨قوة التفكير
¨قوة التفكير
 
The 10 Natural Laws Of Successful Time And Life Management
The 10  Natural  Laws Of  Successful  Time And  Life  ManagementThe 10  Natural  Laws Of  Successful  Time And  Life  Management
The 10 Natural Laws Of Successful Time And Life Management
 
F- 20
F- 20F- 20
F- 20
 
Copy of book1 in c++
Copy of book1  in  c++Copy of book1  in  c++
Copy of book1 in c++
 
structure for aerospace eng
structure for aerospace engstructure for aerospace eng
structure for aerospace eng
 
Tutorial 2
Tutorial     2Tutorial     2
Tutorial 2
 
Tutorial
TutorialTutorial
Tutorial
 
1
11
1
 
realitivistic relativity 2.0
  realitivistic relativity 2.0  realitivistic relativity 2.0
realitivistic relativity 2.0
 
Lec5
Lec5Lec5
Lec5
 

Software Series ]5

  • 1. c Copyright Nancy Leveson, Sept. 1999 1980s: OO design: added inheritance, multiple inheritance, and polymorphism to ADT. In process added complexity and increased some types of connectivity. Lots of claimed advantages -- so far empirical evaluation is not supporting them well. 1990s: Architecture Patterns Frameworks Kits etc. �
  • 2. c Copyright Nancy Leveson, Sept. 1999 Software Design Principles Design is a creative, problem-solving activity. No recipe for doing it - always need some type of "magic". Quality and expertise of designers is determinant for success. Simon: An expert has over 50,000 chunks of domain knowledge at hand. Solving a problem involves mapping into knowledge available. The larger this knowledge and the more accessible, the more successful the process will be.
  • 3. c Copyright Nancy Leveson, Sept. 1999 Software Design Principles (2) Brooks, Curtis: Successful software development often depends on small number of exceptional designers who think on a system level. Curtis: Such people might not be particularly good programmers. Design problem: How to decompose system into parts each with a lower complexity than system as a whole while minimizing interaction between the parts such that the parts together solve the problem. No universal way of doing this.
  • 4. c Copyright Nancy Leveson, Sept. 1999 Four Primary Design Principles 1. Separation of concerns Deal with separate aspects of a problem separate. 2. Abstraction Identify important aspects of a phenomenon and ignore details that are irrelevant at this stage. Hierarchical abstraction: build hierarchical layers of abstraction Procedural (functional) abstraction Data abstraction Control abstraction (abstract from precise sequence of events handled, e.g., nondeterminacy)
  • 5. c Copyright Nancy Leveson, Sept. 1999 Four Primary Design Principles (2) 3. Simplicity Emphasis on software that is clear, simple, and therefore easy to check, understand, and modify. 4. Restricted visibility Locality of information
  • 6. c Copyright Nancy Leveson, Sept. 1999 General Software Design Concepts Implementations of the general principles Decomposition Can decompose with respect to time order, data flow, logical groupings, access to a common resource, control flow, or some other criterion. Functional decomposition seems to be a natural way for people to solve problems as evidenced by its wide use. Top-down decomposition: start at high levels of abstraction and progress to levels of greater and greater detail. Bottom-up: form and layer groups of instruction sequences until work way up to a complete solution.
  • 7. c Copyright Nancy Leveson, Sept. 1999 General Software Design Concepts (2) Decomposition (con’t.) Iterative decision making process: List difficult decisions and decisions likely to change Design a module specification to hide each such decision Break module into further design decisions. Continue refining until all design decisions hidden in a module Program Families: design for flexibility, not generality
  • 8. c Copyright Nancy Leveson, Sept. 1999 General Software Design Concepts (3) Virtual Machines A module provides a virtual machine: a set of operations that can be invoked in a variety of ways and orders to accomplish a variety of tasks. Don’t think of systems in terms of components that correspond to steps in processing. Do provide a set of virtual machines that are useful for writing many programs. Information Hiding Each design unit hides internal details of processing activities. Design units communicate only through well-defined interfaces. Each design unit specified by as little information as possible If internal details change, client units should need no change
  • 9. c Copyright Nancy Leveson, Sept. 1999 General Software Design Concepts (4) Modularity Separation of concerns: 1. Deal with details of each module in isolation (ignoring details of other modules) 2. Deal with overall characteristics of all modules and their relationships in order to integrate them into a coherent system. Base on hierarchy and abstraction: Abstraction handled through information hiding Hierarchy by defining uses and is-composed-of relations Minimize connectivity
  • 10. c Copyright Nancy Leveson, Sept. 1999 General Software Design Concepts (5) Modularity (con’t.) Sample things to modularize and encapsulate: abstract data types algorithms (e.g., sort) input and output formats processing sequence machine dependencies (e.g., character codes) policies (e.g., when and how to do garbage collection) external interfaces (hardware and software) Benefits: Allows understanding each part of a system separately Aids in modifying system May confine search for a malfunction to a single module. �
  • 11. c Copyright Nancy Leveson, Sept. 1999 Design Methods Set of guidelines, heuristics, and procedures on how to go about designing a system. Usually offer a notation to express result of design process. Trying to provide a systematic means for organizing the design process and its products. Design method may be based on: Functional decomposition Data flow Data structures Control flow Objects Vary in degree of prescriptiveness � �
  • 12. c Copyright Nancy Leveson, Sept. 1999 David Budgen, Software Design Methods: Life Belt or Leg Iron (IEEE Software, Sept/Oct. 99) Will the adoption of a design method help the software development process (be a life belt) or is there significant risk that its use will lead to suboptimum solution (be a leg iron)? Argument: Two general design characteristics: 1. Wicked nature of any design process: Adopting a particular solution approach to a problem may make task of solving it more intractible, i.e., the design process is not neutral. 2. Expert designers engage in opportunistic behavior: As solution’s form emerges, problem solving strategy is adapted to meet new characteristics that are revealed, i.e., expert designers do not follow a single method. �
  • 13. c Copyright Nancy Leveson, Sept. 1999 These challenge the belief that good software engineering design solutions will most likely come from systematically following a prescriptive procedural method. 60s and 70s: people recognized that a systematic approach to development needed to cope with large-scale projects. Needed a way to promulgate and encourage the adoption of desirable practices. A procedural form (do this, then do this, then this ...) lent itself to this role. Also easily conveyed through books and courses, easy to teach, easy to write exam questions. Yourdan, Michael Jackson, etc. Met some real needs. By late 70s, use of procedural form was entrenched. �
  • 14. c Copyright Nancy Leveson, Sept. 1999 But some good practices that did not lend themselves to such a form, e.g., information hiding (for which no satisfactory form of procedural development practice has yet been devised). Reaction in 80s to shortcomings was to pile more on More diagrammatical forms More models More complexity Arguably, much of this complexity stems from the paradox of object orientation, which seems to provide excellent paradigms for analysis and implementation, but present major difficulties for the designer. In 90s, attempts to develop other paradigms for transferring design knowledge, e.g., patterns and architectures. �
  • 15. Peculiarity of software design: extent to which commercial interests have dominated the codifying of associated practices More widely known design methods have been developed and marketed largely by consultants and commercial organizations. Not true for requirements or testing Suggests a real need for design skills, but does not create an objective forum for evaluation. Conclusions: Life belt has become waterlogged and acting more like a leg iron. Need to stop pretending that software design is largely a matter of following a set of well-defined activities. Recognize it as a creative process that requires us to develop design skills needed to build software systems of the future. How do we identify, grow, and encourage those talents needed for the great designers who will create elegant and effective solutions to problems? �