0% found this document useful (0 votes)
5 views9 pages

Software Design Overview and Principles

The document provides a comprehensive overview of software design, its history, principles, and methodologies from the 1950s to the 2020s. It distinguishes between software design and software engineering, highlights key historical milestones, and discusses the importance of software design in terms of efficiency, correctness, understandability, and maintainability. Additionally, it covers programming constructs, paradigms, and data structures essential for effective software development.

Uploaded by

achithoughts19
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views9 pages

Software Design Overview and Principles

The document provides a comprehensive overview of software design, its history, principles, and methodologies from the 1950s to the 2020s. It distinguishes between software design and software engineering, highlights key historical milestones, and discusses the importance of software design in terms of efficiency, correctness, understandability, and maintainability. Additionally, it covers programming constructs, paradigms, and data structures essential for effective software development.

Uploaded by

achithoughts19
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Software Design (CPSOFT30) - • Before 1950: Joseph Marie

Comprehensive Review Sheet Jacquard's loom (punched cards)


and Charles Babbage's Analytical
LECTURE 1: Introduction to History,
Engine. Ada Lovelace wrote the first
Overview and Principles
algorithm.
Software Design:
• 1950s: Concept of software
• A "challenging and creative formalized. IBM RAMAC (first HDD).
experience" that requires Fortran developed by John Backus.
developers to focus on many
• 1960s: Term "software
aspects of problems and solutions.
engineering" coined. Edgar Dijkstra
• A "process to plan or convert advocated for "Structured
software requirements to develop Programming." Pascal language
a software developed.
system," including "defining
• 1980s: Bjarne Stroustrup began
architecture, components,
C++. Microsoft Windows released.
interfaces, and other
"Peopleware" published.
characteristics of a system or its
components." • 1990s: Linux kernel initiated. Java
introduced. Agile
• Focuses on "creating a blueprint
Manifesto published.
or plan for how software will be
structured and how its parts will • 2000s: Agile methodologies gain
interact." traction. Facebook launched. Google
Chrome released.
Software Design vs. Software
Engineering: • 2010s: DevOps and Microservices
rise. Docker popularized
• Software Design: A "subset of
containerization.
software engineering, specifically
focused on designing the • 2020s: AI/ML prevalence. Cloud-
system's architecture." native technologies grow. AI-driven
and low-code/no-code tools
• Software Engineering: A "broader
revolutionize design.
discipline that encompasses the
entire software development Importance of Software Design:
lifecycle," including "planning,
• Everything around us is designed.
development, testing,
deployment, and • Design is economically
maintenance." It "applies important and affects our quality
engineering principles to ensure of life.
that software is reliable, efficient,
• Core reasons for design:
and meets user requirements."

Key Historical Milestones:


o Efficiency: Address "resour • Dynamic Design Models: Focus
ces, time, and cost on "the behavior of a software
optimization issues." system over time." They illustrate
interactions, state changes, and
o Correctness: "Correctly
event responses.
implement all the
functionalities." Software Design Methods:

o Understandability: Being " • "Systematic approaches or


modular with arranged paradigms used to conceptualize,
modules." plan, and create the blueprint for
a software system."
o Maintainability: "Easily
amenable to change." • Structured Design (1970s-
80s): Emphasized "breaking down
Software Product:
a system into smaller,
• A "packaged set of computer manageable, and interconnected
programs and related modules" using a "top-down
documentation, designed to be approach."
sold or licensed to multiple
• Waterfall Model: A "linear,
customers for various uses."
sequential approach" where each
• Characteristics: "Scalability and phase must be completed
reusability" and "commercial and "signed off" before the next
availability." begins.

Modeling: • Agile Methodology: A "highly


popular and effective
• "The process of creating abstract paradigm" that "emphasizes
representations of a software flexibility, collaboration, and
system before its actual continuous delivery."
implementation." It's akin to
an "architect drawing blueprints
before constructing a building."
LECTURE 2: Programming Constructs
• Purpose: For "Understanding and and Paradigms
Analysis," "Design and
Programming Constructs:
Planning," and "Documentation
and Communication." • The "foundational elements that
enable programmers to define
• Static Design Models: Focus
data, manipulate it, control
on "the structure of a software
execution flow, and organize
system at a fixed point in
code."
time." They do "not show how
these elements change or interact • Key Constructs:
over time." (e.g., database
schema).
o Variables: "Used to store • 3. Iteration Logic (Loop): "Used
data in a program's when one or more instructions
memory." may be executed several times
depending on some condition." It
o Data Types: "Classify the
derives from "reiterate" (to repeat).
type of data a variable can
hold, determining the Programming Paradigms:
operations that can be
• "Style or methodologies of
performed on it."
programming that provide a
o Operators: "Symbols that conceptual framework for
perform operations on structuring and solving problems
values and variables." using a programming language."

o Control Flow A. Imperative Paradigms:


Statements: "Determine
• A "traditional approach to
the order in which
programming that closely mirrors
instructions are executed."
a computer's underlying Von
o Methods Neumann architecture." Its core
(Functions/Procedures): "N principle is "changing program
amed blocks of code that state incrementally through
perform a specific task. assignment statements," focusing
They encapsulate logic, on how to achieve a goal.
promote reusability, and
• Procedural
help organize
Programming: Emphasizes
programs." They can accept
procedures (functions/routines) and
input (parameters/argument
code reusability. "There is no
s) and can return output.
difference between procedural
Control Structures: and imperative approach" in its
machine model. (Languages: C,
• "Fundamental building blocks
C++, Java).
that dictate how instructions are
executed." • Object-Oriented Programming
(OOP): Programs are written as
• 1. Sequence Logic: "Used for
a "collection of classes and object
performing instructions one after
which are meant for
another in sequence." It is the
communication." The "smallest
most basic construct: "do this, then
and basic entity is object." "More
do this, then do this."
emphasis is on data rather
• 2. Selection Logic (Decision procedure." Advantages: "Data
Logic): "Used for making security, Inheritance," "Code
decisions." Depicted reusability," "Flexible and
as IF...THEN...ELSE, used abstraction is also
for yes/no or true/false decisions. present." (Languages: Simula,
Java, C++, Python).
• Parallel Processing LECTURE 3: Problem Solving Strategies
Approach: Involves "processing of and Data Structures
program instructions by dividing
Algorithmic Thinking:
them among multiple
processors" to run programs in less • "A methodical approach to
time (a "divide and solving a problem by defining a
conquer" approach). clear, step-by-step procedure." It
involves "breaking down a
B. Declarative Paradigms:
problem into a finite sequence of
• "Expresses logic of computation unambiguous instructions."
without talking about its control
• Involves identifying inputs, outputs,
flow." The focus is on what needs
constraints, developing a logical
to be done rather than how. "This is
sequence of operations, and
the only difference between
considering efficiency and
imperative (how to do) and
correctness.
declarative (what to do)
programming paradigms." Problem Decomposition (Divide and
Conquer):
• Logic Programming: An "abstract
model of computation" used for • The strategy of "breaking down a
solving "logical problems like large, complex problem into
puzzles, series etc." It uses smaller, more manageable sub-
a "knowledge base" and questions. problems."
• Functional • Simplifies design by allowing
Programming: Language- developers to address complexity
independent, based on "the incrementally, design/test
execution of series of components independently, and
mathematical reassemble solutions. Crucial
functions." The "central model for for "designing modular and
the abstraction is the maintainable software."
function." Data is "loosely
coupled to Solution Representation:
functions." (Languages: JavaScript, • Pseudocode: An "informal, high-
Haskell, Lisp). level description of an
• Database/Data-Driven algorithm" that uses a mix of
Programming: "Based on data natural language and programming-
and its movement." Program like constructs. Purpose: to "Outline
statements are defined by data the logic of an algorithm
rather than hardcoding steps. clearly" without concern for syntax.
Provides "file creation, data entry, • Flowcharts: "Graphical
update, query and reporting representations of an
functions." (Language: SQL). algorithm" using standardized
symbols.
o Oval • Trees: A "hierarchical data
(Terminal): Beginning/end of structure where each element is
a process. called a node." Excellent for
representing hierarchical
o Rectangle (Process): A
relationships (e.g., file systems).
single step, task, or
operation. • Graphs: A "collection of nodes
(vertices) and connections
o Diamond (Decision): A point
between those nodes
where a decision must be
(edges)." Used to model complex,
made.
non-hierarchical networks (e.g.,
o Parallelogram social media, maps).
(Input/Output): Data being
Hashing:
entered or generated.
• A technique used to "map a large
o Arrow (Flowline): Direction
data set to a small, fixed-size
of flow and sequence.
output" using a hash function. The
Data Structures: goal is to distribute keys evenly to
minimize collisions.
• A way of "organizing and storing
data in a computer so that it can • Hash Tables (Hash Maps): A data
be accessed and modified structure that uses a hash function
efficiently." They are the "building to implement an associative array,
blocks of algorithms." storing key-value pairs. Highly
efficient for quick lookups (e.g.,
Linear Data Structures: dictionaries, caches).
• Arrays: A "collection of elements
of the same data type stored at
contiguous memory PUT THE BOLD FROM THE PPT AND
locations." Ideal for quick access by RECAP ADD IT TO YOUR PROVIDED
index. Fixed size. COMPREHENSIVE REVIEW SHEET AS
MAIN INFORMATION TO MEMORIZE
• Linked Lists: A sequence of nodes
where each node contains data and Of course. Here is the revised review sheet,
a "reference (or pointer) to the structured with the main information to
next node." Flexible for memorize in bold, directly pulled from the
adding/removing elements. Dynamic PPT slides and Recap documents.
size.

• Stacks: A linear structure following


Software Design (CPSOFT30) -
the "Last-In, First-Out (LIFO)
Comprehensive Review Sheet (Key
principle." Items are added (push)
Points to Memorize)
and removed (pop) from the top.
(e.g., undo feature). LECTURE 1: Introduction to History,
Overview and Principles
Non-Linear Data Structures:
Software Design: Dijkstra ("Structured
Programming"). Pascal language
• A process to plan or convert
developed.
software requirements to develop
a software system. • 1980s: Bjarne
Stroustrup began C++. Microsoft
• Defining architecture,
Windows
components, interfaces, and other
1.0 released. "Peopleware" publish
characteristics of a system or its
ed.
components.
• 1990s: Linus Torvalds initiated
• Focuses on creating a blueprint or
the Linux Kernel. Java introduced
plan for how software will be
by Sun Microsystems. The Agile
structured and how its parts will
Manifesto is published.
interact.
• 2000s: Extreme Programming
Software Design vs. Software
(XP) and other Agile methodologies
Engineering:
gain
• Software Design: A subset of traction. Facebook launched. Googl
software engineering, specifically e Chrome released.
focused on designing the system's
• 2010s: DevOps practices gain
architecture.
popularity. Rise of Microservices
• Software Engineering: A broader architecture. Docker popularized c
discipline that encompasses the ontainerization.
entire software development
• 2020s: Machine learning and
lifecycle. Applies engineering
Artificial Intelligence becomes
principles to ensure that software is
more prevalent. Cloud-native
reliable, efficient, and meets user
technologies grow. AI-driven
requirements.
development tools and low-
Key Historical Milestones: code/no-code platforms are
revolutionizing software design.
• Before 1950: Joseph Marie
Jacquard (punched card Importance of Software Design:
loom). Charles Babbage (Analytical
• Everything around us is
Engine). Ada Lovelace (first
designed. Design is economically
algorithm).
important and affects our quality
• 1950s: Concept of software of life.
formalized. IBM 305 RAMAC (first
• Core reasons for design:
hard disk
drive). FORTRAN developed by o Efficiency: Address resourc
John Backus. es, time, and cost
optimization issues.
• 1960s: Term "software
engineering" coined. Edgar
o Correctness: Correctly • Systematic approaches or
implement all the paradigms used to conceptualize,
functionalities. plan, and create the blueprint for a
software system.
o Understandability: Understa
ndable, be modular with • Structured Design emerged in the
arranged modules. 1970s and 80s, focusing on
breaking down a system into
o Maintainability: Easily
smaller, manageable, and
amenable to change,
interconnected modules.
especially customer
requests. • Waterfall Model: A linear,
sequential approach where each
Software Product:
phase must be completed and
• A packaged set of computer often "signed off" before the next
programs and related begins.
documentation, designed to
• Agile Methodology: A highly
be sold or licensed to multiple
popular and effective
customers for various uses.
paradigm that emphasizes
• Characteristics: Scalability and flexibility, collaboration, and
reusability and commercial continuous delivery.
availability.

Modeling:
LECTURE 2: Programming Constructs
• The process of creating abstract and Paradigms
representations of a software
Programming Constructs:
system before its actual
implementation. It's akin to • The foundational elements that
an architect drawing blueprints enable programmers to define data,
before constructing a building. manipulate it, control the flow of
execution, and organize code.
• Purpose: For Understanding and
Analysis, Design and Planning, • Key Constructs:
and Documentation and
o Variables: Used to store
Communication.
data in a program’s
• Static design models focus on memory.
the structure of a software system
o Data Types: Classify the
at a fixed point in time. (e.g.,
type of data a variable can
database schema).
hold.
• Dynamic design models focus on
o Operators: Symbols that
the behavior of a software system
perform operations on values
over time.
and variables.
Software Design Methods:
o Control Flow • Procedural
Statements: Determine Programming: Emphasizes proced
the order in which ures (functions/routines) and code
instructions are executed. reusability.

o Methods • Object Oriented Programming


(Functions/Procedures): Na (OOP): The program is written as
med blocks of code that a collection of classes and
perform a specific object. The smallest and basic
task. They encapsulate entity is object. Advantages: Data
logic, promote security, Inheritance, Code
reusability, and help reusability.
organize programs.
• Parallel Processing
Control Structures: Approach: Processing by dividing
them among multiple
• Fundamental building blocks that
processors. A "divide and
dictate how instructions are
conquer" approach.
executed.
B. Declarative Paradigms:
• 1. Sequence Logic: Used for
performing instructions one after • Expresses logic of computation
another in sequence. ("do this, without talking about its control
then do this, then do this"). flow. Focus is on what needs to be
done.
• 2. Selection Logic (Decision
Logic): Used for making • Logic Programming
decisions. (IF...THEN...ELSE). Paradigms: An abstract model of
computation. Uses a knowledge
• 3. Iteration Logic (Loop): Used
base.
when one or more instructions may
be executed several times • Functional Programming
depending on some condition. Paradigms: Based on the execution
of series of mathematical
Programming Paradigms:
functions.
• Style or methodology of
• Database/Data Driven
programming that provides
Programming Approach: Based
a conceptual framework for
on data and its
structuring and solving problems.
movement. (e.g., SQL).
A. Imperative Paradigms:

• A traditional approach to
LECTURE 3: Problem Solving Strategies
programming that closely mirrors a
and Data Structures
computer’s underlying Von
Neumann architecture. Focuses Algorithmic Thinking:
on how to achieve a goal.
• A methodical approach to solving o Arrow (Flowline): Direction
a problem by defining a clear, step- of the flow and the
by-step procedure. sequence of steps.

• Involves breaking down a problem Data Structures:


into a finite sequence of
• A way of organizing and storing
unambiguous instructions.
data in a computer so that it can
Problem Decomposition: be accessed and modified
efficiently. They are the building
• The strategy of breaking down a
blocks of algorithms.
large, complex problem into
smaller, more manageable sub- Linear Data Structures:
problems. Also known as "divide
• Arrays: A collection of elements
and conquer."
of the same data type stored
• Crucial for designing modular and at contiguous memory locations.
maintainable software.
• Linked lists: A sequence of nodes,
Solution Representation: where each node contains data and
a reference (or pointer) to the next
• Pseudocode: An informal, high-
node.
level description of an
algorithm. Serves as a bridge • Stacks: A linear data structure that
between the initial design and the follows the Last-In, First-Out (LIFO)
final implementation. principle.

• Flowcharts: Graphical Non-Linear Data Structures:


representations of an
• Trees: A hierarchical data
algorithm using standardized
structure where each element is
symbols.
called a node.
o Oval (Terminal): Beginning
• Graphs: A collection of nodes
and end of a process.
(vertices) and connections between
o Rectangle those nodes (edges).
(Process): A single step,
Hashing:
task, or operation.
• A technique used to map a large
o Diamond (Decision): A point
data set to a small, fixed-size
where a decision must be
output using a hash function.
made.
• Hash Tables (Hash Maps): A data
o Parallelogram
structure that uses a hash function
(Input/Output): Data
to implement an associative
being entered (input) or
array, storing key-value pairs.
generated (output).

You might also like