8
Software Design

Software Design

  • Upload
    marlon

  • View
    21

  • Download
    3

Embed Size (px)

DESCRIPTION

Software Design. Introduction Design is a fundamental human activity. It provides a structure to any complex artifact. It decomposes a system into parts, assigns responsibilities to each part, and ensure that the parts fit together to achieve the global goals of the system. - PowerPoint PPT Presentation

Citation preview

Page 1: Software Design

Software Design

Page 2: Software Design

Introduction

• Design is a fundamental human activity.• It provides a structure to any complex artifact.• It decomposes a system into parts, assigns responsibilities to each

part, and ensure that the parts fit together to achieve the global goals of the system.

• In the case of software, the concepts design apply to two different, but strictly related contexts;– It acts as a bridge between requirements and the implementation of

the software.– It is the activity that gives structure to the artifact.

• “requirements specification document itself must be “designed””

Page 3: Software Design

Software design activity and its objectives• The design activity is a fundamental phase in the software

development process that progressively transforms the system requirements through a number of intermediate stages into a final product.

• The output of the design activity is a “Software Design”• Software Design is defined as a system decomposition into

modules- a description of what each module is intended to do and of the relationship among modules.

• Design is a process in which the views of the system are developed through steps of increasing detail.– Architecture is developed on the basis of the system requirements.– A high-level design is produced on the basis of the architecture.– A low-level design is derived on the basis of the high-level design

• The modularity principles is of paramount importance in the design of software: it is why the components of a system identified during the design activity are called modules.

• Two important goals that drive the design of a software architecture– Design for change– Product families

Page 4: Software Design

• Design for change– A way to design software that can be modified easily as requirements

change.– Change of algorithm – Change of data representation– Change of underlying abstract machine– Change of peripheral devices– Change of social environment– Change due to development process

• Product Families– Several end products as a family of products that share single

architecture that is reused.– Set of versions

Page 5: Software Design

Modularization Techniques• This discuss techniques that can be used during design to achive

the objectives.• A module is a well-defined component of a software system.• It may be a collection of routines, a collection of data, a collection

of type definition or a mixture of all of these.• Module is a provider of computational resources or services.• The modular structure of a system can be described in terms of

various types of mathematical relations:– S = {M1, M2, …, Mn}– “relation r” is a subset of S X S– “transitive closure r+” Mi r+ Mj, if and only if Mi r Mj or there is an

element Mk in S such that Mi r Mk and Mk r+ Mj.– “hierarchy” if and only if there are no two elements Mi, Mj such that

Mi r+ Mj and Mj r+ Mi

• Two types of relations among modules that are very useful for structuring software designs– USES Mi USES Mj– IS_COMPONENT_OF module that is composed of other modules that

may themselves be composed of other modules and so on.

Page 6: Software Design

Categories of Modules• Procedural abstractions

– Used to encapsulate an algorithm– Sorting modules, Fourier transform modules

• Group of related procedural abstractions• Common pool of data

– Depending on sharing of data among several module

Page 7: Software Design
Page 8: Software Design