1. Trang chủ
  2. » Luận Văn - Báo Cáo

Improving software quality by using agile principles and techniques of quality management

40 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Improving software quality by using agile principles and techniques of quality management
Tác giả Dang Ngoc Ho
Người hướng dẫn Jacques Martin
Trường học Ho Chi Minh City Open University
Chuyên ngành Master in Business Quality and Performance Management
Thể loại Master Final Project
Năm xuất bản 2018
Thành phố Ho Chi Minh City
Định dạng
Số trang 40
Dung lượng 1,64 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • 1. Corporate environment (brief) (9)
  • 2. Presentation of the problems (9)
  • 3. Criticality of these problems (9)
  • PART 1: Analysis of software quality (10)
  • Chapter 1: Quality tools and techniques for Software Development (10)
    • 1. Agile Software Development Process Audit (10)
    • 2. Code Quality Audit (12)
    • 3. Software Testing quality audit (13)
    • 4. Team performance quality audit (16)
  • Chapter 2: Deficiencies of software quality (18)
    • 1. Weak Scale Development Process for Big Projects (18)
    • 2. Low code quality of software developers (18)
    • 3. Lack of Automation Testing for Big Software Projects (19)
    • 4. Low Team Performance (20)
  • PART 2: Improving software quality performance (23)
  • Chapter 1: Possible solutions to solve these problems (23)
    • 1. Apply Scaled Agile Process Solutions (24)
    • 2. Apply Agile Code Quality Solutions (29)
    • 3. Apply Agile Automation Testing Solutions (31)
    • 2. Apply High Performance Agile Teams Solutions (32)
  • Chapter 2: Performance Improvement (38)
    • 1. Scale Development Process Performance Result (38)
    • 2. Code Quality Result (18)
    • 3. Software Testing Quality Performance Result (38)
    • 4. Team Performance Result (18)

Nội dung

Corporate environment (brief)

VinaCreator is a leading company in Marketing Technology solutions for Digital

Transformation in Vietnam & South East Asia They help businesses to maximize efficiency and productivity through the application of Big Data into strategic business goals:

During the 10 years journey of service providing, VinaCreator is a top service provider for more than 300 clients from various industries.

Presentation of the problems

Last year at VinaCreator, the expansion of large software teams and the management of multiple complex projects presented significant challenges for software development managers.

 Problem 1: There are many software projects which have been to rework with increasing a lot efforts, time and money due to weak scale development process, tools and techniques

Undetected technical debt during the development phase leads to low-quality code, resulting in numerous defects during the delivery and support stages.

As software becomes increasingly complex due to the addition of new features, regression testing presents a significant challenge, often compounded by limited time and human resources.

 Problem 4: The performance of team is not high due to high turnover ratio, low employee performance and leadership skill does not meet expectation.

Criticality of these problems

VinaCreator is struggling to deliver high-quality software on time and within budget for large and complex projects, which has hindered the company's growth If these issues are not addressed promptly, VinaCreator risks losing clients and damaging its reputation.

Quality tools and techniques for Software Development

Agile Software Development Process Audit

Agile software development emphasizes short cycles known as sprints to foster ongoing improvement in product or service development Currently, VinaCreator implements the Agile Software Development Process using the Scrum framework for all its software projects.

The explanation below is briefing for Agile Scrum framework

(Source: http://www.techtammina.com)

Product owner Defining stories, prioritizing, the team backlog, review, and accepting stories

Scrum master Applying lean-agile leadership, agile process facilitation, enabling the team, and removal of impediments

Development team Group of individuals responsible for defining building, and testing components/features within their agile process

The Scrum framework activities for software development projects are below

1 A product owner collect requirements from all stakeholders and prioritize them in a product backlog

2 During Sprint Planning meeting, the team pulls a small chunk from the top of that wish list, a sprint backlog, and decides how to implement those pieces

3 The team has a sprint (usually one to four weeks) to complete these items in sprint backlog,

4 The team using Daily Scrum meeting to assess its progress by Burndown charts

5 The Scrum Master keeps the team focused on its goal in the sprint

6 At the end of the sprint, the team uses the Sprint Review meeting to showcase the work of the team The finished work should be potentially shippable: ready to hand to a customer, put on a store shelf, or show to a stakeholder

7 The Sprint Retrospective meeting helps the team understand what worked well–and what didn't

8 As the next sprint begins, the team chooses another chunk of the product backlog and begins working again

VinaCreator has a proven track record of success with individual teams on small projects; however, it currently struggles to effectively apply these practices to larger, more complex projects As a result, software development managers are compelled to implement various methods to audit the existing software development processes To address this issue, the company has established specific audit objectives and approaches.

 Ensure the project is being delivered using an agreed Agile approach

 Validate that the Product Owner and Scrum Master are competent

 Assess the Backlogs of work to be completed

 Ensure engagement for the Agile Teams

 Ensure that the customer’s requirements are being managed

1 Interview o Conduct in-depth interviews including the Sponsor, Scrum Master, Product Owner and Sprint team members o Conduct interviews with vendors, suppliers, consultants and other external resources, if they are included in the management of this project o Conduct interviews with any key stakeholders who will be impacted by the process

2 Review and observation o Observe the daily Scrum stand-up meetings o Observe the Sprint Planning meeting o Observe the Sprint Review meeting o Observer Sprint Retrospective Meeting o Review how the Sprint Team members were selected o Review the competencies of the Scrum Master and Sprint Team members o Review how to use current agile project management tools and templates o Review the Product Backlog and Sprint Backlogs and how stories were broken down into these backlogs o Review how change requests and risks have been managed o Review the Sprint Burndown chart and other artifacts

3 Analyze the audit data o Analyze the information collected from the interviews o Consolidate the findings from the review of project artifacts o Analyze the observations from the meetings o Validate that the Sprint team members are being effectively and efficiently utilized o Analyze the observed issues, concerns and challenges.

Code Quality Audit

High-quality code is characterized by its flexibility, testability, and readability Companies recognize that investing in the maintenance of superior source code is a long-term strategy Although this process requires considerable time and effort, it ultimately provides significant competitive advantages.

Understanding code quality allows software developers to accurately estimate the effort and time required for future tasks, enabling them to address technical debt and enhance overall code quality This, in turn, leads to improved software products.

To ensure high-quality code, it's essential to establish code metrics that offer developers valuable insights into their work Utilizing code quality analysis tools like SonarQube and Codacy can significantly reduce effort, save time, and enhance accuracy in tracking code quality These tools evaluate code style, security, duplication, complexity, and coverage with each change, effectively monitoring code quality throughout the development process.

The company utilizes SonarQube for centralized automated code checks, featuring over 20 analyzers that support major programming languages to identify various quality issues It generates detailed reports on duplicated code, coding standards, unit tests, code coverage, complexity, comments, bugs, and security vulnerabilities Additionally, SonarQube tracks metrics history and provides evolution graphs, highlighting problematic areas in the source code that need inspection or improvement.

Figure 2 : SonarQube Dashboard (Source: https://www.sonarqube.org/)

Software Testing quality audit

VinaCreator emphasizes the importance of quality assurance assessments and analysis in agile development, spanning from software design solutions architecture to release and maintenance The company employs various testing methodologies to enhance software quality effectively.

 Functional tests – To ensure that software performance meets customer and enterprise requirements

 Usability tests – To ensure a user-friendly interface

 Regression tests – To ensure that changes, fixes, additions, or patches to software applications have not obstructed existing software functions

 Defect analysis – To track and analyze existing and projected defects throughout phases of software development and even after release

 Performance tests – To ensure that application/system interactions provide a stable user interface Performance tests evaluate multiple components to assess the stability of a user environment

Brian Marick, a key figure in Extreme Programming (XP) and an author of the Agile Manifesto, played a significant role in pioneering Agile testing by introducing a matrix that outlines the rationale for testing This foundational concept was further elaborated in the book "Agile Testing" and adapted for the scaling Agile framework in "Agile Software Requirements." The accompanying figure enhances the original matrix by providing clear guidance on what to test and the appropriate timing for these tests.

After extensive testing methods, software development managers compile testing reports that provide valuable metrics for analyzing software quality These Agile testing metrics are essential for assessing the effectiveness of the development process and ensuring high-quality software delivery.

Team performance quality audit

VinaCreator leverages the assessment tools from the Ken Blanchard Company to pinpoint gaps in high-performance characteristics within their team This high-performance framework, encapsulated in the acronym PERFORM, guides their evaluation process Additionally, the company conducts thorough reviews of employee performance to ensure continuous improvement and development.

A high-performance team is united by a clear sense of purpose and shared values, ensuring that each member understands their responsibilities and is committed to achieving collective goals Without clarity in purpose and values, the team's effectiveness may diminish.

Empowered teams are autonomous groups that collaborate effectively, possessing the authority, expertise, and skills necessary to make independent decisions for their organization They are equipped with access to essential information and resources, enabling them to operate self-sufficiently and drive success.

Team members feel empowered to take risks and express their thoughts, opinions, and feelings openly They embrace diversity, welcoming different perspectives and backgrounds Trust and mutual respect are foundational to their relationships, fostering a supportive environment where colleagues care for and rely on one another.

High-performance teams consist of adaptable employees who are committed to completing tasks and achieving goals These team members willingly share responsibilities and support each other, demonstrating flexibility in response to ever-changing conditions and demands.

A high-performance team is dedicated to maintaining high standards and quality, consistently striving to enhance productivity They employ effective decision-making and problem-solving strategies to reach their objectives, taking great pride in their collective achievements.

In a high-performance team, recognition and appreciation are shared responsibilities among all members and their leader The company values the contributions of the team, with leaders not only acknowledging individual strengths but also fostering an environment where team members appreciate each other This mutual recognition enhances the sense of value among team members, keeping them motivated and engaged.

When team members feel connected to larger goals beyond their individual roles, it fosters positive employee morale This sense of belonging and pride in their contributions enhances confidence and enthusiasm, resulting in a high team spirit.

Deficiencies of software quality

Weak Scale Development Process for Big Projects

Base on software development process audit techniques, VinaCreator has defined some metrics and after that they have audited the process, the result is as below

Lead time for completing each feature JIRA 45 days 40 days 37 days

Cycle time for completing each feature JIRA 43 days 34 days 33 days

Average Velocity (average amount of completed features for many sprint) JIRA 13 15 21

The current software development process is inefficient for large projects, as evidenced by lengthy lead and cycle times for feature completion, along with low average velocity and flow efficiency.

Low code quality of software developers

Base on code quality audit techniques, VinaCreator has defined some metrics and after that they have audited the code quality, the result is as below

Code Quality Metrics Source Project A Project B Project C

Technical Debt SonarQube 168810 min 229713 min 151822 min

Low code coverage in complex projects indicates insufficient unit testing by software developers Consequently, high levels of technical debt, code smell, and security vulnerabilities require developers to invest additional time and effort in addressing these issues As a result, software development managers must prioritize improving code quality among their teams.

Lack of Automation Testing for Big Software Projects

Base on software testing audit techniques, VinaCreator has defined some metrics and after that they have audited testing quality of these projects, the result is as below

Software Testing Metrics Source Project A Project B Project C Test Execution

Not Available Test Cases JIRA 184 342 414

To be automated Test Cases JIRA 0 0 0

Test Cases ready for Automation JIRA 0 0 0

Test Cases for manually testing JIRA 590 609 668

Test Cases ready for manually testing JIRA 206 267 254

The high number of total defects, major defects, and medium severity defects indicates poor software quality The reliance on manual testing due to the extensive number of test cases, coupled with a lack of automation for regression testing, necessitates additional tester resources and time In large projects, this often leads to increased human errors among testers To enhance quality and efficiency, software development managers should implement automation testing techniques to minimize time, effort, and human mistakes within testing teams.

Low Team Performance

Base on high performace team audit techniques, VinaCreator has defined some metrics and after that they have audited the team performance of these projects, the result is as below

Team Performance Source Project A Project B Project C

Clear Roles and Responsibilities Team Members

Competent Team Members Team Members

Creative Problem-Solving Team Members

Effective Conflict Resolution Team Members

Effective Time Management Team Members

Recognition and appreciation Team Members

Software development managers face the challenge of enhancing team performance due to numerous low scores in areas such as collaboration and information sharing The low Information Sharing score indicates a strong desire among team members for improved communication with both managers and colleagues.

Competent Team Members and Creative Problem-Solving score provided that team members have to be improved their skills more to meet the project requirement

Managers should focus on enhancing their leadership and management skills by carefully selecting team members to foster diversity, flexibility, and effective conflict resolution Additionally, implementing recognition and appreciation methods is essential for maintaining high morale among team members.

For employees, the performance result is as below

Employee Performance Source Project A Project B Project C

Improve Performance of Project Manager (also take Scrum Master role)

Schedule Performance Index (SPI) of each project Project 0.55 0.37 0.82

Cost Performance Index (CPI) of each project Finance 0.64 0.57 0.9

Return on Investment (ROI) of each project Finance 0.7 0.75 1

Complete all project management courses (%) LMS 55% 66% 70%

Improve Performance of Business Analyst / Product Owner

Number of requirements that had to be reworked on due to unclear or wrong

Number of missing requirements JIRA 25 26 23

Number of delay days after due date JIRA 143 90 77

Number of unnecessary additional requirements JIRA 23 30 19

Complete all business analytics courses (%) LMS 47% 53% 68%

Improve Performance of Software Developer

Number of defect per feature in testing phase JIRA 12 9 7

Number of re-work tasks per feature JIRA 14 10 9

Number of delay days after due date JIRA 12 9 9

Complete all software development courses (%) LMS 46% 52% 55%

Improve Performance of Software Tester

Number of major defects after release software JIRA 14 12 20

Number of delay days after due date JIRA 8 11 12

Complete all testing courses (%) LMS 55% 37% 45%

Improve Performance of Deployment developer

Number of deployment errors per deployment request JIRA 4 3 3

Number of delay days after due date JIRA 2 2 2

Software development managers are observing that the Cost Performance Index (CPI), Schedule Performance Index (SPI), and Rate of Learning (ROL) for project managers are all below 1, indicating poor project and managerial performance Additionally, the team morale score stands at just 2, highlighting the need for significant improvement The high number of delay and rework days suggests that employee performance is failing to meet project requirements and customer expectations Furthermore, with less than 80% of courses completed, the company must reassess its training programs and enhance employee engagement in their learning initiatives.

Possible solutions to solve these problems

Apply Scaled Agile Process Solutions

a) Apply Scaled Agile Framework for large organization

To manage well multiple projects by agile methodology, the company is going to use the Scaled Agile Framework® (SAFe) by some reasons as below

This framework offers a recognized, industry-standard approach to implement lean and agile principles throughout all levels of an organization, aligning business and engineering roles to enhance value delivery for both customers and the enterprise.

 It considers not only the development of code, but architecture, project funding, and governance

 It maximizes the speed of product or service delivery from initial idea to release, and from customer feedback to enhancements, providing a 360-degree build-measure- learn feedback cycle

Figure 5: Scaled Agile Framework ( Source: http://www.scaledagileframework.com/ )

VinaCreator is implementing the scaling agile solution from the "Scaling Agile with Atlassian and SAFe" whitepaper by Atlassian and CPrime to effectively manage large software projects within complex organizational hierarchies and structures.

The portfolio level emphasizes the generation of ideas, which are collected through an intake funnel These ideas undergo assessment for their economic and business feasibility, and the approved epics are subsequently evaluated at the program levels.

 Program level – The program teams break those initiatives into features, establishes dependencies, estimates, and bundles these into program backlog

 Team level – Teams are focused on development and delivery of planned feature functionality and track these items

Figure 6: Scaling Agile Solutions for Large Organization

To ensure that all requirements from stakeholder are captured, analyzed and communicated correctly, agile teams have to follow the agile requirement management process as below

Step 1: Get new requirement / or Change Request

 Product Owners capture requirement from stakeholders

 Person In Charge: Product Owner

 Output: Requirement Discovery meeting notes

Step 2: Create Business Requirement Documents

 Product Owners analyze and write business requirements documents

 Person In Charge: Product Owner

Step 3: Split each Business Requirement into Epic

 Product Owners discuss together to break down each requirement into epics

 Person In Charge: Product Owner

Step 4: Split each Epic into Features

 Product Owners discuss together to break down each epic into features

 Person In Charge: Product Owner

 Product Owners discuss together to break down each feature into user stories

 Person In Charge: Product Owner

Step 6: Break down each User Story into development tasks

 Product Owners conduct sprint planning meeting with development team to walk- through the user stories

 Development team break down each user story into development tasks

 Person In Charge: Product Owner, Development Team

 Output: Development Tasks (document, coding, testing, deployment)

To manage the requirements, the company is using the Product Backlog sheet template as below

US ID Sprint Epic Feature User Story JIRA ID

Import user account from file into LDAP IUICV-2417

Import auditor authority matrix from file into LDAP IUICV-2418

Export auditor authority matrix to File IUICV-2420

US5 2 Common User service Log in IUICV-2421 b) Use tools for support SAFe

Jira Software is the leading tool for agile teams in software development, offering customizable requirements, workflows, permissions, and notifications It features virtual scrum and kanban boards that enable teams to collaboratively manage backlogs, deliver work efficiently, and utilize real-time agile reporting.

 Portfolio for Jira provides a centralized interface for managing cross-team requirements, resources, and schedules with a customizable hierarchy.

 Confluence is the place where agile teams create plans discuss options, and record decisions It is used for knowledge bases repository of the company c) Apply JIRA software development workflow

For using JIRA software development workflow consistently on multiple agile teams, the company has created the workflow as below

Figure 7: Agile JIRA software development workflow

1 Reporter Ticket created with status “Open” (assigned to Project Lead by default)

2 Project Leader Queries assigned tickets and assign to himself or Team Lead

2 Assign ticket to himself or an owner

1 Change status of the tickets to “In-Progress” (this indicates that he/she starts working on the tickets)

3 Update root cause, resolution, test result and code revision once complete

4 Change ticket status to “Resolved“

5 Assign ticket to Dev Lead

1 Verifies resolution, test result, and review code

2 Update ticket status to “Ready for Verifying“ if pass including a note indicating a Build # where the tickets go to and assign ticket to Reviewer Else re-assign ticket to the owner and update ticket status to “Assigned”

1 Change status of the tickets to “Verify In-Progress” (this indicates that he/she starts working on the tickets)

2 Verify tickets on the Build specified at step 4

3 Update status of tickets to “Done” if pass, and assign ticket to Project Leader Else, update status of tickets to

“Unsolved“ and assign ticket to Dev Lead

7 Project Leader Queries “Done” ticket and assign to Reporter

Verify again Done tickets and change ticket status to Close if pass, else change tickets’ status to “Re-Open” and assign to Project Leader

Apply Agile Code Quality Solutions

a) Apply Code Review Process and Best Practices

1 Author of change generates a patch and sends it to the code review system

2 Author invites his teammates to review the code

3 Code review participants are adding comments and suggestions on code improvement

4 Author either follows the suggestions and updates the code or rejects them

5 The code review is updated by author and a new review iteration is started

6 When all debates around the change are finished the code review is approved and the change is merged into the repository b) Apply Coding Standards and Code Documentation

Coding Standards are essential guidelines for specific programming languages that recommend best practices and styles By adhering to these standards, software developers enhance the readability of their source code, facilitating easier software maintenance.

Code documentation is a process by which a programmer documents his or her code

Effective code documentation is essential for software developers, as it improves code quality and streamlines the code review process Clear documentation enhances the clarity of the source code, making it easier for others to understand, use, and maintain.

Although there are a lot of benefits above, these are time-consuming processes Therefore, the company should use supportive tools for code quality c) Use supportive tools for code quality

Collaborator is an innovative code review tool that facilitates the review of code, user stories, and test plans within a transparent and collaborative environment, ensuring that the entire team stays informed about any changes made to the code in real-time.

SonarLint is a powerful code analyzer that highlights issues in real-time with markers on open files, functioning like a spell checker for coding It features an issues summary table for selected components within the IDE, detailing the creation time of each issue Additionally, SonarLint offers explanations to enhance understanding of the identified problems and their implications, ensuring developers can address code quality effectively.

 Doc-O-Matic is a software source code documentation and Help authoring tool Doc-

O-Matic takes source code and comments, adds conceptual topics and external input and produces documentation from it With its single-source approach, Doc-O-

Matic generates many different kinds of output from a single documentation base

Figure 9: SonarLint for Code Quality (Source: https://www.sonarqube.org/)

Apply Agile Automation Testing Solutions

Automation Testing involves utilizing specialized software to execute a suite of test cases efficiently This software not only inputs test data into the system but also compares the expected outcomes with the actual results, ultimately generating comprehensive test reports.

VinaCreator should use the automated testing by following reasons:

 Reduces time and testing efforts by running most of the test as automated ones, thus, tests can to test software builds faster

 Reduces human resources costs for test execution

 Avoids partial/cumulative testing when there is no time or resources left

 Makes regression testing banal since automated regression tests can be run alongside other tests

 Avoids human error when running boring repetitive tests

 Developers can detect bugs as early as possible and avoiding greater problems afterward b) Follow Agile Automation Testing process

The company has created the agile automation testing process as below

Figure 10: Agile Automation Testing process c) Use Agile Automation Testing Tool

The company has chosen the TestComplete because it is fast and easy to automate UI functional tests across desktop, mobile, & web applications

TestComplete software can help the company on some benefits

Apply High Performance Agile Teams Solutions

The software development managers should build high performance agile teams by following the process as below a) Identify missing elements of your team charter

They are the foundation for the Team Charter They provide the context for the team’s existence

Team Purpose This is the reason for the team’s existence It states: What the team does? For Whom? Why?

Identify missing elements of your team charter.

Apply situational leadership on each stage of team development

Create an enviroment of trust, empowerment and flexible working

Train employee about Agile Software Development principles and techniques

They are the enduring principles that guide the team’s actions and the ground rules that identify appropriate behaviors for team members

To achieve the team's purpose, it is essential to focus on two key areas: Team Goals and Team Member Roles Team Goals define the measurable outcomes required for success, while Team Member Roles outline the specific responsibilities of each member in reaching these objectives.

Team Practices They are the strategies and processes that need to be clarified and set up in order to accomplish the work of the team

Communication Strategies They are the processes for sharing information both within the team and outside the team

The article outlines the decision-making process and communication strategies within a team, while also defining the accountability standards for team members regarding their commitments.

Resources They are the tangible materials and organizational support the team needs to accomplish its goals b) Apply situational leadership on each stage of team development

The software developer should assess team’s overall stage of team development model of Bruce Tuckman

Figure 11: Stage of Team Development

 Forming: High degree of guidance needed from manager, individual roles are unclear, process not well established

 Storming: Understanding how team decisions are made, purpose is clear but team relationship are blurry

 Norming: Relationships are well-understood in the team, commitment to team goals, beginning to optimize processes

 Performing: Team is performing well, focus is on being strategic, team is running well with little oversight

Software managers should effectively apply the appropriate leadership style for each team member by utilizing the DISC personality test model developed by William Moulton Marston and the Situational Leadership Model created by Paul Hersey and Ken Blanchard Following a statistical analysis of team members, managers can implement a cohesive leadership strategy for the entire team, as outlined in the accompanying table.

Figure 12: DISC personality test mode

( Source: https://www.bishophouse.com )

 Link the team’s work to the organization’s purpose and goals

 Provide structure for the development of the team charter

 Assess training and resource needs

 Orient team members to one another

 Redefine or clarify the team’s purpose, norm, goals, and roles

 Develop both task and team skills

 Recognize helpful behaviors and small accomplishments

 Encourage different points of view

 Involve team members in decision making, problem solving, and conflict management

 Remove obstacles to task accomplishment

 Recognize and celebrate team accomplishments

 Evaluate results and incorporate lessons learned

 Promote new challenges and higher standards c) Create an enviroment of trust, empowerment and flexible working

When team members experience trust and empowerment from both managers and colleagues, they are more likely to actively contribute to their work To foster this environment, software managers should implement best practices that encourage open communication, decision-making autonomy, and flexible working methods.

 Becomen supportive and trusted manager

 Give team members authority to make decision

 Recognize and reward who perform best at keeping their commitment high

 Encourage and address regular feedback from everyone, about everyone

 Give team the remote working tools for flexible working

 Do not micromanage d) Train employee about Agile Software Development principles and techniques

To ensure the team will work correctly the aigle methdoloy, the team members should be trainned through Agile Software Developer courses

Lean-Agile Mindset 6 Workshop All members

Build-In Quality Methodology 6 Workshop All members Agile Automation Testing Techniques 16 Workshop Tester

Continuous Code Quality Techniques 6 Workshop Developer

Agile Software Development with Scrum 6 Workshop All member Scaled Agile Project Management Framework 12 Workshop Project Manager Agile Requirement with User Story 9 Workshop Product Owner

Agile Continuos Deployement 12 Workshop DevOps

Performance Improvement

Code Quality Result

1 Weak Scale Development Process for Big Projects

Base on software development process audit techniques, VinaCreator has defined some metrics and after that they have audited the process, the result is as below

Lead time for completing each feature JIRA 45 days 40 days 37 days

Cycle time for completing each feature JIRA 43 days 34 days 33 days

Average Velocity (average amount of completed features for many sprint) JIRA 13 15 21

The lengthy lead and cycle times for feature completion, coupled with low average velocity and flow efficiency, indicate that the current software development process is inefficient for large projects.

2 Low code quality of software developers

Base on code quality audit techniques, VinaCreator has defined some metrics and after that they have audited the code quality, the result is as below

Code Quality Metrics Source Project A Project B Project C

Technical Debt SonarQube 168810 min 229713 min 151822 min

Low code coverage in complex projects indicates insufficient unit testing by software developers, leading to high levels of technical debt, code smells, and security vulnerabilities Consequently, software development managers must prioritize improving code quality to reduce these issues and enhance overall project health.

3 Lack of Automation Testing for Big Software Projects

Base on software testing audit techniques, VinaCreator has defined some metrics and after that they have audited testing quality of these projects, the result is as below

Software Testing Metrics Source Project A Project B Project C Test Execution

Not Available Test Cases JIRA 184 342 414

To be automated Test Cases JIRA 0 0 0

Test Cases ready for Automation JIRA 0 0 0

Test Cases for manually testing JIRA 590 609 668

Test Cases ready for manually testing JIRA 206 267 254

The high number of total defects, major defects, and medium severity defects indicates poor software quality Additionally, reliance on manual testing due to a large volume of test cases, coupled with a lack of automated regression testing, necessitates more tester resources and time In large projects, this often leads to increased human errors among testers Consequently, software development managers should implement automation testing techniques to minimize time, effort, and human mistakes, thereby enhancing the effectiveness of quality testing teams.

Base on high performace team audit techniques, VinaCreator has defined some metrics and after that they have audited the team performance of these projects, the result is as below

Team Performance Source Project A Project B Project C

Clear Roles and Responsibilities Team Members

Competent Team Members Team Members

Creative Problem-Solving Team Members

Effective Conflict Resolution Team Members

Effective Time Management Team Members

Recognition and appreciation Team Members

Software development managers must enhance team performance due to numerous low scores, particularly in Information Sharing This indicates a strong desire among team members for improved communication with both managers and colleagues.

Competent Team Members and Creative Problem-Solving score provided that team members have to be improved their skills more to meet the project requirement

Managers should focus on enhancing their leadership and management skills by carefully selecting team members to foster diversity, flexibility, and effective conflict resolution Additionally, they need to implement recognition and appreciation strategies to maintain high morale among team members.

For employees, the performance result is as below

Employee Performance Source Project A Project B Project C

Improve Performance of Project Manager (also take Scrum Master role)

Schedule Performance Index (SPI) of each project Project 0.55 0.37 0.82

Cost Performance Index (CPI) of each project Finance 0.64 0.57 0.9

Return on Investment (ROI) of each project Finance 0.7 0.75 1

Complete all project management courses (%) LMS 55% 66% 70%

Improve Performance of Business Analyst / Product Owner

Number of requirements that had to be reworked on due to unclear or wrong

Number of missing requirements JIRA 25 26 23

Number of delay days after due date JIRA 143 90 77

Number of unnecessary additional requirements JIRA 23 30 19

Complete all business analytics courses (%) LMS 47% 53% 68%

Improve Performance of Software Developer

Number of defect per feature in testing phase JIRA 12 9 7

Number of re-work tasks per feature JIRA 14 10 9

Number of delay days after due date JIRA 12 9 9

Complete all software development courses (%) LMS 46% 52% 55%

Improve Performance of Software Tester

Number of major defects after release software JIRA 14 12 20

Number of delay days after due date JIRA 8 11 12

Complete all testing courses (%) LMS 55% 37% 45%

Improve Performance of Deployment developer

Number of deployment errors per deployment request JIRA 4 3 3

Number of delay days after due date JIRA 2 2 2

Software development managers are observing concerning metrics, as the Cost Performance Index (CPI), Schedule Performance Index (SPI), and Rate of Learning (ROL) for project managers are all below 1, indicating poor project performance Additionally, team morale scores are stagnant at 2, highlighting the need for improvement The high number of delay and rework days suggests that employee performance is falling short of project requirements and customer expectations Furthermore, with less than 80% of training courses completed, it is crucial for the company to reassess its training programs and enhance employee engagement in their learning.

PART 2: Improving software quality performance

Chapter 1: Possible solutions to solve these problems

Based on these audit results, VinaCreator’s software development managers decided to apply agile principle and techniques to solve these problems

Firstly, these managers have to share for the software teams about Agile Manifesto and 12 Agile Principles as below to helps their team members have the agile mindset

 Individuals and interactions over processes and tools

 Working software over comprehensive documentation

 Customer collaboration over contract negotiation

 Responding to change over following a plan

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

2 Welcome changing requirements, even late in development Agile processes harness change for the customer's competitive advantage

3 Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale

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

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

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

7 Working software is the primary measure of progress

8 Agile processes promote sustainable development The sponsors, developers, and users should be able to maintain a constant pace indefinitely

9 Continuous attention to technical excellence and good design enhances agility

10 Simplicity the art of maximizing the amount of work not done is essential

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

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

Secondly, they should apply these solutions as below

1 Apply Scaled Agile Process Solutions a) Apply Scaled Agile Framework for large organization

To manage well multiple projects by agile methodology, the company is going to use the Scaled Agile Framework® (SAFe) by some reasons as below

This framework offers a recognized, industry-standard approach for implementing lean and agile principles throughout all levels of an organization, effectively aligning business and engineering roles to enhance value delivery to both customers and the business itself.

 It considers not only the development of code, but architecture, project funding, and governance

 It maximizes the speed of product or service delivery from initial idea to release, and from customer feedback to enhancements, providing a 360-degree build-measure- learn feedback cycle

Figure 5: Scaled Agile Framework ( Source: http://www.scaledagileframework.com/ )

VinaCreator leverages the "Scaling Agile with Atlassian and SAFe" whitepaper by Atlassian and CPrime to implement scaling agile solutions for large software projects within complex organizational hierarchies and structures.

The portfolio level emphasizes the generation of ideas through an intake funnel, where these ideas are assessed for their economic and business viability Once approved, the epics are then evaluated at the program level.

 Program level – The program teams break those initiatives into features, establishes dependencies, estimates, and bundles these into program backlog

 Team level – Teams are focused on development and delivery of planned feature functionality and track these items

Figure 6: Scaling Agile Solutions for Large Organization

To ensure that all requirements from stakeholder are captured, analyzed and communicated correctly, agile teams have to follow the agile requirement management process as below

Step 1: Get new requirement / or Change Request

 Product Owners capture requirement from stakeholders

 Person In Charge: Product Owner

 Output: Requirement Discovery meeting notes

Step 2: Create Business Requirement Documents

 Product Owners analyze and write business requirements documents

 Person In Charge: Product Owner

Step 3: Split each Business Requirement into Epic

 Product Owners discuss together to break down each requirement into epics

 Person In Charge: Product Owner

Step 4: Split each Epic into Features

 Product Owners discuss together to break down each epic into features

 Person In Charge: Product Owner

 Product Owners discuss together to break down each feature into user stories

 Person In Charge: Product Owner

Step 6: Break down each User Story into development tasks

 Product Owners conduct sprint planning meeting with development team to walk- through the user stories

 Development team break down each user story into development tasks

 Person In Charge: Product Owner, Development Team

 Output: Development Tasks (document, coding, testing, deployment)

To manage the requirements, the company is using the Product Backlog sheet template as below

US ID Sprint Epic Feature User Story JIRA ID

Import user account from file into LDAP IUICV-2417

Import auditor authority matrix from file into LDAP IUICV-2418

Export auditor authority matrix to File IUICV-2420

US5 2 Common User service Log in IUICV-2421 b) Use tools for support SAFe

Jira Software is the leading tool for agile teams in software development, offering customizable requirement types, workflows, permissions, and notifications It features virtual scrum and kanban boards that enable teams to collaboratively manage backlogs, deliver work efficiently, and utilize real-time agile reporting for enhanced project tracking.

 Portfolio for Jira provides a centralized interface for managing cross-team requirements, resources, and schedules with a customizable hierarchy.

 Confluence is the place where agile teams create plans discuss options, and record decisions It is used for knowledge bases repository of the company c) Apply JIRA software development workflow

For using JIRA software development workflow consistently on multiple agile teams, the company has created the workflow as below

Figure 7: Agile JIRA software development workflow

1 Reporter Ticket created with status “Open” (assigned to Project Lead by default)

2 Project Leader Queries assigned tickets and assign to himself or Team Lead

2 Assign ticket to himself or an owner

1 Change status of the tickets to “In-Progress” (this indicates that he/she starts working on the tickets)

3 Update root cause, resolution, test result and code revision once complete

4 Change ticket status to “Resolved“

5 Assign ticket to Dev Lead

1 Verifies resolution, test result, and review code

2 Update ticket status to “Ready for Verifying“ if pass including a note indicating a Build # where the tickets go to and assign ticket to Reviewer Else re-assign ticket to the owner and update ticket status to “Assigned”

1 Change status of the tickets to “Verify In-Progress” (this indicates that he/she starts working on the tickets)

2 Verify tickets on the Build specified at step 4

3 Update status of tickets to “Done” if pass, and assign ticket to Project Leader Else, update status of tickets to

“Unsolved“ and assign ticket to Dev Lead

7 Project Leader Queries “Done” ticket and assign to Reporter

Verify again Done tickets and change ticket status to Close if pass, else change tickets’ status to “Re-Open” and assign to Project Leader

2 Apply Agile Code Quality Solutions a) Apply Code Review Process and Best Practices

1 Author of change generates a patch and sends it to the code review system

2 Author invites his teammates to review the code

3 Code review participants are adding comments and suggestions on code improvement

4 Author either follows the suggestions and updates the code or rejects them

5 The code review is updated by author and a new review iteration is started

6 When all debates around the change are finished the code review is approved and the change is merged into the repository b) Apply Coding Standards and Code Documentation

Coding Standards are essential guidelines for specific programming languages that recommend best practices, styles, and methods By adhering to these standards, software developers enhance the readability of their source code, facilitating easier software maintenance.

Code documentation is a process by which a programmer documents his or her code

Effective code documentation is essential for software developers, as it improves code quality and facilitates smoother code reviews Well-documented code enhances the clarity of the source code, making it easier to use and maintain over time.

Although there are a lot of benefits above, these are time-consuming processes Therefore, the company should use supportive tools for code quality c) Use supportive tools for code quality

Collaborator is an efficient code review tool designed to enhance collaboration by reviewing code, user stories, and test plans within a transparent framework This tool ensures that the entire team is instantly updated on any changes made to the code, fostering seamless communication and teamwork.

SonarLint is a powerful code analyzer that identifies code issues in real-time, using markers on open files It features an issues summary table for selected components within the IDE, detailing the creation time of each issue Functioning like a spell checker for code, it allows developers to spot problems as they write Additionally, SonarLint provides clear explanations to help users understand the identified issues and their implications.

 Doc-O-Matic is a software source code documentation and Help authoring tool Doc-

O-Matic takes source code and comments, adds conceptual topics and external input and produces documentation from it With its single-source approach, Doc-O-

Matic generates many different kinds of output from a single documentation base

Figure 9: SonarLint for Code Quality (Source: https://www.sonarqube.org/)

3 Apply Agile Automation Testing Solutions a) Benefits of Automation Testing

Team Performance Result

1 Weak Scale Development Process for Big Projects

Base on software development process audit techniques, VinaCreator has defined some metrics and after that they have audited the process, the result is as below

Lead time for completing each feature JIRA 45 days 40 days 37 days

Cycle time for completing each feature JIRA 43 days 34 days 33 days

Average Velocity (average amount of completed features for many sprint) JIRA 13 15 21

The current software development process is inefficient for large projects, as it exhibits long lead and cycle times for feature completion, coupled with low average velocity and flow efficiency.

2 Low code quality of software developers

Base on code quality audit techniques, VinaCreator has defined some metrics and after that they have audited the code quality, the result is as below

Code Quality Metrics Source Project A Project B Project C

Technical Debt SonarQube 168810 min 229713 min 151822 min

Code coverage is notably low in complex projects, indicating that software developers are not conducting sufficient unit testing Consequently, there is a high presence of technical debt, code smells, and security vulnerabilities, which require developers to invest additional time and effort to address these issues As a result, software development managers must prioritize enhancing code quality among their teams.

3 Lack of Automation Testing for Big Software Projects

Base on software testing audit techniques, VinaCreator has defined some metrics and after that they have audited testing quality of these projects, the result is as below

Software Testing Metrics Source Project A Project B Project C Test Execution

Not Available Test Cases JIRA 184 342 414

To be automated Test Cases JIRA 0 0 0

Test Cases ready for Automation JIRA 0 0 0

Test Cases for manually testing JIRA 590 609 668

Test Cases ready for manually testing JIRA 206 267 254

The high number of total defects, major defects, and medium severity defects indicates poor software quality The reliance on manual testing due to the extensive number of test cases, coupled with a lack of automation for regression testing, necessitates additional tester resources and time In large projects, this increases the likelihood of human errors among testers To enhance efficiency and minimize mistakes, software development managers should implement automation testing techniques in their quality assurance processes.

Base on high performace team audit techniques, VinaCreator has defined some metrics and after that they have audited the team performance of these projects, the result is as below

Team Performance Source Project A Project B Project C

Clear Roles and Responsibilities Team Members

Competent Team Members Team Members

Creative Problem-Solving Team Members

Effective Conflict Resolution Team Members

Effective Time Management Team Members

Recognition and appreciation Team Members

Software development managers face the challenge of enhancing team performance due to a significant number of low scores, particularly in areas of collaboration and information sharing The low Information Sharing score indicates a strong desire among team members for improved communication with both managers and colleagues, highlighting the need for more effective interaction within teams.

Competent Team Members and Creative Problem-Solving score provided that team members have to be improved their skills more to meet the project requirement

Managers should focus on enhancing their leadership and management skills by carefully selecting team members to foster diversity, flexibility, effective conflict resolution, and time management Additionally, implementing recognition and appreciation methods is essential for maintaining high morale among team members.

For employees, the performance result is as below

Employee Performance Source Project A Project B Project C

Improve Performance of Project Manager (also take Scrum Master role)

Schedule Performance Index (SPI) of each project Project 0.55 0.37 0.82

Cost Performance Index (CPI) of each project Finance 0.64 0.57 0.9

Return on Investment (ROI) of each project Finance 0.7 0.75 1

Complete all project management courses (%) LMS 55% 66% 70%

Improve Performance of Business Analyst / Product Owner

Number of requirements that had to be reworked on due to unclear or wrong

Number of missing requirements JIRA 25 26 23

Number of delay days after due date JIRA 143 90 77

Number of unnecessary additional requirements JIRA 23 30 19

Complete all business analytics courses (%) LMS 47% 53% 68%

Improve Performance of Software Developer

Number of defect per feature in testing phase JIRA 12 9 7

Number of re-work tasks per feature JIRA 14 10 9

Number of delay days after due date JIRA 12 9 9

Complete all software development courses (%) LMS 46% 52% 55%

Improve Performance of Software Tester

Number of major defects after release software JIRA 14 12 20

Number of delay days after due date JIRA 8 11 12

Complete all testing courses (%) LMS 55% 37% 45%

Improve Performance of Deployment developer

Number of deployment errors per deployment request JIRA 4 3 3

Number of delay days after due date JIRA 2 2 2

Software development managers are observing that the Cost Performance Index (CPI), Schedule Performance Index (SPI), and Rate of Learning (ROL) for project managers are all below 1, indicating poor project and managerial performance Additionally, team morale scores are at a low 2, necessitating significant improvements The high number of delay and rework days suggests that employee performance is falling short of project requirements and customer expectations Furthermore, with less than 80% of courses completed, the company must reassess its training programs and enhance employee engagement in their learning processes.

PART 2: Improving software quality performance

Chapter 1: Possible solutions to solve these problems

Based on these audit results, VinaCreator’s software development managers decided to apply agile principle and techniques to solve these problems

Firstly, these managers have to share for the software teams about Agile Manifesto and 12 Agile Principles as below to helps their team members have the agile mindset

 Individuals and interactions over processes and tools

 Working software over comprehensive documentation

 Customer collaboration over contract negotiation

 Responding to change over following a plan

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

2 Welcome changing requirements, even late in development Agile processes harness change for the customer's competitive advantage

3 Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale

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

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

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

7 Working software is the primary measure of progress

8 Agile processes promote sustainable development The sponsors, developers, and users should be able to maintain a constant pace indefinitely

9 Continuous attention to technical excellence and good design enhances agility

10 Simplicity the art of maximizing the amount of work not done is essential

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

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

Secondly, they should apply these solutions as below

1 Apply Scaled Agile Process Solutions a) Apply Scaled Agile Framework for large organization

To manage well multiple projects by agile methodology, the company is going to use the Scaled Agile Framework® (SAFe) by some reasons as below

This framework offers a recognized, industry-standard approach to implementing lean and agile principles throughout all levels of an organization, effectively aligning business and engineering roles to enhance value delivery for both customers and the enterprise.

 It considers not only the development of code, but architecture, project funding, and governance

 It maximizes the speed of product or service delivery from initial idea to release, and from customer feedback to enhancements, providing a 360-degree build-measure- learn feedback cycle

Figure 5: Scaled Agile Framework ( Source: http://www.scaledagileframework.com/ )

VinaCreator is implementing the scaling agile solution outlined in the “Scaling Agile with Atlassian and SAFe” whitepaper by Atlassian and CPrime to enhance software project management within large organizational hierarchies and structures.

The portfolio level emphasizes the generation of ideas through an intake funnel, where they are assessed for economic and business viability Approved epics are subsequently evaluated at the program level to ensure alignment with strategic objectives.

 Program level – The program teams break those initiatives into features, establishes dependencies, estimates, and bundles these into program backlog

 Team level – Teams are focused on development and delivery of planned feature functionality and track these items

Figure 6: Scaling Agile Solutions for Large Organization

To ensure that all requirements from stakeholder are captured, analyzed and communicated correctly, agile teams have to follow the agile requirement management process as below

Step 1: Get new requirement / or Change Request

 Product Owners capture requirement from stakeholders

 Person In Charge: Product Owner

 Output: Requirement Discovery meeting notes

Step 2: Create Business Requirement Documents

 Product Owners analyze and write business requirements documents

 Person In Charge: Product Owner

Step 3: Split each Business Requirement into Epic

 Product Owners discuss together to break down each requirement into epics

 Person In Charge: Product Owner

Step 4: Split each Epic into Features

 Product Owners discuss together to break down each epic into features

 Person In Charge: Product Owner

 Product Owners discuss together to break down each feature into user stories

 Person In Charge: Product Owner

Step 6: Break down each User Story into development tasks

 Product Owners conduct sprint planning meeting with development team to walk- through the user stories

 Development team break down each user story into development tasks

 Person In Charge: Product Owner, Development Team

 Output: Development Tasks (document, coding, testing, deployment)

To manage the requirements, the company is using the Product Backlog sheet template as below

US ID Sprint Epic Feature User Story JIRA ID

Import user account from file into LDAP IUICV-2417

Import auditor authority matrix from file into LDAP IUICV-2418

Export auditor authority matrix to File IUICV-2420

US5 2 Common User service Log in IUICV-2421 b) Use tools for support SAFe

Jira Software is the leading tool for agile teams, offering customizable requirements, workflows, permissions, and notifications It features virtual scrum and kanban boards that enable teams to collaboratively manage backlogs and deliver work efficiently, while also providing real-time agile reports for enhanced project tracking.

 Portfolio for Jira provides a centralized interface for managing cross-team requirements, resources, and schedules with a customizable hierarchy.

 Confluence is the place where agile teams create plans discuss options, and record decisions It is used for knowledge bases repository of the company c) Apply JIRA software development workflow

For using JIRA software development workflow consistently on multiple agile teams, the company has created the workflow as below

Figure 7: Agile JIRA software development workflow

1 Reporter Ticket created with status “Open” (assigned to Project Lead by default)

2 Project Leader Queries assigned tickets and assign to himself or Team Lead

2 Assign ticket to himself or an owner

1 Change status of the tickets to “In-Progress” (this indicates that he/she starts working on the tickets)

3 Update root cause, resolution, test result and code revision once complete

4 Change ticket status to “Resolved“

5 Assign ticket to Dev Lead

1 Verifies resolution, test result, and review code

2 Update ticket status to “Ready for Verifying“ if pass including a note indicating a Build # where the tickets go to and assign ticket to Reviewer Else re-assign ticket to the owner and update ticket status to “Assigned”

1 Change status of the tickets to “Verify In-Progress” (this indicates that he/she starts working on the tickets)

2 Verify tickets on the Build specified at step 4

3 Update status of tickets to “Done” if pass, and assign ticket to Project Leader Else, update status of tickets to

“Unsolved“ and assign ticket to Dev Lead

7 Project Leader Queries “Done” ticket and assign to Reporter

Verify again Done tickets and change ticket status to Close if pass, else change tickets’ status to “Re-Open” and assign to Project Leader

2 Apply Agile Code Quality Solutions a) Apply Code Review Process and Best Practices

1 Author of change generates a patch and sends it to the code review system

2 Author invites his teammates to review the code

3 Code review participants are adding comments and suggestions on code improvement

4 Author either follows the suggestions and updates the code or rejects them

5 The code review is updated by author and a new review iteration is started

6 When all debates around the change are finished the code review is approved and the change is merged into the repository b) Apply Coding Standards and Code Documentation

Coding Standards are essential guidelines for specific programming languages that dictate best practices, styles, and methods By adhering to these standards, software developers enhance the readability of their source code, ultimately facilitating easier software maintenance.

Code documentation is a process by which a programmer documents his or her code

Effective code documentation is essential for software developers, as it improves code quality and facilitates smoother code reviews Well-documented code enhances clarity, making it easier to use and maintain over time.

Although there are a lot of benefits above, these are time-consuming processes Therefore, the company should use supportive tools for code quality c) Use supportive tools for code quality

Collaborator is an innovative code review tool designed to enhance collaboration by transparently reviewing code, user stories, and test plans It ensures that the entire team stays informed about any changes made to the code in real-time, fostering a more efficient development process.

SonarLint is a powerful code analyzer that highlights issues in real-time within open files, much like a spell checker for text It features an issues summary table for selected components in the IDE, detailing the creation time of each issue Additionally, SonarLint offers clear explanations to help developers understand the identified problems and their implications.

 Doc-O-Matic is a software source code documentation and Help authoring tool Doc-

O-Matic takes source code and comments, adds conceptual topics and external input and produces documentation from it With its single-source approach, Doc-O-

Matic generates many different kinds of output from a single documentation base

Figure 9: SonarLint for Code Quality (Source: https://www.sonarqube.org/)

3 Apply Agile Automation Testing Solutions a) Benefits of Automation Testing

Ngày đăng: 04/10/2023, 10:39

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w