CS计算机代考程序代写 flex Software Construction & Design 1

Software Construction & Design 1

The University of Sydney Page 1

Agile Software

Development Practices
SOF2412 / COMP9412

Team Dynamics; Tools and

Technologies for Teamwork

School Computer Science

Dr. Basem Suleiman

The University of Sydney Page 2

Agenda

– Teams in Software Development Models

– Teams in Agile Development

– Team Dynamics

– Effective Teams and Teamwork

– Issue Tracking

– Tools for Issue Tracking and Teamwork

The University of Sydney Page 3

Software Development Models – Teams

Waterfall model

plan-driven development
Agile model

Incremental & iterative development

Agile Vs Waterfall: Showdown For Software Development Domination

Do software development models influence team structure and interactions in software

development?

Agile Vs Waterfall: Showdown For Software Development Domination

The University of Sydney Page 4

Waterfall Model – Teams

Development activities Teams

Divide the work into stages A separate team of specialists for each
stage

At each stage, the work is passed from one
team to another

Some coordination is required for the
handoff from team to team – using
“documents”

At the end of all of the stages, you have a
software product ready to ship

As each team finishes, they are assigned to
a new product

The University of Sydney Page 5

Teams under different SDLC models

– In a traditional structure how do teams work?
– As work is planned and allocated, it can be divided into pieces that should

be more-or-less independent

• Specialist teams

• Project management and resource reallocation

• Clear authority lines, so disagreements can be resolved

– Problems?

• Single points of failure

• Inflexibility

• Lack of feedback

– And in Agile teams?

The University of Sydney Page 6

Agile Manifesto – Revisit

– Individuals and interactions over processes and tools
– Working software over comprehensive documentation

– Customer collaboration over contract negotiation

– Responding to change over following a plan

The University of Sydney Page 7

Agile Manifesto –

– Individuals and interactions over processes and tools

– Why Agile values individuals and interactions over processes
and tools? Discuss

The University of Sydney Page 8

Agile Manifesto – Why Individuals and Interactions?

– Why Agile values individuals and interactions over processes
and tools?

– People tend to follow processes blindly, and make mistakes

– “A great tool can sometimes help people to do the wrong thing faster”

– Tools or best practices are not enough – people who need to use it
should buy into it to realize its benefits

– People needs to see the value of following certain practices

– It is important to recognize that you are working with a group of people
who have different motivations, ideas and preferences

The University of Sydney Page 9

Agile Principles 1 – People

– Build projects around motivated individuals. Give them the environment
and support they need, and trust them to get the job done

– The most efficient and effective method of conveying information to and
within a development team is face-to-face conversation

– At regular intervals, the team reflects on how to become more effective,
then tunes and adjusts its behavior accordingly

The University of Sydney Page 10

Agile Principles 1 – People

– Group Discussion:

– Briefly discuss how the following agile principles perceive teams and
teamwork in agile development?

– Build projects around motivated individuals. Give them the environment and support
they need, and trust them to get the job done

– The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation

– At regular intervals, the team reflects on how to become more effective, then tunes
and adjusts its behavior accordingly

The University of Sydney Page 11

Agile Principles 2 – People

– Business people and developers must work together daily throughout the
project

– The best architectures, requirements, and designs emerge from self-
organizing teams

– Our highest priority is to satisfy the customer through early and continuous
delivery of valuable software

The University of Sydney Page 12

Agile Principles 2 – People

– Group discussion

– briefly discuss how the following agile principles perceive teams and
teamwork in agile development?

– Business people and developers must work together daily throughout the project

– The best architectures, requirements, and designs emerge from self-organizing teams

– Our highest priority is to satisfy the customer through early and continuous delivery
of valuable software

The University of Sydney Page 13

Teams – Individuals and Collaboration

– Common problem experienced in software development teams “throw it over
the wall”

– Team members are busy thinking about their own project work and problems

• Different views/perspectives

– Teams are divided, and collaboration is killed

The University of Sydney Page 14

Agile Practices – The Agile Elephant

– The agile elephant is made up of many practices

*Agile practices and Scrum method (most of these presented in this figure) will be discussed in more details in future lectures. The focus
of the discussion here is on teams and the adoption of Agile practice

The University of Sydney Page 15

Agile Teams – Individual Practices

– When adopting agile practices, team members may adopt practices
individually:

– Each person uses only the practices that impact their work; developers
focus on automated tests and build, team leads on task boards, project
velocity and burn-down charts, business users on user stories

– Adopting practices individually will improve things, but this may lead to
a self-contradictory effect

The University of Sydney Page 16

Teams – Individual Practices

– When adopting agile practices, team members may follow the same
thinking:

– Each person uses only the practices that impact their work; developers focus on
automated tests and build, team leads on task boards, project velocity and
burn-down charts, business users on user stories

– Adopting practices individually will improve things, but this may lead to a self-
contradictory effect

• Each person sees the part of agile that affects their specific work –
(attitudes: “see! I was right all along”)

• Agile is made up of day-to-day practices, but it’s much bigger than those
practices

The University of Sydney Page 17

Understanding the Agile Elephant

– If you only sees the practices that
directly affect your project work,
then you will see the one small
piece of agile

The University of Sydney Page 18

Team Dynamics

The University of Sydney Page 19

Team Dynamics

– “Team dynamics are the unconscious, psychological forces that influence the
direction of a team’s behaviour and performance”

– Factors that lead to team dynamics:

– Personalities and work styles

– Knowledge and skills

– Organization culture and structure

– Cultural differences, background

S. P. Myers, 2013 https://www.teamtechnology.co.uk/team/dynamics/definition/

The University of Sydney Page 20

Team Dynamics – Good or Bad?

In Agile development, is team dynamics a good or bad thing?
Discuss

The University of Sydney Page 21

Team Dynamics – Pros and Cons

– Can be good

– E.g., Improve overall team performance (productive conflict, different
perspectives)

– Can be bad

– Can lead to unproductive conflict can demotivate and prevent team from
achieving its goals

S. P. Myers, 2013 https://www.teamtechnology.co.uk/team/dynamics/definition/

The University of Sydney Page 23

Team Dynamics – Tuckman Team Development Model

Image: https://www.atlassian.com/agile/teams

Tuckman’s stages of group development – https://en.wikipedia.org/wiki/Tuckman%27s_stages_of_group_development

https://www.atlassian.com/agile/teams
https://en.wikipedia.org/wiki/Tuckman’s_stages_of_group_development

The University of Sydney Page 24

Team Dynamics – Identification and Resolution

– Result from the interaction of many factors

– E.g., Personalities, work style, roles, culture, organizational structure

– Investigate the root causes of conflict or poor team performance

– Structured interviews or informal chats in a private and confidential

– Identify potential improvements

– E.g., change in office layout, team development workshops (practices,

personality dynamics, cultural change programs)

Source: https://mysoftwarequality.wordpress.com/2014/09/04/cross-dysfunctional-teams

The University of Sydney Page 27

Agile Teams – Skills

– It’s claimed that agile teams work with the best developers. However,
this is not necessary the case;

– Every project needs at least one experienced and competent lead person
(Critical Success Factor)

– Each experienced and competent person on the team permits the presence
of 4-5 “average” or learning people

– With that skill mix, agile techniques have been shown to work many times

The University of Sydney Page 29

Teams Culture

– Consider the following scenarios:

– Developer: “It works in our environments, it’s operations responsibility to make it

work in production”

– Tester: ”Listen, it worked in User Acceptance Testing, it must be a configuration

issue, or a missing firewall hole and nothing I could have spotted during

testing…”

– Customer: “Hello! Nothing works here…”

– Are these statements signs of team dynamics?

– Should this kind of culture exist in agile teams?

Source: https://mysoftwarequality.wordpress.com/2014/09/04/cross-dysfunctional-teams

The University of Sydney Page 30

Effective Teamwork

– Teamwork comprises of the right tools, the right people ad the right
practices

– Effective teamwork is everyone’s shared responsibility

– Large software organizations, teams involve many roles across different
departments (engineering, design, sales/marking, legal)

– Use team building activities to build effective teams

The University of Sydney Page 31

Team Building

– “Various types of activities used to enhance social relations and define

roles within teams, often involving collaborative tasks”

– There is an evidence how team building affect positively team effectiveness

https://en.wikipedia.org/wiki/Team_building

The University of Sydney Page 32

Team Building Activities

– Goal setting: emphasizes the importance of clear objectives and individual

and team goals

– E.g., objectives and key results (Atlassian)

– Interpersonal relations: focus on teamwork skills such as giving and

receiving support, communication and sharing information

– Standup meetings

– Roles and responsibilities (Atlassian)

https://en.wikipedia.org/wiki/Team_building

The University of Sydney Page 33

Team Building – Roles and Responsibilities

– Define the roles and responsibilities that will make your team successful

– Clarify expectations as a team

– Helps to move a team from “storming” to “norming”, or help “performing”

teams to get back on track

The University of Sydney Page 34

Roles and Responsibilities – How?

– Create a table of roles and responsibilities

– Responsibilities from own perspective

– Responsibilities from team member’s perspective

Name Role Responsibility (own) Responsibility (other’s)

The University of Sydney Page 35

Roles and Responsibilities – How?

– Identify roles

– E.g., team lead, developers, designers

– Coarse-grained

– Add to the role’s column

– Clarify own responsibility

– Think of top 3-5 tasks in priority order

– Write on sticky notes

– Think of teammate’s responsibilities

– Write 1-2 responsibilities for each role from your perspective

– Write responsibilities you may think that don’t have a clear owner

The University of Sydney Page 36

Roles and Responsibilities – How?

– Refine and consolidate (optional)

– Talk teammates with similar roles and refine responsibilities

– Discuss all roles

– Role owner(s) describe their role and place their sticky notes in own

responsibility column

– Other teammate’s role description in the other column

– Owner to accept/decline the responsibilities by other teammates (suggest role

to own it). Define primary owner for overlapping roles

– Add “unassigned responsibilities” to

– Summarize roles and responsibilities

– All to agree

– Owner to document it and how to fill skill gaps

The University of Sydney Page 38

High-Performing Agile Teams

– Cross-functional; engineers, designers, architects, sales

– Mutual respect and mutual responsibility

– Not blaming culture, and/or “throw it over the wall”

– Sound engineering practices (tools and automation)

– Value and belief of agile practices and principles

– Apply agile practices effectively as individuals and as a team

– Receive continuous training (technical and non-technical) and team
monitoring/coaching

The University of Sydney Page 39

How much can you find out?

– Search for:
– Team effectiveness

– Self-managed teams

– Group conflict

– Team efficacy…

– Learn about the theory of teams!

The University of Sydney Page 40

Tools and Technologies

for Teamwork

The University of Sydney Page 41

Issue Tracking Systems

– A software that manages and maintains lists of issues

– Used to create, update and resolve reported issues internally or externally

– Bug (defect) Tracking System: keeps track of reported software bugs in software
development projects

– Centralized overview of development requests and their states

– May assigned a priority, status, severity and/or complexity

– Prioritized list of pending items (Backlog)

– Typically integrated with other tools or software management systems

https://en.wikipedia.org/wiki/Issue_tracking_system

https://en.wikipedia.org/wiki/Bug_tracking_system

The University of Sydney Page 42

Bug/Issue Tracking Part of other Systems

– Part of integrated project/software development management systems

– It helps integrating issue/bug tracking with other activities

– Distributed bug tracking tools are designed to be used with distributed revision
control software

The University of Sydney Page 43

Bugzilla – Bug Tracking Tool

– Open-source web-based bug tracker and testing tool by Mozilla project

– Bug (or feature) requests can be submitted by anyone and will be assigned to a
particular developer

– Various status updates for each bug

– E.g., Bugzilla itself allows the public to file bugs – it assigns all bugs to a
gatekeeper whose job is to assign responsibility and priority level

https://en.wikipedia.org/wiki/Bugzilla

https://en.wikipedia.org/wiki/Bugzilla

The University of Sydney Page 44

Bugzilla – Bug Lifecycle

By Nyco [GFDL (http://www.gnu.org/copyleft/fdl.html) or CC BY-SA 3.0 (https://creativecommons.org/licenses/by-sa/3.0)], from Wikimedia Commons

The University of Sydney Page 45

Issue Tracking – GitHub

The University of Sydney Page 46

GitHub Issue Tracking – Edit Labels

The University of Sydney Page 47

GitHub Issue Tracking – Project Management

The University of Sydney Page 48

Version Control Systems – GitHub Revisit

– GitHub allows groups of people to collaborate across many projects at
the same time in organizations account

– Organization’s members can be:
– Owner: complete administrative access to the organization

– Member: default role for everyone else

– Owners can manage members’ access to the organization’s repos. and
projects with fine-grained permission controls

– Can add collaborators from outside of the organization (consultant) to have access
to one or more organization repos. without bring a member of the organization

The University of Sydney Page 49

GitHub – Organization Access Control (Revisit)

https://help.github.com/enterprise/2.13/user/articles/permission-levels-for-an-organization/

– Examples of access permissions for organization’s owners and members

https://help.github.com/enterprise/2.13/user/articles/permission-levels-for-an-organization/

The University of Sydney Page 50

GitHub – Creating Organization (Revisit)

– .

Organizational accounts have a namespace where all their projects exist

The University of Sydney Page 51

GitHub – Add Members to Organization (Revisit)

– Note: when you create a new repo you can
create them under your personal account or
under any of the organizations that you’re
owner in

The University of Sydney Page 52

GitHub Organization – Manage Repos. (Revisit)

– .

The University of Sydney Page 53

GitHub Organization – Manage People (Revisit)

– .

The University of Sydney Page 54

GitHub Organization – Manage Teams (Revisit)

– .

You may have 3 repos; Designs, Front-end and Back-

end. You want FrontEndDeve to work on the Front-end

and Designs repos, Designers team to work on Designs

repo and BackEndDeve to work on Back-end repo

The University of Sydney Page 55

GitHub Organization – Manage Projects (Revisit)

– .

The University of Sydney Page 56

GitHub Organization – Audit Log (Revisit)

– Audit log records all events that
have happened at the
organization level, who did them
and where in the world they
were done

The University of Sydney Page 57

Jenkins

The University of Sydney Page 58

Jenkins – CI / CD

– “Jenkins is a self-contained, open source automation server which can be
used to automate all sorts of tasks related to building, testing, and delivering

or deploying software.”

– Jenkins pipeline is a suite of plugins which supports implementing and

integrating continuous delivery pipelines into Jenkins

– A continuous delivery pipeline is an automated expression of your process for

getting software from version control right through to end users/customers

– Typically written in Jenkinsfile which is checked in a project’s source code

repository

https://jenkins.io/

https://jenkins.io/

The University of Sydney Page 59

Jenkins – Integration with GitHub (1)

The University of Sydney Page 60

Jenkins – Integration with GitHub (2)

The University of Sydney Page 61

Jenkins – Integration with GitHub (3)

• Webhooks to set up GitHub applications to

subscribe to certain events on GitHub

• Events is triggered, HTTP POST payload will

be sent to the webhook’s configured URL

• Webhooks can be used to update an

external issue tracker, trigger CI builds,

update a backup mirror

https://developer.github.com/webhooks/

The University of Sydney Page 62

Teamwork Collaboration Tools

– What tools would you use to help support your team?

– Examples:

– Dropbox

– Google Docs

– Skype

– Trello

– Slack

– Basecamp

– Asana

– … other

The University of Sydney Page 63

Other Tools – Asana – Project Management

The University of Sydney Page 64

References

– Andrew Stellman, Margaret C. L. Greene 2014. Learning Agile: Understanding
Scrum, XP, Lean and Kanban (1st Edition). O’Reilly, CA, USA.

– S. P. Myers, 2013. [https://www.teamtechnology.co.uk/team/dynamics/definition/]

– Cross Dysfunctional Teams.
[https://mysoftwarequality.wordpress.com/2014/09/04/cross-dysfunctional-teams]

– Atlassian, Agile Teams. [https://www.atlassian.com/agile/teams]

– Tuckman’s stages of group development.
https://en.wikipedia.org/wiki/Tuckman%27s_stages_of_group_development

– Atlassian, Teamwork. [https://www.atlassian.com/teamwork]

– Team building. [https://en.wikipedia.org/wiki/Team_building]

– Issue tracking system. [https://en.wikipedia.org/wiki/Issue_tracking_system]

– Bug tracking system. [https://en.wikipedia.org/wiki/Bug_tracking_system]

https://www.atlassian.com/agile/teams
https://en.wikipedia.org/wiki/Tuckman’s_stages_of_group_development
https://www.atlassian.com/teamwork
https://en.wikipedia.org/wiki/Issue_tracking_system
https://en.wikipedia.org/wiki/Bug_tracking_system

The University of Sydney Page 65

References

– Further Readings:

– Hackman J. R., “Leading Teams: Setting the stage for great performances”,
Harvard Business Press 2002

– Hackman J. R., Katz N. “Group behavior and performance”. In Fiske ST, Gilbert
DT, Lindzey G Handbook of social psychology (5th ed.) New York: Wiley; 2010.
pp. 1208-1251. DOI: 10.1002/9780470561119.socpsy002032

The University of Sydney Page 66

Tutorial: Continuous Integration with

Jenkins / Docker

Team Dynamics – Team Building

Activities

Lecture: Agile Methods, Scrum