0% found this document useful (0 votes)
58 views

FVDF

1. The document discusses object oriented software design principles and concepts, including defining classes, objects, inheritance, encapsulation, and polymorphism. 2. It also covers software development process models like waterfall, spiral, iterative development, and agile development. Extreme programming (XP) is discussed as an agile methodology. 3. Unified Modeling Language (UML) diagrams are presented as a tool for visualizing and communicating software designs using standard notation for classes, objects, use cases, and more.

Uploaded by

Aslan Yılmaz
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)
58 views

FVDF

1. The document discusses object oriented software design principles and concepts, including defining classes, objects, inheritance, encapsulation, and polymorphism. 2. It also covers software development process models like waterfall, spiral, iterative development, and agile development. Extreme programming (XP) is discussed as an agile methodology. 3. Unified Modeling Language (UML) diagrams are presented as a tool for visualizing and communicating software designs using standard notation for classes, objects, use cases, and more.

Uploaded by

Aslan Yılmaz
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
You are on page 1/ 16

OBJECT ORIENTED SOFTWARE DESIGN

STUDY NOTES

Galileo, in full Galileo Galilei, (born February 15, 1564, Pisa [Italy]—died January 8,
1642, Arcetri, near Florence), Italian natural philosopher, astronomer, and
mathematician who made fundamental contributions to the sciences of motion,
astronomy, and strength of materials and to the development of the scientific method.
Object Oriented Software Design

Software is:

1. complex
2. can be dangerous
3. can be very expensive
4. satisfying new requirements can be difficult.

Your customers' requirements will always evolve in time since few of them know the exact
project and software is exact, it does what we make it for.

Two resources are important for software projects: Time and money (people you can hire.)

Success with time always requires planning.

Projects are usually collaborative efforts.

● Requirement Analysis: What do we want to build actually?


● Software Design: What is the most clever way to build this?
● Coding: Transforming our design into code.
● Testing: Does it work?

Every step can mean restarting all of the process from scratch.

Requirement Analysis

Customer has a vision or a problem and requirement analysis mostly consists of


communication. People have different knowledge and assumptions so communication is
often unclear. Important things are often assumed and not communicated.

Artifacts

The result of a project is collection of artifacts:

Example: Source Code, Documentation, Tests, Website etc and sometimes it can be an
activity: slide…

Software Design

What is Clever? -> Depends on requirements:

1. Speed
2. Flexibility
3. Operating vs Building Cost

Reuse is quite necessary in software development if it is available, (Can it be usable? Is


there a license?) Example: Libraries.
Target Platform: Mobile, cross platform etc.

Components

Smaller components can be developed and tested easier.

Separating concerns is also a good strategy: security, data storage, user interface etc.

Not all concerns can be completely separated into components. (communication, security)

Your design must cover every possibility and define all decisions.

Smart Projects are

1. Specific: Have a clear specific goal to complete.


2. Measurable: Be able to measure the progress towards that goal.
3. Achievable: Have an idea how to achieve this goal
4. Relevant: Perform projects that are worthwhile to you.
5. Time Bound: Use deadlines.

More Time: Less Effort Required (Wastage of Time)

Software Development Process Models:

1. Waterfall Model
In a waterfall model, each phase must be
completed before the next phase can begin and there is
no overlapping in the phases. Verification is being done
to the customer.
2. Spiral Model

3. Iterative Development

Development is separated into small iterations.

4. Agile Development
a. Scrum
b. Extreme Programming (XP) => iteration

Iteration:
1. Analysis
2. Design
3. Testing
4. Coding

● Each iteration is time boxed. Each iteration will also have the same time.
● At the end of each iteration, we will go to the customer and show what we have done
in the project. Feedback weight in gold, so that we need to get feedback from the
customer at the end of each iteration.

Extreme Programming

Multiple short development cycles


(iterations), changes are inherent to
software development.
Coding, Testing, Listening (to
customers), Designing (Because
coding, testing and listening is not
sufficient.)
Pair Programming: Two
programmers sit on the same
computer and one codes while the
other one assists on the coder.
What is the UP?

UML (Unified Modelling Language)

A tool for describing Software Designs by means of diagrams


Integrated into software tools and even into software development processes.
XML standard for storing and exchanging diagrams.

UML is not rigorously defined.


● Some aspects can be interpreted in different ways.
UML is not rigorously used by humans.
● Even clearly defined aspects will be interpreted in different ways by different humans.
UML diagrams can be incomplete.
● It is not required to put everything into a diagram.

UML tells a lot about the software.


UML makes communication between humans more efficient
UML diagrams can help to talk about software on several levels of abstraction.
(Component, Package, Class, Method (most detailed one.))
Sequence Diagrams -> Method
Class Diagrams -> Class

Procedure: A group of code to do something (function).

Procedural Paradigm:
Procedural Abstraction (Fortran, basic, pascal, c)
● Works as long as data is simple
Data Abstraction
● Groups together the pieces of data that describe some entity
● Help reduce system complexity (Structures, Records)
There is no link between data and procedural abstraction.

Class: procedural abstraction + data abstraction => can create objects.

An approach to the solution of problems in which all computations are performed in the
context of objects.

The objects are instances of the classes which are data abstractions (variables) and contain
procedural abstractions (methods) operating on the objects.

A running program can be seen as a collection of objects collaborating to perform a


given task.

collaborating: calling the other methods of the objects that are defined in UML Sequence
Diagrams.
Object: A chunk of structured data in a running software system. Has properties and
behaviour.

Behaviour:
1. Acts: methods
2. Reacts: return values

State of Object: Attributes of the object.


Class

● A unit of abstraction, an object oriented program.


● Represents similar objects.
● A kind of software module.

KISS -> Keep it simple.


YAGNI -> You ain't gonna need it.

You might also like