software design concepts

27
Software Design Concepts The Basic Software Design Concepts @Mohammed Fazuluddin

Upload: mohammed-fazuluddin

Post on 11-Apr-2017

41 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Software Design Concepts

Software Design Concepts

The Basic Software Design Concepts

@Mohammed Fazuluddin

Page 2: Software Design Concepts

Topics• Overview• Design Process• FURPS Quality Factors• Software Design Techniques• Identify Architecture Goal• Design Methodologies• Software Design Approaches• Design Model• Modularization• Data Design• Software quality guidelines• Design Verification• Software Design Key Issues or Hotspots

Page 3: Software Design Concepts

Overview• We can’t just align few programmers to start programming without any

detailed plans or design.• The main aim of design engineering is to generate a model which shows

firmness, delight and commodity.• Software design is an iterative process through which requirements are

translated into the blueprint for building the software.• Design is highly creative stage in software development where the designer

plans how the system or program should meet the customer’s needs and how to make system effective and efficient.

• Any design problems must be tackled in three stages…• Study and understand the problem.• Identify gross features of at least one possible solution.• Describe each abstraction used in the solution.

Page 4: Software Design Concepts

Design Process• Software designers do not arrive at a finished design immediately. • They develop design iteratively through number of different

versions.• The starting point is informal design which is refined by adding

information to make it consistent and complete.• Activities necessary for architectural designing..

• System Structuring • Control modeling • Modular decomposition

 

Informal Design Outline

Informal Design

More Formal Design

Finished

DesignStart

Design Process

Page 5: Software Design Concepts

Design Process

Page 6: Software Design Concepts

FURPS Quality Factors• As part of the software design we should consider the FURPS

quality factors.• Please find the definitions of FURPS quality factors…

• Functionality – feature set and program capabilities• Usability – human factors (aesthetics, consistency, documentation)• Reliability – frequency and severity of failure• Performance – processing speed, response time, throughput,

efficiency• Supportability – maintainability (extensibility, adaptability,

serviceability), testability, compatibility, configurability

Page 7: Software Design Concepts

Identify Architecture Goal

• Identify the architecture goal that forms the architecture and design process.

• Flawless and defined objectives emphasize on the architecture, solve the right problems in the design and helps to determine when the current phase has completed, and ready to move to the next phase.

• The steps includes below mentioned activities…

Page 8: Software Design Concepts

Identify Architecture Goal

Identify Application Type:• Identify the application type whether it is a

• Mobile application• A rich client• A rich internet application• A service• A web application • Its is a combination of these all types.

Identify Deployment Constraints:• Choose an appropriate deployment topology and resolve conflicts

between the application and the target infrastructure.

Page 9: Software Design Concepts

Identify Architecture Goal

• Identify Important Architecture Design Styles:• Identify important architecture design styles such as

• client/server, layered, • message-bus, • domain-driven design, etc.

• To improve partitioning and promotes design reuse by providing solutions to frequently recurring problems.

• Applications will often use a combination of styles.

• Identify the Relevant Technologies:• Identify the relevant technologies by considering the type of application we are

developing, our preferred options for application deployment topology and architectural styles.

• The choice of technologies will also be directed by organization policies, infrastructure limitations, resource skills, and so on.

Page 10: Software Design Concepts

Design Methodologies

• A more methodical approach to software design is proposed by structured methods which are sets of notations and guidelines for software design, two major rules of this method • Programs were to be broken into functions and subroutines.• There was only a single entry point and a single exit point for any function or routine.

• Structured methods often support some or all of the following models of a system: • A data-flow model• An Entity-relationship model• A structural model • An object-oriented model

Page 11: Software Design Concepts

Design Methodologies

Structured Design:

• Structured design is a conceptualization of problem into several well-organized elements of solution.

• Structured design is mostly based on ‘divide and conquer’ strategy where a problem is broken into several small problems and each small problem is individually solved until the whole problem is solved.

• Structured design emphasis that these modules be well organized in order to achieve precise solution.

• A good structured design always follows some rules for communication among multiple modules, namely -• Cohesion - grouping of all functionally related elements.• Coupling - communication between different modules.

• A good structured design has high cohesion and low coupling arrangements.

Page 12: Software Design Concepts

Design Methodologies

Function Oriented Design:

• Function oriented design inherits some properties of structured design where divide and conquer methodology is used.

• Begins by considering the use case diagrams and Scenarios.• In function-oriented design, the system is comprised of many smaller sub-systems

known as functions.• The basic abstractions, which are given to the user, are real world functions.• This design mechanism divides the whole system into smaller functions, which

provides means of abstraction by concealing the information and their operation. • It views system as Black Box that performs high level function and later

decompose it detailed function so to be mapped to modules.• Function oriented design works well where the system state does not matter and

program/functions work on input rather than on a state.

Page 13: Software Design Concepts

Design Methodologies

Object Oriented Design:

• Object oriented design works around the entities and their characteristics instead of functions involved in the software system.

• This design strategies focuses on entities and its characteristics. The whole concept of software solution revolves around the engaged entities.

• All entities involved in the solution design are known as objects. Every entity has some attributes associated to it and has some methods to perform on the attributes.

• In the solution design, attributes are stored as variables and functionalities are defined by means of methods or procedures.

• OOD allows similar classes to stack up in hierarchical manner where the lower or sub-classes can import, implement and re-use allowed variables and methods from their immediate super classes.

• Depending upon how the function is invoked, respective portion of the code gets executed.

Page 14: Software Design Concepts

Software Design Approaches

Page 15: Software Design Concepts

Software Design Approaches

Top Down Design:

• Top-down design takes the whole software system as one entity and then decomposes it to achieve more than one sub-system or component based on some characteristics.

• Each sub-system or component is then treated as a system and decomposed further. This process keeps on running until the lowest level of system in the top-down hierarchy is achieved.

• Top-down design starts with a generalized model of system and keeps on defining the more specific part of it.

• When all components are composed the whole system comes into existence.• Top-down design is more suitable when the software solution needs to be

designed from scratch and specific details are unknown.

Page 16: Software Design Concepts

Software Design Approaches

Page 17: Software Design Concepts

Software Design Approaches

Bottom-up Design:

• The bottom up design model starts with most specific and basic components. It proceeds with composing higher level of components by using basic or lower level components.

• It keeps creating higher level components until the desired system is not evolved as one single component. With each higher level, the amount of abstraction is increased.

• Bottom-up strategy is more suitable when a system needs to be created from some existing system, where the basic primitives can be used in the newer system.

Page 18: Software Design Concepts

Design Model

• Process dimension – indicates design model evolution as design tasks are executed during software process• Architecture elements• Interface elements• Component-level elements• Deployment-level elements

• Abstraction dimension – represents level of detail as each analysis model element is transformed into a design equivalent and refined• High level (analysis model elements)• Low level (design model elements)

• Many UML diagrams used in the design model are refinements of diagrams created in the analysis model .

• Design patterns may be applied at any point in the design process

Page 19: Software Design Concepts

Modularization

• Modularization is a technique to divide a software system into multiple discrete and independent modules, which are expected to be capable of carrying out task(s) independently.

• Modular design unintentionally follows the rules of ‘divide and conquer’ problem-solving strategy this is because there are many other benefits attached with the modular design of a software.

• Advantage of modularization:• Smaller components are easier to maintain• Program can be divided based on functional aspects• Desired level of abstraction can be brought in the program• Components with high cohesion can be re-used again• Concurrent execution can be made possible• Desired from security aspect

Page 20: Software Design Concepts

Modularization

Page 21: Software Design Concepts

Modularization

Page 22: Software Design Concepts

Modularization

Page 23: Software Design Concepts

Data Design

• High level model depicting user’s view of the data or information.• Design of data structures and operators is essential to creation of high-

quality applications.• Translation of data model into database is critical to achieving system

business objectives.• Reorganizing databases into a data warehouse enables data mining or

knowledge discovery that can impact success of business itself .Database Design Phases:

• Requirement Specification and Analysis• Conceptual\Semantic Database Design• Implementation\Logical Schema Design• Physical Schema Design• Optimization \ Administration

Page 24: Software Design Concepts

Software quality guidelines

• A design is generated using the recognizable architectural styles and compose a good design characteristic of components and it is implemented in evolutionary manner for testing.

• A design of the software must be modular i.e the software must be logically partitioned into elements.

• In design, the representation of data , architecture, interface and components should be distinct.

• A design must carry appropriate data structure and recognizable data patterns.• Design components must show the independent functional characteristic.• A design creates an interface that reduce the complexity of connections between the

components.• A design must be derived using the repeatable method.• The notations should be use in design which can effectively communicates its meaning.

Page 25: Software Design Concepts

Design Verification

• The output of software design process is design documentation, pseudo codes, detailed logic diagrams, process diagrams, and detailed description of all functional or non-functional requirements.

• The next phase, which is the implementation of software, depends on all outputs mentioned above.

• It is then becomes necessary to verify the output before proceeding to the next phase.

• The early any mistake is detected, the better it is or it might not be detected until testing of the product. If the outputs of design phase are in formal notation form, then their associated tools for verification should be used otherwise a thorough design review can be used for verification and validation.

• By structured verification approach, reviewers can detect defects that might be caused by overlooking some conditions.

• A good design review is important for good software design, accuracy and quality.

Page 26: Software Design Concepts

Software Design Key Issues or Hotspots

• While designing an application, hot spots are the zones where mistakes are most often made.

• Identify key issues based on quality attributes and crosscutting concerns. • Potential issues include the appearance of new technologies and critical business

requirements.• Quality attributes are the overall features of your architecture that affect run-time

behavior, system design, and user experience. • Crosscutting concerns are the features of our design that may apply across all

layers, components, and tiers.• These are also the areas in which high-impact design mistakes are most often made. • Examples of crosscutting concerns are authentication and authorization,

communication, configuration management, exception management and validation, etc.

Page 27: Software Design Concepts

Thanks

• If you feel it is helpful and worthy to share with other people, please share the same