SlideShare a Scribd company logo
1 of 5
Download to read offline
Agile Software Development based on
3 layered filtering
Arash Heidarian
Multimedia Media University of Malaysia
arash2001h@yahoo.com
Abstract – Recently the major concern for software developers
and software enterprises is a rapid changing in criteria and
developing systems based on a dynamic platform .In order to
cope with this problem, many agile methodologies and
techniques are developed and proposed. This paper provides a
new idea referred to as the “3 layered filtering” .This idea helps
developers and enterprisers to make changes in short time and at
a low cost using existing Agile methodologies. Thus the first layer
classifies the requirements, the second layer identifies the
architecture layer that is going to be affected by new
requirements and third layer selects the appropriate Agile
methodology taking the information obtained from the last 2
layers in consideration. Each layered is in iteration in regard to
the new emerging requirement and tightly related to its next
Layer. In fact this is a modified and layer-based agile
methodology which facilitates taking proper action when a new
requirement is imposed; focusing on time and cost issue.
Therefore ,using “3 layered filtering”, developers and managers
may have this ability to abstract and distinguish different issues,
related to new requirements whereby less time and money will be
spent and proper human resource will be assigned to each
modification process.
Key words: 3 layered filtering, Agile methodology, Software
Architecture Layers, Iterative updates, Requirement
Classification
I. Introduction:
One of the main concerns in developing and producing
Software are diverse requirements from different prospective
of different users. Explicitly, there are 2 groups of
requirements, affect on design and architecture of
Software .First group of requirements are those which are
gathered before starting the design and development phases.
Second group of requirements are those which are gathered
after Design, Development and delivery phases. Basically, the
proper design and development based on elicited
requirements ,is the key to produce a Software which can
come into market and attract customers .But what keeps
customers satisfied and guarantees the survive of the software
among other softwares in market ,is to imply the second group
of requirements continuously
Into the product in order to keep it up to date, that is what this
paper addresses to. Before accomplishing this task, there are
Several questions around which brings some complexity in
implying changes such as who has proposed this change ?
Why the change is required and what is trigger? Which layer
of software is targeted? Which methodology can be helpful to
imply the change? Imply the change or leave it? Who is/are
required in order to imply this change? (Human Resource
Management). This paper tries to propose a simple way to
cope with this complexity due to mentioned questions and
ambiguous points.
II. Filtering Concept
In software Architecture, Abstraction always is a key to have
classified, controllable, modifiable and maintainable system.
Here the proposed method which is called “Filtering Method”,
helps us to classify the “Requirements for changes” and
abstract the Architecture Layers which are going to be
affected under the different classes of requirements. Finally,
the proper agile methodology is chosen in order to imply the
change. In order to accomplish this task, 3 filters are proposed
here which are tightly interrelated to each other. Figure 1
illustrates all filters and their phases in detail.
Figure 1 . Agile Software Development based on “3 layered filtering”
These 3 filters are explained in detail in continue.
A. First Filter – Change Reason Filter :
In this layer, all change scenarios are evaluated and triggers
are identified. It helps developers to classify changes into five
categories namely Bug, Error and Failure, DB and Library
Related, Interface Related, Functional and structural. So the
evaluation team go through all change scenarios and classifies
changes according to these categories. This classification is a
key to go to the next layer and is a clue to pass through the
second filter.
B. Second Filter – Layers of Change in Software
Architecture:
An architectural description of the layers of Change in
software can be proposed using as examples concepts of
computer and software architecture, Software Patterns and
object oriented programming. However the interpretation of
the Layers of Change for software, given here is an open
concept: it is prone to be changed, adapted or modified to
cope with other software development approaches, paradigms
or techniques which are oriented toward building architecture,
it is tried to produce an equivalent version for software
architecture [1].
There are 4 layers of architecture defined here. The classified
change scenarios help us to know which layers of architecture
will be under the effect of what type of changes. Obviously
“Bugs” and “Error and Failure” category of changes possibly
could be addressed to any Software Architecture Layer that is
why we are not going to mention them in each layer. The
layers as follows :
1. Software Site:
The software site layer objective is to provide a stable base on
which we construct software program. It can be represented
simply by the hardware elements of software architecture. It
Covers Hardware elements and Software Environment on
which software will be developed. A computer is constructed
from basic building blocks such as memory system, Processor
and I/O devices. These are first elements that influence the
design and implementation of software program. The major
differences between computers lie in the way the modules are
connected [1]. Regarding to definition of “Software Site”,
there are some change scenarios which are going to effect on
this layer of architecture. Changes which are in “Failure and
Error “and “Functional and structural” categories, are those
which influence on this layer. It is important to know that
changes to this layer are very costly and are implied so rarely.
There for should be very precise evaluation on implying the
changes to this layer. If the change request is related to
“Failure and Error “ , it is worthy to evaluate it and try to
imply it ,but if the change is in “Functional and structural”
category , on that time the cost and time should be taken into
consideration in order to see that does it have time and cost
justification ? For example if in one of the change scenarios it
is mentioned to change the platform of the system or to use
another design pattern to increase the performance, then all
trade-off points should be evaluated. It may affect the whole
system and requires high effort.
2. Software Structure :
The software structure layer is the description of a software
program as a set of defined subsystems, specifying their
responsibilities, and including rules and guidelines for
organizing the relationships between them. Software structure
is concerned with the issues about partitionening a complex
software system [1]. The partition of the system helps to
reduce the complexity and understand the parts and
subsystems easily and clearly [1]. As it was mentioned before,
the issue of abstraction and partitionening helps developers
significantly to understand, maintain and modify the system.
Software Structure can be defined as architectural patterns .
“An Architectural Pattern expresses a fundamental structural
organization or schema for software systems. It provides a set
of predefined subsystems, specifies their responsibilities, and
includes rules and guidelines for organizing the relationships
between them”. (Buschmann et al.1996).
Software Structure Changes vary little or not at all during the
lifetime of a software program. An important factor in
determining the success or failure of software program relies
deeply on choosing an appropriate Software Structure that
properly matches with the requirements and resources [1].
There for, mostly those requirements which collected before
design and development are handy to be applied and implied
in this architectural layer. If we want to address the change
reason category to this layer,”functional and structural
“category is the only one.
3. Software Skin:
Software skin or GUI is an appearance of software and
exhibits its functionalities. In the other words, it is represented
by all elements that allow users to interact with a system. This
layer is a root for most important quality attributes of a system
such as underestandability , Usability and being User
Friendly of the system. From structural point of view, it can
be seen that this layer is tightly related to first layer of
architecture. There are some Design Patterns (Gamma) behind
the GUI which enhances the performance of the system such
as Decorator, Abstract Factory and Bridge Patterns. So
changes located in “Interface Related” and “Functional and
structure” categories could be addressed to this layer.
4. Software Service:
This layer is to provide support for common activities during
the use of a software program. From a programming point of
view Software Services can be found in the form of all
prebuilt standards components that provide common
functionality like mathematical, Input/ Output and disk access.
Often Software Services found in libraries should be
customized by the designer or programmer for a particular
software design [1]. Since Software services addresses to
Libraries and I/O of DB and system, Design Pattern (which
Capture and Organize Reusable pieces to Clearly Define
Dependencies) and Idioms(which shows how to use Software
Service & rules and expectations) also help to use and
development of Software Services. Hence, the “DB and
Library” category of change can be addressed to this layer of
Architecture. Because of the existing issues of Design Pattern
and Idioms in Software Service Layer, “Functional and
structural” category also can be addressed to this layer.
C. Third Filter – Agile Methods:
Agile methodology is disciplined Project Management that
yields the iterative, frequent inspection and adoption, relaying
on teamwork. Agile methodology is exactly what is required
to imply frequent, new changes and requirements. Concept of
Agile intensively relies on IID (Incremental and Iterative
Development).
The simple ability to revisit the “phases” of development
dramatically improves project efficiency. The idea of
revisiting phases over and over is called “incremental and
iterative Development” (IID). The development lifecycle is
cut up into increments or “iterations” and each iteration
touches on each of the traditional “phases” of development.
With IID, Requirements are in ongoing processes that are
periodically revisited. IID allows for multiple “passes”, or
iterations, over a project lifecycle to properly address
complexities and risk factors. This concept of iterative
development hails from the “lean development” era of the
1980s where Japanese auto makers made tremendous
efficiency and innovation increases simply by removing the
phased, sequential approach and implementing an iterative
approach, where prototypes were developed for short-term
milestones (see Figure 2). Each phase was actually a layer that
continued throughout the entire development lifecycle; the
requirements, design, and implementation cycle was revisited
for each short-term milestone. [2].
Source : Adapted from H. Takeuchi and I. Nonaka, “The new Product
Development Game”, Harvard Business Rev., Jan. 1986, pp. 137-146
Figure 2. IID
What Agile and IID try to focus on, are Iterative Mechanism,
Design-Code-Test Loop, decrease the Cost of Change and
Increase Quality.
There are two most famous and in use methods of Agile,
called XP and Scrum.
A. XP
Extreme Programming evolved from Large Development
Cycle of Traditional Development Model and is composed of
five phases. Figure 3 shows process of XP life cycle:
source: Pekka Abrahamsson, Outi salo, Jussi Ronkainen & Juhani Warsta – Agile
Software Development methods - Figure 3 . XP Process
These Five phases are explained briefly as follows.
In Exploration Phase Customers Write Story Card. Story cards
contains the information about the change category and
Architectural layers which could be affected due to changes.
Project Team looks for proper tools and technology and test
the Technology and finally they try to find Architecture
Possibilities for the system are explored by building a
prototype of the system. The exploration phase takes between
a few weeks to a few months, depending on the change
scenario and largely of technology.
In planning phase, change scenarios are prioritized according
to their impotencies and complexities. Then the estimation of
effort and scheduling is done for each scenario.
The Iteration to release phase includes several iterations of the
system before the first release. The schedule set in the
planning stage is broken down to a number of iterations that
will each take one to four weeks to implement. The first
iteration creates a system with the architecture of the whole
system [2]. This is achieved by selecting the stories that
contain the requirements which are gathered before design and
development phase. These stories enforce the building the
whole system .Stories in next iteration contains more elicited
requirements and changes which are gathered after the
releasing the first edition (or trial edition). This iteration of
gathering stories, prioritizing stories and send them into the
rest of the processes is continuously and should be done in
whole lifecycle of software.
The Production Phase:
This phase requires extra testing, checking of the performance
and evaluation of trade-off points and sensitive points of
quality attributes .At this phase, new changes might be
founded or proposed by evaluation team or other stakeholders
who are involved in Software production. In this phase, the
decision is made to include the new changes in current release
or not. During this phase, the iterations may take one to three
weeks. The postponed ideas and suggestions are documented
for later implementation, during e.g. the maintenance phase.
The death phase is a phase when there is no any other
requirement or story from customers. We will reach this phase
when the system satisfies all customers’ needs with respect of
performance and reliability. Once the new stories are received
from customers, the whole process will be repeated. That is
what guarantees the life of software.
As it was mentioned earlier there are two famous agile
methods .Figure 4 shows second agile method process
lifecycle which is called Scrum.
Source : Pekka Abrahamsson, Outi salo, Jussi Ronkainen & Juhani Warsta – Agile
Software Development methods
Figure 4, Scrum Process
B. The scrum
The Scrum has been developed for managing the system
development process, It is an empirical approach applying the
ideas of industrial process control theory to system
development resulting in an approach that reintroduces the
idea of flexibility, adaptability and productivity (Schwaber
and Beedle 2002 ). The scrum focuses on team member
activity to work in way that makes the system flexible in
constantly changing environment. That is why it involves
several environmental and technical variables (e.g.
requirements, time frame, resources and technology) that are
likely to change during the process. This makes the
development process unpredictable and complex, requiring
flexibility of the systems development process for it to be able
to respond to the changes [2].
As a result of the development process, a system is produced
which is useful when delivered.(Schwaber 1995).
The Scrum is consisted of three phases and in concept it is so
similar to XP method. These three phases are explained
briefly as follows.
In Pregame phase there are two steps. The first step is
planning which is consisted of the following activities: Project
team Definition, produce Backlog list (which contains
requirements and changes and continuously is updated and
reviewed by the Scrum Team), Prioritizing requirements in
Backlog list and needed resources are estimated, identify
Tools and other Resources, Risk Assessment, Training need
and Verification Management. The Second step is
architectural phase. In this phase the high level design of the
system including the architecture is planned based on the
current items in Backlog List.
The Second phase which is called the development phase
(also called the game phase) is the agile part of the Scrum
approach. This phase is related as a “Black Box”where the
unpredictable is expected. The different environmental and
technical variables (such as time frame, quality, requirements,
resources, implementation technologies and tools and even
development methods) identified in scrum, which may change
during the process, are observed and controlled through
various Scrum Practices during the Sprints of the development
phase. Scrum aims at controlling the requirements and matters
constantly in order to be able to flexibly adapt to the changes
[2]. The core of the whole Scrum method is its Sprint. Sprint
is iterative cycle which covers all traditional phase of the
development (requirements, analysis, design, evolution and
delivery phases) in cyclic and iterative way. So each time the
Black log list is updated and it is required to imply new
requirements or changes, the selected scenario of new
requirements is sent into the sprint from the previous phase.
As it can be seen in Figure 4 , the Sprint ,black log list and all
phases are interrelated in cyclic way ,so any change or update
in Black log list ,would evolve the whole process.
The final phase is called Post-game phase which contains the
closure of the release. This phase is met when an agreement
has been made that the environmental variables such as the
requirements are completed.
It was just a brief and short explanation about XP and Scrum
methods. As it is evident, implying changes into software is a
process which requires a time and money.
III. Filters Coherence and the main purpose of Filtering
Model:
So it is very important to know what should be done before
starting any agile methods. That is, two prior filters to Agile
method filter, namely “Change Reason Filter” and “Layers of
Architecture Filter”, helps developers and project managers. It
helps project managers to manage the human resource more
precisely. For instance, if most of the problems are related to
Interface and affects “Software Skin layer”, so there is no
need to call a Database expert and hardware expert. Some
times when a problem appears or when a new change or
requirement appears, managers involve a group of experts of
all fields. So using this Filtering method, it is easy to manage
human resource .On the other hand, when manager is aware of
the details of a requirement, he can make more precise
predictions in scheduling and budgeting.
From technical point of view, it helps developers and
designers to decide to choose a proper Agile method. There
are several concerns related to choosing XP or Scrum. In
general Scrum is a project management process and XP is a
programming practice. From time point of view, Scrum teams
typically work in iterations (called sprints) that are from two
weeks to one month long. XP teams typically work in
iterations that are one or two weeks long. Furthermore Scrum
teams do not allow changes into their sprints. Once the sprint
planning meeting is completed and a commitment made to
deliver a set of product backlog items, that set of items
remains unchanged through the end of the sprint. XP teams
are much more amenable to change within their iterations. As
long as the team hasn’t started work on a particular feature, a
new feature of equivalent size can be swapped into the XP
team’s iteration in exchange for the unstarted feature [3].
IV. Conclusion
This paper provides a new and simple idea in order to cope
with complexity and ambiguity of implying new changes and
requirements during the lifecycle of a software, using Agile
Methodology. These three layers in this new idea help
manager and developer to classify the requirements and
change requests into four categories and then easily recognize
that which Architectural layers of Software are affected under
different requirement and change scenarios of different
categories. These two steps mostly help managers to have
more precise prediction about timing, scheduling and human
resource management. The third filter helps both manager and
developer to choose a proper method of Agile to imply
changes based on the obtained information from first two
filters.
References
[1] Jorge Luis Ortega Arjo a a d Graham Roberts :The layers
of chnge in Software Architecture
[2] Pekka Abrahamsson, Outi salo, Jussi Ronkainen & Juhani
Warsta – Agile Software Development, 2002
[3] Mike Cohn – Succeeding with Agile, 2007

More Related Content

What's hot

Software Engineering
Software Engineering Software Engineering
Software Engineering JayaKamal
 
Ch7-Software Engineering 9
Ch7-Software Engineering 9Ch7-Software Engineering 9
Ch7-Software Engineering 9Ian Sommerville
 
Software Engineering
Software Engineering Software Engineering
Software Engineering JayaKamal
 
Chapter 4 software design
Chapter 4  software designChapter 4  software design
Chapter 4 software designCliftone Mullah
 
EC8791 Requirement-Specifications-Quality assurance techniques
EC8791 Requirement-Specifications-Quality assurance techniquesEC8791 Requirement-Specifications-Quality assurance techniques
EC8791 Requirement-Specifications-Quality assurance techniquesRajalakshmiSermadurai
 
Design concepts
Design conceptsDesign concepts
Design conceptsJoshuaU1
 
Unit iv -Documenting and Implementation of Software Architecture
Unit iv -Documenting and Implementation of Software ArchitectureUnit iv -Documenting and Implementation of Software Architecture
Unit iv -Documenting and Implementation of Software ArchitectureDhivyaa C.R
 
Software Engineering
 Software Engineering  Software Engineering
Software Engineering JayaKamal
 
Software Engineering
Software Engineering Software Engineering
Software Engineering JayaKamal
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineeringPreeti Mishra
 
SWE-401 - 5. Software Design Basics
SWE-401 - 5. Software Design BasicsSWE-401 - 5. Software Design Basics
SWE-401 - 5. Software Design Basicsghayour abbas
 
Ch 4 software engineering
Ch 4 software engineeringCh 4 software engineering
Ch 4 software engineeringMohammed Romi
 
Domain specific Software Architecture
Domain specific Software Architecture Domain specific Software Architecture
Domain specific Software Architecture DIPEN SAINI
 
Ch2-Software Engineering 9
Ch2-Software Engineering 9Ch2-Software Engineering 9
Ch2-Software Engineering 9Ian Sommerville
 

What's hot (20)

Sda 2
Sda   2Sda   2
Sda 2
 
Software Engineering
Software Engineering Software Engineering
Software Engineering
 
Ch7-Software Engineering 9
Ch7-Software Engineering 9Ch7-Software Engineering 9
Ch7-Software Engineering 9
 
Software Engineering
Software Engineering Software Engineering
Software Engineering
 
Chapter 4 software design
Chapter 4  software designChapter 4  software design
Chapter 4 software design
 
EC8791 Requirement-Specifications-Quality assurance techniques
EC8791 Requirement-Specifications-Quality assurance techniquesEC8791 Requirement-Specifications-Quality assurance techniques
EC8791 Requirement-Specifications-Quality assurance techniques
 
Design concepts
Design conceptsDesign concepts
Design concepts
 
Unit iv -Documenting and Implementation of Software Architecture
Unit iv -Documenting and Implementation of Software ArchitectureUnit iv -Documenting and Implementation of Software Architecture
Unit iv -Documenting and Implementation of Software Architecture
 
Software Engineering
 Software Engineering  Software Engineering
Software Engineering
 
Slides chapter 10
Slides chapter 10Slides chapter 10
Slides chapter 10
 
Ch 6
Ch 6Ch 6
Ch 6
 
Chapter1
Chapter1Chapter1
Chapter1
 
Software Engineering
Software Engineering Software Engineering
Software Engineering
 
Architecture design in software engineering
Architecture design in software engineeringArchitecture design in software engineering
Architecture design in software engineering
 
Slides chapter 9
Slides chapter 9Slides chapter 9
Slides chapter 9
 
SWE-401 - 5. Software Design Basics
SWE-401 - 5. Software Design BasicsSWE-401 - 5. Software Design Basics
SWE-401 - 5. Software Design Basics
 
Ch 4 software engineering
Ch 4 software engineeringCh 4 software engineering
Ch 4 software engineering
 
Domain specific Software Architecture
Domain specific Software Architecture Domain specific Software Architecture
Domain specific Software Architecture
 
Ch2-Software Engineering 9
Ch2-Software Engineering 9Ch2-Software Engineering 9
Ch2-Software Engineering 9
 
Ch7
Ch7Ch7
Ch7
 

Viewers also liked

Storyboard[1]
Storyboard[1]Storyboard[1]
Storyboard[1]hivron
 
Film poster
Film posterFilm poster
Film posterhivron
 
Potencial target market research
Potencial target market researchPotencial target market research
Potencial target market researchhivron
 
Windows 8 and the cloud a match made in heaven
Windows 8 and the cloud a match made in heavenWindows 8 and the cloud a match made in heaven
Windows 8 and the cloud a match made in heavenNoam Sheffer
 
ชุดฝึกอบรมการวัดและประเมินผลการเรียนรู้
ชุดฝึกอบรมการวัดและประเมินผลการเรียนรู้ชุดฝึกอบรมการวัดและประเมินผลการเรียนรู้
ชุดฝึกอบรมการวัดและประเมินผลการเรียนรู้Sununtha Putpun
 
Integrated marketing - Using LinkedIn as your Hub for marketing
Integrated marketing - Using LinkedIn as your Hub for marketingIntegrated marketing - Using LinkedIn as your Hub for marketing
Integrated marketing - Using LinkedIn as your Hub for marketingRockville Chamber of Commerce
 

Viewers also liked (6)

Storyboard[1]
Storyboard[1]Storyboard[1]
Storyboard[1]
 
Film poster
Film posterFilm poster
Film poster
 
Potencial target market research
Potencial target market researchPotencial target market research
Potencial target market research
 
Windows 8 and the cloud a match made in heaven
Windows 8 and the cloud a match made in heavenWindows 8 and the cloud a match made in heaven
Windows 8 and the cloud a match made in heaven
 
ชุดฝึกอบรมการวัดและประเมินผลการเรียนรู้
ชุดฝึกอบรมการวัดและประเมินผลการเรียนรู้ชุดฝึกอบรมการวัดและประเมินผลการเรียนรู้
ชุดฝึกอบรมการวัดและประเมินผลการเรียนรู้
 
Integrated marketing - Using LinkedIn as your Hub for marketing
Integrated marketing - Using LinkedIn as your Hub for marketingIntegrated marketing - Using LinkedIn as your Hub for marketing
Integrated marketing - Using LinkedIn as your Hub for marketing
 

Similar to Full Paper

term paper for cbd models
term paper for cbd modelsterm paper for cbd models
term paper for cbd modelsSukhdeep Singh
 
Software Process and Requirement
Software Process and RequirementSoftware Process and Requirement
Software Process and Requirementcricket2ime
 
Elementary Probability theory Chapter 2.pptx
Elementary Probability theory Chapter 2.pptxElementary Probability theory Chapter 2.pptx
Elementary Probability theory Chapter 2.pptxethiouniverse
 
Bt0081 software engineering
Bt0081 software engineeringBt0081 software engineering
Bt0081 software engineeringTechglyphs
 
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfputtipavan23022023
 
_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdf
_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdf_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdf
_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdfdo_2013
 
_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdf
_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdf_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdf
_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdfdo_2013
 
Software-Architecture_Course-Notes.pdf
Software-Architecture_Course-Notes.pdfSoftware-Architecture_Course-Notes.pdf
Software-Architecture_Course-Notes.pdfdo_2013
 
Slides 6 design of sw arch using add
Slides 6 design of sw arch using addSlides 6 design of sw arch using add
Slides 6 design of sw arch using addJavid iqbal hashmi
 
Lecture-_-5-_SDA_software design and architecture.doc
Lecture-_-5-_SDA_software design and architecture.docLecture-_-5-_SDA_software design and architecture.doc
Lecture-_-5-_SDA_software design and architecture.docesrabilgic2
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introductionVishal Singh
 
Software Architecture and Design Introduction
Software Architecture and Design IntroductionSoftware Architecture and Design Introduction
Software Architecture and Design IntroductionUsman Khan
 

Similar to Full Paper (20)

term paper for cbd models
term paper for cbd modelsterm paper for cbd models
term paper for cbd models
 
Software Process and Requirement
Software Process and RequirementSoftware Process and Requirement
Software Process and Requirement
 
Elementary Probability theory Chapter 2.pptx
Elementary Probability theory Chapter 2.pptxElementary Probability theory Chapter 2.pptx
Elementary Probability theory Chapter 2.pptx
 
Bt0081 software engineering
Bt0081 software engineeringBt0081 software engineering
Bt0081 software engineering
 
Chapter 2.pptx
Chapter 2.pptxChapter 2.pptx
Chapter 2.pptx
 
SE-Lecture-4.pptx
SE-Lecture-4.pptxSE-Lecture-4.pptx
SE-Lecture-4.pptx
 
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvfUNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
UNIT3 PART2.pptx dhfdifhdsfvgudf dhfbdhbffdvf
 
_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdf
_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdf_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdf
_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdf
 
_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdf
_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdf_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdf
_773d48108e2dda1c1a731bf69b06c3be_Software-Architecture_Course-Notes.pdf
 
Software-Architecture_Course-Notes.pdf
Software-Architecture_Course-Notes.pdfSoftware-Architecture_Course-Notes.pdf
Software-Architecture_Course-Notes.pdf
 
10.1.1.107.2618
10.1.1.107.261810.1.1.107.2618
10.1.1.107.2618
 
SA_UNIT_1.pptx
SA_UNIT_1.pptxSA_UNIT_1.pptx
SA_UNIT_1.pptx
 
Slides 6 design of sw arch using add
Slides 6 design of sw arch using addSlides 6 design of sw arch using add
Slides 6 design of sw arch using add
 
Lecture-_-5-_SDA_software design and architecture.doc
Lecture-_-5-_SDA_software design and architecture.docLecture-_-5-_SDA_software design and architecture.doc
Lecture-_-5-_SDA_software design and architecture.doc
 
Software engineering introduction
Software engineering introductionSoftware engineering introduction
Software engineering introduction
 
Unit2 2
Unit2 2Unit2 2
Unit2 2
 
Sdpl1
Sdpl1Sdpl1
Sdpl1
 
Fda 21 CFR 820.30 compliant software development process
Fda 21 CFR 820.30 compliant software development processFda 21 CFR 820.30 compliant software development process
Fda 21 CFR 820.30 compliant software development process
 
Software Architecture and Design Introduction
Software Architecture and Design IntroductionSoftware Architecture and Design Introduction
Software Architecture and Design Introduction
 
Slcm sharbani bhattacharya
Slcm sharbani bhattacharyaSlcm sharbani bhattacharya
Slcm sharbani bhattacharya
 

Full Paper

  • 1. Agile Software Development based on 3 layered filtering Arash Heidarian Multimedia Media University of Malaysia arash2001h@yahoo.com Abstract – Recently the major concern for software developers and software enterprises is a rapid changing in criteria and developing systems based on a dynamic platform .In order to cope with this problem, many agile methodologies and techniques are developed and proposed. This paper provides a new idea referred to as the “3 layered filtering” .This idea helps developers and enterprisers to make changes in short time and at a low cost using existing Agile methodologies. Thus the first layer classifies the requirements, the second layer identifies the architecture layer that is going to be affected by new requirements and third layer selects the appropriate Agile methodology taking the information obtained from the last 2 layers in consideration. Each layered is in iteration in regard to the new emerging requirement and tightly related to its next Layer. In fact this is a modified and layer-based agile methodology which facilitates taking proper action when a new requirement is imposed; focusing on time and cost issue. Therefore ,using “3 layered filtering”, developers and managers may have this ability to abstract and distinguish different issues, related to new requirements whereby less time and money will be spent and proper human resource will be assigned to each modification process. Key words: 3 layered filtering, Agile methodology, Software Architecture Layers, Iterative updates, Requirement Classification I. Introduction: One of the main concerns in developing and producing Software are diverse requirements from different prospective of different users. Explicitly, there are 2 groups of requirements, affect on design and architecture of Software .First group of requirements are those which are gathered before starting the design and development phases. Second group of requirements are those which are gathered after Design, Development and delivery phases. Basically, the proper design and development based on elicited requirements ,is the key to produce a Software which can come into market and attract customers .But what keeps customers satisfied and guarantees the survive of the software among other softwares in market ,is to imply the second group of requirements continuously Into the product in order to keep it up to date, that is what this paper addresses to. Before accomplishing this task, there are Several questions around which brings some complexity in implying changes such as who has proposed this change ? Why the change is required and what is trigger? Which layer of software is targeted? Which methodology can be helpful to imply the change? Imply the change or leave it? Who is/are required in order to imply this change? (Human Resource Management). This paper tries to propose a simple way to cope with this complexity due to mentioned questions and ambiguous points. II. Filtering Concept In software Architecture, Abstraction always is a key to have classified, controllable, modifiable and maintainable system. Here the proposed method which is called “Filtering Method”, helps us to classify the “Requirements for changes” and abstract the Architecture Layers which are going to be affected under the different classes of requirements. Finally, the proper agile methodology is chosen in order to imply the change. In order to accomplish this task, 3 filters are proposed here which are tightly interrelated to each other. Figure 1 illustrates all filters and their phases in detail. Figure 1 . Agile Software Development based on “3 layered filtering” These 3 filters are explained in detail in continue. A. First Filter – Change Reason Filter : In this layer, all change scenarios are evaluated and triggers are identified. It helps developers to classify changes into five categories namely Bug, Error and Failure, DB and Library
  • 2. Related, Interface Related, Functional and structural. So the evaluation team go through all change scenarios and classifies changes according to these categories. This classification is a key to go to the next layer and is a clue to pass through the second filter. B. Second Filter – Layers of Change in Software Architecture: An architectural description of the layers of Change in software can be proposed using as examples concepts of computer and software architecture, Software Patterns and object oriented programming. However the interpretation of the Layers of Change for software, given here is an open concept: it is prone to be changed, adapted or modified to cope with other software development approaches, paradigms or techniques which are oriented toward building architecture, it is tried to produce an equivalent version for software architecture [1]. There are 4 layers of architecture defined here. The classified change scenarios help us to know which layers of architecture will be under the effect of what type of changes. Obviously “Bugs” and “Error and Failure” category of changes possibly could be addressed to any Software Architecture Layer that is why we are not going to mention them in each layer. The layers as follows : 1. Software Site: The software site layer objective is to provide a stable base on which we construct software program. It can be represented simply by the hardware elements of software architecture. It Covers Hardware elements and Software Environment on which software will be developed. A computer is constructed from basic building blocks such as memory system, Processor and I/O devices. These are first elements that influence the design and implementation of software program. The major differences between computers lie in the way the modules are connected [1]. Regarding to definition of “Software Site”, there are some change scenarios which are going to effect on this layer of architecture. Changes which are in “Failure and Error “and “Functional and structural” categories, are those which influence on this layer. It is important to know that changes to this layer are very costly and are implied so rarely. There for should be very precise evaluation on implying the changes to this layer. If the change request is related to “Failure and Error “ , it is worthy to evaluate it and try to imply it ,but if the change is in “Functional and structural” category , on that time the cost and time should be taken into consideration in order to see that does it have time and cost justification ? For example if in one of the change scenarios it is mentioned to change the platform of the system or to use another design pattern to increase the performance, then all trade-off points should be evaluated. It may affect the whole system and requires high effort. 2. Software Structure : The software structure layer is the description of a software program as a set of defined subsystems, specifying their responsibilities, and including rules and guidelines for organizing the relationships between them. Software structure is concerned with the issues about partitionening a complex software system [1]. The partition of the system helps to reduce the complexity and understand the parts and subsystems easily and clearly [1]. As it was mentioned before, the issue of abstraction and partitionening helps developers significantly to understand, maintain and modify the system. Software Structure can be defined as architectural patterns . “An Architectural Pattern expresses a fundamental structural organization or schema for software systems. It provides a set of predefined subsystems, specifies their responsibilities, and includes rules and guidelines for organizing the relationships between them”. (Buschmann et al.1996). Software Structure Changes vary little or not at all during the lifetime of a software program. An important factor in determining the success or failure of software program relies deeply on choosing an appropriate Software Structure that properly matches with the requirements and resources [1]. There for, mostly those requirements which collected before design and development are handy to be applied and implied in this architectural layer. If we want to address the change reason category to this layer,”functional and structural “category is the only one. 3. Software Skin: Software skin or GUI is an appearance of software and exhibits its functionalities. In the other words, it is represented by all elements that allow users to interact with a system. This layer is a root for most important quality attributes of a system such as underestandability , Usability and being User Friendly of the system. From structural point of view, it can be seen that this layer is tightly related to first layer of architecture. There are some Design Patterns (Gamma) behind the GUI which enhances the performance of the system such as Decorator, Abstract Factory and Bridge Patterns. So changes located in “Interface Related” and “Functional and structure” categories could be addressed to this layer. 4. Software Service: This layer is to provide support for common activities during the use of a software program. From a programming point of view Software Services can be found in the form of all prebuilt standards components that provide common functionality like mathematical, Input/ Output and disk access. Often Software Services found in libraries should be customized by the designer or programmer for a particular software design [1]. Since Software services addresses to Libraries and I/O of DB and system, Design Pattern (which Capture and Organize Reusable pieces to Clearly Define Dependencies) and Idioms(which shows how to use Software Service & rules and expectations) also help to use and development of Software Services. Hence, the “DB and Library” category of change can be addressed to this layer of Architecture. Because of the existing issues of Design Pattern and Idioms in Software Service Layer, “Functional and structural” category also can be addressed to this layer. C. Third Filter – Agile Methods: Agile methodology is disciplined Project Management that yields the iterative, frequent inspection and adoption, relaying on teamwork. Agile methodology is exactly what is required to imply frequent, new changes and requirements. Concept of
  • 3. Agile intensively relies on IID (Incremental and Iterative Development). The simple ability to revisit the “phases” of development dramatically improves project efficiency. The idea of revisiting phases over and over is called “incremental and iterative Development” (IID). The development lifecycle is cut up into increments or “iterations” and each iteration touches on each of the traditional “phases” of development. With IID, Requirements are in ongoing processes that are periodically revisited. IID allows for multiple “passes”, or iterations, over a project lifecycle to properly address complexities and risk factors. This concept of iterative development hails from the “lean development” era of the 1980s where Japanese auto makers made tremendous efficiency and innovation increases simply by removing the phased, sequential approach and implementing an iterative approach, where prototypes were developed for short-term milestones (see Figure 2). Each phase was actually a layer that continued throughout the entire development lifecycle; the requirements, design, and implementation cycle was revisited for each short-term milestone. [2]. Source : Adapted from H. Takeuchi and I. Nonaka, “The new Product Development Game”, Harvard Business Rev., Jan. 1986, pp. 137-146 Figure 2. IID What Agile and IID try to focus on, are Iterative Mechanism, Design-Code-Test Loop, decrease the Cost of Change and Increase Quality. There are two most famous and in use methods of Agile, called XP and Scrum. A. XP Extreme Programming evolved from Large Development Cycle of Traditional Development Model and is composed of five phases. Figure 3 shows process of XP life cycle: source: Pekka Abrahamsson, Outi salo, Jussi Ronkainen & Juhani Warsta – Agile Software Development methods - Figure 3 . XP Process These Five phases are explained briefly as follows. In Exploration Phase Customers Write Story Card. Story cards contains the information about the change category and Architectural layers which could be affected due to changes. Project Team looks for proper tools and technology and test the Technology and finally they try to find Architecture Possibilities for the system are explored by building a prototype of the system. The exploration phase takes between a few weeks to a few months, depending on the change scenario and largely of technology. In planning phase, change scenarios are prioritized according to their impotencies and complexities. Then the estimation of effort and scheduling is done for each scenario. The Iteration to release phase includes several iterations of the system before the first release. The schedule set in the planning stage is broken down to a number of iterations that will each take one to four weeks to implement. The first iteration creates a system with the architecture of the whole system [2]. This is achieved by selecting the stories that contain the requirements which are gathered before design and development phase. These stories enforce the building the whole system .Stories in next iteration contains more elicited requirements and changes which are gathered after the releasing the first edition (or trial edition). This iteration of gathering stories, prioritizing stories and send them into the rest of the processes is continuously and should be done in whole lifecycle of software. The Production Phase: This phase requires extra testing, checking of the performance and evaluation of trade-off points and sensitive points of quality attributes .At this phase, new changes might be founded or proposed by evaluation team or other stakeholders who are involved in Software production. In this phase, the decision is made to include the new changes in current release or not. During this phase, the iterations may take one to three weeks. The postponed ideas and suggestions are documented for later implementation, during e.g. the maintenance phase. The death phase is a phase when there is no any other requirement or story from customers. We will reach this phase when the system satisfies all customers’ needs with respect of performance and reliability. Once the new stories are received from customers, the whole process will be repeated. That is what guarantees the life of software. As it was mentioned earlier there are two famous agile methods .Figure 4 shows second agile method process lifecycle which is called Scrum.
  • 4. Source : Pekka Abrahamsson, Outi salo, Jussi Ronkainen & Juhani Warsta – Agile Software Development methods Figure 4, Scrum Process B. The scrum The Scrum has been developed for managing the system development process, It is an empirical approach applying the ideas of industrial process control theory to system development resulting in an approach that reintroduces the idea of flexibility, adaptability and productivity (Schwaber and Beedle 2002 ). The scrum focuses on team member activity to work in way that makes the system flexible in constantly changing environment. That is why it involves several environmental and technical variables (e.g. requirements, time frame, resources and technology) that are likely to change during the process. This makes the development process unpredictable and complex, requiring flexibility of the systems development process for it to be able to respond to the changes [2]. As a result of the development process, a system is produced which is useful when delivered.(Schwaber 1995). The Scrum is consisted of three phases and in concept it is so similar to XP method. These three phases are explained briefly as follows. In Pregame phase there are two steps. The first step is planning which is consisted of the following activities: Project team Definition, produce Backlog list (which contains requirements and changes and continuously is updated and reviewed by the Scrum Team), Prioritizing requirements in Backlog list and needed resources are estimated, identify Tools and other Resources, Risk Assessment, Training need and Verification Management. The Second step is architectural phase. In this phase the high level design of the system including the architecture is planned based on the current items in Backlog List. The Second phase which is called the development phase (also called the game phase) is the agile part of the Scrum approach. This phase is related as a “Black Box”where the unpredictable is expected. The different environmental and technical variables (such as time frame, quality, requirements, resources, implementation technologies and tools and even development methods) identified in scrum, which may change during the process, are observed and controlled through various Scrum Practices during the Sprints of the development phase. Scrum aims at controlling the requirements and matters constantly in order to be able to flexibly adapt to the changes [2]. The core of the whole Scrum method is its Sprint. Sprint is iterative cycle which covers all traditional phase of the development (requirements, analysis, design, evolution and delivery phases) in cyclic and iterative way. So each time the Black log list is updated and it is required to imply new requirements or changes, the selected scenario of new requirements is sent into the sprint from the previous phase. As it can be seen in Figure 4 , the Sprint ,black log list and all phases are interrelated in cyclic way ,so any change or update in Black log list ,would evolve the whole process. The final phase is called Post-game phase which contains the closure of the release. This phase is met when an agreement has been made that the environmental variables such as the requirements are completed. It was just a brief and short explanation about XP and Scrum methods. As it is evident, implying changes into software is a process which requires a time and money. III. Filters Coherence and the main purpose of Filtering Model: So it is very important to know what should be done before starting any agile methods. That is, two prior filters to Agile method filter, namely “Change Reason Filter” and “Layers of Architecture Filter”, helps developers and project managers. It helps project managers to manage the human resource more precisely. For instance, if most of the problems are related to Interface and affects “Software Skin layer”, so there is no need to call a Database expert and hardware expert. Some times when a problem appears or when a new change or requirement appears, managers involve a group of experts of all fields. So using this Filtering method, it is easy to manage human resource .On the other hand, when manager is aware of the details of a requirement, he can make more precise predictions in scheduling and budgeting. From technical point of view, it helps developers and designers to decide to choose a proper Agile method. There are several concerns related to choosing XP or Scrum. In general Scrum is a project management process and XP is a programming practice. From time point of view, Scrum teams typically work in iterations (called sprints) that are from two weeks to one month long. XP teams typically work in iterations that are one or two weeks long. Furthermore Scrum teams do not allow changes into their sprints. Once the sprint planning meeting is completed and a commitment made to deliver a set of product backlog items, that set of items remains unchanged through the end of the sprint. XP teams are much more amenable to change within their iterations. As long as the team hasn’t started work on a particular feature, a new feature of equivalent size can be swapped into the XP team’s iteration in exchange for the unstarted feature [3]. IV. Conclusion This paper provides a new and simple idea in order to cope with complexity and ambiguity of implying new changes and requirements during the lifecycle of a software, using Agile
  • 5. Methodology. These three layers in this new idea help manager and developer to classify the requirements and change requests into four categories and then easily recognize that which Architectural layers of Software are affected under different requirement and change scenarios of different categories. These two steps mostly help managers to have more precise prediction about timing, scheduling and human resource management. The third filter helps both manager and developer to choose a proper method of Agile to imply changes based on the obtained information from first two filters. References [1] Jorge Luis Ortega Arjo a a d Graham Roberts :The layers of chnge in Software Architecture [2] Pekka Abrahamsson, Outi salo, Jussi Ronkainen & Juhani Warsta – Agile Software Development, 2002 [3] Mike Cohn – Succeeding with Agile, 2007