You are on page 1of 40

CS1010 Introduction to Computing

Lecture
(Software Development Methodology)

1
SW ?
Programming

Development
2
SWDesign
Methodology?

3
The set of (often flexible) rules and guidelines a team of
developers follow to construct reasonably complex SW systems

4
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


kept apart
5
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:
design once; use multiple times
6
• To implement an Object Oriented Design
methodology we need Object Oriented
programming languages.

• Example:
C++, Java, SmallTalk

7
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
exercise 8
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 &
understand - especially for large SW systems

9
Any Other SW Design Methodologies?
Spaghetti Design Methodology
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.
Software crashes.
10
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


% work is done on programming rest is done on other things
i.e. thinking, design and testing. Programming is just a small
part of SW development.
11
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,


planning, designing is needed without it you can not
develop complex system.

12
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
– Reduced costs of development
– A system of higher quality
13
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
maintained and transfer to new system.
14
• 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
quality. Cost of development either can be reduced. Delivery
time can also be shortened.
15
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


OS we use to develop this website.

16
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


installation manual, and get it OK’d by the customer. I do the same
17
with the Operation & Maintenance manual as well.
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.
– Maintain the good quality.

18
Concept

Development

Operation & Maintenance

Decommissioning

19
That was a very simple view

Now we look at a more detailed view of the life-cycle for a SW system of a reasonable
size

20
Concept & Feasibility
User Requirements
Developer Specs
Planning
Design
Implementation
Integration Testing
Opr. & Maintenance
Retirement
21
During the rest of the lecture we are
now going to discuss each of these
steps in some detail.

22
Concept & Feasibility Concept: What needs
User Requirements to be done?
Developer SpecsFeasibility: Preliminary
exploration of possible
Planning
solutions, technologies,
Design suppliers
Implementation
Integration Testing
Opr. & Maintenance
Retirement
23
Concept & Feasibility The user
documents as
User Requirements
much as he knows
Developer Specs about the job the
system must do
Planning
Design
Implementation
Integration Testing
Opr. & Maintenance
Retirement
24
Concept & Feasibility Developer
analyses users
User Requirements
requirement,
Developer Specs performs further
Planning investigation,
and produces
Design unambiguous
Implementation specifications
Integration Testing
Opr. & Maintenance
Retirement
25
Detailed plan
Concept & Feasibility
specifying the
User Requirements required
Developer Specs resources and
expected
Planning deliverables
Design
Implementation
Integration Testing
Opr. & Maintenance
Retirement
26
Concept & Feasibility
User Requirements
Developer Specs
Architecture: Decompose the problem into
subsystems and define their relationships
Planning
Design
Detailed Design: Decompose
Implementation further such that
one person can manage each sub-subsystem
Integration Testing
Opr. & Maintenance
Retirement
27
Concept & Feasibility
User Requirements
Developer Specs
Planning
Design Design
Implementation Coding
Integration Testing
Opr. & Maintenance
Retirement
28
Concept & Feasibility
User Requirements
Bring the sub-
subsystems together
Developer Specs to form subsystems
Planning and test. Bring
subsystems together
Design
to form the system
and test
Implementation
Integration Testing
Opr. & Maintenance
Retirement
29
Concept & Feasibility
User Requirements
Developer Specs
Planning Use
Design Enhance
Implementation Adapt
Integration Testing Correct
Opr. & Maintenance
Retirement
30
Concept & Feasibility
User Requirements
Developer Specs
Planning
Design
Implementation Phase it
out when
Integration Testing the time
comes
Opr. & Maintenance
Retirement
31
• 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
will profitable for me, if I am investing 1 lakh rs.
Over the years how much I return it back.

32
• 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
selecting the product and filling the form. I verify
credit card details. Ship the product to customer.
33
• 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
investigation (visit similar sites) user requirement
is written in user language that it required these
features, developer spec is written in developer
language that it can develop these features.
34
• 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


module. Back office function.

35
Concept & Feasibility
User Requirements
Unit Test
Developer Specs
Unit Test
Planning
Unit Test
Design
Unit Test
Implementation
Unit Test
Integration Testing
Acceptance Test Opr. & Maintenance
Retirement
36
Key
Issues
37
Customer’s lack of
Concept & Feasibility
knowledge about
User Requirements requirements
Developer Specs
Planning
Design
Implementation
Integration Testing
Opr. & Maintenance
Retirement
38
Concept & Feasibility
User Requirements
Lag
Developer Specs
Planning
Design
Implementation
Integration Testing
Opr. & Maintenance
Retirement
39
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


Spiral model) in your future courses

40

You might also like