RFI Attachment 3 - Draft Agile SDLC Guidance - 20200423.pdf
PDF 618 KB Posted
- Solicitation number
- 47QFPA20N0002
View the file
Other files
On GovTribe
Work with this file
- Download the original file
- Contacts named in this file
- Similar government files
- Ask GovTribe AI about this file
Text version
Agile System Development Life Cycle (SDLC) Framework
Section 1. Introduction Section 2. Purpose Section 3. Scope Section 4. Requirements Section 5. Agile Values Section 6. Roles and Responsibilities Section 7. Functional Areas Supported by Software Engineering Section 8. Exceptions Section 9. Enforcement Section 10. Feedback
1. Introduction
The Agile System Development Life Cycle (SDLC) framework is intended to reduce the risk of project failure through the application of incremental and iterative solution delivery. This approach leverages the benefits of Agile to improve the delivery of all IT development projects, both large and small. Aligning our efforts with the Library's priorities and agency mission, breaking down projects into loosely-coupled components or services, and delivering iteratively in rapid learning cycles, delivers more value in less time. A Lean-Agile approach forces delivery of value with increased velocity, allowing us to detect small failures early and treat them as learning opportunities leading to the delivery of an improved product.
The SDLC is a sub-set of activities and standards that exist within the larger Project Management Lifecycle (PMLC) guidelines, outlined here. The core SDLC activities are focused on the software engineering effort and occur within the "Execution and Control" phase of the PMLC. There are aspects of the PMLC and SDLC that overlap, which occurs during project initiation and closeout.
Although focused on Agile processes, the PMLC also defines "Hybrid" projects. These are projects that may contain some aspects that are Agile in nature and some that are not. For Hybrid projects, it is assumed that the software design and development activities will follow an Agile approach, even if other portions of the project do not.
2. Purpose
The purpose of this document is to establish an Agile System Development Life Cycle (SDLC) as the standard for the Library of Congress. The intent is to promote agility in a pragmatic, not dogmatic, way as it pertains to delivering value to our end users. Adherence to this framework helps provide agency-wide visibility and consistency in the design, development, and implementation needed to ensure successful delivery.
file:///C:/wikis/display/PMO/PMLC
3. Scope
This framework applies to all information technology design and development within OCIO for the Library of Congress. The Agile methodology should be followed for new efforts, as well as operational maintenance and upgrade efforts. The SDLC guidelines must be followed by both federal and contractor teams.
4. Requirements
All projects must complete the Agile Suitability Scorecard prior to initiation. If Agile is the determined framework, this SDLC applies. If it is determined that it is a Hybrid project, then the Agile framework will apply to the software design, development, and deployment portions of the overall project. If the Waterfall is the best methodology, the Waterfall SDLC applies.
5. Agile Values
Detailed Agile information is available in the Agile at the Library site. This site contains the Agile best practices as well as support in executing effective Agile processes.
The following values help guide all Agile IT solution implementations:
5.1 End-to-end value stream alignment over the silo mindset
5.1.1 Strategic alignment to the established Library priorities and mission
5.1.2 Cross-library collaboration and cooperation
5.1.3 Measurable, data-driven decision making and prioritization
5.1.4 Optimizing the end-to-end customer experience
5.2 Agile delivery over large batch, sequential processes
5.2.1 Cross-functional small team-based execution
5.2.2 Frequent, incremental delivery of modular solutions
5.2.3 Visibility and lean management of work in process
5.2.4 Intentional, continuous improvement through rapid learning cycles
5.3 Modern development over outdated approaches
5.3.1 Innovation with modern technology and consideration of open source options https://staff.loc.gov/wikis/download/attachments/17993618/Agile_Suitability_Scorecard.xls?api=v2 https://staff.loc.gov/wikis/display/PMO/Waterfall+SDLC file:///C:/wikis/display/AT
5.3.2 Ongoing development and technical debt management of production systems
5.3.3 Built-in security, accessibility, usability, quality, and compliance
5.3.4 Maximum integration of systems and data (with appropriate governance)
5.3.5 User-centered design instead of system-centered design, through current user experience design and usability practices
5.3.6 High levels of product team autonomy, while maintaining alignment with existing policies and standards
5.4 Culture of trust
5.4.1 Product owner trusted with making decisions in support of the business needs
5.4.2 Engineering team trusted in making the best technical decisions based on needs and technical standards
5.4.3 User Experience Design team trusted in making the best user-centered design decisions based on best practices and standards
5.4.3 High levels of product team autonomy, while maintaining alignment with existing policies and standards
6. Roles and Responsibilities
Although the SDLC processes are heavily focused on the software engineering process, full participation by all parties involved is required for successful delivery. The following lists the major roles that are involved in defining and delivering successful Agile IT projects.
Role Description Formal Role in Agile?
Project Team
The team is responsible for executing Agile activities. Generally speaking, formal roles aren't assigned within the Agile team, but it should be comprised of the following skill sets: Engineer, Tester, User Experience Designer, Subject Matter Expert, etc.
Yes
SCRUM Master
The SCRUM Master is the team role responsible for ensuring the team lives agile values and principles and follows the processes and practices that the team agreed they would use. The responsibilities of this role include:
Clearing obstacles Establishing an environment where the team can be effective Addressing team dynamics Ensuring a good relationship between the team and the product owner as well as others outside the team Protecting the team from outside interruptions and distractions.
Yes
Agile Manager Member of the ITD&D staff that oversees the Agile implementations. No
DevOps Team that builds tools and documents standards to help the software teams build and deploy their projects.
No
User Experience Designer
User representative that is responsible for translating business needs into usable and accessible features, functionality, and content. Works with business (Product Owner, SMEs) and developers to deliver the product specifications through tangible work products such as personas, user flows, information architectures, wireframes, taxonomies, visual comps, and front-end code specifications.
Yes
UXD Manager
Member of the IT D&D staff that oversees all User Experience Design efforts in software engineering at the Library. Oversees User Research, Usability Testing, Accessibility Compliance, and the Library's Design Systems.
No
Tester/Testing Team
Engaged in multiple types of testing and the tracking of defects throughout the SDLC including acceptance testing, developing and managing test strategies, performance testing, automated testing, accessibility testing, and usability testing.
Yes
Project Manager Oversees the execution of the project, such as the budget, timelines, and risk; and ensures alignment with PMLC processes.
No
Product Owner The business representative that is responsible for the contents and prioritization of the Backlog.
Yes
SMEs Support the Product Owner in supplying the business knowledge and User Stories to the project team.
Yes
Operations Operations staff that maintain the production environments and help with deployment and troubleshooting.
No
Stakeholders
Have a stake in the Project Team's success through supportive or dependent processes and/or needs. Stakeholders can obtain eligibility to participate via Agile training and experience. Are responsible for attaining the necessary authority to "make decisions" aligned with their Agile product activities. Act as cultural change agents for the business.
Yes
Project Management Office (PMO)
Provides project coordination and communication. Ensures contractor activities are aligned with PMLC and ensures contractor work products and technologies are vetted with IT D&D for compliance with the principals of 'best tooling, techniques, and code architectures" and adhere to OCIO standards.
No
7. Functional Areas Supported by Software Engineering
The SDLC process is broken up into major functional areas. Some of these areas map directly to Agile processes, others are in support of Software Development processes that aren't specifically defined within Agile, but are required for full life cycle support. The Table below also specifies the Role of the person/group that is primarily responsible for these functional areas.
SDLC Activity Function Description Supporting Process Responsible Party Supporting Deliverables
Requirement s
Business Requirements
The practice of documenting business need s and tracking them throughout the SDLC
Release Planning
User Story Creation
Backlog Grooming
Product Owner Project Team
Roadmap Product
Backlog
Design User Experience Design
User Experience Design represents users in the SCRUM/project team and includes the translation of business and customer needs into a user-centered design that serves as specifications for development. Work products created to demonstrate how these needs are translated into the features and functions of the system. It is a process and skill set that is essential to the successful adoption of IT projects.
User Experience Design
User Research
User Story Creation
Backlog Grooming
Iterative Design Workshops
Usability Testing
UX Designer Project Team
Personas User flows Information
Architectures Wireframes Visual design Front-end code specifications Design system
Technical Architecture Design
System Documentation Release Planning
SCRUM
Project Team Technical Design
Process Documentation
Development Software configuration management
(SCM)
Also known as version control or source code control, software configuration management (SCM) is the practice of managing all the files and assets required to build and deploy a software project into its executable form.
Continuously throughout the SCRUM process
Project Team Updated source repository of code and configurations.
Build and Deploy
The process of integrating the contributions of the programming team, compiling code, building the infrastructure and assembling the system into a deplorable format. This is required to be an automated, scriptable process. No human interventions should be required to perform the deployment.
Continuously throughout the SCRUM process
Project Team DevOps Team
Build and deployment scripts checked into Source Control..
Release Engineering
Includes aspects of SCM, and extends integration and build to address the complexity of managing an application's external dependencies and multiple deployment environments in the IT environment.
Continuously throughout the SCRUM process
Project Team DevOps Team
Release Plan
Defect Consists of gathering Backlog Grooming Testing Team Product Backlog
Management information about software defects and managing the flow of information as they are addressed.
Product Owner Project Team
Testing / Quality
Code Quality Analysis
Evaluating source code to assess its compliance with various standards and policies regarding code quality, security, accessibility, and regulatory compliance.
Continuously throughout the SCRUM process
Testing Team Project team
Code quality report
Accessibility Report
Security Analysis
Accessibility Testing
Testing the system release for compliance with established accessibility standards.
Continuously throughout the SCRUM process
UX Designer Tester Project Team
Accessibility Report
Product Backlog
Usability Testing
Testing the system release for compliance with established usability standards.
Continuously throughout the SCRUM process
UX Designer Tester Project Team
Usability Report
Product Backlog
Unit, integration, and regression testing
The programmer-driven practice of testing individual software components in isolation, higher-level modules or operations that require components to work together, and repeating these tests whenever any component is modified.
Continuously throughout the SCRUM process
Testing Team Project team Product Owner
Unit tests, Test coverage Reports.
Project Management
Status reporting
Determining project status from information generated by the other development
Continuously throughout the SCRUM process
Project team
PMO
Sprint Burndown support disciplines. Stakeholders Release Burnup
System Documentatio n
Security A&A
PMLC
Project Team System Administration Manual
8. Exceptions
Exceptions to this guidance or parts herein may be granted at the discretion of the PMO and IT D&D if an unavoidable impediment to agility prevents adoption.
9. Enforcement
Enforcement of the Agile process will be done via routine inspections of required deliverable, monitoring of the various status reporting mechanisms as well as generalized customer and team feedback. The Agile working group can work with any project team to help address any deficiencies in the project.
10. Feedback
The Software Engineering manager will always be open to receiving feedback on the current SDLC processes. The Agile manager within IT D&D will also work with anyone that has feedback on specific Agile implementations.
File details come from the government source that posted it. Updated .