SlideShare uma empresa Scribd logo
1 de 27
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

Mais conteúdo relacionado

Mais procurados

Critical System Validation in Software Engineering SE21
Critical System Validation in Software Engineering SE21Critical System Validation in Software Engineering SE21
Critical System Validation in Software Engineering SE21
koolkampus
 
Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10
koolkampus
 
Quality Management in Software Engineering SE24
Quality Management in Software Engineering SE24Quality Management in Software Engineering SE24
Quality Management in Software Engineering SE24
koolkampus
 
Requirement Engineering
Requirement EngineeringRequirement Engineering
Requirement Engineering
Slideshare
 

Mais procurados (20)

Design concepts and design principles
Design concepts and design principlesDesign concepts and design principles
Design concepts and design principles
 
4 p’s of management spectrum and the w5hh principle
4 p’s of management spectrum and the w5hh principle4 p’s of management spectrum and the w5hh principle
4 p’s of management spectrum and the w5hh principle
 
Critical System Validation in Software Engineering SE21
Critical System Validation in Software Engineering SE21Critical System Validation in Software Engineering SE21
Critical System Validation in Software Engineering SE21
 
Need for Software Engineering
Need for Software EngineeringNeed for Software Engineering
Need for Software Engineering
 
REQUIREMENT ENGINEERING
REQUIREMENT ENGINEERINGREQUIREMENT ENGINEERING
REQUIREMENT ENGINEERING
 
Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10Architectural Design in Software Engineering SE10
Architectural Design in Software Engineering SE10
 
Quality Management in Software Engineering SE24
Quality Management in Software Engineering SE24Quality Management in Software Engineering SE24
Quality Management in Software Engineering SE24
 
Software Engineering : Requirement Analysis & Specification
Software Engineering : Requirement Analysis & SpecificationSoftware Engineering : Requirement Analysis & Specification
Software Engineering : Requirement Analysis & Specification
 
Requirement Engineering
Requirement EngineeringRequirement Engineering
Requirement Engineering
 
Design concept -Software Engineering
Design concept -Software EngineeringDesign concept -Software Engineering
Design concept -Software Engineering
 
Staffing level estimation
Staffing level estimation Staffing level estimation
Staffing level estimation
 
Software development process models
Software development process modelsSoftware development process models
Software development process models
 
Waterfall Model PPT in Software Engineering
Waterfall Model PPT in Software EngineeringWaterfall Model PPT in Software Engineering
Waterfall Model PPT in Software Engineering
 
The Art of Debugging.pptx
The Art of Debugging.pptxThe Art of Debugging.pptx
The Art of Debugging.pptx
 
software development life cycle(SDLC)
software development life cycle(SDLC)software development life cycle(SDLC)
software development life cycle(SDLC)
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
 
Chapter 13 software testing strategies
Chapter 13 software testing strategiesChapter 13 software testing strategies
Chapter 13 software testing strategies
 
UML
UMLUML
UML
 
Unit 1 defects classes
Unit 1 defects classesUnit 1 defects classes
Unit 1 defects classes
 
Waterfall Model
Waterfall ModelWaterfall Model
Waterfall Model
 

Destaque

Platform A Mobile July 2008
Platform A Mobile July 2008Platform A Mobile July 2008
Platform A Mobile July 2008
space150
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering Methodologies
Nesrine Shokry
 
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Andy Maleh
 

Destaque (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
 

Semelhante a Software Design Concepts

Pressman_ch_9_design_engineering.ppt
Pressman_ch_9_design_engineering.pptPressman_ch_9_design_engineering.ppt
Pressman_ch_9_design_engineering.ppt
MotherTheresa2
 

Semelhante a 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
 
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
 
CHAPTER12.ppt
CHAPTER12.pptCHAPTER12.ppt
CHAPTER12.ppt
 

Mais de Mohammed Fazuluddin

Mais de Mohammed Fazuluddin (20)

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
 
Java Security Framework's
Java Security Framework'sJava Security Framework's
Java Security Framework's
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

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