CS1010 Introduction to Computing
Lecture 14
2
?
Programming
The set of (often flexible) rules and guidelines a team of
Object Oriented Design (1)
• OO SW is all about objects: a black box which
receives messages & responds with those of its
own
• An object has 2 aspects:
– State, also termed as properties, data
• Example: For the bicycle: color, speed, pressure
– Behaviors, also termed as methods, instructions • Example: For the same object: accelerate(), inflate()
• In traditional design, these 2 aspects have been
Object Oriented Design (2)
• The designer starts with any component (object) of
the system; designs it as an independent,
self-contained system, and then moves to the design of
some other component
• The over-all system is put together by fitting
together a collection of these components
• Key feature: Details of the design of the component
are kept independent of the over-all system
– Benefit: It can be easily re-used in other systems:
• To implement an Object Oriented Design
methodology we need Object Oriented programming languages.
• Example:
Structured Design (1)
• Also called top-down design
• The designer starts by first conceiving a skeleton
high-level design of the system, and then starts
defining features of that over-all design in an ever-increasing detail
• Making small changes in the functionality of the
systems sometimes leads to major re-design
Structured Design (2)
•
Structured design emphasizes
separating
a
program's data from its functionality
•
Separating data from functionality typically
leads to SW that is
difficult to maintain &
Any Other SW Design Methodologies?
The most popular software design (programming) methodology
Spaghetti (sawain)
Most of the people when see description of the problem,
start coding it. Work on it few days or weeks, at the end a program is developed.
It has no structured and disciplined. The program
developed through spaghetti design methodology, its
maintenance is quite difficult, enhancement is impossible.
But for some reason, that’s the most popular way, due to
it many people think of software it really doesn’t work.
TODAY’s LECTURE
• Development process of reasonably complex SW systems
does not consist of “coding” only.
• SW Development methodologies?
• We will become familiar with the various phases of the
process that developers follow to develop SW systems of reasonable complexity.
• People noted that to develop large scale complex SW, only 15
COMPLEX SOFTWARE
• Example: Airplane monitoring system, Accounting
system of a company where up to 10,000 people work.
• A system that have hundred of thousands of lines of
code or may be millions of line of code that system is consider complex system.
• To develop complex large scale system proper thinking,
SW Life-Cycle
• The sequence of phases a SW goes through from
the concept to decommissioning.
• It is important to think about all those phases
before the design work starts
• Thinking about the future phases generally results
in:
– Shorter delivery times
EXAMPLE
• On the internet I want to launch an e-commerce website
through which I want to sale jewelry. People visit my
website, purchase jewelry, provide information about them i.e. address, telephone and credit card no. I will verify the
details. Accept the order after verification. Then I will
shipped his jewelry. This is CONCEPT.
• Last step is DECOMMISSIONING i.e. I am using this website
from long time, I want to do something new. Now I want to
shut it down and launch a new website. I want my customer
knows about my new website further my customer data i.e. their credit information, preference etc that should also be
• Software life cycle is start from concept to decommissioning
and the phases between them.
• Its important to think of life-cycle before making a software.
Think what are the different phases of software i.e. concept,
conceive, design, implement, test, deliver it.
• After it customer use it, maintain it and decommission it.
• Benefit of thinking on these phases of life-cycle will be, the piece of software that will be developed it will be of good
CASE STUDY
• I was working with a team and we have to
develop an e-commerce website for jewelry sale.
• We decided on this spec computer and particular
A Case in Point
• I didn’t discuss with the customer the specs of the HW & OS before
developing a particular e-commerce SW
•I wrote it for the HW/OS that was easily available to me.
•Unfortunately that HW/OS combination differed from what was easily
available to the client
•We developed the website and shifted to customer, later customer realized it was developed with other assumptions. We have different HW and OS.
•Result: Huge amount of rework. Higher cost. Delayed delivery. Lower quality.
• Therefore, now before designing a SW system, I first write down the
Let us now take a look at a very simple
SW life-cycle
• The point is if you think properly on the
phases of software life-cycle phases:
– Your cost of development can be reduced. – You reduced the deliver time.
Development
Concept
Operation & Maintenance
That was a very simple view
Concept& Feasibility User Requirements
Developer Specs Planning
Design
Implementation
Integration Testing
During the rest of the lecture we are
now going to
discuss each of these
Concept& Feasibility User Requirements Developer Specs Planning Design Implementation Integration Testing
Opr. & Maintenance
Retirement
Concept: What needs to be done?
Concept& Feasibility User Requirements Developer Specs Planning Design Implementation Integration Testing
Opr. & Maintenance
Retirement
The user
documents as
Concept& Feasibility User Requirements Developer Specs Planning Design Implementation Integration Testing
Opr. & Maintenance
Concept& Feasibility User Requirements Developer Specs Planning Design Implementation Integration Testing
Opr. & Maintenance
Concept& Feasibility
User Requirements
Developer Specs
Planning
Design
Implementation
Integration Testing
Opr. & Maintenance
Retirement
Architecture: Decompose the problem into subsystems and define their relationships
Concept& Feasibility
User Requirements
Developer Specs
Planning
Design
Implementation
Integration Testing
Opr. & Maintenance
Retirement
Concept& Feasibility User Requirements Developer Specs Planning Design Implementation Integration Testing
Opr. & Maintenance
Retirement
Bring the
sub-subsystems together to form subsystems and test. Bring
Concept& Feasibility
User Requirements
Developer Specs
Planning
Design
Implementation
Integration Testing
Opr. & Maintenance
Retirement
Use
Enhance Adapt
Concept& Feasibility
User Requirements
Developer Specs
Planning
Design
Implementation
Integration Testing
Opr. & Maintenance
Retirement
• Concept: Sale Jewelry, There are already many
people who are doing the same business. The concept is when this website is built, then why people visit it. In Concept we think only
business point of view.
• Feasibility: Explore business point of view i.e.
when this website will develop, how much it
• The concept i have. Is this possible to build that
system the current technologies, tools and suppliers are available to build this for me.
• User Requirement: I am the business person who
want to develop this website. I note down some where what features should have on this website. E.g. Special offers i.e. sale, it must have catalogue where customer see the list of items, can see
gold, silver, platinum, cheap, expensive. After
• I am the business person who is running the
website, i want to know at any given time how many people are on my website. Or last week how much customer purchases or in a year how much bangles i sold.
• Developer Spec: developer read user requirement, do some analysis, further
• Planning: Start with developer spec and see
how much time is required to build this system. How much resources are required i.e. man
power, computers, software?
• Design: Catalogue module, shopping cart
Concept& Feasibility User Requirements Developer Specs Planning Design Implementation Integration Testing
Opr. & Maintenance
Key
Concept& Feasibility
User Requirements
Developer Specs
Planning
Design
Implementation
Integration Testing
Opr. & Maintenance
Retirement
Concept& Feasibility
User Requirements
Developer Specs
Planning
Design
Implementation
Integration Testing
Opr. & Maintenance
Retirement
Other Life-Cycle Models
• The sequence of phases (or the life-cycle mode)
that I showed is just one example of the several sequences that SW developers follow
• This one is called the “Waterfall” model
• You will learn about some more models (e.g. the
Reading Assignments
The Waterfall Lifecycle Model and its Derivatives
In Today’s Lecture
• We became familiar with the various phases of
the process that developers follow to develop SW systems of reasonable complexity
• We looked at a couple of problems related to the