SlideShare a Scribd company logo
1 of 29
Download to read offline
Copyright 2006 Vincent Massol, all rights reserved
QDashboard
Proposal v 1.2
Vincent Massol, 9 Oct. 2006
TODO:

Find a better name!
Copyright 2006 Vincent Massol, all rights reserved
The Need
■ Projects are not controlled in term of quality
It’s a best effort which results most often in poor quality and high maintenance
costs
There’s no tool to help monitor the quality over the duration of the project
■ Project health is also not controlled
Results in delays to deliver and cost overrun
Again there’s no tool to help monitor a project’s health over its course
■ Quality and Health are currently monitored manually (when they are
monitored at all)
Lots of guessing
Manual and tedious work
Inaccurate because based on people’s perception of how good and how finished
a project is
■ QDashboard is about extracting tangible information from the project’s
outputs (source code, artifacts, issue tracker, etc)
Copyright 2006 Vincent Massol, all rights reserved
General goals
■ Develop a Quality and Health Check Dashboard to track quality and
health of development projects
■ 3 main features
Display metrics (historical and by committer)
■ For quality and project health
Rank the projects
■ On quality and health criteria
Suggest recommendations
■ To improve quality and health
■ Reuses existing open source tools for gathering metrics
Checkstyle, PMD, findbugs, Xradar, JavaNCSS, JUnit, Xref, Cobertura, etc
■ Aggregate the results, store them over time, generate trends, generate
reports, set alarm thresholds, correlate them together
Copyright 2006 Vincent Massol, all rights reserved
Target Audience
■ Project Managers
How is my project doing?
■ Project Directors
How are my different projects doing?
■ Developers
How am I doing in my team?
■ QA Managers/Teams
How are all the projects doing, compared with each
other?
Copyright 2006 Vincent Massol, all rights reserved
Business value
■ Improve project quality
Less bugs
Easier maintenance
■ Improve respect of deadlines
■ Project audits
Ex: Outsourced projects
■ Healthy comparison between different projects
Leads to emulation and quality/productivity increase (if done right)
■ Increase developer’s responsibility
By providing visibility on his work
■ Reward team members
Factual recognition of work done
Good developers can now be rewarded
Copyright 2006 Vincent Massol, all rights reserved
Features
The features are presented

in no particular order
Copyright 2006 Vincent Massol, all rights reserved
Recommendations & Rankings
■ Ranker to rank the different projects according to metrics
Ranking in quality and in health
Ability to compare projects
Only rank common metrics. Take common metrics between
project for ranking, i.e. ranking against Metric Set
■ Recommendation engine
Adapted for different types of projects
■ ex.: OSS projects, Prototype (build and throw away), Core IS project
(ex: banking project that must last 10 years), etc
Configurable
Well known Recommendation sets
Copyright 2006 Vincent Massol, all rights reserved
Features (1)
■ Add project from a SCM URL
Points to a Maven POM
Manual by entering information such as location of
sources, tests, etc
■ With automatic detection as much as possible
■ See http://blogs.codehaus.org/people/vmassol/archives/
001369_intellib.html
Copyright 2006 Vincent Massol, all rights reserved
Features (2)
■ Execute coding rules on project
Checkstyle
JavaNCSS
Findbugs
PMD
CPD
…
Only select rules that everyone agree on by default
Copyright 2006 Vincent Massol, all rights reserved
Features (3)
■ Measure project activity
# Commits per day/week/month/developer
Release frequency
Nb active committers
■ Count number of tests
■ Measure Test coverage
Need runtime model (see after) or integrate
with a build/CI
Copyright 2006 Vincent Massol, all rights reserved
Features (4)
■ Automatically discover the build used by the
project and display it
Ant, Maven1, Maven2, etc
Give a negative point to project if no build
■ Provide an instance of QDashboard for open
source projects
Automatically discover M2 projects on ibiblio and
generate dashboard for them
To make advertisement for QDashboard
Copyright 2006 Vincent Massol, all rights reserved
Features (5)
■ Provide individual stats by committer
For example, how many rules John Doe has violated
in his last commit?
All reports (checkstyle, PMD, CPD, etc) should allow
an individual view
Goal: every developer must be aware of what he’s
doing and be sensitive to quality. By emulation
developers should automatically work towards
improving their code quality
Copyright 2006 Vincent Massol, all rights reserved
Features (6)
■ Display # of documentation pages (and quantity) modified
by users
So that not only code lines is made visible but also
documentation
Support xdoc, APT, FML, confluence, etc
■ Display individual statistics on:
Modified code – main sources (src/main)
Modified code – test sources (src/test)
Modified documentation (see above) (src/site + wiki)
Modified build files (pom.xml, profiles.xml)
Other
Copyright 2006 Vincent Massol, all rights reserved
Features (7)
■ Subscribe an Agent to the project mailing lists to measure
project member activity
In order to see who helps with questions and who communicates
in general
Nb answers per day/week/month on the list
■ Run Clirr on releases project versions
To measure how much importance is given to binary compatibility.
Need to take into account non-stable API
■ Must be marked manually by someone
Need to take into account deprecations so that a removed
deprecations does not trigger a bad point
■ Note: Project need to decide how long a deprecation should stay
Copyright 2006 Vincent Massol, all rights reserved
Features (8)
■ JIRA integration
How long issues are opened on average
Who closes issues
■ Crucible integration
Reviewed code %, % of code not reviewed
Reviews in progress, when was last review done (if too long raise warning), etc
■ Top projects view
List the project will the less violations
■ Need to ensure we compare apples with apples
And worse projects!
Good for the open source instance to list the top 50 projects for example.
Provide emulation. Nobody wants to see his project in the worse category…
Users will be more tempted to use a good quality and healthy project
Provide the same view for internal project portofoli management
Copyright 2006 Vincent Massol, all rights reserved
Features (9)
■ Indicator: # of mails on the mailing lists
Per day/week/month
Helps evaluate project’s activity and health
Note: need to support forums too for projects not using
mailing lists
■ Offer threshold warnings
Ex: If # of PMD errors goes beyond N
Ex: If no release done in N months
Notify by Mail, IRC, IM
Copyright 2006 Vincent Massol, all rights reserved
Features (10)
■ Allow projects to compare with each other
Metric by metric
Globally (need some ranking system – Not easy)
■ Integrate with bug tracker to measure # bugs /
release
Warning: more testers will lead to more bugs up to a
level. Thus it’s not the projects with the most
discovered bugs which are less good on quality! Need
to be correlated with # of tests
Copyright 2006 Vincent Massol, all rights reserved
Features (11)
■ Recommendations: Offer quick wins advice
Provide suggestions to improve score
Does this by comparing current project with other existing projects (open source
ones for example) and find the top few metrics where the project is off the most
Examples
■ If committer repeatedly increase # of checkstyle violations during last 5 commits then
recommend fixing it and raise highlight
■ If no release in past 1 month then recommend release
■ If bug tracker issues pending for more than 1 month raise warning
Use groovy for writing rules by offering Java objects to wrap around. This allows
easy edition of rules and creating new ones by users.
■ Allow comments for each metric on all projects
So that users/developers of project can provide feedback/explain the value in
some metrics.
Provide way for users to provide feedback on something not working
■ Automatically generate a JIRA issue for QDashboard for exemple (as is done by IntelliJ
IDEA)
This is one killer feature. 

TODO: List 40 good

recommendations rules
Copyright 2006 Vincent Massol, all rights reserved
Features (12)
■ Scheduler
Take snapshot of dashboard every day/week (+ on demand for releases)
for example for historical trends
■ Display graphs for each metric
■ Support for subprojects
Example: M2 modules
■ Display project versions milestones in metric graphs
■ Ability to create Parsers/Analyzers/Metrics directly from the webapp
Including generic parser, etc
■ Create an online repository of Dashlets
That can also be accessed and discovered from QDashboard directly
Copyright 2006 Vincent Massol, all rights reserved
Architecture
Copyright 2006 Vincent Massol, all rights reserved
System Architecture
Dashboard

Server
Web Browser
IDE plugins
Mail, IRC, IM
Bug Trackers
Mailing lists
Build/CI tools
SCMs
View results Data sources
Crucible/FishEye
Copyright 2006 Vincent Massol, all rights reserved
Webapp (Dashweb)
Product stack
Plugins & JSR-168 Portlets (Dashlets)
Java API (Dashrock)
■ Dashlet = Portlet displaying a metric
■ + REST-type API for getting data from dashlets
Copyright 2006 Vincent Massol, all rights reserved
Dashrock
■ 100% Java, strongly typed API
■ Ability for users to add their own Parser,
Analyzer and Metric
■ Stateless architecture (i.e. users of
Dashrock have to instantiate instances of
Parser, Analyzer and Metric)
Copyright 2006 Vincent Massol, all rights reserved
Dashlets
■ A Dashlet is a plugin for Dashweb
In the form of a JAR
■ A Dashlet provides a JSR-168 compatible
view that can display metrics computed by
Dashrock
■ Allows embedding Dashrock Portlets in
any JSR-88 Portlet container
Copyright 2006 Vincent Massol, all rights reserved
Technical Architecture
■ (Could be built on top of XWiki/Exo)
■ Generic webapp and platform
Metrics, Dashlets, Analyzers, Parsers, Recos can be added from repositories
• Metrics
• Parsers
• Dashlets
Remote repo
Local
repo
Dashlet 1 Dashlet 2 Dashlet N
Dashweb
Scheduler
Project Mgr
Renderer
Ranker
Reco. Engine
Dashrock
Copyright 2006 Vincent Massol, all rights reserved
Database
Parser
JUnit

Parser
Checkstyle

Parser
Parse and
persist data
Analyzer
Importer
Metric
Monthly

Aggregator
Test Coverage

/LOCRead parsed
data and write
analyzed data
Nb of JUnit
tests
Test
Coverage %
Create project
Retrieve metric
Dashrock Architecture
Persistence API
Create composite
metric from
several parsed
information
Copyright 2006 Vincent Massol, all rights reserved
Open questions
■ Do we execute the quality tools within
QDashboard?
For example do we execute Checkstyle?
■ In which case we need a Project object and need to
be able to build a project. Could be done by
embedding M2 for example.
Or do we only parse the results of an
execution
■ In which case we need to integrate with build tools
Copyright 2006 Vincent Massol, all rights reserved
Appendix A: Competitors
■ CAST
http://www.castsoftware.com/Products/Index.html
■ JetBrain’s TeamCity
Especially with inspections and code coverage
■ Mergere
■ Atlassian
Copyright 2006 Vincent Massol, all rights reserved
Appendix B: Directory structure
■ QDashboard/
dashrock/
■ api/
■ parsers/
■ analyzers/
■ metrics/
■ importers/
dashlet/
■ api/
■ dashlets/
dashweb/

More Related Content

What's hot

[QE 2017] Dawid Pacia, Tomasz Janiszewski - SQA w erze TestOps
[QE 2017] Dawid Pacia, Tomasz Janiszewski - SQA w erze TestOps[QE 2017] Dawid Pacia, Tomasz Janiszewski - SQA w erze TestOps
[QE 2017] Dawid Pacia, Tomasz Janiszewski - SQA w erze TestOpsFuture Processing
 
Cpp Testing Techniques Tips and Tricks - Cpp Europe
Cpp Testing Techniques Tips and Tricks - Cpp EuropeCpp Testing Techniques Tips and Tricks - Cpp Europe
Cpp Testing Techniques Tips and Tricks - Cpp EuropeClare Macrae
 
Test Management System (TMS) using JIRA Customization
Test Management System (TMS) using JIRA CustomizationTest Management System (TMS) using JIRA Customization
Test Management System (TMS) using JIRA CustomizationYagnanarayana Dande
 
TEST_AUTOMATION_CASE_STUDY_(2)2[1]
TEST_AUTOMATION_CASE_STUDY_(2)2[1]TEST_AUTOMATION_CASE_STUDY_(2)2[1]
TEST_AUTOMATION_CASE_STUDY_(2)2[1]Clive Dall
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcadostdc-globalcode
 
Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)Mike McGarr
 
How do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about PipelinesHow do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about PipelinesThoughtworks
 
Continuous integration at scale
Continuous integration at scaleContinuous integration at scale
Continuous integration at scaleVivek Singh
 
How do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about PipelinesHow do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about PipelinesThoughtWorks Studios
 
Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life DevOps.com
 
2016 04-25 continuous integration at google scale
2016 04-25 continuous integration at google scale2016 04-25 continuous integration at google scale
2016 04-25 continuous integration at google scaleJohn Micco
 
QA methodology by Quality Tech
QA methodology  by Quality TechQA methodology  by Quality Tech
QA methodology by Quality TechIvet Prokopova
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationKelli Mohr
 
Life-cycle is too short not to use ElasTest
Life-cycle is too short not to use ElasTestLife-cycle is too short not to use ElasTest
Life-cycle is too short not to use ElasTestElasTest Project
 
Comparing Functionalities of PVS-Studio and CppCat Static Code Analyzers
Comparing Functionalities of PVS-Studio and CppCat Static Code AnalyzersComparing Functionalities of PVS-Studio and CppCat Static Code Analyzers
Comparing Functionalities of PVS-Studio and CppCat Static Code AnalyzersAndrey Karpov
 

What's hot (16)

[QE 2017] Dawid Pacia, Tomasz Janiszewski - SQA w erze TestOps
[QE 2017] Dawid Pacia, Tomasz Janiszewski - SQA w erze TestOps[QE 2017] Dawid Pacia, Tomasz Janiszewski - SQA w erze TestOps
[QE 2017] Dawid Pacia, Tomasz Janiszewski - SQA w erze TestOps
 
Cpp Testing Techniques Tips and Tricks - Cpp Europe
Cpp Testing Techniques Tips and Tricks - Cpp EuropeCpp Testing Techniques Tips and Tricks - Cpp Europe
Cpp Testing Techniques Tips and Tricks - Cpp Europe
 
Test Management System (TMS) using JIRA Customization
Test Management System (TMS) using JIRA CustomizationTest Management System (TMS) using JIRA Customization
Test Management System (TMS) using JIRA Customization
 
TEST_AUTOMATION_CASE_STUDY_(2)2[1]
TEST_AUTOMATION_CASE_STUDY_(2)2[1]TEST_AUTOMATION_CASE_STUDY_(2)2[1]
TEST_AUTOMATION_CASE_STUDY_(2)2[1]
 
TDC2016SP - Trilha Embarcados
TDC2016SP - Trilha EmbarcadosTDC2016SP - Trilha Embarcados
TDC2016SP - Trilha Embarcados
 
Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)Continuous Delivery Applied (AgileDC)
Continuous Delivery Applied (AgileDC)
 
How do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about PipelinesHow do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about Pipelines
 
Continuous integration at scale
Continuous integration at scaleContinuous integration at scale
Continuous integration at scale
 
How do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about PipelinesHow do you implement Continuous Delivery? Part 3: All about Pipelines
How do you implement Continuous Delivery? Part 3: All about Pipelines
 
ElasTest Webinar
ElasTest WebinarElasTest Webinar
ElasTest Webinar
 
Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life Achieving Full Stack DevOps at Colonial Life
Achieving Full Stack DevOps at Colonial Life
 
2016 04-25 continuous integration at google scale
2016 04-25 continuous integration at google scale2016 04-25 continuous integration at google scale
2016 04-25 continuous integration at google scale
 
QA methodology by Quality Tech
QA methodology  by Quality TechQA methodology  by Quality Tech
QA methodology by Quality Tech
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Life-cycle is too short not to use ElasTest
Life-cycle is too short not to use ElasTestLife-cycle is too short not to use ElasTest
Life-cycle is too short not to use ElasTest
 
Comparing Functionalities of PVS-Studio and CppCat Static Code Analyzers
Comparing Functionalities of PVS-Studio and CppCat Static Code AnalyzersComparing Functionalities of PVS-Studio and CppCat Static Code Analyzers
Comparing Functionalities of PVS-Studio and CppCat Static Code Analyzers
 

Similar to QDashboard 1.2

Unit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycleUnit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycleDhivyaa C.R
 
Software Process Models
Software Process ModelsSoftware Process Models
Software Process ModelsHassan A-j
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering MethodologiesDamian T. Gordon
 
Learnings from Developing a New B2B SaaS Product (Suryaveer Lodha (Sunny) Pro...
Learnings from Developing a New B2B SaaS Product (Suryaveer Lodha (Sunny) Pro...Learnings from Developing a New B2B SaaS Product (Suryaveer Lodha (Sunny) Pro...
Learnings from Developing a New B2B SaaS Product (Suryaveer Lodha (Sunny) Pro...IT Arena
 
Spiral model : System analysis and design
Spiral model : System analysis and designSpiral model : System analysis and design
Spiral model : System analysis and designMitul Desai
 
Introduction to Agile Software Development Process
Introduction to Agile Software Development ProcessIntroduction to Agile Software Development Process
Introduction to Agile Software Development ProcessSoftware Park Thailand
 
Software Life Cylce Model
Software Life Cylce ModelSoftware Life Cylce Model
Software Life Cylce ModelJegadeesh Sam
 
É possível medir se um gigante é ágil?
É possível medir se um gigante é ágil?É possível medir se um gigante é ágil?
É possível medir se um gigante é ágil?Alan Braz
 
Software Development Taxonomy
Software Development TaxonomySoftware Development Taxonomy
Software Development TaxonomyAli Gholami
 
Verification at scale: Fitting static code analysis into continuous integration
Verification at scale: Fitting static code analysis into continuous integrationVerification at scale: Fitting static code analysis into continuous integration
Verification at scale: Fitting static code analysis into continuous integrationRogue Wave Software
 
Software process life cycles
Software process life cyclesSoftware process life cycles
Software process life cycles sathish sak
 
Software Engineering - Basics
Software Engineering - BasicsSoftware Engineering - Basics
Software Engineering - BasicsPurvik Rana
 
Chapter1 conventional softwaremanagement (1)
Chapter1 conventional softwaremanagement (1)Chapter1 conventional softwaremanagement (1)
Chapter1 conventional softwaremanagement (1)Jkumararaja
 
The Importance of Performance Testing Theory and Practice - QueBIT Consulting...
The Importance of Performance Testing Theory and Practice - QueBIT Consulting...The Importance of Performance Testing Theory and Practice - QueBIT Consulting...
The Importance of Performance Testing Theory and Practice - QueBIT Consulting...QueBIT Consulting
 
Software Development Methodologies.pptx
Software Development Methodologies.pptxSoftware Development Methodologies.pptx
Software Development Methodologies.pptxMohamedElshaikh10
 
chapter1-convehisudhiusdiudiudsiusdiuddsdshdibsdiubdsjxkjxjntionalsoftwareman...
chapter1-convehisudhiusdiudiudsiusdiuddsdshdibsdiubdsjxkjxjntionalsoftwareman...chapter1-convehisudhiusdiudiudsiusdiuddsdshdibsdiubdsjxkjxjntionalsoftwareman...
chapter1-convehisudhiusdiudiudsiusdiuddsdshdibsdiubdsjxkjxjntionalsoftwareman...WrushabhShirsat3
 

Similar to QDashboard 1.2 (20)

2
22
2
 
Case study(i)
Case study(i)Case study(i)
Case study(i)
 
Unit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycleUnit iii-Architecture in the lifecycle
Unit iii-Architecture in the lifecycle
 
The Waterfall Model
The Waterfall ModelThe Waterfall Model
The Waterfall Model
 
Cnpm bkdn
Cnpm bkdnCnpm bkdn
Cnpm bkdn
 
Software Process Models
Software Process ModelsSoftware Process Models
Software Process Models
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering Methodologies
 
Learnings from Developing a New B2B SaaS Product (Suryaveer Lodha (Sunny) Pro...
Learnings from Developing a New B2B SaaS Product (Suryaveer Lodha (Sunny) Pro...Learnings from Developing a New B2B SaaS Product (Suryaveer Lodha (Sunny) Pro...
Learnings from Developing a New B2B SaaS Product (Suryaveer Lodha (Sunny) Pro...
 
Spiral model : System analysis and design
Spiral model : System analysis and designSpiral model : System analysis and design
Spiral model : System analysis and design
 
Introduction to Agile Software Development Process
Introduction to Agile Software Development ProcessIntroduction to Agile Software Development Process
Introduction to Agile Software Development Process
 
Software Life Cylce Model
Software Life Cylce ModelSoftware Life Cylce Model
Software Life Cylce Model
 
É possível medir se um gigante é ágil?
É possível medir se um gigante é ágil?É possível medir se um gigante é ágil?
É possível medir se um gigante é ágil?
 
Software Development Taxonomy
Software Development TaxonomySoftware Development Taxonomy
Software Development Taxonomy
 
Verification at scale: Fitting static code analysis into continuous integration
Verification at scale: Fitting static code analysis into continuous integrationVerification at scale: Fitting static code analysis into continuous integration
Verification at scale: Fitting static code analysis into continuous integration
 
Software process life cycles
Software process life cyclesSoftware process life cycles
Software process life cycles
 
Software Engineering - Basics
Software Engineering - BasicsSoftware Engineering - Basics
Software Engineering - Basics
 
Chapter1 conventional softwaremanagement (1)
Chapter1 conventional softwaremanagement (1)Chapter1 conventional softwaremanagement (1)
Chapter1 conventional softwaremanagement (1)
 
The Importance of Performance Testing Theory and Practice - QueBIT Consulting...
The Importance of Performance Testing Theory and Practice - QueBIT Consulting...The Importance of Performance Testing Theory and Practice - QueBIT Consulting...
The Importance of Performance Testing Theory and Practice - QueBIT Consulting...
 
Software Development Methodologies.pptx
Software Development Methodologies.pptxSoftware Development Methodologies.pptx
Software Development Methodologies.pptx
 
chapter1-convehisudhiusdiudiudsiusdiuddsdshdibsdiubdsjxkjxjntionalsoftwareman...
chapter1-convehisudhiusdiudiudsiusdiuddsdshdibsdiubdsjxkjxjntionalsoftwareman...chapter1-convehisudhiusdiudiudsiusdiuddsdshdibsdiubdsjxkjxjntionalsoftwareman...
chapter1-convehisudhiusdiudiudsiusdiuddsdshdibsdiubdsjxkjxjntionalsoftwareman...
 

More from Vincent Massol

XWiki Testing with TestContainers
XWiki Testing with TestContainersXWiki Testing with TestContainers
XWiki Testing with TestContainersVincent Massol
 
XWiki: The best wiki for developers
XWiki: The best wiki for developersXWiki: The best wiki for developers
XWiki: The best wiki for developersVincent Massol
 
Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019Vincent Massol
 
Configuration Testing with Docker & TestContainers
Configuration Testing with Docker & TestContainersConfiguration Testing with Docker & TestContainers
Configuration Testing with Docker & TestContainersVincent Massol
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projectsVincent Massol
 
What's new in XWiki 9.x and 10.x
What's new in XWiki 9.x and 10.xWhat's new in XWiki 9.x and 10.x
What's new in XWiki 9.x and 10.xVincent Massol
 
Creating your own project's Quality Dashboard
Creating your own project's Quality DashboardCreating your own project's Quality Dashboard
Creating your own project's Quality DashboardVincent Massol
 
XWiki: wiki collaboration as an alternative to Confluence and Sharepoint
XWiki: wiki collaboration as an alternative to Confluence and SharepointXWiki: wiki collaboration as an alternative to Confluence and Sharepoint
XWiki: wiki collaboration as an alternative to Confluence and SharepointVincent Massol
 
Creating your own project's Quality Dashboard
Creating your own project's Quality DashboardCreating your own project's Quality Dashboard
Creating your own project's Quality DashboardVincent Massol
 
XWiki: The web's Swiss Army Knife
XWiki: The web's Swiss Army KnifeXWiki: The web's Swiss Army Knife
XWiki: The web's Swiss Army KnifeVincent Massol
 
Leading a Community-Driven Open Source Project
Leading a Community-Driven Open Source ProjectLeading a Community-Driven Open Source Project
Leading a Community-Driven Open Source ProjectVincent Massol
 
XWiki Status - July 2015
XWiki Status - July 2015XWiki Status - July 2015
XWiki Status - July 2015Vincent Massol
 
XWiki SAS development practices
XWiki SAS development practicesXWiki SAS development practices
XWiki SAS development practicesVincent Massol
 
XWiki SAS: An open source company
XWiki SAS: An open source companyXWiki SAS: An open source company
XWiki SAS: An open source companyVincent Massol
 
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014Vincent Massol
 
XWiki Rendering @ FOSDEM 2014
XWiki Rendering @ FOSDEM 2014XWiki Rendering @ FOSDEM 2014
XWiki Rendering @ FOSDEM 2014Vincent Massol
 
Implementing Quality on a Java Project
Implementing Quality on a Java ProjectImplementing Quality on a Java Project
Implementing Quality on a Java ProjectVincent Massol
 

More from Vincent Massol (20)

XWiki Testing with TestContainers
XWiki Testing with TestContainersXWiki Testing with TestContainers
XWiki Testing with TestContainers
 
XWiki: The best wiki for developers
XWiki: The best wiki for developersXWiki: The best wiki for developers
XWiki: The best wiki for developers
 
Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019
 
Configuration Testing with Docker & TestContainers
Configuration Testing with Docker & TestContainersConfiguration Testing with Docker & TestContainers
Configuration Testing with Docker & TestContainers
 
Building XWiki
Building XWikiBuilding XWiki
Building XWiki
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projects
 
What's new in XWiki 9.x and 10.x
What's new in XWiki 9.x and 10.xWhat's new in XWiki 9.x and 10.x
What's new in XWiki 9.x and 10.x
 
Advanced Java Testing
Advanced Java TestingAdvanced Java Testing
Advanced Java Testing
 
Creating your own project's Quality Dashboard
Creating your own project's Quality DashboardCreating your own project's Quality Dashboard
Creating your own project's Quality Dashboard
 
XWiki: wiki collaboration as an alternative to Confluence and Sharepoint
XWiki: wiki collaboration as an alternative to Confluence and SharepointXWiki: wiki collaboration as an alternative to Confluence and Sharepoint
XWiki: wiki collaboration as an alternative to Confluence and Sharepoint
 
Creating your own project's Quality Dashboard
Creating your own project's Quality DashboardCreating your own project's Quality Dashboard
Creating your own project's Quality Dashboard
 
XWiki: The web's Swiss Army Knife
XWiki: The web's Swiss Army KnifeXWiki: The web's Swiss Army Knife
XWiki: The web's Swiss Army Knife
 
Leading a Community-Driven Open Source Project
Leading a Community-Driven Open Source ProjectLeading a Community-Driven Open Source Project
Leading a Community-Driven Open Source Project
 
Developing XWiki
Developing XWikiDeveloping XWiki
Developing XWiki
 
XWiki Status - July 2015
XWiki Status - July 2015XWiki Status - July 2015
XWiki Status - July 2015
 
XWiki SAS development practices
XWiki SAS development practicesXWiki SAS development practices
XWiki SAS development practices
 
XWiki SAS: An open source company
XWiki SAS: An open source companyXWiki SAS: An open source company
XWiki SAS: An open source company
 
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
XWiki: A web dev runtime for writing web apps @ FOSDEM 2014
 
XWiki Rendering @ FOSDEM 2014
XWiki Rendering @ FOSDEM 2014XWiki Rendering @ FOSDEM 2014
XWiki Rendering @ FOSDEM 2014
 
Implementing Quality on a Java Project
Implementing Quality on a Java ProjectImplementing Quality on a Java Project
Implementing Quality on a Java Project
 

Recently uploaded

New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 

Recently uploaded (20)

New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 

QDashboard 1.2

  • 1. Copyright 2006 Vincent Massol, all rights reserved QDashboard Proposal v 1.2 Vincent Massol, 9 Oct. 2006 TODO:
 Find a better name!
  • 2. Copyright 2006 Vincent Massol, all rights reserved The Need ■ Projects are not controlled in term of quality It’s a best effort which results most often in poor quality and high maintenance costs There’s no tool to help monitor the quality over the duration of the project ■ Project health is also not controlled Results in delays to deliver and cost overrun Again there’s no tool to help monitor a project’s health over its course ■ Quality and Health are currently monitored manually (when they are monitored at all) Lots of guessing Manual and tedious work Inaccurate because based on people’s perception of how good and how finished a project is ■ QDashboard is about extracting tangible information from the project’s outputs (source code, artifacts, issue tracker, etc)
  • 3. Copyright 2006 Vincent Massol, all rights reserved General goals ■ Develop a Quality and Health Check Dashboard to track quality and health of development projects ■ 3 main features Display metrics (historical and by committer) ■ For quality and project health Rank the projects ■ On quality and health criteria Suggest recommendations ■ To improve quality and health ■ Reuses existing open source tools for gathering metrics Checkstyle, PMD, findbugs, Xradar, JavaNCSS, JUnit, Xref, Cobertura, etc ■ Aggregate the results, store them over time, generate trends, generate reports, set alarm thresholds, correlate them together
  • 4. Copyright 2006 Vincent Massol, all rights reserved Target Audience ■ Project Managers How is my project doing? ■ Project Directors How are my different projects doing? ■ Developers How am I doing in my team? ■ QA Managers/Teams How are all the projects doing, compared with each other?
  • 5. Copyright 2006 Vincent Massol, all rights reserved Business value ■ Improve project quality Less bugs Easier maintenance ■ Improve respect of deadlines ■ Project audits Ex: Outsourced projects ■ Healthy comparison between different projects Leads to emulation and quality/productivity increase (if done right) ■ Increase developer’s responsibility By providing visibility on his work ■ Reward team members Factual recognition of work done Good developers can now be rewarded
  • 6. Copyright 2006 Vincent Massol, all rights reserved Features The features are presented
 in no particular order
  • 7. Copyright 2006 Vincent Massol, all rights reserved Recommendations & Rankings ■ Ranker to rank the different projects according to metrics Ranking in quality and in health Ability to compare projects Only rank common metrics. Take common metrics between project for ranking, i.e. ranking against Metric Set ■ Recommendation engine Adapted for different types of projects ■ ex.: OSS projects, Prototype (build and throw away), Core IS project (ex: banking project that must last 10 years), etc Configurable Well known Recommendation sets
  • 8. Copyright 2006 Vincent Massol, all rights reserved Features (1) ■ Add project from a SCM URL Points to a Maven POM Manual by entering information such as location of sources, tests, etc ■ With automatic detection as much as possible ■ See http://blogs.codehaus.org/people/vmassol/archives/ 001369_intellib.html
  • 9. Copyright 2006 Vincent Massol, all rights reserved Features (2) ■ Execute coding rules on project Checkstyle JavaNCSS Findbugs PMD CPD … Only select rules that everyone agree on by default
  • 10. Copyright 2006 Vincent Massol, all rights reserved Features (3) ■ Measure project activity # Commits per day/week/month/developer Release frequency Nb active committers ■ Count number of tests ■ Measure Test coverage Need runtime model (see after) or integrate with a build/CI
  • 11. Copyright 2006 Vincent Massol, all rights reserved Features (4) ■ Automatically discover the build used by the project and display it Ant, Maven1, Maven2, etc Give a negative point to project if no build ■ Provide an instance of QDashboard for open source projects Automatically discover M2 projects on ibiblio and generate dashboard for them To make advertisement for QDashboard
  • 12. Copyright 2006 Vincent Massol, all rights reserved Features (5) ■ Provide individual stats by committer For example, how many rules John Doe has violated in his last commit? All reports (checkstyle, PMD, CPD, etc) should allow an individual view Goal: every developer must be aware of what he’s doing and be sensitive to quality. By emulation developers should automatically work towards improving their code quality
  • 13. Copyright 2006 Vincent Massol, all rights reserved Features (6) ■ Display # of documentation pages (and quantity) modified by users So that not only code lines is made visible but also documentation Support xdoc, APT, FML, confluence, etc ■ Display individual statistics on: Modified code – main sources (src/main) Modified code – test sources (src/test) Modified documentation (see above) (src/site + wiki) Modified build files (pom.xml, profiles.xml) Other
  • 14. Copyright 2006 Vincent Massol, all rights reserved Features (7) ■ Subscribe an Agent to the project mailing lists to measure project member activity In order to see who helps with questions and who communicates in general Nb answers per day/week/month on the list ■ Run Clirr on releases project versions To measure how much importance is given to binary compatibility. Need to take into account non-stable API ■ Must be marked manually by someone Need to take into account deprecations so that a removed deprecations does not trigger a bad point ■ Note: Project need to decide how long a deprecation should stay
  • 15. Copyright 2006 Vincent Massol, all rights reserved Features (8) ■ JIRA integration How long issues are opened on average Who closes issues ■ Crucible integration Reviewed code %, % of code not reviewed Reviews in progress, when was last review done (if too long raise warning), etc ■ Top projects view List the project will the less violations ■ Need to ensure we compare apples with apples And worse projects! Good for the open source instance to list the top 50 projects for example. Provide emulation. Nobody wants to see his project in the worse category… Users will be more tempted to use a good quality and healthy project Provide the same view for internal project portofoli management
  • 16. Copyright 2006 Vincent Massol, all rights reserved Features (9) ■ Indicator: # of mails on the mailing lists Per day/week/month Helps evaluate project’s activity and health Note: need to support forums too for projects not using mailing lists ■ Offer threshold warnings Ex: If # of PMD errors goes beyond N Ex: If no release done in N months Notify by Mail, IRC, IM
  • 17. Copyright 2006 Vincent Massol, all rights reserved Features (10) ■ Allow projects to compare with each other Metric by metric Globally (need some ranking system – Not easy) ■ Integrate with bug tracker to measure # bugs / release Warning: more testers will lead to more bugs up to a level. Thus it’s not the projects with the most discovered bugs which are less good on quality! Need to be correlated with # of tests
  • 18. Copyright 2006 Vincent Massol, all rights reserved Features (11) ■ Recommendations: Offer quick wins advice Provide suggestions to improve score Does this by comparing current project with other existing projects (open source ones for example) and find the top few metrics where the project is off the most Examples ■ If committer repeatedly increase # of checkstyle violations during last 5 commits then recommend fixing it and raise highlight ■ If no release in past 1 month then recommend release ■ If bug tracker issues pending for more than 1 month raise warning Use groovy for writing rules by offering Java objects to wrap around. This allows easy edition of rules and creating new ones by users. ■ Allow comments for each metric on all projects So that users/developers of project can provide feedback/explain the value in some metrics. Provide way for users to provide feedback on something not working ■ Automatically generate a JIRA issue for QDashboard for exemple (as is done by IntelliJ IDEA) This is one killer feature. 
 TODO: List 40 good
 recommendations rules
  • 19. Copyright 2006 Vincent Massol, all rights reserved Features (12) ■ Scheduler Take snapshot of dashboard every day/week (+ on demand for releases) for example for historical trends ■ Display graphs for each metric ■ Support for subprojects Example: M2 modules ■ Display project versions milestones in metric graphs ■ Ability to create Parsers/Analyzers/Metrics directly from the webapp Including generic parser, etc ■ Create an online repository of Dashlets That can also be accessed and discovered from QDashboard directly
  • 20. Copyright 2006 Vincent Massol, all rights reserved Architecture
  • 21. Copyright 2006 Vincent Massol, all rights reserved System Architecture Dashboard
 Server Web Browser IDE plugins Mail, IRC, IM Bug Trackers Mailing lists Build/CI tools SCMs View results Data sources Crucible/FishEye
  • 22. Copyright 2006 Vincent Massol, all rights reserved Webapp (Dashweb) Product stack Plugins & JSR-168 Portlets (Dashlets) Java API (Dashrock) ■ Dashlet = Portlet displaying a metric ■ + REST-type API for getting data from dashlets
  • 23. Copyright 2006 Vincent Massol, all rights reserved Dashrock ■ 100% Java, strongly typed API ■ Ability for users to add their own Parser, Analyzer and Metric ■ Stateless architecture (i.e. users of Dashrock have to instantiate instances of Parser, Analyzer and Metric)
  • 24. Copyright 2006 Vincent Massol, all rights reserved Dashlets ■ A Dashlet is a plugin for Dashweb In the form of a JAR ■ A Dashlet provides a JSR-168 compatible view that can display metrics computed by Dashrock ■ Allows embedding Dashrock Portlets in any JSR-88 Portlet container
  • 25. Copyright 2006 Vincent Massol, all rights reserved Technical Architecture ■ (Could be built on top of XWiki/Exo) ■ Generic webapp and platform Metrics, Dashlets, Analyzers, Parsers, Recos can be added from repositories • Metrics • Parsers • Dashlets Remote repo Local repo Dashlet 1 Dashlet 2 Dashlet N Dashweb Scheduler Project Mgr Renderer Ranker Reco. Engine Dashrock
  • 26. Copyright 2006 Vincent Massol, all rights reserved Database Parser JUnit
 Parser Checkstyle
 Parser Parse and persist data Analyzer Importer Metric Monthly
 Aggregator Test Coverage
 /LOCRead parsed data and write analyzed data Nb of JUnit tests Test Coverage % Create project Retrieve metric Dashrock Architecture Persistence API Create composite metric from several parsed information
  • 27. Copyright 2006 Vincent Massol, all rights reserved Open questions ■ Do we execute the quality tools within QDashboard? For example do we execute Checkstyle? ■ In which case we need a Project object and need to be able to build a project. Could be done by embedding M2 for example. Or do we only parse the results of an execution ■ In which case we need to integrate with build tools
  • 28. Copyright 2006 Vincent Massol, all rights reserved Appendix A: Competitors ■ CAST http://www.castsoftware.com/Products/Index.html ■ JetBrain’s TeamCity Especially with inspections and code coverage ■ Mergere ■ Atlassian
  • 29. Copyright 2006 Vincent Massol, all rights reserved Appendix B: Directory structure ■ QDashboard/ dashrock/ ■ api/ ■ parsers/ ■ analyzers/ ■ metrics/ ■ importers/ dashlet/ ■ api/ ■ dashlets/ dashweb/