To answer some of the most likely questions that you may have, we compiled a list in the popular FAQ questions and answers format.
Please understand this list as an ongoing effort which is responsive towards your feedback. You can influence the content of this page by leaving a comment, taking the survey, or by forum discussions.
Basically, .CQ is a cloud-based web service that is designed for analyzing a C# software project with regard to its maintainability, combining the findings with user-defined data, and then compiling the overall results into a suitable report. The service will be accessible through a web portal that lets you upload the project's sources, trigger an analysis run, and perform the necessary administrative tasks. After the analysis has finished, you will receive an email with the resulting report.
As of now, .CQ is in its very early development - it's rather a concept than a fully shaped product. This is deliberately so, because the development of the product is supposed to consider user feedback and practical market needs from the beginning.
To learn more about the concepts and motivations behind .CQ, visit the Concepts page. To see a sample report, go to the Report page.
Because .CQ wants to consider the needs and ideas of potential users from the beginning, to build the best possible product. Therefore, it's a good idea to collect user input before development enters its crucial phase. This will both serve as a guidance for further product development and help to avoid investing time and effort in things that later turn out to be less important. (In the language of the Lean Startup movement: This serves to obtain a better product-market fit.)
Please see this question to learn about the various ways to give feedback.
.CQ is in its very early development stage, and further product development will depend to a large extent on the obtained customer feedback. Therefore, the roadmap is not yet very clear. The current plan is that .CQ will go live approximately in the middle of next year (2014).
To stay informed about the latest developments, you may subscribe to the .CQ newsletter.
There are three ways to tell us what you think:
The input received on each of these channels will influence the shape of the final product.
Code monitoring and software maintenance are hard and expensive. On the other hand, maintenance makes up by far the single biggest portion of a project's total lifecycle budget. So, controlling and improving a software project's maintainability will have a huge positive impact on this budget (or, in other words: it will significantly raise its ROI).
Also, implementing any kind of code quality mechanism is a complex and expensive task that requires huge up-front investments. .CQ wants to overcome these practical problems in providing an affordable and flexible alternative which also fits smaller budgets.
You may read the Concepts page for a more detailed explanation of the motivations and concepts behind .CQ. To see a sample report, go to the Report page.
Basically, the analysis is a two-step process:
The results then are presented to the user in a comprehensive report document, which is useful both to developers and for project management.
You may read the Concepts page for a more detailed explanation of the motivations and concepts behind .CQ. To see a sample report, go to the Report page.
Generally, everyone who is involved in (C#) software projects. More specifically, these two groups of people:
Generally, .CQ can be used whenever a source code and maintainability analysis of a (C#) software project is needed. While its use is not limited to any specific scenario, here are some of the more prominent use cases that one could think of:
In its first version, .CQ will be exclusively available for C# projects. However, the technology behind .CQ also allows for almost any other language. So, according to customer demand, there may be more to come in the future...
In short, there is none. Not yet. By design.
There is a technical concept, and a general idea of what could work and what is needed, but there is nothing like a business plan or the like. Instead of spending lots of effort to tread paths that might lead you nowhere, it is better to present a preliminary concept to the public and to see what relevant people have to say about it.
The exact pricing scheme is not yet decided upon, as it largely depends on the obtained feedback - just like most other things. Generally, .CQ is intended to be used on a frequent basis (for projects in the development phase), as well as on an as-needed basis (for already existing projects). So the most likely scheme will be a kind of 'flatrate' subscription together with some kind of pay-as-you-go option.
Formally, this website is operated by a company named dotCQ Software Development. As of now, there's exactly one person behind this company: Thomas Weller, who is a freelance software developer and consultant (C#) from Germany (Oh, and don't mind the photograph, it's more than ten years old. It's just that I currently have none at hand that would better fit the bill...).
Personally, my coding was often impaired in various degrees by bad code quality, and sometimes I even was totally frustrated about it. So, over the years, I focused more and more on this specific aspect of programming. At the same time I realized that there was no common understanding among the various stakeholders of what software quality actually is, how it affects a developer's daily work, how it can be measured, and how large its effects on a project's budget can be.
Also, I was missing a solution that is practical, affordable, easy-to-implement and easy-to-use.
Well, .CQ simply is an acronym for .NET Code Quality. - Sure, the concepts behind.CQ are in no way limited to .NET, but this is where it, historically seen, came from...
Generally, the .CQ service will be exposed through a RESTful Web API. This kind of architecture allows for calling .CQ from any context and to build any kind of client application that you can think of. When the analysis report becomes available then, the user will be notified. The following diagram illustrates this:
Because of its flexible architecture, it will be possible to integrate the .CQ system with any available technology. - Of course there will be a website, but you could also think of e.g. IDE plugins (for development), a command-line client (for Continuous Integration), etc. What exact kind of clients will be made available or scheduled for development, largely depends on the requirements that will be expressed via feedback.
Also, various different notification channels are imagineable (e.g. EMail, SMS, Twitter...). Just like the client technologies, it will depend on feedback what channel(s) will be implemented in the end.
First of all, it has to be stressed again that the Calculator on this website can only give you a rough estimate of what the likely consequences of code quality improvements might be. On top of that, a more appropriate calculation would take dozens of company- and project-specific aspects into account, and therefore might come to different results (In fact, for bigger projects, it is strongly advisable to invest upfront in more carefully assessing the project). However, the calculation is based on industry-averages and some reasonable assumptions, and therefore gives you some suitable indications of what can be expected in terms of costs and maintenance effort.
--------
1 Function
Point Languages Table
2 The
Comparative Productivity of Programming Languages
Before we can actually calculate any further metrics on the project, its size has to be determined. A software system's size can be expressed in one of three ways:
The way in which the system size metric is available to you, depends on the concrete circumstances. However, all the above measures convey the same fact and therefore are easily convertible into each other. The following table shows the applied formulas:
Size pyhs | Size func | Size time | |
---|---|---|---|
Size pyhs | |||
Size func | |||
Size time |
Formulas used to convert the various possible size measures. The leftmost column denotes the outcome type of the calculation, the top row refers to the available input. (The values are based on the data given above.)
-- Note: For your convenience, the next question provides some handy conversion tables. --
Once project size is determined, the concrete calculation method of the Calculator
is quite involved. It is based on some industry averages as well as on some reasonable
presumptions. With some minor modifications, it essentially follows the method found
in this research study:
Ariadi Nugroho, Tobias Kuipers, and Joost Visser. 2011.
An Empirical Model of Technical Debt and Interest. In: Proceedings of the 2nd
Workshop on Managing Technical Debt, pp. 1-8.
Based on the values from the previous answer, here are two helpful conversion tables to quickly look up the required values (rounded to integers):
SLOC | years | FPs | SLOC | years | FPs | SLOC | years | FPs | SLOC | years | FPs |
---|---|---|---|---|---|---|---|---|---|---|---|
10000 | 1 | 182 | 210000 | 30 | 3818 | 1100000 | 155 | 20000 | 3100000 | 438 | 56364 |
20000 | 3 | 364 | 220000 | 31 | 4000 | 1200000 | 169 | 21818 | 3200000 | 452 | 58182 |
30000 | 4 | 545 | 230000 | 32 | 4182 | 1300000 | 184 | 23636 | 3300000 | 466 | 60000 |
40000 | 6 | 727 | 240000 | 34 | 4364 | 1400000 | 198 | 25455 | 3400000 | 480 | 61818 |
50000 | 7 | 909 | 250000 | 35 | 4545 | 1500000 | 212 | 27273 | 3500000 | 494 | 63636 |
60000 | 8 | 1091 | 300000 | 42 | 5455 | 1600000 | 226 | 29091 | 3600000 | 508 | 65455 |
70000 | 10 | 1273 | 350000 | 49 | 6364 | 1700000 | 240 | 30909 | 3700000 | 523 | 67273 |
80000 | 11 | 1455 | 400000 | 56 | 7273 | 1800000 | 254 | 32727 | 3800000 | 537 | 69091 |
90000 | 13 | 1636 | 450000 | 64 | 8182 | 1900000 | 268 | 34545 | 3900000 | 551 | 70909 |
100000 | 14 | 1818 | 500000 | 71 | 9091 | 2000000 | 282 | 36364 | 4000000 | 565 | 72727 |
110000 | 16 | 2000 | 550000 | 78 | 10000 | 2100000 | 297 | 38182 | 4100000 | 579 | 74545 |
120000 | 17 | 2182 | 600000 | 85 | 10909 | 2200000 | 311 | 40000 | 4200000 | 593 | 76364 |
130000 | 18 | 2364 | 650000 | 92 | 11818 | 2300000 | 325 | 41818 | 4300000 | 607 | 78182 |
140000 | 20 | 2545 | 700000 | 99 | 12727 | 2400000 | 339 | 43636 | 4400000 | 621 | 80000 |
150000 | 21 | 2727 | 750000 | 106 | 13636 | 2500000 | 353 | 45455 | 4500000 | 636 | 81818 |
160000 | 23 | 2909 | 800000 | 113 | 14545 | 2600000 | 367 | 47273 | 4600000 | 650 | 83636 |
170000 | 24 | 3091 | 850000 | 120 | 15455 | 2700000 | 381 | 49091 | 4700000 | 664 | 85455 |
180000 | 25 | 3273 | 900000 | 127 | 16364 | 2800000 | 395 | 50909 | 4800000 | 678 | 87273 |
190000 | 27 | 3455 | 950000 | 134 | 17273 | 2900000 | 410 | 52727 | 4900000 | 692 | 89091 |
200000 | 28 | 3636 | 1000000 | 141 | 18182 | 3000000 | 424 | 54545 | 5000000 | 706 | 90909 |
FPs | years | SLOC | FPs | years | SLOC | FPs | years | SLOC | FPs | years | SLOC |
---|---|---|---|---|---|---|---|---|---|---|---|
100 | 1 | 5500 | 3200 | 25 | 176000 | 11000 | 86 | 605000 | 47500 | 371 | 2612500 |
200 | 2 | 11000 | 3400 | 27 | 187000 | 12000 | 94 | 660000 | 50000 | 391 | 2750000 |
300 | 2 | 16500 | 3600 | 28 | 198000 | 13000 | 102 | 715000 | 55000 | 430 | 3025000 |
400 | 3 | 22000 | 3800 | 30 | 209000 | 14000 | 109 | 770000 | 60000 | 469 | 3300000 |
500 | 4 | 27500 | 4000 | 31 | 220000 | 15000 | 117 | 825000 | 65000 | 508 | 3575000 |
600 | 5 | 33000 | 4200 | 33 | 231000 | 16000 | 125 | 880000 | 70000 | 547 | 3850000 |
700 | 5 | 38500 | 4400 | 34 | 242000 | 17000 | 133 | 935000 | 75000 | 586 | 4125000 |
800 | 6 | 44000 | 4600 | 36 | 253000 | 18000 | 141 | 990000 | 80000 | 625 | 4400000 |
900 | 7 | 49500 | 4800 | 37 | 264000 | 19000 | 148 | 1045000 | 85000 | 664 | 4675000 |
1000 | 8 | 55000 | 5000 | 39 | 275000 | 20000 | 156 | 1100000 | 90000 | 703 | 4950000 |
1200 | 9 | 66000 | 5500 | 43 | 302500 | 22500 | 176 | 1237500 | 95000 | 742 | 5225000 |
1400 | 11 | 77000 | 6000 | 47 | 330000 | 25000 | 195 | 1375000 | 100000 | 781 | 5500000 |
1600 | 12 | 88000 | 6500 | 51 | 357500 | 27500 | 215 | 1512500 | |||
1800 | 14 | 99000 | 7000 | 55 | 385000 | 30000 | 234 | 1650000 | |||
2000 | 16 | 110000 | 7500 | 59 | 412500 | 32500 | 254 | 1787500 | |||
2200 | 17 | 121000 | 8000 | 62 | 440000 | 35000 | 273 | 1925000 | |||
2400 | 19 | 132000 | 8500 | 66 | 467500 | 37500 | 293 | 2062500 | |||
2600 | 20 | 143000 | 9000 | 70 | 495000 | 40000 | 312 | 2200000 | |||
2800 | 22 | 154000 | 9500 | 74 | 522500 | 42500 | 332 | 2337500 | |||
3000 | 23 | 165000 | 10000 | 78 | 550000 | 45000 | 351 | 2475000 |