Agile methodology in cloud computing

Preview:

DESCRIPTION

 

Citation preview

Agile methodology in cloud

computing

Saleem M. shoublaq & ahmed M. abed

Main points

• Software Engineering in Cloud

• Agile Introduction

• Agile Methodologies

• Agile cloud development

• Requirement in agile

• Proposed methodology

• Proposed methodology phases

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

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?

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

Extreme Programming

• XP Rules and Concepts:• Integrate often.

• Project velocity.

• Pair programming.

• User story.

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.

Scrum

• Scrum concepts:• Burndown chart.

• Product backlog.

• ScrumMaster.

• Sprint backlog.

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

Agile VS Other Methodology

Agile VS Other Methodology

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

Agile Cloud Computing

• Characteristics of agile:• Iterative.

• Modularity.

• Time Boxing.

• Parsimony.

• Incremental.

• Adaptive.

• Convergent.

• Collaborative.

• People Oriented.

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

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.

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

Requirement in agile

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

• Missing Requirements Interface

• Non-Functional Requirements Elicitation

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

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

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.

Proposed Methodology Phases

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.

Inspection Activities

• Assign Roles and Define Responsibilities

• System Users Identification

• Proposed Methodology Explanation

• Establish Product Concept Statement

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.

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.

Feature List Identification Activities

• Preparation

• Elicitation

• Validation and Estimation

• Prioritization

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.

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.

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.

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.

Group prioritization

• Group prioritization Activities:• Preparation

• Prioritization

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

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

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.

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.

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.

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.

Task Identification

• Task Identification Activities:• Preparation

• Stories Identification

• Stories Prioritization

• Tasks Identification

• Validation and Estimation

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.

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.

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

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.

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.

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.)