SlideShare una empresa de Scribd logo
1 de 42
1
Introduction to
Agile Software Development
And
Python
By Tharindu Weerasinghe
BSc.Eng(Hons.), AMIESL
Software Engineer
Representing IFS R&D International | 2009
2
IFS-UoP Collaboration – Software Enginee
Later part of the Software Engineering course
conducted
for the
Computer Engineering Undergraduates
of the
Faculty of Engineering, University of Peradeniya.
3
What does the word ’Agile’ mean?
Moving quickly & lightly
4
What is meant by a Software Development Meth
A software development methodology or system development
methodology in software engineering is a framework that is used to structure,
plan, and control the process of developing an information system.
(Hope you know these things….)
5
So, What is meant by Agile Software
Development?
Agile software development is a group of software development methodologies
that are based on similar principles.
Agile methodologies generally promote,
 a project management process that encourages frequent inspection and
adaptation,
a leadership philosophy that encourages teamwork,
self-organization and accountability,
a set of engineering best practices that allow for rapid delivery of high-quality
software,
a business approach that aligns development with customer needs and company
goals.
6
The BIG picture of Agile Development….
7
So, Agile Development is not 100%
technical...?
•YES! The concepts behind Agile software development is not
purely based on technical aspects. It blends with technical,
management, personal aspects of a software developing team or
persons!
•Agile methods are a family of development processes, not a
single approach to software development.
•Initially, agile methods were called "lightweight methods." In
2001, prominent members of the community met at Snowbird,
Utah, and adopted the name "agile methods." Later, some of
these people formed The Agile Alliance, a non-profit organization
that promotes agile development.
8
Why Agile…?
Agile software enables you to build the right
software at the right time.
Agile is not about in-depth analysis and design that leads to a detailed
work breakdown structure that predicts on what day of the year eighteen
months in the future a team will deliver a certain set of features.
Agile is about continuous prioritization and customer review to insure
that meaningful features are delivered when they are ready and when
they are needed.
9
Agile(Adaptive) Vs Plan-Driven(Predictive):
Agile home ground: Plan-driven home ground:
Low criticality High criticality
Senior developers Junior developers
Requirements change very often Requirements don't change too often
Small number of developers Large number of developers
Culture that thrives on chaos Culture that demands order
10
Some features behind Agile Software
Development
Customer satisfaction by rapid, continuous delivery of useful software
Working software is delivered frequently (weeks rather than months)
Working software is the principal measure of progress
Even late changes in requirements are welcome
Close, daily cooperation between business people and developers
Face-to-face conversation is the best form of communication (Co-location)
Projects are built around motivated individuals, who should be trusted
Continuous attention to technical excellence and good design
Simplicity
Self-organizing teams
Regular adaptation to changing circumstances
11
Agile methods
Some of the well-known agile software development methods:
Agile Modeling
Agile Unified Process (AUP)
Agile Data Method
Crystal
Essential Unified Process (EssUP)
Extreme programming (XP)
Feature Driven Development (FDD)
Getting Real
Open Unified Process (OpenUP)
Scrum
12
Agile practices
Some of the well-known agile software development practices:
Test Driven Development (TDD)
Behavior Driven Development (BDD)
Continuous Integration
Pair Programming
Planning poker
13
Agile Languages
What’s an agile language?
An agile programming language is a language that helps to fulfill the agile values
and principles better than other languages, in the same sense as we think of agile
methods and agile modeling.
But can a language be agile?
YES! Why not? Well.., if a language can fulfill the concepts of agile software
development, then it can be called as an agile language.
Just like C++, Java, C#, .Net support Object Oriented concepts, languages that
can supports Agile concepts are called Agile Languages.
Note: Java and C# are NOT agile languages.
What are the examples?
Python, Perl, Ruby
We Will Learn some preliminary features of Python in this class…..
14
Features of Agile Languages
excellent for beginners, yet superb for experts
highly scalable, suitable for large projects as well as small ones
rapid development
portable, cross-platform
embeddable
easily extensible
object-oriented
you can get the job done
simple yet elegant
stable and mature
powerful standard libs
wealth of 3rd party packages
15
Agile Languages for Rapid
Prototyping
16
Software Prototyping
What are software prototypes?
Incomplete versions of the software program being developed.
e.g.: If you develop a simple software package for a customer for the first
time, you build a model of the product, which is NOT the final product; that is the
prototype)
What is software prototyping?
...of curse making the software prototypes…
Software prototyping is an activity during a certain software development, is the
creation of prototypes, i.e., incomplete versions of the software program being developed.
A prototype typically simulates only a few aspects of the features of the eventual
program, and may be completely different from the eventual implementation.
17
Software Prototyping
A prototype can be used in:
• The requirements engineering process to help with requirements elicitation &
validation.
• In design processes to explore options and develop a UI design.
• In the testing process to run back-to-back tests.
Prototyping Process:
18
Software Prototyping
Advantages of Prototyping
Reduced time and costs
Improved and increased user involvement
Improved system usability
A closer match to users’ real needs
Improved design quality
Improved maintainability
Disadvantages of Prototyping
Insufficient analysis
User confusion of prototype and finished system
Developer misunderstanding of user objectives
Developer attachment to prototype
Excessive development time of the prototype
Expense of implementing prototyping
19
Software Prototyping
Categories of Prototyping
Software prototyping has many variants. However, all the methods are in
some way based on two major types of prototyping:
 Evolutionary Prototyping
 Throwaway(Rapid) Prototyping
This lecture series focus on Rapid Prototyping (Throwaway) But before we
go into Rapid Prototyping in detail, let me brief you both of them.
20
Evolutionary prototyping
Build prototype
system
Develop abstract
specification
Use prototype
system
Deliver
system
System
adequate?
YES
N
21
Throwaway(Rapid) prototyping
Outline
requirements
Develop
prototype
Evaluate
prototype
Specify
system
Develop
software
Validate
system
Delivered
software
system
Reusable
components
22
Rapid prototyping (Further…)
Rapid prototyping techniques:
Various techniques may be used for rapid development.
Dynamic high-level language development
Database programming
Component and application assembly
These techniques are often used together.
Visual programming is an inherent part of most prototype development
systems.
23
Rapid prototyping (Further…)
Rapid prototyping RISKS…
Mistaken concepts of rapid prototyping concerning definitions, objectives and correct
application of the technique.
Disagreements with users and customers regarding methodology, standards, tools and so
on.
Out-of-control users who want to iterate and evolve a prototype into a system that does
everything for everyone all of the time
Budget slashes and effort shortcuts - temptations brought about by use of the word ‘rapid’
Premature delivery of a prototype instead of a final (thoroughly documented and tuned)
product
Over-evolved prototypes - substituting elegance and efficiency for flexibility
24
Python for Rapid Prototyping
Python is an agile language which supports Agile Methodologies. Agile
methodologies helps Rapid Prototyping a lot!
A Japanese Software Engineer KOICHI TAMURA says in his blog:-
“As you know in a project where multiple people are working on, it's quite common that there are
tasks that can be done only after some other tasks is completed, and if you have made a schedule you'll
know for that reason it's difficult to make a schedule. At the last project I often used Python for rapid
prototyping to complete a task to make the team working efficiently, not making a member bored by just
waiting for his workmate finish a task. We could rewrite the script in c++ for better performance later when
there was enough time. If we had been coding only in c++, the project might have been ended up in failure.
Python worked so nice.”
25
Shall we learn Python Basics?
What is Python...?
Python is a dynamic object-oriented programming language that can be
used for many kinds of software development.
It offers strong support for integration with other languages and tools,
comes with extensive standard libraries, and can be learned in a few days.
Many Python programmers report substantial productivity gains and feel
the language encourages the development of higher quality, more
maintainable code.
Python's core syntax and semantics are minimalistic, while the standard library
is large and comprehensive. Its use of whitespace as block delimiters is unusual
among popular programming languages.
26
Little bit from History…
Python was conceived in the late 1980s by Guido van Rossum at CWI [National Research Institute
for Mathematics and Computer Science (Dutch: Centrum voor Wiskunde en Informatica or CWI)]
in the Netherlands as a successor to the ABC programming language (itself inspired by SETL- a high-
level programming language) capable of exception handling and interfacing with the Amoeba
operating system.
Van Rossum is Python's principal author, and his continuing central role in deciding the direction
of Python is reflected in the title given to him by the Python community, Benevolent Dictator for Life
(BDFL).
Python 2.0 was released on 16 October 2000, with many major new features including a full
garbage collector and support for Unicode. However, the most important change was to the
development process itself, with a shift to a more transparent and community-backed process.
Python 3.0, a major, backwards-incompatible release, was released on 3 December 2008 after a
long period of testing. Many of its major features have been back ported to the backwards-
compatible Python 2.6.
27
Python Applications used in..,
Web and Internet Development
Database Access
Desktop GUIs
Scientific and Numeric
Education
Network Programming
Software Development
Game and 3D Graphics
28
Learn PYTHON........
29
Shall we learn some syntaxes via simple examples
I will give some sample codes to show you the syntaxes of Python Coding.
We can use Python 3.0 in Windows environment which has a good GUI (IDE)
as well. So it is easy to code…
In the following examples, input and output are distinguished by the
presence or absence of prompts (>>> and ...): to repeat the example, you
must type everything after the prompt, when the prompt appears; lines that do
not begin with a prompt are output from the interpreter. Note that a secondary
prompt on a line by itself in an example means you must type a blank line; this
is used to end a multi-line command.
30
Shall we learn some syntaxes via simple examples
Comments in Python:
Start with the hash character, #, and extend to the end of the physical
line. A comment may appear at the start of a line or following whitespace or
code, but not within a string literal. A hash character within a string literal is
just a hash character. Since comments are to clarify code and are not
interpreted by Python, they may be omitted when typing in examples.
Some examples:
# this is the first comment
SPAM = 1 # and this is the second comment
# ... and now a third!
STRING = "# This is not a comment."
31
Shall we learn some syntaxes via simple examples
Using Python as a Calculator:
Let’s try some simple Python commands. Start the interpreter and wait for the primary prompt, >>>. (It shouldn’t take
long.)
Numbers:
The interpreter acts as a simple calculator: you can type an expression at it and it will write the value. Expression syntax is
straightforward: the operators +, -, * and / work just like in most other languages (for example, Pascal or C); parentheses can be used
for grouping. For example:
>>> 2+2
4
>>> # This is a comment
... 2+2
4
>>> 2+2 # and a comment on the same line as code
4
>>> (50-5*6)/4
5
>>> # Integer division returns the floor:
... 7/3
2
>>> 7/-3
-3
32
Shall we learn some syntaxes via simple examples
The equal sign ('=') is used to assign a value to a variable.
Afterwards, no result is displayed before the next interactive prompt:
>>> width = 10
>>> height = 5*4
>>> width * height
200
A value can be assigned to several variables simultaneously:
>>> x = y = z = 0 # Zero x, y and z
>>> x
0
>>> y
0
>>> z
0
33
Shall we learn some syntaxes via simple examples
Variables must be “defined” (assigned a value) before they can be used,
or an error will occur:
>>> # try to access an undefined variable
... n
This is the error Message you get:-
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
NameError: name 'n' is not defined
There is full support for floating point;
operators with mixed type operands convert the integer operand to floating point:
>>> 3 * 3.75 / 1.5
7.5
>>> 7.0 / 2
3.5
34
Shall we learn some syntaxes via simple examples
Complex numbers are also supported;
Imaginary numbers are written with a suffix of j or J.
Complex numbers with a nonzero real component are written as (real+imagj), or can be created with the
complex(real, imag) function.
>>> 1j * 1J
(-1+0j)  This is the output you get
>>> 1j * complex(0,1)
(-1+0j)  This is the output you get
>>> 3+1j*3
(3+3j)  This is the output you get
>>> (3+1j)*3
(9+3j)  This is the output you get
>>> (1+2j)/(1+1j)
(1.5+0.5j)  This is the output you get
35
Shall we learn some syntaxes via simple examples
Complex numbers are always represented as two floating point numbers, the real and imaginary part. To
extract these parts from a complex number z, use z.real and z.imag.
>>> a=1.5+0.5j
>>> a.real
1.5  This is the output you get
>>> a.imag
0.5  This is the output you get
The conversion functions to floating point and integer (float(), int() and long()) don’t work for complex
numbers — there is no one correct way to convert a complex number to a real number. Use abs(z) to get its
magnitude (as a float) or z.real to get its real part.
>>> a.real
3.0
>>> a.imag
4.0
>>> abs(a) # sqrt(a.real**2 + a.imag**2)
5.0
36
Shall we learn some syntaxes via simple examples
Strings:
Besides numbers, Python can also manipulate strings, which can be expressed in several ways. They can
be enclosed in single quotes or double quotes:
>>> 'spam eggs'
'spam eggs'  This is the output you get
>>> 'doesn't'
"doesn't"  This is the output you get
>>> "doesn't"
"doesn't"  This is the output you get
>>> '"Yes," he said.'
'"Yes," he said.'  This is the output you get
>>> ""Yes," he said."
'"Yes," he said.'  This is the output you get
>>> '"Isn't," she said.'
'"Isn't," she said.'  This is the output you get
37
Shall we learn some syntaxes via simple examples
String literals can span multiple lines in several ways. Continuation lines can be used, with a
backslash as the last character on the line indicating that the next line is a logical continuation of the
line:
>>>hello = "This is a rather long string containingnseveral
lines of text just as you would do in C.nNote that whitespace at
the beginning of the line is significant.“
Note that newlines still need to be embedded in the string using n; the newline following the
trailing backslash is discarded. This example would print the following:
This is a rather long string containing
several lines of text just as you would do in C.
Note that whitespace at the beginning of the line is
significant.
38
Shall we learn some syntaxes via simple examples
Strings can be concatenated (glued together) with the + operator, and repeated with *:
>>> word = 'Help' + 'A'
>>> word 'HelpA'
>>> '<' + word*5 + '>'
'<HelpAHelpAHelpAHelpAHelpA>‘
Two string literals next to each other are automatically concatenated; the first line above could also have
been written word = 'Help' 'A'; this only works with two literals, not with arbitrary string expressions:
>>> 'str' 'ing' # <- This is ok
'string'
>>> 'str'.strip() + 'ing' # <- This is ok
'string'
>>> 'str'.strip() 'ing' # <- This is invalid File
"<stdin>", line 1, in ? 'str'.strip() 'ing' ^
SyntaxError: invalid syntax
39
Shall we learn some syntaxes via simple examples
Input & Output:
>>> s = 'Hello, world.’
>>> str(s)
‘Hello, world.’  This is the output you get
>>> repr(s)
“‘Hello, world.’”  This is the output you get
>>> str(0.1)
‘0.1’  This is the output you get
>>> repr(0.1)
‘0.10000000000000001’  This is the output you get
40
Shall we learn some syntaxes via simple examples
>>> x = 10 * 3.25
>>> y = 200 * 200
>>> s = 'The value of x is ' + repr(x) + ', and y is ' + repr(y) + '... '
>>> s
The value of x is 32.5, and y is 40000...  This is the output you
get
>>> # The repr() of a string adds string quotes and backslashes:...
>>> hello = 'hello, worldn‘
>>> hellos = repr(hello)
>>> hellos
‘hello, worldn’  This is the output you get
>>> # The argument to repr() may be any Python object:
... repr((x, y, ('spam', 'eggs')))
"(32.5, 40000, ('spam', 'eggs'))"  This is the output you get
That’s it from me…You can learn Python by trying it out by your self!
Wish you all the best for your future!
THANK YOU!
Special mention:
All on-line material referred when preparing these slides.
© 2009 IFS

Más contenido relacionado

La actualidad más candente

Software engineering a practitioners approach 8th edition pressman solutions ...
Software engineering a practitioners approach 8th edition pressman solutions ...Software engineering a practitioners approach 8th edition pressman solutions ...
Software engineering a practitioners approach 8th edition pressman solutions ...Drusilla918
 
Presentation on software construction
Presentation on software constructionPresentation on software construction
Presentation on software constructionBanduChalise
 
Software development life cycle yazılım geliştirme yaşam döngüsü
Software development life cycle   yazılım geliştirme yaşam döngüsüSoftware development life cycle   yazılım geliştirme yaşam döngüsü
Software development life cycle yazılım geliştirme yaşam döngüsüMesut Günes
 
Model driven architecture
Model driven architectureModel driven architecture
Model driven architectureBiruk Mamo
 
Introduction to Design Pattern
Introduction to Design  PatternIntroduction to Design  Pattern
Introduction to Design PatternSanae BEKKAR
 
Software Engineering Important Short Question for Exams
Software Engineering Important Short Question for ExamsSoftware Engineering Important Short Question for Exams
Software Engineering Important Short Question for ExamsMuhammadTalha436
 
Waterfall and spiral model
Waterfall and spiral modelWaterfall and spiral model
Waterfall and spiral modelyenohhoney
 
Unit 1 - Introduction to Software Engineering.ppt
Unit 1 - Introduction to Software Engineering.pptUnit 1 - Introduction to Software Engineering.ppt
Unit 1 - Introduction to Software Engineering.pptDrTThendralCompSci
 
Function oriented design
Function oriented designFunction oriented design
Function oriented designVidhun T
 
Engineering Software Products: 1. software products
Engineering Software Products: 1. software productsEngineering Software Products: 1. software products
Engineering Software Products: 1. software productssoftware-engineering-book
 
IBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt IntegrationIBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt Integrationgjuljo
 
SWE-401 - 2. Software Development life cycle (SDLC)
SWE-401 - 2. Software Development life cycle (SDLC)SWE-401 - 2. Software Development life cycle (SDLC)
SWE-401 - 2. Software Development life cycle (SDLC)ghayour abbas
 

La actualidad más candente (20)

Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Software engineering a practitioners approach 8th edition pressman solutions ...
Software engineering a practitioners approach 8th edition pressman solutions ...Software engineering a practitioners approach 8th edition pressman solutions ...
Software engineering a practitioners approach 8th edition pressman solutions ...
 
Presentation on software construction
Presentation on software constructionPresentation on software construction
Presentation on software construction
 
Software development life cycle yazılım geliştirme yaşam döngüsü
Software development life cycle   yazılım geliştirme yaşam döngüsüSoftware development life cycle   yazılım geliştirme yaşam döngüsü
Software development life cycle yazılım geliştirme yaşam döngüsü
 
Model driven architecture
Model driven architectureModel driven architecture
Model driven architecture
 
Types of UML diagrams
Types of UML diagramsTypes of UML diagrams
Types of UML diagrams
 
Incremental Model
Incremental ModelIncremental Model
Incremental Model
 
Introduction to Design Pattern
Introduction to Design  PatternIntroduction to Design  Pattern
Introduction to Design Pattern
 
Software Engineering Important Short Question for Exams
Software Engineering Important Short Question for ExamsSoftware Engineering Important Short Question for Exams
Software Engineering Important Short Question for Exams
 
Code Refactoring
Code RefactoringCode Refactoring
Code Refactoring
 
Chapter 01
Chapter 01Chapter 01
Chapter 01
 
Waterfall and spiral model
Waterfall and spiral modelWaterfall and spiral model
Waterfall and spiral model
 
Software educativo
Software educativoSoftware educativo
Software educativo
 
Process Models IN software Engineering
Process Models IN software EngineeringProcess Models IN software Engineering
Process Models IN software Engineering
 
Unit 1 - Introduction to Software Engineering.ppt
Unit 1 - Introduction to Software Engineering.pptUnit 1 - Introduction to Software Engineering.ppt
Unit 1 - Introduction to Software Engineering.ppt
 
Function oriented design
Function oriented designFunction oriented design
Function oriented design
 
Engineering Software Products: 1. software products
Engineering Software Products: 1. software productsEngineering Software Products: 1. software products
Engineering Software Products: 1. software products
 
Java pdf
Java   pdfJava   pdf
Java pdf
 
IBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt IntegrationIBM Rational Rhapsody and Qt Integration
IBM Rational Rhapsody and Qt Integration
 
SWE-401 - 2. Software Development life cycle (SDLC)
SWE-401 - 2. Software Development life cycle (SDLC)SWE-401 - 2. Software Development life cycle (SDLC)
SWE-401 - 2. Software Development life cycle (SDLC)
 

Similar a Introduction to Agile Software Development & Python

Agile Languages for Rapid Prototyping
Agile Languages for Rapid PrototypingAgile Languages for Rapid Prototyping
Agile Languages for Rapid PrototypingTharindu Weerasinghe
 
Agile And Open Development
Agile And Open DevelopmentAgile And Open Development
Agile And Open DevelopmentRoss Gardler
 
Devops interview-questions-PDF
Devops interview-questions-PDFDevops interview-questions-PDF
Devops interview-questions-PDFMayank Kumar
 
probe-into-the-key-components-and-tools-of-devops-lifecycle
probe-into-the-key-components-and-tools-of-devops-lifecycleprobe-into-the-key-components-and-tools-of-devops-lifecycle
probe-into-the-key-components-and-tools-of-devops-lifecycleCuneiform Consulting Pvt Ltd.
 
GMO'less Software Development Practices
GMO'less Software Development PracticesGMO'less Software Development Practices
GMO'less Software Development PracticesLemi Orhan Ergin
 
DevOps interview questions and answers
DevOps interview questions and answersDevOps interview questions and answers
DevOps interview questions and answersHopeTutors1
 
Software Development Simplified - A Beginner's Guide.pdf
Software Development Simplified - A Beginner's Guide.pdfSoftware Development Simplified - A Beginner's Guide.pdf
Software Development Simplified - A Beginner's Guide.pdfSeasiaInfotech2
 
SE-Lecture 4 - Agile Software Development.pptx
SE-Lecture 4 - Agile Software Development.pptxSE-Lecture 4 - Agile Software Development.pptx
SE-Lecture 4 - Agile Software Development.pptxTangZhiSiang
 
CSE_2014 SE MODULE 1 V.10 (2).pptx
CSE_2014 SE MODULE 1 V.10 (2).pptxCSE_2014 SE MODULE 1 V.10 (2).pptx
CSE_2014 SE MODULE 1 V.10 (2).pptxMrSDeepakRajAssistan
 
Introduction To Development And Operations
Introduction To Development And OperationsIntroduction To Development And Operations
Introduction To Development And Operationsteekhesawaal
 
Comprehensive Guide to Hire DevOps Engineer.pdf
Comprehensive Guide to Hire DevOps Engineer.pdfComprehensive Guide to Hire DevOps Engineer.pdf
Comprehensive Guide to Hire DevOps Engineer.pdfEcosmobTechnologies1
 
Skills and Responsibilities of a Python Developer.pdf
Skills and Responsibilities of a Python Developer.pdfSkills and Responsibilities of a Python Developer.pdf
Skills and Responsibilities of a Python Developer.pdfuncodemy
 

Similar a Introduction to Agile Software Development & Python (20)

Agile Languages for Rapid Prototyping
Agile Languages for Rapid PrototypingAgile Languages for Rapid Prototyping
Agile Languages for Rapid Prototyping
 
Agile And Open Development
Agile And Open DevelopmentAgile And Open Development
Agile And Open Development
 
Training report
Training reportTraining report
Training report
 
Unit1
Unit1Unit1
Unit1
 
Unit 1 OOSE
Unit 1 OOSEUnit 1 OOSE
Unit 1 OOSE
 
Devops interview-questions-PDF
Devops interview-questions-PDFDevops interview-questions-PDF
Devops interview-questions-PDF
 
probe-into-the-key-components-and-tools-of-devops-lifecycle
probe-into-the-key-components-and-tools-of-devops-lifecycleprobe-into-the-key-components-and-tools-of-devops-lifecycle
probe-into-the-key-components-and-tools-of-devops-lifecycle
 
Agile software process
Agile software processAgile software process
Agile software process
 
GMO'less Software Development Practices
GMO'less Software Development PracticesGMO'less Software Development Practices
GMO'less Software Development Practices
 
Dev ops lpi-701
Dev ops lpi-701Dev ops lpi-701
Dev ops lpi-701
 
DevOps interview questions and answers
DevOps interview questions and answersDevOps interview questions and answers
DevOps interview questions and answers
 
Quality Software Development
Quality Software DevelopmentQuality Software Development
Quality Software Development
 
Software Development Simplified - A Beginner's Guide.pdf
Software Development Simplified - A Beginner's Guide.pdfSoftware Development Simplified - A Beginner's Guide.pdf
Software Development Simplified - A Beginner's Guide.pdf
 
Computer software specialists wikki verma
Computer software specialists   wikki vermaComputer software specialists   wikki verma
Computer software specialists wikki verma
 
SE-Lecture 4 - Agile Software Development.pptx
SE-Lecture 4 - Agile Software Development.pptxSE-Lecture 4 - Agile Software Development.pptx
SE-Lecture 4 - Agile Software Development.pptx
 
CSE_2014 SE MODULE 1 V.10 (2).pptx
CSE_2014 SE MODULE 1 V.10 (2).pptxCSE_2014 SE MODULE 1 V.10 (2).pptx
CSE_2014 SE MODULE 1 V.10 (2).pptx
 
Introduction To Development And Operations
Introduction To Development And OperationsIntroduction To Development And Operations
Introduction To Development And Operations
 
Comprehensive Guide to Hire DevOps Engineer.pdf
Comprehensive Guide to Hire DevOps Engineer.pdfComprehensive Guide to Hire DevOps Engineer.pdf
Comprehensive Guide to Hire DevOps Engineer.pdf
 
Skills and Responsibilities of a Python Developer.pdf
Skills and Responsibilities of a Python Developer.pdfSkills and Responsibilities of a Python Developer.pdf
Skills and Responsibilities of a Python Developer.pdf
 
Consulting
ConsultingConsulting
Consulting
 

Más de Tharindu Weerasinghe

Basics of Computer Networks in Sinhala
Basics of Computer Networks in SinhalaBasics of Computer Networks in Sinhala
Basics of Computer Networks in SinhalaTharindu Weerasinghe
 
Data Structures & Algorithms in Sinhala
Data Structures & Algorithms in SinhalaData Structures & Algorithms in Sinhala
Data Structures & Algorithms in SinhalaTharindu Weerasinghe
 
Object Oriended Programming in Sinhala
Object Oriended Programming in Sinhala Object Oriended Programming in Sinhala
Object Oriended Programming in Sinhala Tharindu Weerasinghe
 
Tips For A Better Undergraduate Research
Tips For A Better Undergraduate ResearchTips For A Better Undergraduate Research
Tips For A Better Undergraduate ResearchTharindu Weerasinghe
 
Cloud Conputing Basics and some Related Research Topics
Cloud Conputing Basics and some Related Research TopicsCloud Conputing Basics and some Related Research Topics
Cloud Conputing Basics and some Related Research TopicsTharindu Weerasinghe
 
Basic Concepts and Trends in Emerging Technologies
Basic Concepts and Trends in Emerging TechnologiesBasic Concepts and Trends in Emerging Technologies
Basic Concepts and Trends in Emerging TechnologiesTharindu Weerasinghe
 
Introduction to Enterprise Applications and Tools
Introduction to Enterprise Applications and ToolsIntroduction to Enterprise Applications and Tools
Introduction to Enterprise Applications and ToolsTharindu Weerasinghe
 
Things to ponder before you start building [cooperate] software
Things to ponder before you start building [cooperate] softwareThings to ponder before you start building [cooperate] software
Things to ponder before you start building [cooperate] softwareTharindu Weerasinghe
 
How to make screens and the internet safe for Children
How to make screens and the internet safe for Children How to make screens and the internet safe for Children
How to make screens and the internet safe for Children Tharindu Weerasinghe
 
A Survey Study on Higher Education Trends among Sri Lankan IT Professionals
A Survey Study on Higher Education Trends among Sri Lankan IT ProfessionalsA Survey Study on Higher Education Trends among Sri Lankan IT Professionals
A Survey Study on Higher Education Trends among Sri Lankan IT ProfessionalsTharindu Weerasinghe
 
A Survey Study on Higher Education Trends among Information Technology Prof...
A Survey Study  on  Higher Education Trends among Information Technology Prof...A Survey Study  on  Higher Education Trends among Information Technology Prof...
A Survey Study on Higher Education Trends among Information Technology Prof...Tharindu Weerasinghe
 
Professionalism and Industry Expectations related to IT industry
Professionalism and Industry Expectations related to IT industry  Professionalism and Industry Expectations related to IT industry
Professionalism and Industry Expectations related to IT industry Tharindu Weerasinghe
 

Más de Tharindu Weerasinghe (20)

C Propgramming.pdf
C Propgramming.pdfC Propgramming.pdf
C Propgramming.pdf
 
Basics of Computer Networks in Sinhala
Basics of Computer Networks in SinhalaBasics of Computer Networks in Sinhala
Basics of Computer Networks in Sinhala
 
Data Structures & Algorithms in Sinhala
Data Structures & Algorithms in SinhalaData Structures & Algorithms in Sinhala
Data Structures & Algorithms in Sinhala
 
Object Oriended Programming in Sinhala
Object Oriended Programming in Sinhala Object Oriended Programming in Sinhala
Object Oriended Programming in Sinhala
 
Tips For A Better Undergraduate Research
Tips For A Better Undergraduate ResearchTips For A Better Undergraduate Research
Tips For A Better Undergraduate Research
 
Basics of Block Chain
Basics of Block ChainBasics of Block Chain
Basics of Block Chain
 
Basics of IoT
Basics of IoTBasics of IoT
Basics of IoT
 
REST API Basics
REST API BasicsREST API Basics
REST API Basics
 
Cloud Conputing Basics and some Related Research Topics
Cloud Conputing Basics and some Related Research TopicsCloud Conputing Basics and some Related Research Topics
Cloud Conputing Basics and some Related Research Topics
 
Basic Concepts and Trends in Emerging Technologies
Basic Concepts and Trends in Emerging TechnologiesBasic Concepts and Trends in Emerging Technologies
Basic Concepts and Trends in Emerging Technologies
 
Introcution to EJB
Introcution to EJBIntrocution to EJB
Introcution to EJB
 
Introduction to Enterprise Applications and Tools
Introduction to Enterprise Applications and ToolsIntroduction to Enterprise Applications and Tools
Introduction to Enterprise Applications and Tools
 
Things to ponder before you start building [cooperate] software
Things to ponder before you start building [cooperate] softwareThings to ponder before you start building [cooperate] software
Things to ponder before you start building [cooperate] software
 
How to make screens and the internet safe for Children
How to make screens and the internet safe for Children How to make screens and the internet safe for Children
How to make screens and the internet safe for Children
 
Different Concepts on Databases
Different Concepts on DatabasesDifferent Concepts on Databases
Different Concepts on Databases
 
A Survey Study on Higher Education Trends among Sri Lankan IT Professionals
A Survey Study on Higher Education Trends among Sri Lankan IT ProfessionalsA Survey Study on Higher Education Trends among Sri Lankan IT Professionals
A Survey Study on Higher Education Trends among Sri Lankan IT Professionals
 
A Survey Study on Higher Education Trends among Information Technology Prof...
A Survey Study  on  Higher Education Trends among Information Technology Prof...A Survey Study  on  Higher Education Trends among Information Technology Prof...
A Survey Study on Higher Education Trends among Information Technology Prof...
 
Professionalism and Industry Expectations related to IT industry
Professionalism and Industry Expectations related to IT industry  Professionalism and Industry Expectations related to IT industry
Professionalism and Industry Expectations related to IT industry
 
Triggers and Stored Procedures
Triggers and Stored ProceduresTriggers and Stored Procedures
Triggers and Stored Procedures
 
Database Intergrity
Database IntergrityDatabase Intergrity
Database Intergrity
 

Último

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...kalichargn70th171
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456KiaraTiradoMicha
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024Mind IT Systems
 
ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedDelhi Call girls
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 

Último (20)

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
ManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide DeckManageIQ - Sprint 236 Review - Slide Deck
ManageIQ - Sprint 236 Review - Slide Deck
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 

Introduction to Agile Software Development & Python

  • 1. 1 Introduction to Agile Software Development And Python By Tharindu Weerasinghe BSc.Eng(Hons.), AMIESL Software Engineer Representing IFS R&D International | 2009
  • 2. 2 IFS-UoP Collaboration – Software Enginee Later part of the Software Engineering course conducted for the Computer Engineering Undergraduates of the Faculty of Engineering, University of Peradeniya.
  • 3. 3 What does the word ’Agile’ mean? Moving quickly & lightly
  • 4. 4 What is meant by a Software Development Meth A software development methodology or system development methodology in software engineering is a framework that is used to structure, plan, and control the process of developing an information system. (Hope you know these things….)
  • 5. 5 So, What is meant by Agile Software Development? Agile software development is a group of software development methodologies that are based on similar principles. Agile methodologies generally promote,  a project management process that encourages frequent inspection and adaptation, a leadership philosophy that encourages teamwork, self-organization and accountability, a set of engineering best practices that allow for rapid delivery of high-quality software, a business approach that aligns development with customer needs and company goals.
  • 6. 6 The BIG picture of Agile Development….
  • 7. 7 So, Agile Development is not 100% technical...? •YES! The concepts behind Agile software development is not purely based on technical aspects. It blends with technical, management, personal aspects of a software developing team or persons! •Agile methods are a family of development processes, not a single approach to software development. •Initially, agile methods were called "lightweight methods." In 2001, prominent members of the community met at Snowbird, Utah, and adopted the name "agile methods." Later, some of these people formed The Agile Alliance, a non-profit organization that promotes agile development.
  • 8. 8 Why Agile…? Agile software enables you to build the right software at the right time. Agile is not about in-depth analysis and design that leads to a detailed work breakdown structure that predicts on what day of the year eighteen months in the future a team will deliver a certain set of features. Agile is about continuous prioritization and customer review to insure that meaningful features are delivered when they are ready and when they are needed.
  • 9. 9 Agile(Adaptive) Vs Plan-Driven(Predictive): Agile home ground: Plan-driven home ground: Low criticality High criticality Senior developers Junior developers Requirements change very often Requirements don't change too often Small number of developers Large number of developers Culture that thrives on chaos Culture that demands order
  • 10. 10 Some features behind Agile Software Development Customer satisfaction by rapid, continuous delivery of useful software Working software is delivered frequently (weeks rather than months) Working software is the principal measure of progress Even late changes in requirements are welcome Close, daily cooperation between business people and developers Face-to-face conversation is the best form of communication (Co-location) Projects are built around motivated individuals, who should be trusted Continuous attention to technical excellence and good design Simplicity Self-organizing teams Regular adaptation to changing circumstances
  • 11. 11 Agile methods Some of the well-known agile software development methods: Agile Modeling Agile Unified Process (AUP) Agile Data Method Crystal Essential Unified Process (EssUP) Extreme programming (XP) Feature Driven Development (FDD) Getting Real Open Unified Process (OpenUP) Scrum
  • 12. 12 Agile practices Some of the well-known agile software development practices: Test Driven Development (TDD) Behavior Driven Development (BDD) Continuous Integration Pair Programming Planning poker
  • 13. 13 Agile Languages What’s an agile language? An agile programming language is a language that helps to fulfill the agile values and principles better than other languages, in the same sense as we think of agile methods and agile modeling. But can a language be agile? YES! Why not? Well.., if a language can fulfill the concepts of agile software development, then it can be called as an agile language. Just like C++, Java, C#, .Net support Object Oriented concepts, languages that can supports Agile concepts are called Agile Languages. Note: Java and C# are NOT agile languages. What are the examples? Python, Perl, Ruby We Will Learn some preliminary features of Python in this class…..
  • 14. 14 Features of Agile Languages excellent for beginners, yet superb for experts highly scalable, suitable for large projects as well as small ones rapid development portable, cross-platform embeddable easily extensible object-oriented you can get the job done simple yet elegant stable and mature powerful standard libs wealth of 3rd party packages
  • 15. 15 Agile Languages for Rapid Prototyping
  • 16. 16 Software Prototyping What are software prototypes? Incomplete versions of the software program being developed. e.g.: If you develop a simple software package for a customer for the first time, you build a model of the product, which is NOT the final product; that is the prototype) What is software prototyping? ...of curse making the software prototypes… Software prototyping is an activity during a certain software development, is the creation of prototypes, i.e., incomplete versions of the software program being developed. A prototype typically simulates only a few aspects of the features of the eventual program, and may be completely different from the eventual implementation.
  • 17. 17 Software Prototyping A prototype can be used in: • The requirements engineering process to help with requirements elicitation & validation. • In design processes to explore options and develop a UI design. • In the testing process to run back-to-back tests. Prototyping Process:
  • 18. 18 Software Prototyping Advantages of Prototyping Reduced time and costs Improved and increased user involvement Improved system usability A closer match to users’ real needs Improved design quality Improved maintainability Disadvantages of Prototyping Insufficient analysis User confusion of prototype and finished system Developer misunderstanding of user objectives Developer attachment to prototype Excessive development time of the prototype Expense of implementing prototyping
  • 19. 19 Software Prototyping Categories of Prototyping Software prototyping has many variants. However, all the methods are in some way based on two major types of prototyping:  Evolutionary Prototyping  Throwaway(Rapid) Prototyping This lecture series focus on Rapid Prototyping (Throwaway) But before we go into Rapid Prototyping in detail, let me brief you both of them.
  • 20. 20 Evolutionary prototyping Build prototype system Develop abstract specification Use prototype system Deliver system System adequate? YES N
  • 22. 22 Rapid prototyping (Further…) Rapid prototyping techniques: Various techniques may be used for rapid development. Dynamic high-level language development Database programming Component and application assembly These techniques are often used together. Visual programming is an inherent part of most prototype development systems.
  • 23. 23 Rapid prototyping (Further…) Rapid prototyping RISKS… Mistaken concepts of rapid prototyping concerning definitions, objectives and correct application of the technique. Disagreements with users and customers regarding methodology, standards, tools and so on. Out-of-control users who want to iterate and evolve a prototype into a system that does everything for everyone all of the time Budget slashes and effort shortcuts - temptations brought about by use of the word ‘rapid’ Premature delivery of a prototype instead of a final (thoroughly documented and tuned) product Over-evolved prototypes - substituting elegance and efficiency for flexibility
  • 24. 24 Python for Rapid Prototyping Python is an agile language which supports Agile Methodologies. Agile methodologies helps Rapid Prototyping a lot! A Japanese Software Engineer KOICHI TAMURA says in his blog:- “As you know in a project where multiple people are working on, it's quite common that there are tasks that can be done only after some other tasks is completed, and if you have made a schedule you'll know for that reason it's difficult to make a schedule. At the last project I often used Python for rapid prototyping to complete a task to make the team working efficiently, not making a member bored by just waiting for his workmate finish a task. We could rewrite the script in c++ for better performance later when there was enough time. If we had been coding only in c++, the project might have been ended up in failure. Python worked so nice.”
  • 25. 25 Shall we learn Python Basics? What is Python...? Python is a dynamic object-oriented programming language that can be used for many kinds of software development. It offers strong support for integration with other languages and tools, comes with extensive standard libraries, and can be learned in a few days. Many Python programmers report substantial productivity gains and feel the language encourages the development of higher quality, more maintainable code. Python's core syntax and semantics are minimalistic, while the standard library is large and comprehensive. Its use of whitespace as block delimiters is unusual among popular programming languages.
  • 26. 26 Little bit from History… Python was conceived in the late 1980s by Guido van Rossum at CWI [National Research Institute for Mathematics and Computer Science (Dutch: Centrum voor Wiskunde en Informatica or CWI)] in the Netherlands as a successor to the ABC programming language (itself inspired by SETL- a high- level programming language) capable of exception handling and interfacing with the Amoeba operating system. Van Rossum is Python's principal author, and his continuing central role in deciding the direction of Python is reflected in the title given to him by the Python community, Benevolent Dictator for Life (BDFL). Python 2.0 was released on 16 October 2000, with many major new features including a full garbage collector and support for Unicode. However, the most important change was to the development process itself, with a shift to a more transparent and community-backed process. Python 3.0, a major, backwards-incompatible release, was released on 3 December 2008 after a long period of testing. Many of its major features have been back ported to the backwards- compatible Python 2.6.
  • 27. 27 Python Applications used in.., Web and Internet Development Database Access Desktop GUIs Scientific and Numeric Education Network Programming Software Development Game and 3D Graphics
  • 29. 29 Shall we learn some syntaxes via simple examples I will give some sample codes to show you the syntaxes of Python Coding. We can use Python 3.0 in Windows environment which has a good GUI (IDE) as well. So it is easy to code… In the following examples, input and output are distinguished by the presence or absence of prompts (>>> and ...): to repeat the example, you must type everything after the prompt, when the prompt appears; lines that do not begin with a prompt are output from the interpreter. Note that a secondary prompt on a line by itself in an example means you must type a blank line; this is used to end a multi-line command.
  • 30. 30 Shall we learn some syntaxes via simple examples Comments in Python: Start with the hash character, #, and extend to the end of the physical line. A comment may appear at the start of a line or following whitespace or code, but not within a string literal. A hash character within a string literal is just a hash character. Since comments are to clarify code and are not interpreted by Python, they may be omitted when typing in examples. Some examples: # this is the first comment SPAM = 1 # and this is the second comment # ... and now a third! STRING = "# This is not a comment."
  • 31. 31 Shall we learn some syntaxes via simple examples Using Python as a Calculator: Let’s try some simple Python commands. Start the interpreter and wait for the primary prompt, >>>. (It shouldn’t take long.) Numbers: The interpreter acts as a simple calculator: you can type an expression at it and it will write the value. Expression syntax is straightforward: the operators +, -, * and / work just like in most other languages (for example, Pascal or C); parentheses can be used for grouping. For example: >>> 2+2 4 >>> # This is a comment ... 2+2 4 >>> 2+2 # and a comment on the same line as code 4 >>> (50-5*6)/4 5 >>> # Integer division returns the floor: ... 7/3 2 >>> 7/-3 -3
  • 32. 32 Shall we learn some syntaxes via simple examples The equal sign ('=') is used to assign a value to a variable. Afterwards, no result is displayed before the next interactive prompt: >>> width = 10 >>> height = 5*4 >>> width * height 200 A value can be assigned to several variables simultaneously: >>> x = y = z = 0 # Zero x, y and z >>> x 0 >>> y 0 >>> z 0
  • 33. 33 Shall we learn some syntaxes via simple examples Variables must be “defined” (assigned a value) before they can be used, or an error will occur: >>> # try to access an undefined variable ... n This is the error Message you get:- Traceback (most recent call last): File “<stdin>”, line 1, in <module> NameError: name 'n' is not defined There is full support for floating point; operators with mixed type operands convert the integer operand to floating point: >>> 3 * 3.75 / 1.5 7.5 >>> 7.0 / 2 3.5
  • 34. 34 Shall we learn some syntaxes via simple examples Complex numbers are also supported; Imaginary numbers are written with a suffix of j or J. Complex numbers with a nonzero real component are written as (real+imagj), or can be created with the complex(real, imag) function. >>> 1j * 1J (-1+0j)  This is the output you get >>> 1j * complex(0,1) (-1+0j)  This is the output you get >>> 3+1j*3 (3+3j)  This is the output you get >>> (3+1j)*3 (9+3j)  This is the output you get >>> (1+2j)/(1+1j) (1.5+0.5j)  This is the output you get
  • 35. 35 Shall we learn some syntaxes via simple examples Complex numbers are always represented as two floating point numbers, the real and imaginary part. To extract these parts from a complex number z, use z.real and z.imag. >>> a=1.5+0.5j >>> a.real 1.5  This is the output you get >>> a.imag 0.5  This is the output you get The conversion functions to floating point and integer (float(), int() and long()) don’t work for complex numbers — there is no one correct way to convert a complex number to a real number. Use abs(z) to get its magnitude (as a float) or z.real to get its real part. >>> a.real 3.0 >>> a.imag 4.0 >>> abs(a) # sqrt(a.real**2 + a.imag**2) 5.0
  • 36. 36 Shall we learn some syntaxes via simple examples Strings: Besides numbers, Python can also manipulate strings, which can be expressed in several ways. They can be enclosed in single quotes or double quotes: >>> 'spam eggs' 'spam eggs'  This is the output you get >>> 'doesn't' "doesn't"  This is the output you get >>> "doesn't" "doesn't"  This is the output you get >>> '"Yes," he said.' '"Yes," he said.'  This is the output you get >>> ""Yes," he said." '"Yes," he said.'  This is the output you get >>> '"Isn't," she said.' '"Isn't," she said.'  This is the output you get
  • 37. 37 Shall we learn some syntaxes via simple examples String literals can span multiple lines in several ways. Continuation lines can be used, with a backslash as the last character on the line indicating that the next line is a logical continuation of the line: >>>hello = "This is a rather long string containingnseveral lines of text just as you would do in C.nNote that whitespace at the beginning of the line is significant.“ Note that newlines still need to be embedded in the string using n; the newline following the trailing backslash is discarded. This example would print the following: This is a rather long string containing several lines of text just as you would do in C. Note that whitespace at the beginning of the line is significant.
  • 38. 38 Shall we learn some syntaxes via simple examples Strings can be concatenated (glued together) with the + operator, and repeated with *: >>> word = 'Help' + 'A' >>> word 'HelpA' >>> '<' + word*5 + '>' '<HelpAHelpAHelpAHelpAHelpA>‘ Two string literals next to each other are automatically concatenated; the first line above could also have been written word = 'Help' 'A'; this only works with two literals, not with arbitrary string expressions: >>> 'str' 'ing' # <- This is ok 'string' >>> 'str'.strip() + 'ing' # <- This is ok 'string' >>> 'str'.strip() 'ing' # <- This is invalid File "<stdin>", line 1, in ? 'str'.strip() 'ing' ^ SyntaxError: invalid syntax
  • 39. 39 Shall we learn some syntaxes via simple examples Input & Output: >>> s = 'Hello, world.’ >>> str(s) ‘Hello, world.’  This is the output you get >>> repr(s) “‘Hello, world.’”  This is the output you get >>> str(0.1) ‘0.1’  This is the output you get >>> repr(0.1) ‘0.10000000000000001’  This is the output you get
  • 40. 40 Shall we learn some syntaxes via simple examples >>> x = 10 * 3.25 >>> y = 200 * 200 >>> s = 'The value of x is ' + repr(x) + ', and y is ' + repr(y) + '... ' >>> s The value of x is 32.5, and y is 40000...  This is the output you get >>> # The repr() of a string adds string quotes and backslashes:... >>> hello = 'hello, worldn‘ >>> hellos = repr(hello) >>> hellos ‘hello, worldn’  This is the output you get >>> # The argument to repr() may be any Python object: ... repr((x, y, ('spam', 'eggs'))) "(32.5, 40000, ('spam', 'eggs'))"  This is the output you get
  • 41. That’s it from me…You can learn Python by trying it out by your self! Wish you all the best for your future! THANK YOU!
  • 42. Special mention: All on-line material referred when preparing these slides. © 2009 IFS

Notas del editor

  1. 1
  2. 3
  3. 5
  4. 7
  5. 10
  6. 15
  7. Evolutionary prototyping: An initial prototype is produced and refined through a number of stages to the final system The objective of evolutionary prototyping is to deliver a working system to end-users: The development starts with those requirements which are best understood. Must be used for systems where the specification cannot be developed in advance. E.g., AI systems and user interface systems Based on techniques which allow rapid system iterations. Verification is impossible as there is no specification. Validation means demonstrating the adequacy of the system. Evolutionary prototyping advantages: * Accelerated delivery of the system: Rapid delivery and deployment are sometimes more important than functionality or long-term software maintainability. * User engagement with the system: Not only is the system more likely to meet user requirements, they are more likely to commit to the use of the system.
  8. Used to reduce requirements risk. The prototype is developed from an initial specification, delivered for experiment then discarded. The throw-away prototype should NOT be considered as a final system Some system characteristics may have been left out There is no specification for long-term maintenance The system will be poorly structured and difficult to maintain Various techniques may be used for rapid development Dynamic high-level language development Database programming Component and application assembly These techniques are often used together Visual programming is an inherent part of most prototype development systems
  9. Used to reduce requirements risk. The prototype is developed from an initial specification, delivered for experiment then discarded. The throw-away prototype should NOT be considered as a final system Some system characteristics may have been left out There is no specification for long-term maintenance The system will be poorly structured and difficult to maintain Various techniques may be used for rapid development Dynamic high-level language development Database programming Component and application assembly These techniques are often used together Visual programming is an inherent part of most prototype development systems
  10. Used to reduce requirements risk. The prototype is developed from an initial specification, delivered for experiment then discarded. The throw-away prototype should NOT be considered as a final system Some system characteristics may have been left out There is no specification for long-term maintenance The system will be poorly structured and difficult to maintain Various techniques may be used for rapid development Dynamic high-level language development Database programming Component and application assembly These techniques are often used together Visual programming is an inherent part of most prototype development systems