90 likes | 173 Views
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.
E N D
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””
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
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
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.
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