0% found this document useful (0 votes)
62 views26 pages

Agility and Process

Uploaded by

elvis.sikapi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
62 views26 pages

Agility and Process

Uploaded by

elvis.sikapi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 26

SOFE 2720

Principles of Software and Requirements


Engineering

Agility and Process

Notes adapted from - Software Engineering: A


Practitioner’s Approach, 9/e
Chapter 3
by Roger S. Pressman and Bruce R. Maxim
http://www.cs. mu.edu/~kelgazza/
What is Agility?
• Effective (rapid and adaptive) response to
change.
• Effective communication among all
stakeholders.
• Drawing the customer onto the team.
• Organizing a team so that it is in control of the
work performed.
• Rapid, incremental delivery of software.

2
Agility and Cost of Change

3
What is an Agile Process?
• Driven by customer descriptions of what is
required (scenarios).
• Customer feedback is frequent and acted on.
• Recognizes that plans are short-lived.
• Develops software iteratively with a heavy
emphasis on construction activities.
• Delivers multiple ‘software increments’ as
executable prototypes.
• Adapts as project or technical changes occur.

4
Agility Principles
• Customer satisfaction is achieved by providing value
through software that is delivered to the customer as
rapidly as possible.
• Develop recognize that requirements will change and
welcome changes.
• Deliver software increments frequently (weeks not
months) to stakeholders to ensure feedback on their
deliveries is meaningful.
• Agile team populated by motivated individuals using
face-to-face communication to convey information.
• Team process encourages technical excellence, good
design, simplicity, and avoids unnecessary work.

5
Agility Principles
• Working software that meets customer needs is the
primary goal.
• Pace and direction of the team’s work must be
“sustainable,” enabling them to work effectively for
long periods of time.
• An agile team is a “self-organizing team”—one that can
be trusted develop well-structured architectures that
lead to solid designs and customer satisfaction.
• Part of the team culture is to consider its work
introspectively with the intent of improving how to
become more effective its primary goal (customer
satisfaction).

6
Scrum Framework

7
Scrum Details

• Backlog Refinement Meeting • Pros


Developers work with stakeholders – Product owner sets priorities.
to create product backlog. – Team owns decision making.
• Sprint Planning Meeting Backlog – Documentation is lightweight.
partitioned into “sprints” derived – Supports frequent updating.
from backlog and next sprint
defined.
• Cons
• Daily Scrum Meeting Team members
synchronize their activities and plan – Difficult to control the cost of
changes.
work day (15 minutes max).
– May not be suitable for large teams.
• Sprint Review Prototype “demos” – Requires expert team members.
are delivered to the stakeholders for
approval or rejection.
• Sprint Retrospective After sprint is
complete, team considers what
went well and what needs
improvement.

8
Extreme Programming (XP) Framework

• Access the text alternative for slide images.


9
XP Details

• XP Planning – Begins with user • Pros


stories, team estimates cost, stories – Emphasizes customer involvement.
grouped into increments, – Establishes rational plans and
commitment made on delivery date, schedules.
computer project velocity. – High developer commitment to the
• XP Design – Follows KIS principle, project.
encourages use of CRC cards, design – Reduced likelihood of product
prototypes, and refactoring. rejection.
• XP Coding – construct unit tests
before coding, uses pair. • Cons
• XP Testing – unit tests executed – Temptation to “ship” a prototype.
daily, acceptance tests define by – Requires frequent meetings about
customer. increasing costs.
– Allows for excessive changes.
– Depends on highly skilled team
members.

10
Kanban Framework

11
Kanban Details

• Visualizing workflow using a Kanban • Pros


board. – Lower budget and time
• Limiting the amount of work in requirements.
progress at any given time. – Allows early product delivery.
• Managing workflow to reduce waste – Process policies written down.
by understanding the current value – Continuous process improvement.
flow.
• Making process policies explicit and • Cons
the criteria used to define “done”. – Team collaboration skills determine
• Focusing on continuous success.
improvement by creating feedback – Poor business analysis can doom the
loops where changes are project.
introduced. – Flexibility can cause developers to
• Make process changes lose focus.
collaboratively and involve all – Developer reluctance to use
stakeholders as needed. measurement.

12
DevOps

13
DevOps Culture
• The word 'DevOps' is a combination of two words
'development' and 'operations.‘

• DevOps allows Agile Development Teams to


implement Continuous Integration and
Continuous Delivery.
14
Pre-DevOps
• Before DevOps, the development and operation team
worked in complete isolation.
• Testing and Deployment were isolated activities done
after design-build. Hence they consumed more time
than actual build cycles.
• Without using DevOps, team members are spending a
large amount of their time in testing, deploying, and
designing instead of building the project.
• Manual code deployment leads to human errors in
production
• Coding & operation teams have their separate timelines
and are not in synch causing further delays.

15
DevOps vs Waterfall
Waterfall DevOps

After placing an order for new servers, the Development After placing an order for new servers Development and
team works on testing. The Operations team works on Operations team work together on the paperwork to
extensive paperwork as required in enterprises to set-up the new servers. This results in better visibility of
deploy the infrastructure. infrastructure requirement.
Projection about failover, redundancy, data center Projection about failover, redundancy, disaster recovery,
locations, and storage requirements are skewed as no data center locations, and storage requirements are
inputs are available from developers who have deep pretty accurate due to the inputs from the developers.
knowledge of the application.
Operations team has no clue on the progress of the In DevOps, the Operations team is completely aware of
Development team. Operations team develop a the progress the developers are making. Operations
monitoring plan as per their understanding. team interact with developers and jointly develop a
monitoring plan that caters to the IT and business
needs. They also use advance Application Performance
Monitoring (APM) Tools
Before go-live, the load testing crashes the application. Before go-live, the load testing makes the application a
The release is delayed. bit slow. The development team quickly fixes the
bottlenecks. The application is released on time.

16
DevOps Details

• Continuous development. Software • Pros


delivered in multiple sprints. – Reduced time to code deployment.
• Continuous testing. Automated – Team has developers and operations
testing tools used prior to staff.
integration. – Team has end-to-end project
• Continuous integration. Code pieces ownership.
with new functionality added to – Proactive monitoring of deployed
existing code running code. product.
• Continuous deployment. Integrated
code is deployed to the production • Cons
environment. – Pressure to work on both old and
• Continuous monitoring. Team new code.
operations staff members – Heavy reliance on automated tools to
proactively monitor software be effective.
performance in the production – Deployment may affect the
environment. production environment.
– Requires an expert development
team.

17
When to Adopt DevOps
• DevOps should be used for large distributed
applications such as eCommerce sites or
applications hosted on a cloud platform.
• It should not be used in a mission-critical
application like bank, power and other sensitive
data sites. Such applications need strict access
controls on the production environment, a
detailed change management policy, access
control policy to the data centers.

18
DevOps Lifecycle
• Development:
– In this stage the development of software takes place constantly. In this phase,
the entire development process is separated into small development cycles.
• Testing
– QA team use tools to identify and fix bugs in the new piece of code.
• Integration
– In this stage, new functionality is integrated with the prevailing code, and testing
takes place. Continuous development is only possible due to continuous
integration and testing.
• Deployment
– In this phase, the deployment process takes place continuously. It is performed
in such a manner that any changes made any time in the code, should not affect
the functioning of high traffic website.
• Monitoring
– In this phase, operation team will take care of the inappropriate system behavior
or bugs which are found in production.

19
DevOps vs. Agile
• Typical IT process

• Agile Process

20
DevOps vs. Agile
• DevOps Process

• Addresses gaps in the developer and IT


Operations

21
Agile vs DevOps
Agile DevOps

Emphasize breaking down barriers between developers DevOps is about software deployment and operation
and management. teams.
Addresses gap between customer requirements and Addresses the gap between development and
development teams. Operation team
Focuses more on functional and non-functional It focuses operational and business readiness.
readiness
Agile development pertains mainly to the way DevOps emphases on deploying software in the most
development is thought out by the company. reliable and safest ways which aren't necessarily always
the fastest.
Agile development puts a huge emphasis on training all DevOps, likes to divide and conquer, spreading the skill
team members to have varieties of similar and equal set between the development and operation teams. It
skills. So that, when something goes wrong, any team also maintains consistent communication.
member can get assistance from any member in the
absence of the team leader.
Agile development manages on "sprints. It means that DevOps strives for consolidated deadlines and
the time table is much shorter (less than a month) and benchmarks with major releases, rather than smaller
several features are to be produced and released in that and more frequent ones.
period.

22
DevOps Principles
1. Customer-Centric Action: DevOps team must take customer-centric
action for that they should constantly invest in products and services.
2. End-To-End Responsibility: The DevOps team need to provide
performance support until they become end-of-life. This enhances the
level of responsibility and the quality of the products engineered.
3. Continuous Improvement: DevOps culture focuses on continuous
improvement to minimize waste. It continuously speeds up the
improvement of product or services offered.
4. Automate everything: Automation is a vital principle of DevOps process.
This is not only for the software development but also for the entire
infrastructure landscape.
5. Work as one team: In the DevOps culture role of the designer,
developer, and tester are already defined. All they needed to do is work
as one team with complete collaboration.
6. Monitor and test everything: It is very important for DevOps team to
have a robust monitoring and testing procedures.

23
Adopting DevOps
• Unfortunately DevOps is rather complex and
requires a number of experienced engineers. A
gradual implementation may look like this:
1. Establish an agile development process
2. Adopt cloud computing
3. Adapt your processes to a CI and CD workflow
4. Automate your software deployment
5. Automate software testing
6. Implement continuous deployment

24
Some Simple Tools
• Git: A distributed source code management tool.
• Lucidchart: A visual workspace that helps developers
and IT managers create robust, easy-to-understand
diagrams of processes, teams, and data.
• Kubernetes: Take containerization to the next level by
grouping into logical units, deploying in clusters, and
automating distribution and scheduling.
• Raygun: Monitor your errors and crash reports with
Raygun, an application performance monitoring
platform.

25
An Example of a DevOps CI/CD Process

26

You might also like