Download presentation
Presentation is loading. Please wait.
Published bySabrina Park Modified over 8 years ago
1
Week 6: Software Design HNDIT23082
2
Software Engineering Software Design Learning Outcomes Understand the activities involved in the Design process Understand the principles of good design Identify Software design techniques Identify possible software architecture
3
Software Design - Objectives Design is a meaningful engineering representation of something that is to be built. In software Engineering context, design focuses on transforming requirements into implementable version of the software system.
4
Design activities Identification of the sub-systems Identification of the software components Identification of the software architecture Data design Interface design Algorithm design Data structure design Design specification
5
Software Design – Why it is important? A good design is the key for a successful software system A good design allows easy maintenance of a system A good design allows to achieve non-functional requirements such as reliability, performance, reusability, portability. A good design facilitates the development and management processes of a software project.
6
Some important software design principles Abstraction Modularity Information Hiding (Encapsulation) Polymorphism
7
Abstraction This is an intellectual tool (a psychological notion) which permits one to concentrate on a problem at some level of generalization without regard to irrelevant low level details Abstraction allows us to proceed with the development work without been held up in low-level implementation details (yet to be discovered)
8
Modularity Software is divided into separately named, addressable components called modules. Complexity of a program depends on modularity
9
Modularity Ctd.. Modularity facilitates the development process the maintenance process the project management process reusability
10
How many modules? Cost of effort No. of modules Cost per module Interface cost
11
Module Coupling A measure of the strength of the interconnections between system components. Loose(Low) coupling means component changes are likely to affect other components. Shared variables or control information exchange lead to tight(High) coupling. Loose coupling can be achieved by component communication via parameters or message passing.
12
Levels of Coupling Data Coupling Data is passed from one module to another using arguments Stamp Coupling More data than necessary is passed via arguments. Eg. Pass the whole record instead of just the field being changed. Control Coupling A flag is passed from one module to another affecting the functionality of the second module External Coupling Coupling with the environment (eg. Data files, other programs etc.).
14
Levels of Coupling (Cont..) Common Coupling Occurs when modules access the same global data. MODULE- A MODULE- B MODULE- C MODULE -D
15
Levels of Coupling (Cont..) Content Coupling One module directly affects the working of another. Calling module can modify the called module or refer to an internally defined data element. A B C D E Global Data area Common Coupling Content Coupling
16
Levels of Coupling (Contd..) Object Coupling Occurs when an object class inherits attributes and methods of another class. Changes to super-class propagate to all sub-classes. Student UG Student PG Student Object oriented systems are loosely coupled. No shared state and objects communicate using message passing, but
17
Coupling should be minimised. Loosely coupled modules facilitate: Maintenance Development Reusability
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.