Software Design Methodologies
Software Design Methodologies
Techniques:
Data Flow Diagrams (DFDs): Graphical representations of the flow
of data through a system. They help visualize how data is processed
6
and transformed. 7
Functional Decomposition
Functional decomposition is a term that engineers use to describe a set
of steps in which they break down the overall function of a device,
system, or process into its smaller parts. This is usually accomplished
through thoughtful analysis and team discussions of project
information and the result is a chart that describes the problem and or
solutions in increasing detail.
https://engineering.purdue.edu/Engr/EPICS/k12/Teachers/Teacher-
Toolbox/1.20-Teacher-Toolbox-Functional-Decomposition.pdf
Classes:
o Blueprints or templates for creating objects.
o Define the properties and methods that objects of that class will
have.
Encapsulation:
o Bundling data (attributes) and methods that operate on that data
within a single unit (the class).
o Protects data integrity by controlling access to internal details.
Abstraction:
o Simplifying complex systems by focusing on essential features
and ignoring irrelevant details.
o For example, a car can be abstracted as a vehicle with methods
like "start" and "stop," without needing to know the intricate
details of the engine.
Inheritance:
o Allows a new class (subclass or derived class) to inherit
properties and methods from an existing class (superclass or
base class). 1
Polymorphism:
o The ability of objects of different classes to be treated as objects
of a common superclass.
o Enables flexibility and allows for diverse behaviors within a
system.
Benefits of OOD:
Modularity: Breaks down complex systems into smaller, more
manageable units.
Reusability: Encourages code reuse through inheritance and
polymorphism.
Maintainability: Easier to modify and update code with minimal
impact on other parts of the system.
Flexibility: Adaptable to changing requirements and new features.
Improved Code Quality: Leads to more robust, reliable, and
maintainable software.
OOD in Practice:
Use Case Diagrams: Visualize user interactions with the system.
Class Diagrams: Model the classes, their attributes, and their
relationships (inheritance, associations).
Sequence Diagrams: Illustrate the interactions between objects in a
system.
Object
3. Inheritance:
Inheritance is an important pillar of OOP(Object-Oriented
Programming). The capability of a class to derive properties and
characteristics from another class is called Inheritance. When we write
a class, we inherit properties from other classes. So when we create a
class, we do not need to write all the properties and functions again
and again, as these can be inherited from another class that possesses
it. Inheritance allows the user to reuse the code whenever possible and
reduce its redundancy.
4. Polymorphism:
The word polymorphism means having many forms. In simple words,
we can define polymorphism as the ability of a message to be
displayed in more than one form. For example, A person at the same
time can have different characteristics. Like a man at the same time is
a father, a husband, an employee. So the same person posses different
behavior in different situations. This is called polymorphism.
5. Encapsulation:
Encapsulation is defined as the wrapping up of data under a single
unit. It is the mechanism that binds together code and the data it
manipulates. In Encapsulation, the variables or data of a class are
hidden from any other class and can be accessed only through any
member function of their class in which they are declared. As in
encapsulation, the data in a class is hidden from other classes, so it is
also known as data-hiding.
6. Data Abstraction:
Data abstraction is one of the most essential and important features of
object-oriented programming. Data abstraction refers to providing only
essential information about the data to the outside world, hiding the
background details or implementation. Consider a real-life example of
a man driving a car. The man only knows that pressing the accelerators
will increase the speed of the car or applying brakes will stop the car,
but he does not know about how on pressing the accelerator the speed
is increasing, he does not know about the inner mechanism of the car
or the implementation of the accelerator, brakes, etc in the car. This is
what abstraction is.
https://www.geeksforgeeks.org/introduction-of-object-oriented-
programming/
Object-oriented design (OOD) takes the OOA model & adds details needed to
implement it in a specific programming language & environment. OOD
defines the object classes, their relationships (like inheritance & association),
& their interfaces & collaborations. It fills in the technical details like data
structures & algorithms. The OOD model has enough detail for programmers
to write the actual code.
https://www.naukri.com/code360/library/object-oriented-analysis-and-design-
ooad
Class Diagram
Class diagrams are the main building block of any object-oriented solution. It
shows the classes in a system, attributes, and operations of each class and
the relationship between each class.
In most modeling tools, a class has three parts. Name at the top, attributes
in the middle and operations or methods at the bottom. In a large
system with many related classes, classes are grouped together to create
class diagrams. Different relationships between classes are shown by
different types of arrows.
Sequence diagrams in UML show how objects interact with each other and
the order those interactions occur. It’s important to note that they show the
interactions for a particular scenario. The processes are represented
vertically and interactions are shown as arrows.
https://creately.com/blog/diagrams/uml-diagram-types-
examples/
The Scrum framework relies on six basic principles, guidelines that must be
followed throughout every project. Must is the keyword, as Scrum followers
are adamant that each principle remains intact and adhered to, lest the team
lose focus or the project suffer any setbacks.
2. Self-organization.
As the Scrum process relies on many individuals, self-organization is
essential. Everyone involved is empowered to work independently, and the
self-organization principle allows for greater buy-in among all parties, while
making it easier to assess individual contributions.
3. Collaboration.
4. Value-based prioritization.
This principle involves organizing and prioritizing tasks based on their value
and how they need to be completed.
5. Time-boxing.
6. Iterative development.
This final principle speaks to the understanding that a project may need to
be refined multiple times during the development process. Iterative
development allows the team to make adjustments and manage change
easier.
https://www.uagc.edu/blog/what-is-scrum
Agile design is a flexible and iterative approach that applies Agile principles
to the realm of design and user experience. This methodology comes from
the Agile framework, which emphasizes adaptability, collaboration and
customer feedback. Agile design diverges from traditional design
processes as it incorporates a mindset of managing unpredictability and
complexity in project environments.
Rapid prototyping is the process where the designer creates a prototype that
simulates the future application/website. A prototype is interactive, which is
what makes it look and function almost like the final product. However, there
is no actual working code behind the prototype, which is where the part
‘rapid’ comes from.
Feedback loops are built into the Agile application development process to: