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 8 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

Định dạng
Số trang 40
Dung lượng 1,72 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

In the past year, VinaCreator has faced significant challenges as the size of its software teams expanded and the complexity of multiple projects increased, leading to difficulties in effective management and quality assurance by 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 often results in low-quality code, leading to numerous defects in both the delivery and support stages of software Addressing these issues early is crucial for maintaining high software quality and minimizing future complications.

As software becomes increasingly complex due to the addition of new features, the challenge of software testing intensifies, particularly for regression testing, which is often constrained 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 faces significant challenges that hinder its ability to deliver high-quality software on time and within budget for large and complex projects, ultimately affecting the company's growth If these issues are not addressed promptly, VinaCreator risks losing clients and damaging its reputation in the industry.

Quality tools and techniques for Software Development

Agile Software Development Process Audit

Agile software development emphasizes short cycles known as sprints to enhance continuous improvement in product or service development Currently, VinaCreator employs the Agile Software Development Process utilizing 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 in managing small projects; however, it struggles to effectively apply these methodologies to larger, more complex projects Consequently, software development managers are compelled to implement various auditing methods to assess the current software development process 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 A company that prioritizes maintaining superior source code understands that this commitment is a long-term investment Although it requires considerable time and effort upfront, the benefits gained will provide the company with a competitive edge in the marketplace.

By assessing the quality of their code, software developers can better estimate the time and effort required for future tasks, ultimately reducing technical debt and enhancing code quality This proactive approach leads to improved software products overall.

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

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

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

Software Testing quality audit

VinaCreator emphasizes the importance of quality assurance assessments and analysis throughout the software design, release, and maintenance processes, which are crucial for agile development 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 proponent of Extreme Programming (XP) and co-author of the Agile Manifesto, played a crucial role in pioneering Agile testing by introducing a guiding matrix for test reasoning This foundational concept was further refined in "Agile Testing" and expanded upon for scaling Agile methodologies in "Agile Software Requirements." The accompanying figure enhances the original matrix by providing clear guidance on what to test and when, facilitating effective Agile testing practices.

Agile Testing Metrics play a crucial role in evaluating software quality After implementing various testing methods, software development managers compile comprehensive testing reports These metrics are essential for analyzing and ensuring the overall quality of the software.

Team performance quality audit

VinaCreator employs the Ken Blanchard company's assessment to pinpoint gaps in high-performance team characteristics, encapsulated by the acronym PERFORM Additionally, the company evaluates employee performance to enhance overall team effectiveness.

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

Empowered teams are self-sufficient groups that collaborate effectively, possessing the necessary corporate authority, experience, responsibility, and skills to make independent decisions for the organization They are equipped with access to relevant information and resources, enabling them to operate efficiently and drive success.

Team members feel empowered to take risks and express their thoughts, opinions, and feelings without fear of judgment They embrace diversity and actively welcome differing perspectives Trust and mutual respect are fundamental values among colleagues, fostering a supportive environment where team members care for and rely on one another.

High-performance teams consist of adaptable employees who are committed to completing tasks and achieving goals These teams foster a collaborative environment where roles are shared, and team members support each other Their flexibility enables them to respond effectively to ever-changing conditions and demands in the workplace.

A high-performance team is dedicated to maintaining high standards and quality in their work, consistently striving to enhance productivity They employ effective decision-making and problem-solving techniques 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 organization 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 ensures that all members feel valued, which in turn keeps them motivated.

When team members feel connected to larger goals, it significantly boosts employee morale This sense of belonging fosters pride in their contributions, enhancing confidence and enthusiasm within the team As a result, team spirit flourishes, leading to a more motivated and cohesive workforce.

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 for large projects is inefficient, as evidenced by prolonged 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, leading to high levels of technical debt, code smells, and security vulnerabilities This situation requires developers to invest more time and effort in addressing these issues Consequently, software development managers must prioritize improving code quality among their teams to enhance overall project outcomes.

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, the likelihood of human errors increases among testers Consequently, software development managers must implement automation testing techniques to minimize time, effort, and human errors, thereby enhancing the effectiveness of quality 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 must enhance team performance due to the prevalence of 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, effective conflict resolution, and time management Additionally, they should 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 have observed that key performance indicators such as CPI, SPI, and ROL for project managers are all below 1, indicating poor project 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 employees completing their training courses, it is crucial for the company to reassess its training programs and enhance employee engagement in 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 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 leverages the scaling agile solutions outlined in 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 a vetting process to assess their economic and business viability, and the approved epics are subsequently 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 software development among agile teams, 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 reports.

 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 that dictate the recommended programming style, practices, and methods for a specific programming language 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 significantly improves the quality of the code Well-documented code facilitates smoother code reviews, enhances the clarity of the source code, and simplifies its usability and maintenance.

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 reviewing code, user stories, and test plans within a transparent framework This tool ensures that the entire team stays informed about any changes made to the code in real-time, fostering a cohesive development environment.

SonarLint is a powerful code analysis tool that identifies code issues in real-time, similar to a spell checker for text It highlights problems directly in open files and offers a summary table of issues for selected components within the IDE, including the creation time of each issue Additionally, SonarLint provides detailed explanations to help developers understand the identified problems and their implications, enhancing code quality as you code.

 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, input test data into the system, and compare the expected outcomes with the actual results This process also generates comprehensive test reports, enhancing the efficiency and accuracy of the testing phase.

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 successfully fulfill the team's purpose, it is essential to concentrate on key areas such as Team Goals and Team Member Roles Team Goals define the measurable outcomes required for success, while Team Member Roles clarify 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 methods within a team, while also defining the accountability measures that team members must uphold 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, along with the Situational Leadership Model created by Paul Hersey and Ken Blanchard Following a statistical analysis of team members, managers can implement a tailored leadership approach 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 their managers and colleagues, they are more inclined to express their ideas, make decisions, and work flexibly This increased sense of autonomy leads to greater contributions to their work Consequently, software managers should implement the best practices outlined below to foster this environment.

 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 current software development process for large projects is inefficient, characterized by long lead and cycle times for feature completion, as well as 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

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 enhancing code quality to address these issues effectively.

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 levels of total defects, major defects, and medium severity defects indicate poor software quality Additionally, the reliance on manual testing due to the large number of test cases, coupled with the absence of automated regression testing methods, necessitates more tester resources and time In large projects, this increases the likelihood of human errors among testers Consequently, software development managers must implement automation testing techniques to minimize time, effort, and human mistakes within 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 the prevalence of low scores in key areas 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 collaboration within the team.

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 performance Additionally, team morale scores are low 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 courses completed, the company must reassess its training programs and enhance employee engagement in learning initiatives.

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 serves as a recognized, industry-standard approach to implementing lean and agile principles throughout all levels of an organization By integrating business and engineering roles, it enhances the delivery of value 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 solution outlined in 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 through an intake funnel, where these concepts are assessed for their economic and business viability Once vetted, the approved epics undergo evaluation 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, deliver work efficiently, and access real-time agile reports.

 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 advocate for consistent programming style, practices, 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 significantly improves code quality Well-documented code facilitates smoother code reviews, enhances the clarity of the source code, and makes it easier to 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 efficient code review tool that facilitates the review of code, user stories, and test plans within a transparent and collaborative framework This tool ensures that the entire team stays informed about any changes made to the code in real-time, enhancing communication and productivity.

SonarLint is a powerful code analyzer that identifies and highlights code issues in real-time, similar to a spell checker for text It features an issues summary table for selected components within the IDE, detailing the creation time of each issue Additionally, SonarLint offers clear explanations to help developers understand the identified problems and their significance, enhancing the overall coding experience.

 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 for large projects is inefficient, as evidenced by extended lead and cycle times for feature completion, along 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

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, developers require additional time and effort to address these issues, highlighting the urgent need for software development managers to enhance 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 Additionally, the reliance on manual testing due to the large volume of test cases, coupled with a lack of automated regression testing, necessitates more tester resources and time In large projects, this increases the likelihood of human errors among testers Consequently, software development managers must implement automation testing techniques to minimize time, effort, and human mistakes, ultimately enhancing the efficiency 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 are tasked with enhancing team performance due to the prevalence of low scores in areas such as 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 honing their leadership and management skills by carefully selecting team members to foster diversity, flexibility, effective conflict resolution, and efficient time management Additionally, they need to improve recognition and appreciation methods 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 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 performance Additionally, the team morale score stands at only 2, highlighting the need for significant 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 courses completed, the company must reassess its training programs and enhance employee engagement in learning initiatives.

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 By integrating business and engineering roles, it enhances the delivery of value 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 implements the scaling agile solution for large software projects within complex organizational hierarchies, as outlined in the “Scaling Agile with Atlassian and SAFe” whitepaper by Atlassian and CPrime.

The portfolio level emphasizes the generation of ideas through an intake funnel, where each concept is assessed for its economic and business viability Once approved, these ideas, referred to as epics, are further evaluated at the program level to ensure their 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 requirement types, workflows, permissions, and notifications It features virtual scrum and kanban boards that enable teams to collaboratively manage backlogs, deliver work efficiently, and access real-time agile reports.

 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 programming languages that promote 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 significantly improves the quality of the code Well-documented code facilitates smoother code reviews, enhances the clarity of the source code, and simplifies its usability and maintenance.

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 examination of code, user stories, and test plans within a transparent and collaborative environment This tool ensures that the entire team remains informed about any changes made to the code in real time, enhancing communication and efficiency throughout the development process.

SonarLint is a powerful code analyzer that identifies code issues by marking them in open files It features an issues summary table for selected components within the IDE, detailing the creation time of each issue Acting like a spell checker for code, SonarLint enables developers to detect problems in real-time as they write Additionally, it offers explanations to clarify the identified issues and their significance, enhancing the coding experience.

 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: 12/01/2022, 23:18

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

TÀI LIỆU LIÊN QUAN

w