54
Agile methodology in cloud computing Saleem M. shoublaq & ahmed M. abed

Agile methodology in cloud computing

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Agile methodology in cloud computing

Agile methodology in cloud

computing

Saleem M. shoublaq & ahmed M. abed

Page 2: Agile methodology in cloud computing

Main points

• Software Engineering in Cloud

• Agile Introduction

• Agile Methodologies

• Agile cloud development

• Requirement in agile

• Proposed methodology

• Proposed methodology phases

Page 3: Agile methodology in cloud computing

Software Engineering in Cloud

• Cloud computing benefits such as agility, elasticity, availability, and cost efficiency require software engineered for cloud platforms.

• Many open issues surround the use of software services from the cloud:• Software requirements engineering for cloud services

• Software architecting and design for cloud services

• testing cloud services

• ensuring quality attributes

• Development methods and tools

• Service platforms and composition approaches

• Project management approaches

• Cloud deployment options and justifications

Page 4: Agile methodology in cloud computing

Software Engineering in Cloud

• Requirements:• Gathering requirements for cloud services is a rich research area

that hasn’t yet received much attention.

• Besides the traditional requirements engineering challenges, this task has unique challenges in cloud projects.

• How does an organization engineer its service requirements in terms of security, privacy, and performance dimensions?

Page 5: Agile methodology in cloud computing

Software Engineering in Cloud

• Software architecting:• One of the key values of the cloud infrastructure is its ability to

serve many millions of customers around the world at any point in time.

• Typical cloud platforms exhibit several unique features, including large-scale replication strategies, highly parallel queries, geographically distributed components, and disaster recovery.

• Cloud platforms also provide services for mobile device integration and hybrid cloud coupling.

Page 6: Agile methodology in cloud computing

Software Engineering in Cloud

• Testing:• Cloud computing platforms are largely opaque entities, meaning

that there’s little visibility into how runtime components work.

• Virtualization/virtual machine layers, middleware, multitenancy, and high-availability support further complicate this picture.

Page 7: Agile methodology in cloud computing

Software Engineering in Cloud

• Quality:• In using cloud services, consumers cede control—they have less

visibility into what happens at runtime and less ability to fix things themselves should anything go wrong.

• Performance measurements, security conformance evaluations, and assessment reliability determinations are much more difficult in the cloud.

Page 8: Agile methodology in cloud computing

Software Engineering in Cloud

• Development Methods• In reality, developers must understand both worlds (IaaS and

PaaS) in order to figure out the best layered design.

• different platforms provide their own development environment and tools for engineering services in their specific cloud.

Page 9: Agile methodology in cloud computing

Software Engineering in Cloud

• Composition Approaches• Not all traditional SOA techniques are applicable to the cloud

environment.

• A major difference is that a SOA design for the cloud generally can’t start entirely from scratch.

• Typically, cloud platforms need to establish ecosystems of collaborating services, some existent and some new.

Page 10: Agile methodology in cloud computing

Software Engineering in Cloud

• Project Management• How is SLA managed?

• How much visibility is there into the running of a business service inside a cloud?

• The use of cloud computing could have a major impact on an enterprise’s business architecture, especially when delivering SaaS; it will also alter the roles and responsibilities of various IT professionals.

Page 11: Agile methodology in cloud computing

Software Engineering in Cloud

• Cloud Deployment Strategy• Deploying and migrating software applications to the cloud

involves many combinations of options that vary widely in their characteristics and performances.

• First, it’s often impossible to acquire all the infrastructure resources required to evaluate the performance and cost implications.

• Second, cloud computing applications are specific to certain computing environments and subject to different deployment models, such as IaaS, PaaS, and SaaS.

Page 12: Agile methodology in cloud computing

Agile Introduction

• Agile software development is a philosophy.

• Agile methodology based on iteration.

• Small teams work together with stakeholders to define quick prototypes.

• Teams define requirements for the iteration.

• Team develops the code, and defines and runs integrated test scripts.

• The users verify the results.

Page 13: Agile methodology in cloud computing

Agile Introduction

• Verification occurs much earlier in the development process than it would with waterfall.

• The agile process follows the software development life cycle.

• includes requirements gathering, analysis, design, coding, testing and delivers partially implemented software and waits for the customer feedback.

Page 14: Agile methodology in cloud computing
Page 15: Agile methodology in cloud computing

Agile Methodologies

• XP (Extreme Programming):• It concentrates on the development rather than managerial

aspects of software projects.

• XP was designed so that organizations would be free to adopt all or part of the methodology.

Page 16: Agile methodology in cloud computing

Extreme Programming

• XP development:• XP projects start with a release planning phase, followed by

several iterations, each of which concludes with user acceptance testing.

• When the product has enough features to satisfy users, the team terminates iteration and releases the software.

Page 17: Agile methodology in cloud computing

Extreme Programming

• XP Rules and Concepts:• Integrate often.

• Project velocity.

• Pair programming.

• User story.

Page 18: Agile methodology in cloud computing

Agile Methodologies

• Scrum:• Scrum for software development came out of the rapid prototyping

community.

• Scrum methodology includes both managerial and development processes.

• The Scrum development process concentrates on managing sprints.

• During development, the team determines the changes necessary to implement a backlog item.

• The team then writes the code, tests it, and documents the changes.

• Finally, the team consolidates data from the review to update the changes as necessary.

Page 19: Agile methodology in cloud computing

Scrum

• Scrum concepts:• Burndown chart.

• Product backlog.

• ScrumMaster.

• Sprint backlog.

Page 20: Agile methodology in cloud computing

Agile Methodologies

• Feature Driven Development :• The key advantage of this method is to design the domain of the software

to be produced before development.

• The method starts with collecting the requirements from the users and building up the overall model of the project.

• Next step is to make a list of features which are the client-valued functions.

• Next step is to make a plan for developing the features.

• Last step is modeling iteration in which first UML modeling is done for each feature

Page 21: Agile methodology in cloud computing

Agile VS Other Methodology

Page 22: Agile methodology in cloud computing

Agile VS Other Methodology

Page 23: Agile methodology in cloud computing

Agile Cloud Computing

• The topics at the intersection of agile development and cloud computing are unique for a few reasons:• Cloud is an Agile Accelerator

• Enables Business Agility

• Reducing IT Costs

• Improving Customer Experiences

• Growing the Economy

Page 24: Agile methodology in cloud computing

Agile Cloud Computing

• Characteristics of agile:• Iterative.

• Modularity.

• Time Boxing.

• Parsimony.

• Incremental.

• Adaptive.

• Convergent.

• Collaborative.

• People Oriented.

Page 25: Agile methodology in cloud computing

Agile Cloud Computing

Advantages:• Adaptive to the changing

environment.

• Ensures customer satisfaction

• Least documentation

• Reduces risks of development

Disadvantages:• Customer interaction is the key

factor of developing successful software.

• Lack of documentation

• Time consuming and wastage of resources

• More helpful for management than developer

Page 26: Agile methodology in cloud computing

Requirement in agile

• The conventional approach to the RE process focuses on gathering all the requirements.

• Requirements gathering and specification efforts consume long time and leave no room to accommodate changing requirements later in the development cycle.

Page 27: Agile methodology in cloud computing

Requirement in agile

• Some of the issues faced by organizations involved in up front requirements gathering and specification efforts are:• Requirements change over a period of time due to changes in customer

and user needs.

• Rapidly changing business environments can cause requirements to become obsolete before project completion.

• Clear specification of activities in the agile requirements engineering process is missing

• This approach toward requirements usually results in several architecture-related issues

Page 28: Agile methodology in cloud computing

Requirement in agile

• The requirements issues when using agile approaches:• Missing Requirements Engineering Activities

• Missing Requirements Interface

• Non-Functional Requirements Elicitation

Page 29: Agile methodology in cloud computing

Requirement in agile

• The most commonly observed architecture-related difficulties when using agile approaches:• Incomplete Requirements Elicitation

• Incorrect Prioritization of User Stories

• Lack of Focus on Non Functional Requirements

Page 30: Agile methodology in cloud computing

Proposed Methodology

• The methodology was motivated by the lack of structure to the agile requirements engineering process with minimal impact on agility.

• It describes in detail the phases in the agile requirements engineering process and suggests techniques that can be used to perform these phases.

• The methodology describes not only the requirements engineering process activities but the complete development process as well

Page 31: Agile methodology in cloud computing

Proposed Methodology Phases

• The methodology consists of eight phases. The first six phases (Inception, Feature List Identification, Feature Grouping, Group Prioritization, NFRs Identification, and Architecture Envisioning) cover the requirements and architecture envisioning part while the two remaining phases (Task Identification and Task Development) cover the requirements development part.

Page 32: Agile methodology in cloud computing

Proposed Methodology Phases

Page 33: Agile methodology in cloud computing

Proposed Methodology Phases

• First Phase: Inspection:• The inception phase is the first phase of the proposed methodology and is

designed to help the stakeholders establish relationship.

• It is essentially a meeting or a series of meetings where all the stakeholders participate.

• During this phase, the customer is informed about the proposed methodology main phases, activities, and techniques.

• Goals for the project are formed and a vision statement is created that defines the entire project

• The project team is assembled and the team members are empowered by having roles and responsibilities assigned to them.

Page 34: Agile methodology in cloud computing

Inspection Activities

• Assign Roles and Define Responsibilities

• System Users Identification

• Proposed Methodology Explanation

• Establish Product Concept Statement

Page 35: Agile methodology in cloud computing

Inspection Output

• It would answer the following questions:• Who are the product users?

• What will the product do?

• What problem(s) will the product solve?

• The high-level mission statement serves as the input to the features list identification phase. The stakeholders determine the expected functionality of the system from this statement.

Page 36: Agile methodology in cloud computing

Proposed Methodology Phases

• Second Phase: Feature List Identification:• The feature list identification is the second phase of the proposed

methodology where the system features are identified.

• A feature can be defined as the smallest set of functionality that provides business value to the customer.

• The stakeholders identify the expected functionality from the high level product mission statement.

• Features should be identified upfront in order to be informed about the scope of the project and plan for the release cycles.

Page 37: Agile methodology in cloud computing

Feature List Identification Activities

• Preparation

• Elicitation

• Validation and Estimation

• Prioritization

Page 38: Agile methodology in cloud computing

Feature List Identification Output

• The output of the feature list identification is a prioritized feature list which contains the prioritized features ordered by their priorities.

• The output of this phase will be the input to the feature grouping phase.

Page 39: Agile methodology in cloud computing

Proposed Methodology Phases

• Third Phase: Feature Grouping:• The identified features in the feature list identification phase are

collected into groups. The groups are set of related features that serve a business area.

• The groups are validated and the time of their completion is initially estimated.

• Only one group or a subset of the identified groups is chosen for development during a release.

Page 40: Agile methodology in cloud computing

Feature Grouping

• Feature Grouping Activities• Preparation

• Grouping

• Validation and Estimation

• Feature Grouping Output:• The output of this phase is feature groups that serve as the input

to the group prioritization phase.

Page 41: Agile methodology in cloud computing

Proposed Methodology Phases

• Fourth Phase: Group prioritization:• The team determines the dependencies if any among the groups

identified in the feature grouping phase and prioritize the groups accordingly.

• The team also considers the customer and user preferences

• The team and customers may have different sequences in which they would like to implement the groups.

• If there is a conflict, the customer is given preference.

Page 42: Agile methodology in cloud computing

Group prioritization

• Group prioritization Activities:• Preparation

• Prioritization

• Group prioritization Output• The output of this phase is prioritized stack list

Page 43: Agile methodology in cloud computing

Proposed Methodology Phases

• Fifth Phase: Non-functional Requirement Identification:• The phase aims to identify the system non functional requirements

(NFRs).

• The high level product mission statement created during the inception phase serves as the input to the non functional requirements identification phase.

• The stakeholders with the team identify the NFRs from the high level product mission statement.

• The identified NFRs are validated and prioritized based on their value to the customer and stored in a prioritized NFRs list stack

Page 44: Agile methodology in cloud computing

Non-functional Requirement Identification

• Non-functional Requirement Identification Activities:• Elicitation

• Validation

• Prioritization

• Non-functional Requirement Identification Output:• The output of the non functional requirements identification is a prioritized

NFRs list which contains the prioritized NFRs ordered by their priorities.

• The output of this phase will be the input to the architecture envisioning phase.

Page 45: Agile methodology in cloud computing

Proposed Methodology Phases

• Sixth Phase: Architecture Envisioning:• The list of features identified in the feature list identification phase, the

user stories identified in the task development phase, and the list of non-functional requirements identified in the non-functional requirements identification phase serve as the input to the architecture envisioning.

• The goal of the architecture envisioning phase is to try to identify an architecture that has a good chance of working.

• The envisioned architecture presents the system technical infrastructure and the major business entities and their relationships to explore potential architecture-level requirements.

Page 46: Agile methodology in cloud computing

Architecture Envisioning

• The technology stack diagram or deployment diagram are useful when doing initial architectural modeling because they depict the major software and hardware components and how they interact at a high level.

Page 47: Agile methodology in cloud computing

Proposed Methodology Phases

• Seventh Phase: Task Identification:• The prioritized groups identified in the group prioritization phase

serve as the input to the task identification phase.

• Each feature in the selected group is decomposed into stories.

• Stories are descriptions of user- or customer valued functionality.

• Stories are defined at a lower level of abstraction when compared to the features.

• Each story then is decomposed into tasks by the development team.

Page 48: Agile methodology in cloud computing

Task Identification

• Task Identification Activities:• Preparation

• Stories Identification

• Stories Prioritization

• Tasks Identification

• Validation and Estimation

Page 49: Agile methodology in cloud computing

Proposed Methodology Phases

• Eighth Phase: Task Development:• The tasks created during the tasks identification phase are

developed in this phase.

• TDD is an agile practice and is a widely used approach to writing code.

• The proposed methodology reflects the agile philosophy and hence, we suggest using TDD and Customer Acceptance Testing as activities during this phase.

• The customers and developers then test the available system against the acceptance criteria created previously.

Page 50: Agile methodology in cloud computing

Task Development

• TDD is a combination of Test First development and refactoring.

• Test First Development is a development technique where developers create a unit test first for a story or task before writing code.

• Refactoring is an agile practice which deals with changing the design or structure of the code without changing its result.

• Refactoring involves rewriting the code to improve its structure, while explicitly preserving its behavior.

Page 51: Agile methodology in cloud computing

Task Development

• Using TDD, developers, create tests first, then write code and then refactor the code in order to improve its structure.

• After refactoring, errors if any in the code are corrected. The developers do not write code before a test fails.

• Task Development Activities:• Test Driven Development (TDD)

• Customer Acceptance Tests

Page 52: Agile methodology in cloud computing

Real Example

• Salesforce use agile methodology in cloud computing.

• Reference:• Agile Development Meets Cloud Computing for Extraordinary

Results at Salesforce.com

• In the paper Salesforce discus why use agile in cloud with details.

• We talk about this in last lecture.

Page 53: Agile methodology in cloud computing

Conclusion

• In this report we have discussed the software development life cycle models with cloud.

• Characteristics of agile process, and spiral model, methodologies of agile process, advantages and disadvantages.

• Agile methods in cloud, does requirements engineering in iterations: the requirements are defined in detail only when they are implemented.

• Agile methods, however, have a lack of focus on certain parts of what is considered as important in requirements engineering.

• Proposed Methodology to solve this problem.

Page 54: Agile methodology in cloud computing

References

• Grundy J., Kaefer G., Keong J., Liu A. (2012), Software Engineering for the Cloud. The IEEE Computer Society

• Sharma S., Sarkar D., Gupta D. (2012), Agile Processes and Methodologies: A Conceptual Study. International Journal on Computer Science and Engineering , Vol. 4 No. 05

• Helmy W., Kamel A. and Hegazy O. (2012), Requirements Engineering Methodology in Agile Environment. International Journal of Computer Science Issues, Vol. 9, Issue 5, No 3.

• Sales Force Company . (2012), Agile Development Meets Cloud Computing for Extraordinary Results at Salesforce.com.

• Serena.com (2007), An Introduction to Agile Software Development

• Alistair Cockburn. (2001), Agile Software Development, (3rd ed.)