Process Requirements Quality Process Project Planning & Estimation Quality Process Design Quality Process 2. Planning for Quality 3. Development Quality Metrics 4. Development Quality Process Coding Build & Release Branch & Merge Release Quality 5. Testing Quality Process 6. Quality Governance Goals & Objectives - Defined
& Development Process leading to: Drive towards efficient & consistent software development processes Drive improvement in application availability & scalability Increase quality of software releases Leverage tools to increase software engineering discipline Deliver on commitments with quality Establish consistent & uniform process across development projects Establish consistent quality metrics to measure development/delivery quality
process need to clearly define: Steps (bases on ETVX – Entry, Task, Verification, Exit model) Each process can be supported by: Templates (for artifacts) Guidelines (for following best practices) Checklist (for verification) Tools (for execution) Governance Periodic checkpoint based model to verify adherence Compare against benchmark established Measure using Quality Metrics identified
start into quality metrics & process, it is important to plan for quality along with project delivery plan. • This will ensure we have clearly agreed plan in place. • Quality Plan Life-cycle (Owner: Architect & PM) • Identify Quality Metrics to measure & benchmark for them • Identity Quality Processes to be followed (supported by checklists, guidelines, tools) • Create Quality Plan along with Project Deliver Plan • Execute Quality Plan (use checkpoints to measure) • Quality Governance (external reviews to assess state)
Focus Area & Metrics Tool Details Code Review Rules Compliance using Static Code Analyzers Metric: Violations (P1,P2,P3,P3) PMD (Code Analyzer) Finds common programming flaws like unused variables, empty catch blocks, unnecessary object creation, etc. It supports Java, JavaScript, XML, XSL FindBugs Look for potential bugs in Java code like identify NPE, using incorrect equality rather than equals, ignored return values IBM Software Analyzer (licensed) Find basic performance problems, and find possible API abuse. Code review can also include deeper forms of analysis, such as data flow, control flow, type state, and so forth. Checkstyle Checks compliance with coding rules
Focus Area & Metrics Tool Details Unit Testing Status using manual/automated Code Coverage Tools Metric: Coverage Percentage (80%) & Success (90% & above) Junit Automated unit testing using junit to cover all flows in the code Jtest, Cobertura, Emma Tools based on Junit to analyze code coverage percentage Code Complexity & Dependency Metric: Cyclomatic Complexity • Sonar • Metrics Eclipse Plugin • Google CodePro AnalytiX is a quantitative measure of logical strength of the program. It directly measures the number of linearly independent paths through a program's source code.
Focus Area & Metrics Details DIR (Defect Injection Rate) Measure the rate at which defects are introduced in any new development / change. Measured as number of defects introduced per 100 dev days DSR-T (Defect Seepage Rate to Client Testing team) Measured as % of defects seeped to Client testing team – defects found in Client Test phase/Defects found in Sapient testing DSR-P (Defect Seepage Rate to Production) Defects found in production per 100 dev days Cost to Deliver Cost per story point
5 – Mark your story complete (Exit Criteria) • Unit Test Results to SVN or Junit Compliance • Check-in SOD to SVN • Update Resultspace/JIRA Important Points • Check-in code on daily basis & ensure build is in working state • Attend daily stand-up morning meetings (on-time) • Update “Developer’s SOD” on regular basis • Discuss any design concerns with TL/Arch on regular basis • Escalate if you are gated in daily team meeting/scrum
you followed all steps as per SOD? Have you updated SOD document? Have you got code review done with your TL/arch? Have you checked automated code compliance level? Have you informed PM/TL if you are blocked on any issue? Have you informed TL/Arch on any design gaps? Have you identified any performance bottlenecks and communicated the same?
Quality Activity Mandatory or Optional Owner Description | approach Who Conduc ts LOE to conduct Peer Review Mandatory Track Lead Basic quality control mechanism—a “finished” product is reviewed by a peer to find defects. Not a review to “gather input”. Reviewers capture defects and assess readiness Team members Preparation: 1-3 hours per participant (varies widely based on the artifacts) Duration: 1-8 hours per participant (varies widely based on the artifacts being reviewed) Iteration Progress Reviews/Weekl y Progress review Mandatory DU Owner Review of the overall project's progress to determine the risk level of the project and adoption to delivery methodology Review Owner Preparation: 30 mins Duration: 2-5 person-hours (dependent on project complexity) Defect Prevention/Les sons Learnt Meetings Optional Project Architect At project start learnings from previous projects must be referred to plan for preventive actions for defects in the projects. However, on an on going basis defects observed in each Iteration\Release would be analyzed. Based on the analysis; preventive action for the rest of Iterations\Releases would be identified and communicated to the team. This will ensure the prevention of similar defects in further Iteration/Release. Project Manager Preparation: None Duration: 2-3 hours (dependency on project ) Group Code Walkthrough Optional Architect At project level, online session with developer walking through their respective code & also functional aspects of their assigned stories. This brings ownership angle to developers. Developer
(contd…) Quality Activity Mandatory or Optional Owner Description | approach Who Conducts Quality Checkpoints Mandatory Programme /Release Arch Review progress against defined quality targets, compliance to processes and tools etc Programme Arch Design Reviews Mandatory Project Architect Review of High Level Designs of all the modules of the project Onsite Project Architect QA scenario brainstorming meetings Mandatory Track Lead Dev team to participate in brainstorming sessions to identify all permutations- combinations which should be included as QA test cases QA Track Lead Structured Dev Testing Mandatory Track Lead QA to maintain list of high priority test cases for each story Execution of high priority test cases by the dev team relevant to their story as part of dev testing before handing over the story in the build Developer Bug Find Day Mandatory PM/PA All team members to participate and do testing on all the projects for a particular release. All bugs found need to be assigned and fixed before O2 drop PA Merge Certification Mandatory Release Arch All merges to be certified by the merge certification team Merge Arch
Reviewer Follow Code Review Checklist Step 1 - Code Compliance Review Check Code Compliance (Checkstyle, PMD, FindBugs) Check Unit Test Proofs & Check Functional Aspects (by running the code, is possible) Step 2 – Performance Review (identify top 3 areas) Check Number of services calls – Take DynaTrace help (if applicable) Optimize Client-side (using YSlow & FireBug) Identify Any Caching needs (for Coherence or others) Step 3 – Security Review (Identify top 3 areas) Check Security Report using Tool (if applicable) Check OWASP Vulnerabilities Verify PII information is not passed in URL or as parameters without encoding Identify Unauthenticated resources
Template Story Name Owner RAG Statu s Status Risk /Dependency VM Setup FS Walkthr ough TSD Walkth rough Identify UT Scenari os HIG Coding Standa rds Follow Develope r's Guideline s Doc Coding Unit Test Cases TSD Updat e Run IDE Plugins (Checkst yle, PMD) UTC Executi on Code Review Review Comme nts Incorpo ration FatWire Integrati on Web Analytic s HTML Integrati on Integr ation Testin g Checkin IDE Executio n Report (Checkst yle, PMD) Checkin UTC Report Checkin SOD << Story Name 1>> <<Dev 1>> 0% << Story Name 2>> <<Dev 2>> 0% Step 5 - Completion Step 1 - Preparedness Step 2 - Development Step 3 - Verification Step 4 – Integration
& Security) Performance Have you planned for Internal Performance testing (PSST team)? Have you identified performance critical areas in application & designed for concurrency etc. using performance tactics? Have you run performance testing before handing over application to client testing team? Have you executed client-side tool like Yslow/Firebug to measure Web Page end response time (Grade B must be t Security Have you planned for security testing using Sapient internal testing team? Have you run security scan using tool (like AppScan) on static code? Have you planned for OWASP security vulnerabilities?
Architects/TLs: Formualte Standardize logging output by application (follow client-specific Logging Standards, if any) Identify any Auditing needs across the application & configure centralized logging (SYSLOG or similar if required) Sample Log Pattern HOST PORT SCSC %c %d{ISO8601} %t %-5p %m%n For Developers: Ensure that Logging Levels are appropriate Always Put Stack Trace for Errors/Exceptions (using Log4J or others)
• Application Exceptions & System Exceptions need to be cleanly defined and adhered to exception handling strategy & exception hierarchy established for project • Exceptions should leverage print stack trace feature (should not be suppressed while wrapping them – critical for production support team) • Monitor exceptions in server logs & clean-up exceptions, if not environment related
– Preparedness (Entry Criteria) • Check Branch & Trunk Status (as per maintained sheet for release plan) Step 2 – Creation • Get new branch created from trunk by Build & Release person • Follow Branch Naming Convention (see next slide) Step 3 – Verification • Smoke Test (by respective development team members) • Verify confirm created branch with Sapient arch/Tech Lead • Verify/confirm created branch with Arch/Tech Lead for development Step 4 – Merge • Get Merge done with the help of Build & Release person (always follow automatic merge) • Check basic principles related to Merge (next slide) • Get Merge Conflicts Verified with Tech Lead/Arch
should have clearly marked Exit Criteria No P1 & P2 in terms of any violations Code Coverage (Unit Testing) > 90% Development SOD = 100% compliance Code Review Checklist > 90% compliance Each Project should have Objectively tracked Scorecard (baselined): Aligned with client’s objectives in terms of solution quality Assessed based not only on technical debt but also from holistic perspective (defects, testing, delivery SLAs, developer’s awareness of quality process)
weekly checkpoint by architects help to find health of the project from quality perspective (sample dashboard below) Overall Status Overall Status Overall Status Code Review Unit Testing N/A Total Common Web Billing Web Total# % Executed Status SOD Compliance FatWire HTML Total FindBugs AppScan Total# % Executed Status Java 0 0 0 Total# % Executed Status Comments % 20.30% Overall Status N/A Duplication % N/A Total Defects N/A Cyclomatic Complexity 1.6 Avg. LOC per Method 8 P1 P2 P3 P4 Total LOC 15,271 0 0 0 0 DIR DSR-HIG QA DSR-Prod DTP Delivery SLA Metrics Milestones Status Development Quality Dashboard Process Adherence Rules Compliance Status Testing Status PMD Functional Testing Defects (Not Closed) Code Metrics Others End-to-End Testing Sapient QA Drop HIG QA Drop PROD Readiness Defects Status
Tools SonarQube – Complete metrics using multiple behind the scenes analysis tools Google CodeSearchDiggity - Utilizes Google Code Search to identifies vulnerabilities in open source code projects hosted by Google Code, MS CodePlex, SourceForge, Github, and more. Identifies SQL Injection, XSS PMD, FindBugs, Checkstyle OWASP SWAAT Project - Simplistic Beta Tool - Languages: Java, JSP, ASP .Net, and PHP Squale – A platform to manage software quality (also available for other languages, using commercial analysis tools though). Top 5 Commercial Tools Google CodeSearchDiggity - Utilizes Google Code Search to identifies vulnerabilities in open source code projects hosted by Google Code, MS CodePlex, SourceForge, Github, and more. Identifies SQL Injection, XSS IBM Software Analyzer IBM AppScan