Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits:...

33
Design engineering Vilnius 2015

Transcript of Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits:...

Page 1: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Design engineering

Vilnius2015

Page 2: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

The goal of design engineering is to produce a model that exhibits:

• firmness – a program should not have bugs that inhibit its function;

• commodity – a program should be suitable for purposes for which it was intended;

• delight – the experience of using the program should be a pleasurable one.

Page 3: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Accomplished by practicing diversification and convergence

• diversification – acquisition of alternatives (design material, i.e. components, component solutions, knowledge);

• convergence – picking and choosing elements from the alternatives that meet the requirements defined by requirements engineering and analysis model.

Page 4: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Each of the element of analysis model provide necessary information for the four design models required for design specification:

• data/class design;• architectural

design;• interface design;• component design.

Page 5: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Characteristics that serve as a guide for the evaluation of a good design

• The design must implement all of the explicit requirements contained in analysis model and implicit requirements desired by customer.

• Design must be readable and understandable by implementers, testers and maintainers alike.

• Design should provide complete picture of the software, addressing functional, behavioral and data domains from an implementation perspective.

Page 6: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

What criteria would help to evaluate design quality?

Page 7: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Technical criteria for evaluation of design quality (1)

1. A design should exhibit an architecture that:

o has been created using recognizable architectural styles and patterns;

o is composed of components that exhibit good design characteristics;

o can be designed in evolutionary fashion.

Page 8: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

2. A design should be modular.

3. A design should contain distinct representation of data, architecture, interfaces, and components.

4. A design should lead to data structures that are appropriate for classes to be implemented and are drawn from recognizable patterns.

5. A design should lead to components that exhibit independent functional characteristics.

Technical criteria for evaluation of design quality (2)

Page 9: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

6. A design should lead to interfaces that reduce the complexity of connections between components and with external environment.

7. A design should be derived using a repeatable method that is driven by information obtained during software requirements analysis.

8. A design should be represented using a notation that effectively communicates its meaning.

Technical criteria for evaluation of design quality (3)

Page 10: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Software quality attributes!? Huh?

Page 11: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Software quality attributes (FURPS)

• Functionality• Usability• Reliability• Performance• Supportability

Page 12: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Design concepts

“The Beginning of wisdom for a [software engineer] is to recognize the difference between getting a program to work, and getting it right.”

M. A. Jackson

Page 13: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Abstraction

• for modular solution many levels of abstraction can be posed;

• at highest level solution is stated in broad terms using language terms of problem environment;

• at lower levels a more detailed description is provided;

• procedural abstraction refers to a sequence of instructions that have a specific an limited function;

• data abstraction is a named collection of data that describes a data object.

Page 14: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Architecture (1)

• Is the structure/organization of program components (modules), the manner in which these components interact, and the structure of data that is used by the components.

• Components can be generalized to represent major system elements and their interactions.

• Goal – derive architectural rendering of system, that serves as a framework from which more detailed design activities are conducted.

Page 15: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Architecture (2)

Architectural design models:

• structural models;• framework models;• dynamic models;• process models;• functional models.

Page 16: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Patterns

• Describes a design structure that solves a particular design problem within a specific context.

• Should provide description that enables designer to determine:o whether pattern is applicable to current work;o whether the pattern can be reused;o whether the pattern can serve as a guide for

developing similar, but functionally or structurally different pattern.

Page 17: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Modularity

• Monolithic software cannot be easily grasped by a software engineer.

• It takes more time to solve more difficult problem.

• “divide an conquer” strategy – it’s easier to solve complex problem when you break it into manageable pieces.

Page 18: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Should we subdivide indefinitely?If not how small is too small?

?

Page 19: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

As the number of modules grows, the effort (cost) associated with integrating the modules also grows!

Page 20: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Information hiding

• Builds up on modularity concept.

• Modules should be specified and designed so that information (algorithms and data) contained within a module is inaccessible to other modules that have no need for such information;

• Hiding defines and enforces access constraints to procedural details and local data structures used within a module.

• Hiding prevents error propagation outside of a module.

Page 21: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Functional independence

• Each module should address a specific sub function of requirements and have a simple interface.

• Functional independent modules are easier to develop, maintain, and test;

• Error propagation is reduced and reusable modules are possible;

• Assessed using two qualitative criteria:o cohesion;o coupling.

Page 22: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Refinement

• A top-down design strategy by which program is designed by successively refining levels of procedural detail;

• Abstraction and refinement are complementary features:o one specifies procedure and data without

details;o other allows to elaborate by providing low-level

details.

Page 23: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Refactoring

It is the process of changing a software system in such way that it does not alter the external behavior of the code yet improves its internal structure.

Page 24: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Design classes

Software team must define a set of design classes that:

• refine the analysis classes by providing design detail that will enable the classes to be implemented;

• create a new set of design classes that implement a software infrastructure to support the business solution.

Page 25: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Different types of design classes representing a different layer of design architecture:

• user interface classes;

• business domain classes;

• process classes;

• persistent classes;

• system classes.

Page 26: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

What are the characteristics of well formed design classes?

Page 27: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Characteristics of well formed design classes

• Complete and sufficient

• Primitiveness

• High cohesion

• Low coupling

Page 28: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Design model

• The elements of design model use many of the same UML diagrams that were used in the analysis model.

• The diagrams are refined and elaborated – more implementation specific detail is provided;

• Architectural structure and style, components that reside within architecture, interfaces between components and with outside world are all emphasized.

Page 29: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Page 30: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Design model elements• Data design elements

• Architectural design elements

• Interface design elements

o The user interface (UI)

o External interfaces

o Internal interfaces between various design components

• Component-level design elements

• Deployment-level design elements

Page 31: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Types of design patterns considered at various levels of abstraction

• Architectural patterns(Peer-to-peer, Service-oriented architecture, etc.)

• Design patterns(Iterator, Scheduler, Thread pool, Wrapper, etc.)

• Idioms(Infinite loop, swapping values between variables, etc.)

Page 32: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

Frameworks

• Provides an implementation-specific skeletal infrastructure for design work.

• It is not a design pattern, but rather a skeleton with a collection of “plug points” that enable it to be adapted to a specific problem domain.

• The plug points enable designer to integrate problem specific classes or functionality within the skeleton.

Page 33: Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.

?