SlideShare a Scribd company logo
Software Design Concepts
The Basic Software Design Concepts
@Mohammed Fazuluddin
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
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.
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
Finishe
d
Design
Start
Design Process
Design Process
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
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…
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.
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.
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
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.
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.
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.
Software Design Approaches
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.
Software Design Approaches
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.
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
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
Modularization
Modularization
Modularization
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
• ConceptualSemantic Database Design
• ImplementationLogical Schema Design
• Physical Schema Design
• Optimization  Administration
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.
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.
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.
Thanks
• If you feel it is helpful and worthy to share with other people, please share the same

More Related Content

What's hot

Rational Unified Process
Rational Unified ProcessRational Unified Process
Rational Unified ProcessKumar
 
Prototype model
Prototype modelPrototype model
Prototype modelsadhana8
 
Software Configuration Management (SCM)
Software Configuration Management (SCM)Software Configuration Management (SCM)
Software Configuration Management (SCM)Er. Shiva K. Shrestha
 
software design principles
software design principlessoftware design principles
software design principlesCristal Ngo
 
Software design principles
Software design principlesSoftware design principles
Software design principlesRitesh Singh
 
Software Engineering Layered Technology Software Process Framework
Software Engineering  Layered Technology Software Process FrameworkSoftware Engineering  Layered Technology Software Process Framework
Software Engineering Layered Technology Software Process FrameworkJAINAM KAPADIYA
 
Evolutionary process models se.ppt
Evolutionary process models se.pptEvolutionary process models se.ppt
Evolutionary process models se.pptbhadjaashvini1
 
Requirement specification (SRS)
Requirement specification (SRS)Requirement specification (SRS)
Requirement specification (SRS)kunj desai
 
An Introduction to Software Architecture
An Introduction to Software ArchitectureAn Introduction to Software Architecture
An Introduction to Software ArchitectureRahimLotfi
 
Software development life cycle (SDLC)
Software development life cycle (SDLC)Software development life cycle (SDLC)
Software development life cycle (SDLC)Simran Kaur
 
Agile development, software engineering
Agile development, software engineeringAgile development, software engineering
Agile development, software engineeringRupesh Vaishnav
 
Software Quality Attributes
Software Quality AttributesSoftware Quality Attributes
Software Quality AttributesHayim Makabee
 
Rapid Application Development Model
Rapid Application Development ModelRapid Application Development Model
Rapid Application Development ModelDamian T. Gordon
 

What's hot (20)

Software process
Software processSoftware process
Software process
 
Rational Unified Process
Rational Unified ProcessRational Unified Process
Rational Unified Process
 
Prototype model
Prototype modelPrototype model
Prototype model
 
Software Configuration Management (SCM)
Software Configuration Management (SCM)Software Configuration Management (SCM)
Software Configuration Management (SCM)
 
software design principles
software design principlessoftware design principles
software design principles
 
Software design principles
Software design principlesSoftware design principles
Software design principles
 
Agile software development
Agile software developmentAgile software development
Agile software development
 
Software design methodologies
Software design methodologiesSoftware design methodologies
Software design methodologies
 
Software Engineering Layered Technology Software Process Framework
Software Engineering  Layered Technology Software Process FrameworkSoftware Engineering  Layered Technology Software Process Framework
Software Engineering Layered Technology Software Process Framework
 
COCOMO MODEL 1 And 2
COCOMO MODEL 1 And 2COCOMO MODEL 1 And 2
COCOMO MODEL 1 And 2
 
Evolutionary process models se.ppt
Evolutionary process models se.pptEvolutionary process models se.ppt
Evolutionary process models se.ppt
 
Case tools
Case toolsCase tools
Case tools
 
SDLC Models
SDLC ModelsSDLC Models
SDLC Models
 
Requirement specification (SRS)
Requirement specification (SRS)Requirement specification (SRS)
Requirement specification (SRS)
 
An Introduction to Software Architecture
An Introduction to Software ArchitectureAn Introduction to Software Architecture
An Introduction to Software Architecture
 
Software development life cycle (SDLC)
Software development life cycle (SDLC)Software development life cycle (SDLC)
Software development life cycle (SDLC)
 
Agile development, software engineering
Agile development, software engineeringAgile development, software engineering
Agile development, software engineering
 
Incremental model
Incremental modelIncremental model
Incremental model
 
Software Quality Attributes
Software Quality AttributesSoftware Quality Attributes
Software Quality Attributes
 
Rapid Application Development Model
Rapid Application Development ModelRapid Application Development Model
Rapid Application Development Model
 

Viewers also liked

Six Principles of Software Design to Empower Scientists
Six Principles of Software Design to Empower ScientistsSix Principles of Software Design to Empower Scientists
Six Principles of Software Design to Empower ScientistsDavid De Roure
 
Applying software design principles in practice
Applying software design principles in practiceApplying software design principles in practice
Applying software design principles in practiceGanesh Samarthyam
 
Software design principles
Software design principlesSoftware design principles
Software design principlesMd.Mojibul Hoque
 
Goals Of Software Design - The main goals
Goals Of Software Design - The main goalsGoals Of Software Design - The main goals
Goals Of Software Design - The main goalsparag
 
Platform A Mobile July 2008
Platform A Mobile July 2008Platform A Mobile July 2008
Platform A Mobile July 2008space150
 
Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeFadi Stephan
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering MethodologiesNesrine Shokry
 
Software design principles for evolving architectures
Software design principles for evolving architecturesSoftware design principles for evolving architectures
Software design principles for evolving architecturesFirat Atagun
 
Mesics lecture 7 iteration and repetitive executions
Mesics lecture 7   iteration and repetitive executionsMesics lecture 7   iteration and repetitive executions
Mesics lecture 7 iteration and repetitive executionseShikshak
 
Software Engineering Ethics
Software Engineering EthicsSoftware Engineering Ethics
Software Engineering EthicsKapil Rajpurohit
 
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringAndy Maleh
 
SE_Lec 10_ Software Code of Ethics
SE_Lec 10_ Software Code of EthicsSE_Lec 10_ Software Code of Ethics
SE_Lec 10_ Software Code of EthicsAmr E. Mohamed
 

Viewers also liked (20)

Six Principles of Software Design to Empower Scientists
Six Principles of Software Design to Empower ScientistsSix Principles of Software Design to Empower Scientists
Six Principles of Software Design to Empower Scientists
 
Choosing The Right ESB
Choosing The Right ESBChoosing The Right ESB
Choosing The Right ESB
 
Software design
Software designSoftware design
Software design
 
Build Features, Not Apps
Build Features, Not AppsBuild Features, Not Apps
Build Features, Not Apps
 
Applying software design principles in practice
Applying software design principles in practiceApplying software design principles in practice
Applying software design principles in practice
 
Software design principles
Software design principlesSoftware design principles
Software design principles
 
Goals Of Software Design - The main goals
Goals Of Software Design - The main goalsGoals Of Software Design - The main goals
Goals Of Software Design - The main goals
 
Platform A Mobile July 2008
Platform A Mobile July 2008Platform A Mobile July 2008
Platform A Mobile July 2008
 
Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an Imperative
 
TIAD 2016 : Ethics in software development
TIAD 2016 : Ethics in software developmentTIAD 2016 : Ethics in software development
TIAD 2016 : Ethics in software development
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering Methodologies
 
Software design principles for evolving architectures
Software design principles for evolving architecturesSoftware design principles for evolving architectures
Software design principles for evolving architectures
 
Testing Throughout the Software Life Cycle - Section 2
Testing Throughout the Software Life Cycle - Section 2Testing Throughout the Software Life Cycle - Section 2
Testing Throughout the Software Life Cycle - Section 2
 
Mesics lecture 7 iteration and repetitive executions
Mesics lecture 7   iteration and repetitive executionsMesics lecture 7   iteration and repetitive executions
Mesics lecture 7 iteration and repetitive executions
 
Software Engineering Ethics
Software Engineering EthicsSoftware Engineering Ethics
Software Engineering Ethics
 
software engineering ethics
software engineering ethicssoftware engineering ethics
software engineering ethics
 
NOSQL vs SQL
NOSQL vs SQLNOSQL vs SQL
NOSQL vs SQL
 
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
 
SE_Lec 10_ Software Code of Ethics
SE_Lec 10_ Software Code of EthicsSE_Lec 10_ Software Code of Ethics
SE_Lec 10_ Software Code of Ethics
 
Project Execution
Project ExecutionProject Execution
Project Execution
 

Similar to Software Design Concepts

UNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPTUNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPTmalathijanapati1
 
Design Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxDesign Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxKarthigaiSelviS3
 
Different approaches to software design
Different approaches to software designDifferent approaches to software design
Different approaches to software designSandeep Kumar Nayak
 
Design Engineering and Design concepts
Design Engineering and Design conceptsDesign Engineering and Design concepts
Design Engineering and Design conceptsJigyasaAgrawal7
 
INTRODUCTION TO SOFTWARE ENGINEERING
INTRODUCTION TO SOFTWARE ENGINEERINGINTRODUCTION TO SOFTWARE ENGINEERING
INTRODUCTION TO SOFTWARE ENGINEERINGPreeti Mishra
 
Software Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptxSoftware Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptxgauriVarshney8
 
Week 4- Software Process models (Cont..).pptx
Week 4- Software Process models (Cont..).pptxWeek 4- Software Process models (Cont..).pptx
Week 4- Software Process models (Cont..).pptxsyedusama54
 
Unit 5 design engineering ssad
Unit 5 design engineering ssadUnit 5 design engineering ssad
Unit 5 design engineering ssadPreeti Mishra
 
architectural design
 architectural design architectural design
architectural designPreeti Mishra
 
POLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAPOLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAAiman Hud
 
Pressman_ch_9_design_engineering.ppt
Pressman_ch_9_design_engineering.pptPressman_ch_9_design_engineering.ppt
Pressman_ch_9_design_engineering.pptMotherTheresa2
 

Similar to Software Design Concepts (20)

Chapter 6 design
Chapter 6 designChapter 6 design
Chapter 6 design
 
unit 3 Design 1
unit 3 Design 1unit 3 Design 1
unit 3 Design 1
 
Software design
Software designSoftware design
Software design
 
UNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPTUNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPT
 
Design Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptxDesign Concepts in Software Engineering-1.pptx
Design Concepts in Software Engineering-1.pptx
 
Design concepts
Design conceptsDesign concepts
Design concepts
 
Different approaches to software design
Different approaches to software designDifferent approaches to software design
Different approaches to software design
 
Design Engineering and Design concepts
Design Engineering and Design conceptsDesign Engineering and Design concepts
Design Engineering and Design concepts
 
INTRODUCTION TO SOFTWARE ENGINEERING
INTRODUCTION TO SOFTWARE ENGINEERINGINTRODUCTION TO SOFTWARE ENGINEERING
INTRODUCTION TO SOFTWARE ENGINEERING
 
Software Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptxSoftware Eng S3 ( Software Design ).pptx
Software Eng S3 ( Software Design ).pptx
 
Software Design - SDLC Model
Software Design - SDLC ModelSoftware Design - SDLC Model
Software Design - SDLC Model
 
Week 4- Software Process models (Cont..).pptx
Week 4- Software Process models (Cont..).pptxWeek 4- Software Process models (Cont..).pptx
Week 4- Software Process models (Cont..).pptx
 
Unit 5 design engineering ssad
Unit 5 design engineering ssadUnit 5 design engineering ssad
Unit 5 design engineering ssad
 
architectural design
 architectural design architectural design
architectural design
 
Ch 9-design-engineering
Ch 9-design-engineeringCh 9-design-engineering
Ch 9-design-engineering
 
Development Guideline
Development GuidelineDevelopment Guideline
Development Guideline
 
POLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAPOLITEKNIK MALAYSIA
POLITEKNIK MALAYSIA
 
Pressman_ch_9_design_engineering.ppt
Pressman_ch_9_design_engineering.pptPressman_ch_9_design_engineering.ppt
Pressman_ch_9_design_engineering.ppt
 
Introduction Software engineering
Introduction   Software engineeringIntroduction   Software engineering
Introduction Software engineering
 
SMD.pptx
SMD.pptxSMD.pptx
SMD.pptx
 

More from Mohammed Fazuluddin

SQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionSQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionMohammed Fazuluddin
 
Rest API Security - A quick understanding of Rest API Security
Rest API Security - A quick understanding of Rest API SecurityRest API Security - A quick understanding of Rest API Security
Rest API Security - A quick understanding of Rest API SecurityMohammed Fazuluddin
 
Software architectural patterns - A Quick Understanding Guide
Software architectural patterns - A Quick Understanding GuideSoftware architectural patterns - A Quick Understanding Guide
Software architectural patterns - A Quick Understanding GuideMohammed Fazuluddin
 
Mule ESB - An Enterprise Service Bus
Mule ESB - An Enterprise Service BusMule ESB - An Enterprise Service Bus
Mule ESB - An Enterprise Service BusMohammed Fazuluddin
 
Docker - A Quick Introduction Guide
Docker - A Quick Introduction GuideDocker - A Quick Introduction Guide
Docker - A Quick Introduction GuideMohammed Fazuluddin
 
Cassandra - A Basic Introduction Guide
Cassandra - A Basic Introduction GuideCassandra - A Basic Introduction Guide
Cassandra - A Basic Introduction GuideMohammed Fazuluddin
 
React JS - A quick introduction tutorial
React JS - A quick introduction tutorialReact JS - A quick introduction tutorial
React JS - A quick introduction tutorialMohammed Fazuluddin
 
Selecting the right cache framework
Selecting the right cache frameworkSelecting the right cache framework
Selecting the right cache frameworkMohammed Fazuluddin
 
Cloud computing and data security
Cloud computing and data securityCloud computing and data security
Cloud computing and data securityMohammed Fazuluddin
 

More from Mohammed Fazuluddin (20)

SQL Injection Introduction and Prevention
SQL Injection Introduction and PreventionSQL Injection Introduction and Prevention
SQL Injection Introduction and Prevention
 
DOMAIN DRIVER DESIGN
DOMAIN DRIVER DESIGNDOMAIN DRIVER DESIGN
DOMAIN DRIVER DESIGN
 
New Relic Basics
New Relic BasicsNew Relic Basics
New Relic Basics
 
Terraform Basics
Terraform BasicsTerraform Basics
Terraform Basics
 
Rest API Security - A quick understanding of Rest API Security
Rest API Security - A quick understanding of Rest API SecurityRest API Security - A quick understanding of Rest API Security
Rest API Security - A quick understanding of Rest API Security
 
Software architectural patterns - A Quick Understanding Guide
Software architectural patterns - A Quick Understanding GuideSoftware architectural patterns - A Quick Understanding Guide
Software architectural patterns - A Quick Understanding Guide
 
Mule ESB - An Enterprise Service Bus
Mule ESB - An Enterprise Service BusMule ESB - An Enterprise Service Bus
Mule ESB - An Enterprise Service Bus
 
Docker - A Quick Introduction Guide
Docker - A Quick Introduction GuideDocker - A Quick Introduction Guide
Docker - A Quick Introduction Guide
 
Cassandra - A Basic Introduction Guide
Cassandra - A Basic Introduction GuideCassandra - A Basic Introduction Guide
Cassandra - A Basic Introduction Guide
 
React JS - A quick introduction tutorial
React JS - A quick introduction tutorialReact JS - A quick introduction tutorial
React JS - A quick introduction tutorial
 
Rest API Design Rules
Rest API Design RulesRest API Design Rules
Rest API Design Rules
 
Scrum process framework
Scrum process frameworkScrum process framework
Scrum process framework
 
DevOps and Tools
DevOps and ToolsDevOps and Tools
DevOps and Tools
 
UI architecture & designing
UI architecture & designingUI architecture & designing
UI architecture & designing
 
Data streaming fundamentals
Data streaming fundamentalsData streaming fundamentals
Data streaming fundamentals
 
Microservice's in detailed
Microservice's in detailedMicroservice's in detailed
Microservice's in detailed
 
Java performance tuning
Java performance tuningJava performance tuning
Java performance tuning
 
Java workflow engines
Java workflow enginesJava workflow engines
Java workflow engines
 
Selecting the right cache framework
Selecting the right cache frameworkSelecting the right cache framework
Selecting the right cache framework
 
Cloud computing and data security
Cloud computing and data securityCloud computing and data security
Cloud computing and data security
 

Recently uploaded

Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Product School
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2DianaGray10
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxAbida Shariff
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlPeter Udo Diehl
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...Elena Simperl
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesThousandEyes
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...Sri Ambati
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsVlad Stirbu
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Thierry Lestable
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...Product School
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...Product School
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
 

Recently uploaded (20)

Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 

Software Design Concepts

  • 1. Software Design Concepts The Basic Software Design Concepts @Mohammed Fazuluddin
  • 2. 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
  • 3. 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.
  • 4. 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 Finishe d Design Start Design Process
  • 6. 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
  • 7. 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…
  • 8. 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.
  • 9. 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.
  • 10. 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
  • 11. 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.
  • 12. 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.
  • 13. 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.
  • 15. 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.
  • 17. 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.
  • 18. 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
  • 19. 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
  • 23. 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 • ConceptualSemantic Database Design • ImplementationLogical Schema Design • Physical Schema Design • Optimization Administration
  • 24. 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.
  • 25. 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.
  • 26. 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.
  • 27. Thanks • If you feel it is helpful and worthy to share with other people, please share the same