Software Design Deriving a solution which satisfies software requirements.

Slides:



Advertisements
Similar presentations
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 12Slide 1 Software Design l Objectives To explain how a software design may be represented.
Advertisements

Design Concepts and Principles
Chapter 7 – Object-Oriented Design
Software Design Deriving a solution which satisfies software Speficitaion.
Software Engineering Software Design Slide 1 Software Engineering Software Design.
Software Design Hoang Huu Hanh, Hue University hanh-at-hueuni.edu.vn.
Software Design Deriving a solution which satisfies software requirements.
Lecturer: Sebastian Coope Ashton Building, Room G.18 COMP 201 web-page:
Lecturer: Sebastian Coope Ashton Building, Room G.18 COMP 201 web-page: Lecture.
7M701 1 Software Engineering Object-oriented Design Sommerville, Ian (2001) Software Engineering, 6 th edition: Chapter 12 )
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 8 Slide 1 System models.
1 SWE Introduction to Software Engineering Lecture 23 – Architectural Design (Chapter 13)
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 8 Slide 1 System models.
Analysis Stage (Phase I) The goal: understanding the customer's requirements for a software system. n involves technical staff working with customers n.
©Ian Sommerville 2000Software Engineering, 6/e, Chapter 71 System models l Abstract descriptions of systems whose requirements are being analysed.
©Ian Sommerville 2000Software Engineering, 6/e, Chapter 91 Formal Specification l Techniques for the unambiguous specification of software.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 8 Slide 1 System models.
1 Lecture 5 Introduction to Software Engineering Overview  What is Software Engineering  Software Engineering Issues  Waterfall Model  Waterfall Model.
9 1 Chapter 9 Database Design Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel.
Course Instructor: Aisha Azeem
Software Design Deriving a solution which satisfies software requirements.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 9 Slide 1 Formal Specification l Techniques for the unambiguous specification of software.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 7 Slide 1 System models l Abstract descriptions of systems whose requirements are being.
Chapter 4 System Models A description of the various models that can be used to specify software systems.
System models Abstract descriptions of systems whose requirements are being analysed Abstract descriptions of systems whose requirements are being analysed.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 6th edition. Chapter 7 Slide 1 System models l Abstract descriptions.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
SOFTWARE DESIGN.
1 Software Design Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13, 5 th edition and Ch. 10, 6 th edition.
Sommerville, Mejia-Alvarez, 2009Software Engineering, Slide 1 Software Design u Deriving a solution which satisfies software requirements.
WXGE6103 Software Engineering Process and Practice Formal Specification.
Software Design Process A solution to satisfy the requirements ◦ Design process and methods ◦ Design strategies including object-oriented design and functional.
1 Software Design Overview Reference: Software Engineering, by Ian Sommerville, Ch. 12 & 13.
Chapter 7 System models.
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
System models l Abstract descriptions of systems whose requirements are being analysed.
Pertemuan 19 PEMODELAN SISTEM Matakuliah: D0174/ Pemodelan Sistem dan Simulasi Tahun: Tahun 2009.
CS 4310: Software Engineering Lecture 4 System Modeling The Analysis Stage.
Modified by Juan M. Gomez Software Engineering, 6th edition. Chapter 7 Slide 1 Chapter 7 System Models.
Software Engineering, 8th edition Chapter 8 1 Courtesy: ©Ian Somerville 2006 April 06 th, 2009 Lecture # 13 System models.
Sommerville 2004,Mejia-Alvarez 2009Software Engineering, 7th edition. Chapter 8 Slide 1 System models.
CSC480 Software Engineering Lecture 11 September 30, 2002.
Design Concepts and Principles Instructor: Dr. Jerry Gao.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 14 Slide 1 Object-oriented Design.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 7 Slide 1 Chapter 7 System Models.
OBJECT ORIENTED AND FUNCTION ORIENTED DESIGN 1 Chapter 6.
Dr D. Greer, Queens University Belfast )Chapter Six 1 Software Engineering Chapter Six Software Design Quality Learning Outcomes.
The Software Development Life Cycle: An Overview
Week 6: Software Design HNDIT Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process.
©Ian Sommerville 1995 Software DesignSlide 1 Software Design u Deriving a solution which satisfies software requirements.
 To explain why the context of a system should be modelled as part of the RE process  To describe behavioural modelling, data modelling and object modelling.
Basic Characteristics of Object-Oriented Systems
Slide 1 Chapter 8 Architectural Design. Slide 2 Topics covered l System structuring l Control models l Modular decomposition l Domain-specific architectures.
SOFTWARE DESIGN & SOFTWARE ENGINEERING Software design is a process in which data, program structure, interface and their details are represented by well.
Engineering, 7th edition. Chapter 8 Slide 1 System models.
Design Concepts ch-8
CompSci 280 S Introduction to Software Development
Software Engineering Lecture 4 System Modeling The Analysis Stage.
which satisfies software requirements
Lecture 9- Design Concepts and Principles
Basic Concepts in Software Design
Software Design Mr. Manoj Kumar Kar.
CS223: Software Engineering
Software Design CMSC 345, Version 1/11.
Lecture 9- Design Concepts and Principles
Software Design Methodologies and Testing
Software Engineering Software Design.
Presentation transcript:

Software Design Deriving a solution which satisfies software requirements

Objectives To introduce the process of software design To describe the different stages in this design process To show how object-oriented and functional design strategies are complementary To discuss some design quality attributes

Topics covered The design process and design methods Design strategies including object-oriented design and functional decomposition Design quality attributes

Stages of design Problem understanding –Look at the problem from different angles to discover the design requirements Identify one or more solutions –Evaluate possible solutions and choose the most appropriate depending on the designer's experience and available resources Describe solution abstractions –Use graphical, formal or other descriptive notations to describe the components of the design Repeat process for each identified abstraction until the design is expressed in primitive terms

The design process Any design may be modeled as a directed graph made up of entities with attributes which participate in relationships The system should be described at several different levels of abstraction Design takes place in overlapping stages. It is artificial to separate it into distinct phases but some separation is usually necessary

From informal to formal design

Phases in the design process

Design phases Architectural design Identify sub-systems Abstract specification Specify sub-systems Interface design Describe sub-system interfaces Component design Decompose sub-systems into components Data structure design Design data structures to hold problem data Algorithm design Design algorithms for problem functions

Hierarchical design structure

Top-down design In principle, top-down design involves starting at the uppermost components in the hierarchy and working down the hierarchy level by level In practice, large systems design is never truly top-down. Some branches are designed before others. Designers reuse experience (and sometimes components) during the design process

Design methods Structured methods are sets of notations for expressing a software design and guidelines for creating a design Well-known methods include Structured Design (Yourdon), and JSD (Jackson Method) Can be applied successfully because the support standard notations and ensure designs follow a standard form Structured methods may be supported with CASE tools

Method components Many methods support comparable views of a system A data flow view (data flow diagrams) showing data transformations An entity-relation view describing the logical data structures A structural view showing system components and their interactions

Method deficiencies They are guidelines rather than methods in the mathematical sense. Different designers create quite different system designs They do not help much with the early, creative phase of design. Rather, they help the designer to structure and document his or her design ideas

Design description Graphical notations. Used to display component relationships Program description languages. Based on programming languages but with more flexibility to represent abstract concepts Informal text. Natural language description. All of these notations may be used in large systems design

Design strategies Functional design The system is designed from a functional viewpoint. The system state is centralized and shared between the functions operating on that state Object-oriented design The system is viewed as a collection of interacting objects. The system state is de- centralized and each object manages its own state. Objects may be instances of an object class and communicate by exchanging messages.

Functional view of a compiler

Object-oriented view of a compiler

Mixed-strategy design Although it is sometimes suggested that one approach to design is superior, in practice, an object-oriented and a functional-oriented approach to design are complementary Good software engineers should select the most appropriate approach for whatever sub-system is being designed

Aircraft sub-systems

High-level objects The navigation system The radar system The communications system The instrument display system The engine control system... 18

System functions (sub-system level) Display track (radar sub-system) Compensate for wind speed (navigation sub-system) Reduce power (engine sub-system) Indicate emergency (instrument sub-system) Lock onto frequency (communications sub-system)...

Low-level objects The engine status The aircraft position The altimeter The radio beacon... 20

Design quality Design quality is an elusive concept. Quality depends on specific organizational priorities A 'good' design may be the most efficient, the cheapest, the most maintainable, the most reliable, etc. The attributes discussed here are concerned with the maintainability of the design Quality characteristics are equally applicable to function-oriented and object-oriented designs

Cohesion A measure of how well a component 'fits together' A component should implement a single logical entity or function Cohesion is a desirable design component attribute as when a change has to be made, it is localized in a single cohesive component Various levels of cohesion have been identified

Cohesion levels Coincidental cohesion (weak) –Parts of a component are simply bundled together Logical association (weak) –Components which perform similar functions are grouped Temporal cohesion (weak) –Components which are activated at the same time are grouped Procedural cohesion (weak) –The elements in a component make up a single control sequence

Cohesion levels Communicational cohesion (medium) –All the elements of a component operate on the same input or produce the same output Sequential cohesion (medium) –The output for one part of a component is the input to another part Functional cohesion (strong) –Each part of a component is necessary for the execution of a single function Object cohesion (strong) –Each operation provides functionality which allows object attributes to be modified or inspected

Cohesion as a design attribute Not well-defined. Often difficult to classify cohesion Inheriting attributes from super-classes weakens cohesion To understand a component, the super-classes as well as the component class must be examined Object class browsers assist with this process

A measure of the strength of the inter-connections between system components Loose coupling means component changes are unlikely to affect other components Shared variables or control information exchange lead to tight coupling Loose coupling can be achieved by state decentralization (as in objects) and component communication via parameters or message passing Coupling

Tight coupling

Loose coupling

Object-oriented systems are loosely coupled because there is no shared state and objects communicate using message passing However, an object class is coupled to its super-classes. Changes made to the attributes or operations in a super-class propagate to all sub-classes. Such changes must be carefully controlled Coupling and inheritance

Related to several component characteristics –Cohesion. Can the component be understood on its own? –Naming. Are meaningful names used? –Documentation. Is the design well-documented? –Complexity. Are complex algorithms used? Informally, high complexity means many relationships between different parts of the design. hence it is hard to understand Most design quality metrics are oriented towards complexity measurement. They are of limited use Understandability

A design is adaptable if: –Its components are loosely coupled –It is well-documented and the documentation is up to date –There is an obvious correspondence between design levels (design visibility) –Each component is a self-contained entity (tightly cohesive) To adapt a design, it must be possible to trace the links between design components so that change consequences can be analyzed Adaptability

Design traceability

Inheritance dramatically improves adaptability. Components may be adapted without change by deriving a sub-class and modifying that derived class However, as the depth of the inheritance hierarchy increases, it becomes increasingly complex. It must be periodically reviewed and restructured Adaptability and inheritance

Design is a creative process Design activities include architectural design, system specification, component design, data structure design and algorithm design Functional decomposition considers the system as a set of functional units Object-oriented decomposition considers the system as a set of objects Decisions on parallelism should usually be detailed design decisions Key points