Vilnius creates spaces and opportunity for creative innovations - Vilnius partners
Design engineering Vilnius 2015. The goal of design engineering is to produce a model that exhibits:...
-
Upload
deirdre-osborne -
Category
Documents
-
view
218 -
download
0
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/1.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/2.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/3.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/4.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/5.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/6.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/7.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/8.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/9.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/10.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/11.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/12.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/13.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/14.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/15.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/16.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/17.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/18.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/19.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/20.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/21.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/22.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/23.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/24.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/25.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/26.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/27.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/28.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/29.jpg)
![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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/30.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/31.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/32.jpg)
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.](https://reader036.fdocuments.us/reader036/viewer/2022062408/56649ed15503460f94bdf67f/html5/thumbnails/33.jpg)
?