Announcements
Project Notes (for next week’s deliverable)
• Add your proposed Android App to the CourseLink Discussion board:
“CIS 3760 Projects – Project selections will be on a first-come- first served basis”
– Include your Section # & Group #
• Only 1 group member needs to upload the team contract to CourseLink
• Only items uploaded to CourseLink for this deliverable will be graded. Items uploaded / linked to GitLab are for your team’s information only
CIS 3760
Software Engineering (Agile Part I)
1
Poll: Some Review
• What are examples of umbrella activities as represented by the generic software process
model shown on the right?
• Why is the agile software engineering process / lifecycle more appropriate than waterfall for solving wicked problems?
• What are some key features of the Spiral SE Process?
CIS 3760
Software Engineering (Agile Part I)
2
CIS 3760: Software Engineering Agile Software Engineering –
Part I (Overview)
Instructor: Prof. Stacey Scott
School of Computer Science
University of Guelph https://www.uoguelph.ca/computing/people/stacey-scott stacey.scott@uoguelph.ca
© 2017-21 S.D. Scott – with content from J. McCuaig & F. Maurer, used with permission
Agile Software Engineering Outline
• Part I: Intro to Agile SE and Agile concepts
• Part II: Example Agile Methods / Practices: – Scrum
– Extremeprogramming(XP)
CIS 3760
Software Engineering (Agile Part I)
4
Outline – Agile Part I
Motivation for Agile & Agile basics • Key agile concepts & practices
• Agile vs. traditional methods
CIS 3760
Software Engineering (Agile Part I)
5
Motivation for a New SE Method…
• CHAOS Report, Standish Group (1994-2002) – 66%ofprojects
51%
failed or were challenged in 2002
2002
34%
15%
– Largeprojectswere failing more often than small projects
2000
28%
23%
49%
– Only 52% of features 1996 made it into product
27%
40%
33%
– >50% of projects will 1994 cost 189% of original estimate in 1994
16%
31%
53%
CIS 3760
Software Engineering (Agile Part I)
Failed=cancelled/not accepted; Challenged=over time or budget
6
1998
26%
28%
46%
Succeeded
Failed
Challenged
https://www.standishgroup.com/sample_research_files/chaos_report_1994.pdf http://www.standishgroup.com/sample_research/PDFpages/chaos1998.pdf
Motivation: projects were failing on main project success measures
• Cost (…cost overruns…)
– CHAOSReport,StandishGroup,1994-1998(andlater)
• Scope
– Featurecreep
– Requirementschurn
• Time
– “Addingpeopletoalateprojectjustmakesitlater” Brooks, Mythical Man Month
• Quality
– Disastersandsoftwarebugs
CIS 3760
Software Engineering (Agile Part I)
7
http://agilemanifesto.org ©2001 Manifesto for Agile Software Development
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
• Individuals and interactions over processes and tools • Working software over comprehensive documentation • Customer collaboration over contract negotiation
• Responding to change over following a plan
That is, while there is value in the items on the right, we value
CIS 3760
the items on the left more.
Kent Beck ‐ Mike Beedle ‐ Arie van Bennekum ‐ Alistair Cockburn ‐ Ward Cunningham ‐ Martin Fowler ‐ James Grenning ‐ Jim Highsmith ‐ Andrew Hunt ‐ Ron Jeffries ‐ Jon Kern ‐ Brian Marick ‐
Robert C. Martin ‐ Steve Mellor ‐ Ken Schwaber ‐ Jeff Sutherland ‐ Dave Thomas 8
Software Engineering (Agile Part I)
Principles behind the Manifesto (Highlights)
• Highest priority: satisfy the customer through early and continuous delivery of valuable software
• Welcomechangingrequirements,evenlateindevelopment
• Deliverworkingsoftwarefrequently,withapreferencetothe
shorter timescale
• Businesspeopleanddevelopersmustworktogetherdaily throughout the project
• Continuousattentiontotechnicalexcellenceandgooddesign enhances agility
• Simplicity–theartofmaximizingtheamountofworknot done–is essential
CIS 3760
Software Engineering (Agile Part I)
9
http://agilemanifesto.org/principles.html
Agile Overview – Video
• Agile Case Study from SourceSeek https://youtu.be/N4NQ6rZiQ5Q
CIS 3760
Software Engineering (Agile Part I)
10
Due Date
Deliverables
Team
Individual Marks
Wk 3 (Jan 25‐29) Wk 5 (Feb 8‐15)
Team Contract & App Proposal 2
IAR
IAR Wk 7 (Feb 22‐26)
Initial System Design and Product
Backlog Creation (Sprint 0)
Project Milestone 1 (Sprint 1) 10
Feb 26
Wk 9 (Mar 8‐12)
Peer Assessment #1 due
Project Milestone 2 (Sprint 2) not
2.5
IAR Wk 11 (Mar 22‐26)
Project Milestone 3 (Sprint 3)
Final Project Demo (Sprint 4) 10
IAR Wk 13 (Apr 5‐9) Fridays after
Individual Accountability Reports (IARs)
10
5
team deliverables Apr 9
Apr 9
Project Post‐Mortem (Team) 3
Agile Team Project Overview
Peer Assessment #2 due + Scrum Master Assessment
2.5 45* 10
sufficient evidence of contribution to the group effort.
CIS 3760
Software Engineering (Agile Part I)
11
Total Marks
*Instructor may apply a fraction of team grade to an individual group member without
Marks
10
marked
Can you use other languages instead of Android / Java?
• Kotlin? Flutter?
Our STRONG recommendation is using Android/Java:
“You cannot go wrong with Java when making Android apps. It’s the official language of the system, it’s the second most active language on GitHub, and it’s been around for more than 20 years. All of this means that tutorials are abundant and you won’t have to worry about the language dying out anytime soon.”
Joel Lee, 2017 https://www.makeuseof.com/tag/build- android-app-programming-languages/
– 3rdin2020(JavascriptandPythonare1&2)(https://analyticsindiamag.com/top- 10-programming-languages-used-by-github-repo-contributors-in-2020/)
CIS 3760
Software Engineering (Agile Part I)
12
https://www.techrepublic.com/article/the-20-most- popular-programming-languages-to-learn/
CIS 3760
Software Engineering (Agile Part I)
13
http://pypl.github.io/PYPL.html
The TIOBE Index top 10 for April 2019
Apr 2019
Apr 2018
Programming Ratings Language
Change
1
1
Java 15.035%
-0.74%
2 3 4
2 3 4
C 14.076%
+0.49% +1.62% +2.36%
5
6
Visual Basic 5.795% .NET
+0.85%
6 7 8 9
5 8 9 7
C# 3.515%
-1.75% -0.99% -0.38% -1.98%
10
14
Assembly 1.710% language
+0.05%
CIS 3760
Software Engineering (Agile Part I)
https://www.techrepublic.com/article/most-popular-
C++ 8.838%
Python 8.166%
JavaScript 2.507%
SQL 2.272%
PHP 2.239%
programming-languages-c-knocks-python-out-of-top-three/ 14
The TIOBE Index top 10 for Jan 2021
Jan 2021 1
2
3
Jan 2020 2
1
3
Programming Language
Ratings Change 17.38% +1.61% 11.96% -4.93% 11.72% +2.01% 7.56% +1.99% 3.95% -1.40%
4 5
4 5
Python C++ C#
6 7 8 9 10
6 7 8 18 23
Visual Basic JavaScript PHP
R
3.84% -1.44% 2.20% -0.25% 1.99% -0.41% 1.90% +1.10% 1.84% +1.23%
CIS 3760
Software Engineering (Agile Part I)
https://www.tiobe.com/tiobe-index/
15
C
Java
Groovy
Consider completing a CIS 4900/4910 project, or extracurricular project to learn Kotlin / Flutter
16
Outline – Agile Part I
Motivation for Agile & Agile basics Key agile concepts & practices
• Agile vs. traditional methods
CIS 3760
Software Engineering (Agile Part I)
17
Agile Methods
• Focus on business value
– Drivenbycustomerdescriptionsofwhatisneeded(userstories, use cases, scenarios)
• Focus on delivering software not documentation • Human centric: customer, developers
CIS 3760
Software Engineering (Agile Part I)
18
Agile Core Strategies
• Iterative and Incremental Development (IID)
• Adaptive project management
• Collaborative, “whole team approach” • Quality focused
CIS 3760
Software Engineering (Agile Part I)
19
Iterative and incremental development
Product Vision
CIS 3760
Software Engineering (Agile Part I)
20
Iterative and incremental development
Application features
Product Vision
UI layer Business layer
Final System
Data access Hardware
CIS 3760
Software Engineering (Agile Part I)
21
Feature 1
Feature 45a Feature 45b
Feature 56
Iterative and incremental development
Application features
Product Vision
UI layer Business layer
Final System
Data access Hardware
CIS 3760
Software Engineering (Agile Part I)
22
“vertical slice”
Adaptive project management
Constant Feedback
• Demos, pairing with customer, iteration reviews
Design & Implement
CIS 3760
Software Engineering (Agile Part I)
*TDD=Test-driven development
23
Customer Communication
• Project planning meetings, on-site customer reps …
• TDD*, develop feature, code, vertical slices
Whole team
“Individuals & interactions” & “Customer collaboration”
Requirements Engineering
Team involves:
• Customer representatives & developers & testers
Quality Assurance
Team engage in:
• Planning meetings • Retrospectives
Domain-driven Design
CIS 3760
Software Engineering (Agile Part I)
24
Interaction Design
Software Security
eXtreme Developer
Software Architecture
Story Test Driven Development – Agile Approach to Quality
Customer Team + Testers
Development Team
System under test
Acceptance Criteria Acceptance Criteria
Pair Programming
Unit tests
CIS 3760
Software Engineering (Agile Part I)
25
User Story
Acceptance Criteria Acceptance Criteria
Acceptance Criteria Acceptance Criteria
Common myths about agile methods
• Agile = unconstrained hacking • Agile = rapid prototyping
• Agile no documentation
• Agile only in small teams
CIS 3760
Software Engineering (Agile Part I)
26
Example Agile Methods
• Scrum
– Sprints
• Extreme Programming (XP) – Pairedprogramming
• DSDM (Dynamic Systems Development Method)
– MuSCoW (Must have, Should have, Could have, Won’t have)
• Kanban (from Lean manufacturing) •…
CIS 3760
Software Engineering (Agile Part I)
27
Outline – Agile Part I
Motivation for Agile & Agile basics Key agile concepts & practices
Agile vs. traditional methods
CIS 3760
Software Engineering (Agile Part I)
28
Agile versus traditional methods
Agile methods
Traditional methods
Human-centric
Tacit knowledge sharing Code-centric
Process-centric
Explicit knowledge sharing Documentation-centric Documents capture knowledge
Replace documentation by face-to-face / real-time communication
Generalists
Plan and correct Customer-focused
Role specialization Plan and control Contract-focused
CIS 3760
Software Engineering (Agile Part I)
29
So, has Agile made a difference???
• Recall, 66% of software projects failed or were challenged in 2002 when Waterfall was commonly used
CIS 3760
Software Engineering (Agile Part I)
30
CHAOS Report 2011-2015 Findings: 71% failed or challenged!
CIS 3760
Software Engineering (Agile Part I)
31
CHAOS Report 2011-2015 Findings
CIS 3760
Software Engineering (Agile Part I)
32
Agile Software Processes: Highlights
• Increase responsiveness of software teams – Changingrequirements
– Strong customer involvement
• Reduce overhead to speed up development
• Focus on people, collaboration, communication
• Deliverable: potentially shippable product functionality
• Source-code centric
• Empowering developers and clients
• Fast feedback
CIS 3760
Software Engineering (Agile Part I)
33
Additional Material (Optional)
34
Common Agile Practices
• Knowledge sharing (“verbal documentation”, co-location)
• Fast feedback (on-site customer, continuous integration, short iterations, retrospectives)
• Emphasis on testing, test-driven development
• Emerging (simple) design & refactoring
• Collaboration with the customer
• Business contracts
CIS 3760
Software Engineering (Agile Part I)
35