1 / 8

Software Design

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.

marlon
Download Presentation

Software Design

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Design

  2. 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””

  3. 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

  4. 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

  5. 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.

  6. 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

More Related