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

40 7 0
Improving software quality by using agile principles and techniques of quality management

Đ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

HO CHI MINH CITY OPEN UNIVERSITY UNIVERSITÉ LIBRE DE BRUXELLES SOLVAY BRUSSELS SCHOOL OF ECONOMICS & MANAGEMENT MBQPM DANG NGOC HO Improving software quality by using agile principles and techniques of quality management MASTER FINAL PROJECT MASTER IN BUSINESS QUALITY AND PERFORMANCE MANAGEMENT Tutor: Jacques Martin Ho Chi Minh City (2018) HO CHI MINH CITY OPEN UNIVERSITY UNIVERSITÉ LIBRE DE BRUXELLES SOLVAY BRUSSELS SCHOOL OF ECONOMICS & MANAGEMENT MBQPM DANG NGOC HO Improving software quality by using agile principles and techniques of quality management MASTER FINAL PROJECT MASTER IN BUSINESS QUALITY AND PERFORMANCE MANAGEMENT Tutor: Jacques Martin Ho Chi Minh City (2018) Statement of originality and authentication This final project is an original and authentic piece of work by myself I have fully acknowledged and referenced all material incorporated form secondary sources It has not, in whole or part, been presented elsewhere for assessment I have read the Examination Regulations and I am aware of the potential consequences of any breach of them Ho Chi Minh, 21st March, 2018 Signature: HO DANG Name: Dang Ngoc Ho Acknowledgements In my first words, I would like to send my gratefulness to Mr Jacques Martin, my supervisor for giving me the support, recommendations and directions which are very useful for me to complete my final project Secondly, I would like to express my thanks to my partners and friends at VinaCreator, who helped me a lot in collecting data and information for this final project Thirdly, I also would like to thank the staff, my classmates, and my friends at Solvay for their help and supporting Last but not least, I would like to express my deep gratitude from my bottom of heart to my family: my dad, my mom and my wife for always be my side, give me the encouragement and the best condition to devote all of my quality time for my final project Academic tutor and practical tutor’s comments and approval signature 
 …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… Abstract This study explains how to apply agile principles and techniques to software quality management in order to solve critical problems of a software development company This subject was chosen because agile software development methodologies are now popular and best methodologies in the software industry They help teams manage work more efficiently and deliver high-quality software on time and on the budget I have used some quality audit techniques such as agile software development process audit, software quality testing audit, code quality audit, and team performance audit to find out root causes with data-driven metrics Based on the auditing metrics, I have suggested some possible solutions by using agile methodologies to improve the performance of software development process, automation software testing, code quality and high-performing team with estimated performance results The conclusion of the study is explained that my company has applied some agile solutions above and has more good performance results Regardless of challenges, the top managers determine strongly to apply these solutions to get more benefits for the company in longterm Contents List of Acronyms List of Figures Introduction: Corporate environment (brief) Presentation of the problems Criticality of these problems PART 1: Analysis of software quality Chapter 1: Quality tools and techniques for Software Development Agile Software Development Process Audit Code Quality Audit 11 Software Testing quality audit 12 Team performance quality audit 15 Chapter 2: Deficiencies of software quality 17 Weak Scale Development Process for Big Projects 17 Low code quality of software developers 17 Lack of Automation Testing for Big Software Projects 18 Low Team Performance 19 PART 2: Improving software quality performance 22 Chapter 1: Possible solutions to solve these problems 22 Apply Scaled Agile Process Solutions 23 Apply Agile Code Quality Solutions 28 Apply Agile Automation Testing Solutions 30 Apply High Performance Agile Teams Solutions 31 Chapter 2: Performance Improvement 37 Scale Development Process Performance Result 37 Code Quality Result 37 Software Testing Quality Performance Result 37 Team Performance Result 37 Conclusion 38 Reference 38 List of Acronyms LMS - Learning Management System HR – Human Resources SPI – Schedule Performance Index CPI – Cost Performance Index ROI – Return on Investment TA – Technical Architec BA – Business Analyst List of Figures Figure 1: Agile Scrum framework Figure : SonarQube Dashboard Figure 3: Agile Testing Metrics Figure 4: Agile Testing Report Figure 5: Scaled Agile Framework Figure 6: Scaling Agile Solutions for Large Organization Figure 7: Agile JIRA software development workflow Figure 8: Code Review Process Figure 9: SonarLint for Code Quality Figure 10: Agile Automation Testing process Figure 11: Stage of Team Development Figure 12: DISC personality test mode Figure 13: Situational Leadership Model Introduction: 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:  Digital Marketing Transformation  Operations Transformation  Customer Experience Transformation 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 At VinaCreator company, in last year, as the growing of large software teams and managing quality of multiple complex projects, the software development managers have a lot of challenges for the problems below  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  Problem 2: A lot of technical debts have been not detected soon in development phase so that the software have low quality code which causes a lot of defects in delivery and supporting phase  Problem 3: When software is become more and more complexity by adding more further features, the software testing is become more challenge by less time and human resource for regression testing  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 Due to these problems above, VinaCreator cannot build high quality software on time and on budget for large and complex projects This has impacted the growth of the company If VinaCreator cannot solve these problems as soon as possible, the company will lose their clients and reputation PART 1: Analysis of software quality Chapter 1: Quality tools and techniques for Software Development To find out root causes of these problems above, VinaCreator had used some quality tools and techniques below Agile Software Development Process Audit Agile software development methodology uses short development cycles called sprints to focus on continuous improvement in the development of a product or service Currently, VinaCreator is using Agile Software Development Process by Scrum framework for all software projects in the company The explanation below is briefing for Agile Scrum framework Figure 1: Agile Scrum framework (Source: http://www.techtammina.com) Roles Responsibilities 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 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 Output: Business Requirement Documents Step 3: Split each Business Requirement into Epic    Product Owners discuss together to break down each requirement into epics Person In Charge: Product Owner Output: Product Backlog document Step 4: Split each Epic into Features    Product Owners discuss together to break down each epic into features Person In Charge: Product Owner Output: Product Backlog document Step 5: Split each Feature into User Stories 25    Product Owners discuss together to break down each feature into user stories Person In Charge: Product Owner Output: Product Backlog document Step 6: Break down each User Story into development tasks     Product Owners conduct sprint planning meeting with development team to walkthrough 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 US1 Common User service Import user account from file into LDAP IUICV-2417 US2 Common US3 Common US4 Common Import auditor authority matrix from file into LDAP Export user profile from LDAP to File Export auditor authority matrix to File US5 Common User service User service User service User service Log in IUICV-2418 IUICV-2419 IUICV-2420 IUICV-2421 b) Use tools for support SAFe  Jira Software is the #1 software development tool used by agile teams with customizable requirement types, workflows, permissions, and notifications It provides virtual scrum and kanban boards for teams to collaboratively manage backlogs, deliver work, and use 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 26 Figure 7: Agile JIRA software development workflow Stage Role Actions Reporter Ticket created with status “Open” (assigned to Project Lead by default) Project Leader Queries assigned tickets and assign to himself or Team Lead Dev Lead (TA, Dev Lead) Verifies assigned Tickets Assign ticket to himself or an owner Owner (Developer) Change status of the tickets to “In-Progress” (this indicates that he/she starts working on the tickets) Resolve ticket Update root cause, resolution, test result and code revision once complete Change ticket status to “Resolved“ Assign ticket to Dev Lead 27 Dev Lead (TA, Dev Lead) Verifies resolution, test result, and review code 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” Reviewer (BA, Tester) Change status of the tickets to “Verify In-Progress” (this indicates that he/she starts working on the tickets) Verify tickets on the Build specified at step 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 Project Leader Queries “Done” ticket and assign to Reporter 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 Figure 8: Code Review Process (Source: http://amanek.com/) Author of change generates a patch and sends it to the code review system Author invites his teammates to review the code Code review participants are adding comments and suggestions on code improvement Author either follows the suggestions and updates the code or rejects them The code review is updated by author and a new review iteration is started 28 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 The Coding Standards are a set of guidelines for a specific programming language that recommend programming style, practices, and methods The software developers have to apply the Coding Standards to help improve the readability of their source code and make software maintenance easier Code documentation is a process by which a programmer documents his or her code Software developers have habit of writing code documentation who make code better Good code documentation makes the code review go more smoothly, enhance the clarity of the source code and make their code 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 a code review tool that reviews code, user stories and test plans in a transparent, collaborative framework — instantly keeping the entire team up to speed on changes made to the code  SonarLint is the code analyzer to highlight code issues with markers on open files It also provides an issues summary table for a selected component in the IDE, including the creation time of the issue It offers the ability to see problems as you code, like a spell checker for text Then provides explanations to help understand issues found and why it is a problem  Doc-O-Matic is a software source code documentation and Help authoring tool DocO-Matic takes source code and comments, adds conceptual topics and external input and produces documentation from it With its single-source approach, Doc-OMatic generates many different kinds of output from a single documentation base Figure 9: SonarLint for Code Quality (Source: https://www.sonarqube.org/) 29 Apply Agile Automation Testing Solutions a) Benefits of Automation Testing Automation Testing means using an automation software to execute test case suite The automation software can also enters test data into the system, compare expected and actual results and generate detailed 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 30 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      Automated UI Testing Cross Browser Testing Automated Regression Testing Tool End-to-End Testing Functional Test Automation Apply High Performance Agile Teams Solutions The software development managers should build high performance agile teams by following the process as below 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 a) Identify missing elements of your team charter Element Description Organizational Vision, Purpose, and Values 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? 31 Team Values and Norms They are the enduring principles that guide the team’s actions and the ground rules that identify appropriate behaviors for team members Team Initiatives They are the broad areas of focus necessary to achieve the team’s purpose These include Team Goals which identify the measurable outcomes needed to achieve the team’s purpose and Team Member Roles which identities the key responsibility areas of each team member for achieving the goals 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 Decision Making and Accountability It determines the process for how decisions are made and communicated in addition to establishing agreement on how team members hold each other responsible for commitments made to the team 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 32  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 Then, the software managers should use correctly leadership style for each member by using DISC personality test model of William Moulton Marston and Situation Leadership Model of Paul Hersey and Ken Blanchard Afterthat, base on statistic report of team members, the software managers will apply leadership style for whole team with actions as table below 33 Figure 12: DISC personality test mode ( Source: https://www.bishophouse.com ) 34 Figure 13: Situational Leadership Model Team Stage Situational Leadership Actions  Forming Directing    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 35  Storming Coaching      Norming   Encourage different points of view Involve team members in decision making, problem solving, and conflict management Promote shared leadership Remove obstacles to task accomplishment     Recognize and celebrate team accomplishments Acknowledge individual contributions Evaluate results and incorporate lessons learned Promote new challenges and higher standards Supporting Performing Delegating Redefine or clarify the team’s purpose, norm, goals, and roles Develop both task and team skills Confront difficult issues Recognize helpful behaviors and small accomplishments c) Create an enviroment of trust, empowerment and flexible working When team members feel that they have trust and empowerment from their managers as well as their colleagues to raise their voice, make decisions and work flexibility by their way, they will contribute more on their work Therefore, the software managers have to apply best practices below        Openness to new ideas 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 Duration (hours) Delivery Trainee Role Method Workshop All members Build-In Quality Methodology Workshop All members Agile Automation Testing Techniques 16 Workshop Tester Continuous Code Quality Techniques Workshop Developer Course 36 Agile Software Development with Scrum Workshop All member Scaled Agile Project Management Framework 12 Workshop Project Manager Agile Requirement with User Story Workshop Product Owner Agile Continuos Deployement 12 Workshop DevOps Chapter 2: Performance Improvement Base on successful case studies from top companies once they have used the best practices of SAFe, Automation Agile Testing, Code Quality, and High-Performance Agile Team, VinaCreator is just applying partially these solutions and the company has been received the good results, therefore, the company is able to estimate the good results as below Scale Development Process Performance Result     10 – 50% happier, more motivated employee 30 – 75% faster time-to-market 20 – 50% increase in productivity 25 – 75% defect reduction Code Quality Result      Reduces test and code reviews from three months to three weeks Enables higher-quality code reviews that help enhance software functionality Tracks code, test results and document reviews in one central system The source code will be more comprehensive and will become easy-to-maintain Reduce time for communication between developers and managers on the details of the specification document because the defaults are all stated in coding standards Software Testing Quality Performance Result     Quality increase 30% Automation Testing Proportion meet 80% Reduce effort 50% Reduce time 80% Team Performance Result The score of team performance will be increased on some metrics below  Clear Goals  Clear Roles and Responsibilities  Information Sharing  Competent Team Members  Creative Problem-Solving 37       Values Diversity Flexibility Effective Conflict Resolution Effective Time Management Recognition and appreciation Good morale Conclusion Based on these solutions above, the company is transforming the software development department by agile ways The software quality has been increased more than before The software development teams are engaged and contributed on high morale for team goals However, the applying of these solutions is always challenging for the software development managers as well as the team members They have to change their old mindset and working ways to adopt the agile principles and techniques Their habit cannot change fast in short terms, and they intend to prevent these changes Regardless of challenges, the top managers determine strongly to apply these solutions to get more benefits for the company in long-term Reference Use of Software Metrics in Agile Software Development Process  https://www.researchgate.net/profile/Indika_Perera/publication/283758138_U se_of_software_metrics_in_agile_software_development_process/links/5749b d8b08ae5f7899b9f76e/Use-of-software-metrics-in-agile-softwaredevelopment-process.pdf How to Audit Agile Projects  https://bia.ca/how-to-audit-agile-projects/ Knaster, Richard and Dean Leffingwell SAFe 4.0 Distilled: Applying the Scaled Agile Framework for Lean Software and Systems Engineering Addison-Wesley, Kindle Edition Scaled Agile Framework (SAFe®)  http://www.scaledagileframework.com/what-is-safe/  http://www.scaledagileframework.com/case-studies/ Situational Leadership :  https://www.kenblanchard.com/Products-Services/Situational-Leadership-II Agile Automation Testing:  http://www.cigniti.com/blog/need-know-test-automation-agile/  https://www.atlassian.com/software-testing  https://www.guru99.com/automation-testing.html 38     https://www.google.com.vn/amp/www.softwaretestinghelp.com/automationtesting-tutorial-7/amp/ https://testlio.com/blog/how-to-develop-an-automated-testing-strategy/ https://dzone.com/articles/7-best-practices-in-test-automation https://www.testingexcellence.com/test-automation-tips-best-practices/ Code Quality  https://docs.sonarqube.org/display/SONAR/Metric+Definitions  https://www.red-gate.com/simple-talk/dotnet/net-development/continuouscode-quality-inspection-sonarqube/  https://livebook.manning.com/#!/book/sonarqube-in-action/chapter-5/31  https://www.romexsoft.com/blog/improve-java-code-quality/  https://www.webguruz.in/significance-coding-standards/  http://www.theportal.sg/Portal/Download/UseCodingStandardstoIncreaseEffic iencyandProductivity.pdf  https://www.stickyminds.com/better-software-magazine-article/you-cant-beagile-without-automated-unit-testing  https://smartbear.com/learn/code-review/agile-code-review-process/ M.E., Fagan (1976) “Design and code inspections to reduce errors in program development.” IBM Systems Journal 15(3):182–211 Lawrence G Votta (1993).” Does every inspection need a meeting?” ACM SIGSoft Software Engineering Notes, 18(5):107-114 10 Software KPI  https://www.testdevlab.com/blog/2016/11/7-software-quality-kpis-favorablein-agile-development-projects/  https://www.getzephyr.com/resources/whitepapers/qa-metrics-value-testingmetrics-within-software-development 11 SonarQube  https://www.red-gate.com/simple-talk/dotnet/net-development/continuouscode-quality-inspection-sonarqube/ 12 High Performance Team  https://resources.workable.com/tutorial/skills-gap-analysis  https://leadchangegroup.com/7-characteristics-of-a-high-performing-team/  https://www.quantumlearn.com/checklist-for-high-performing-teams  https://www.zenefits.com/blog/top-10-ways-to-improve-employee-efficiency/  https://www.shrm.org/resourcesandtools/tools-andsamples/toolkits/pages/developingandsustaininghighperformanceworkteams.aspx  http://academic.engr.arizona.edu/vjohnson/TeamDevelopmentQuestionnaire/T eamDevelopmentQuestionnaire.asp  http://www.phf.org/resourcestools/Documents/Electronic_Tuckman.pdf 39 ... SCHOOL OF ECONOMICS & MANAGEMENT MBQPM DANG NGOC HO Improving software quality by using agile principles and techniques of quality management MASTER FINAL PROJECT MASTER IN BUSINESS QUALITY AND. .. Analysis of software quality Chapter 1: Quality tools and techniques for Software Development Agile Software Development Process Audit Code Quality Audit 11 Software. .. to apply agile principles and techniques to software quality management in order to solve critical problems of a software development company This subject was chosen because agile software development

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