You are on page 1of 12

Object Oriented Analysis

and Design
DEPARTMENT OF INFORMATION TECHNOLOGY
GOVT. GORDON COLLEGE RAWALPINDI

Fall 2019 Semester


BS Course: IT-325 OOA/D
Course Instructor: Mubashra Rabbani
Lecture 2
Iterative/Evolutionary Development

 Early programming and testing of a partial system, in


repeating cycles.
 Development starts before all the requirements are defined
in detail.
 Feedback is used to clarify and improve the evolving
specifications.
 We rely on short quick development steps, feedback and
adaptation to clarify the requirements and design.
RATHER THAN
Big, upfront speculative requirements and design steps
before programming.
 Early mitigation of risks.
 Early visible progress
 Higher success and productivity rates and lower defect levels
Iterative development
Iterative Development Example
 Project
 3 week early iteration
 Morning kickoff meeting – clarification of tasks and goals of
the iteration
 Reverse Engineering of last iteration into UML Diagrams
 Then team spends rest of the day working at whiteboards
(agile modeling)
 Sketching of rough UML diagrams, writing pseudocode and
design notes.
 Then remaining days are spent on implementation, testing,
further design, integration and daily builds of partial system.
 Activities meanwhile: Demonstration and evaluations with
stakeholders, ad planning for next iteration
Iterative Development
 Neither rush to code, nor long drawn-out design steps – just a little
forethought.

 Result of each iteration is executable but incomplete system.

 Output of an iteration is not an experimental or throw away prototype.


Rather, the output is a production-grade subset of the final system.

 Iterative feedback and evolution leads towards the desired system.


Requirements and design stability lowers overtime.

 Timeboxing of iterations (fixed length)


Delayed feedback misses the point of iterative development.

 Small steps, rapid feedback, adaptation


Agile
 AGILE : Agile is the ability to create and respond to change.
It is a way of dealing with, and ultimately succeeding in, an
uncertain and turbulent environment.

 Agile processes generally promote a disciplined project


management process that encourages frequent inspection
and adaptation where requirements and solutions evolve as
we proceed using incremental development process.
 Effective Response to change
 Effective communication among all stake holders
 Drawing the customers onto the team
 Rapid, incremental delivery of product
Agile
 Agile software development is an umbrella term for a set of
frameworks and practices based on the values and principles
expressed in the Agile Manifesto.

 AGILE MENIFESTO : the Manifesto was developed by a group


of leading figures in the software industry, and reflects their
experience of what approaches do and do not work for
software development.
 Individuals and interactions over processes and tools
 Working software over comprehensive documentation
 Customer collaboration over contract negotiation
 Respond to change over following a plan

 13 principals of Agile Manifesto reflect this manifesto.


Agile
 Agile software development refers to software development
methodologies centered round the idea of iterative
development.
 Driven by customer descriptions
 Short lived plans
 Iterative development
 Multiple software increments are delivered
 Adaptation of change
Unified Process
 The unified process model is an iterative, incremental,
architecture-centric, and use-case driven approach to software
development.
 Use-Case Driven Approach
 Means that development process follows a flow derived from use
cases
 A use-case defines the interaction between two or more entities.
 requirements by a customer are converted to functional
requirements by an analyst and generally referred to as use-cases.
 A use-case describes the operation of a software as interactions
between the customer and the system, resulting in a specific output
or a measurable return.
 For example, the online cake shop can be specified in terms of use
cases such as 'add cake to cart,' 'change the quantity of added
cakes in cart,' 'cake order checkout,' and so on.
 Each use case represents a significant functionality and could be
considered for an iteration.
Unified Process
 Architecture-centric Approach
 Architecture is view of the whole system with characteristics
made more visible by leaving the details aside.
 Using this approach, you'd be creating a blueprint of the
organization of the software system.
 It would include taking into account the different technologies,
programming languages, operating systems, development and
release environments, server capabilities, and other such areas
for developing the software.
 Architecture represents the form f the system, use cases
represent the function.
 To find the form, architects work with a general understanding
of the key functions
Unified Process
 Iterative And Incremental Approach
 Iteration refers to steps in the workflow, and increments, to
growth in the product.
 In every situation
 Developers identify and specify relevant use cases.
 Create a design using the chosen architecture.
 Implement design as components.
 Verify the components satisfy the use cases.
 You'd develop the software as a number of small mini-projects,
working in cycles and small working versions of the software will
be developed at the end of each cycle.
 Each iteration would add some functionality to the software
according to the requirements specified by the customer.
Phases Of UP Model
 We'll go through the four different phases, one at a time:
 Inception: The inception phase is similar to the requirements collection and analysis
stage of the waterfall model of software development. In this phase, you'd collect
requirements from the customer and analyze the project's feasibility, its cost, risks, and
profits.

 Elaboration: In this phase, you'd be expanding upon the activities undertaken in the
inception phase. The major goals of this phase include creating fully functional
requirements (use-cases) and creating a detailed architecture for fulfillment of the
requirements. You'd also prepare a business case document for the customer.

 Construction: In this phase, you'd be writing actual code and implementing the
features for each iteration. You'd be rolling out the first iteration of the software
depending on the key use-cases that make up the core functionalities of the software
system.

 Transition: In this phase, you'd be rolling out the next iterations to the customer and
fixing bugs for previous releases. You would also deploy builds of the software to the
customer.

You might also like