Applied Agile and
Open Source Development

June 19, 2019

Chuck Greenman / Glen Horton /
Thomas Scherz / Brandon Spears

University of Cincinnati Libraries
Application Development Team

## Background
## Culture * Open Source * ICLAs
## Samvera Stack Separation of concerns with best of breed components [*hydra stack - hierarchy of promises*](https://wiki.duraspace.org/display/hydra/Hydra+Stack+-+The+Hierarchy+of+Promises)
## Local team Glen Horton, Team Lead Thomas Scherz, Senior Developer Sean Crowe, Digital Analyst & Developer Librarian Chuck Greenman, Co-Op Developer Brandon Spears, Co-Op Developer
### Libraries * Developers * Librarians * Co-ops
## Library IT * Servers * System administration
## Scholar/Hyrax Self-submission repository responsive to University research and instruction community. Scholar@UC - [https://scholar.uc.edu](https://scholar.uc.edu)
## Hyrax Gem created by Penn State and developed in consortium including UC
## Scholar@UC features * DOIs * Single sign-on * License wizard * Bulk ingest * Branding
## Governance * Digital Repository Taskforce and working groups * Product ownership: task force > individuals
## History
* Digital Repository Task Force; Winter, 2013 * Scholar@UC campus-wide rollout; Fall, 2015
## Ruby/Rails culture * Convention over configuration * MVC * DRY

Agile Development

*Agile software development is a set of principles for software development in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.* [(Wikipedia)](https://en.wikipedia.org/wiki/Agile_software_development)

This means:

Not planning the project milestones from the end-to-end...

A lot of communication throughout the project.

Scrum

Roles

Product owner, Scrum Master, Development team.

Workflow

A short "sprints" of development, usually a week or two, with daily "stand-ups", followed by communication and reflection.

Artifacts

The product backlog, and the sprint backlog.

Requirements

Requirements are best assembled and documented through conversation, to establish shared understanding functionality

User Story Mapping is an example of this kind of conversation. ([Here's a good book](http://uclid.uc.edu/record=b5957838) on that topic) This process generates a map of workflow, with user roles, which can be used to create the backlog.

User stories

Descriptions of functionality that use business-language to capture what a user needs to do to complete a task.

Formatted as, for example:

As a user-type,
I want to function,
so that benefit.
Done looks like...

Goal is to express testable system behavior in a management-friendly format.

Agile Development (in practice)

How our team applies everything we just covered

Scrum

Roles

  • Project Manager / Service Manager
  • Product owner team
  • Scrum Master / Development Team

  • Software Development Workflow

  • 2-3 week Sprints
  • Stand-ups every day
  • With a weekly swarm to address heavier topics
  • Sometimes with product owner participation in planning
  • Software Development Workflow Details

  • It begins with sprint planning
  • Collaborate, communicate, and code
  • Open pull request
  • Tests all pass, someone else reviews the branch
  • Reviews include automated style review
  • It ends with sprint wrap-up
  • Demo for product owners
  • ###Artifacts The [product backlog](https://github.com/uclibs/ucrate/issues) and the [sprint milestones](https://github.com/uclibs/ucrate/milestones?state=closed)

    Requirements

    For us, this essentially means developing issues

    (Our old method)

  • A librarian Early Adopter Working Group worked with faculty across UC to conduct focused sessions
  • and they passed notes to the Use Cases Working Group, which developed stories
  • and then the Use Case Working group would meet with the development team to analyze the stories and open issues.
  • [Use Case Repository](https://github.com/uclibs/scholar_use_cases)

    Requirements

    For us, this essentially means developing issues

    (Our improved method!)

  • Our product owner team meets to identify and discuss potential issues
  • With support from the scrum master and project manager, issues are moved through several stages of review.
  • Issues are then formalized and passed to the development team via Github.
  • [Use Case Workflow Board](https://trello.com/b/IRACCuwi/use-cases)

    ## Code and Virtual Machines Application Development Team (the Dev) Library IT (the Ops) and the glue between.
    ## Dev Ops Responsibilities + Design - provide stack scalability - prepare for disaster recovery - tune application performance and user experience + Maintenance - system notifications - log purging and rotation - security maintenance
    ## Why Devops? breaks down silos good for agile reduces bottlenecks and errors faster (continuous?) delivery cost management
    ## Infrastructure as Code (easily reproduceable server environments)
    ## Containerization (virtualization)
    ## Continuous Integration and Deployment Quickly make changes available to users
    ## Quality Assurance (specs, manual testing, penetration testing)
    ## Change Management (representation)

    Questions?

    [uclibs.github.io/applied-agile-and-scholar](https://uclibs.github.io/applied-agile-and-scholar)