mirror of
https://github.com/EiffelSoftware/eiffel-org.git
synced 2025-12-08 15:52:26 +01:00
Author:admin
Date:2008-09-19T07:55:09.000000Z git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@27 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Attributes, metrics and measures]]
|
||||
[[Property:weight|1]]
|
||||
[[Property:uuid|4e35583c-25e8-63e7-2c11-ea4d3ed2e2a3]]
|
||||
The most general notion is "attribute":
|
||||
|
||||
{{note| '''Attribute''': An '''attribute''' is a property, qualitative or quantitative, of software products or processes. }}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Criterion References]]
|
||||
[[Property:weight|12]]
|
||||
[[Property:uuid|52790486-55e8-86dc-67d7-5530d1b342a3]]
|
||||
==Text Criterion==
|
||||
|
||||
'''name_is'''<br/>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Domains]]
|
||||
[[Property:weight|9]]
|
||||
[[Property:uuid|128ecc21-9d82-d590-fc3e-d0fe52991ac1]]
|
||||
A domain is a list of code elements, it can contain different kinds of code elements. A domain is used as input to a metric, as output of a metric to review some details, and as an argument passed to some criteria. Domain is used to specify scope.
|
||||
|
||||
==Domain Convention==
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Elementary and composite metrics]]
|
||||
[[Property:weight|4]]
|
||||
[[Property:uuid|ef89f3c3-180e-3390-74b5-d6d537921453]]
|
||||
Some of our metrics will be elementary and some composite. An elementary metric is measured directly from the product or a project record:
|
||||
|
||||
{{note| '''Elementary_metric''': <br/>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Definitions]]
|
||||
[[Property:weight|2]]
|
||||
[[Property:uuid|a562c37f-843c-cbbc-def5-32cda604f269]]
|
||||
* [[Definitions: Introduction|Introduction]]
|
||||
* [[Attributes, metrics and measures|Attributes, metrics and measures]]
|
||||
* [[Units|Units]]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Measurement archive]]
|
||||
[[Property:weight|10]]
|
||||
[[Property:uuid|e1e3e779-e4ca-faee-12b5-f47c8adde174]]
|
||||
If you want to perform measurements on a system that you are building, the scopes of interest are the first four listed: Feature, Class, Cluster and System. Information on either of these scopes will be provided by the development environment (as with EiffelStudio 5.x); alternatively, you could get it simply by parsing the source of your system. But what if you also need quantitative data on other systems, if only for purposes of seeing how your results compare to the quantitative properties of other people's work?
|
||||
|
||||
It would be impractical in this case to require tools that have access to as much information on external systems as on your own. All we really need is a record of previous measurements on these systems. This explains the fifth scope type, Archive: beyond the scope of the current system, all we require to define a scope is a '''measurement archive''', or just "archive" for short. This is simply a file (or part of a file) that retains, in a suitable format (XML-based), the results of measurements made earlier on one system. The file can be local or accessible as a URL on the Internet.
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Metric framework and theory]]
|
||||
[[Property:weight|3]]
|
||||
[[Property:uuid|5e76bd87-b7a7-8307-0e9e-ca9bb31db0f9]]
|
||||
You will want to rely not on a single metric but on a combination of metrics:
|
||||
|
||||
{{note| '''Metric framework''': A '''metric framework''' is a set of definitions of metrics. }}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Predefined raw metrics]]
|
||||
[[Property:weight|7]]
|
||||
[[Property:uuid|12906fea-78e3-3539-27d7-83662829b59e]]
|
||||
The environment should make it possible, for any project, to apply the elementary metrics in the following table, each with an associated unit and a one-identifier name. Each of the major divisions of the table starts with a raw metric, for example Classes, and, when appropriate, continues with selection criteria that yield derived metrics based on that raw metric, for example Deferred_classes.
|
||||
{|
|
||||
|-
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Raw metrics and selection criteria]]
|
||||
[[Property:weight|5]]
|
||||
[[Property:uuid|99f51fd0-4439-08f5-9419-53c8771b50f8]]
|
||||
Elementary metrics measure patterns whose occurrences (in a product or process) can be counted. We need to decompose this notion further to avoid an explosion of the number of elementary metrics. For example the features of a class can be classified along several lines:
|
||||
* Some are attributes (object fields), others are routines (algorithms).
|
||||
* Some are inherited from a parent, others immediate (defined in the class).
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Scopes]]
|
||||
[[Property:weight|8]]
|
||||
[[Property:uuid|303fb469-9f2b-d7cc-55e7-d657fb87b8fe]]
|
||||
Every metric has a scope:
|
||||
|
||||
{{note| '''Scope of a metric''': <br/>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Selection Criteria]]
|
||||
[[Property:weight|6]]
|
||||
[[Property:uuid|d492c7f5-71ec-ae04-c62b-6845f30ed762]]
|
||||
A selection criterion is used to filter out candidate code elements and only leave and count those satisfied elements. For example, criterion is_deferred in a basic class metric is only satisfied when a candidate class is deferred. A selection criterion can have modifiers which indicate how the associated criterion will perform its filtering task. There are four kinds of modifiers, shown as follows:
|
||||
* Text modifier - String text, and this text is called criterion text
|
||||
* Domain modifier - Domain, and this domain is called criterion domain
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Under the Hood - How metrics work]]
|
||||
[[Property:weight|11]]
|
||||
[[Property:uuid|4b81b16a-0c46-8d5a-c5b5-346ea01c58ee]]
|
||||
This part explains how a product basic metric is calculated.
|
||||
|
||||
==Domain Transformation==
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Units]]
|
||||
[[Property:weight|2]]
|
||||
[[Property:uuid|fa08d5aa-7ea4-e7bb-bb59-e4982a583976]]
|
||||
Metrics will be expressed in units, such as Line (numbers of source lines) or Feature (number of features).
|
||||
|
||||
{{note| '''Unit rule:''' The definition of any metric must specify an associated unit. }}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Metrics tool]]
|
||||
[[Property:weight|-5]]
|
||||
[[Property:uuid|e76d1c3b-773f-c051-bd94-3272f3ccadc6]]
|
||||
* [[Metric tool: Introduction|Introduction]]
|
||||
* [[Requirements|Requirements]]
|
||||
* [[Definitions|Definitions]]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Requirements]]
|
||||
[[Property:weight|1]]
|
||||
[[Property:uuid|834b134f-b4a5-08a7-e41c-804c0954b008]]
|
||||
All engineering disciplines other than software rely on quantitative approaches to design their products, organize the production process, and assess the results. Software engineering too can benefit from measuring relevant properties of its products and processes.
|
||||
|
||||
Measurements are not an end in themselves; they must be related to broader goals of software engineering:
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Detailed Result Panel]]
|
||||
[[Property:weight|1]]
|
||||
[[Property:uuid|35018218-cf90-5aca-dc47-205bb351592e]]
|
||||
The Detailed result panel is where detailed metric result and archive comparison result are displayed. In the following two figures, a detailed metric result and an archive comparison result are shown.
|
||||
|
||||
Detailed metric result:
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|User interface basics]]
|
||||
[[Property:weight|3]]
|
||||
[[Property:uuid|c2b8d8b6-661c-1cb5-a991-388e8374c696]]
|
||||
EiffelStudio includes a Metric tool based on the previously defined metric theory. This tool provides many facilities like computing measures over a project, including smaller scopes, defining new metrics according to users needs and handling archives to compare projects
|
||||
* [[Metric Evaluation Panel|Metric Evaluation panel]]
|
||||
* [[Detailed Result Panel|Detailed Result panel]]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Metric Archive Panel]]
|
||||
[[Property:weight|4]]
|
||||
[[Property:uuid|c8793405-c91d-c04b-10ed-07739728f697]]
|
||||
The metric archive panel is used to calculate and restore metric archives and to do metric archive comparison.
|
||||
|
||||
==Metric Archiv Calculation==
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Metric Definition Panel]]
|
||||
[[Property:weight|2]]
|
||||
[[Property:uuid|5a778f15-cefe-182d-a296-545ee77d3028]]
|
||||
In the metric definition panel, you can do the following:
|
||||
* Manage user-defined metrics, such as defining new metrics and modify or remove existing ones. Metrics with a small lock in their icons are predefined metrics which cannot be changed or remvoed
|
||||
* Import metrics from other systems
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Metric Evaluation Panel]]
|
||||
[[Property:weight|0]]
|
||||
[[Property:uuid|c31fddbb-7421-fe4b-57d3-7eea32f5e9e0]]
|
||||
The Metric Evaluation panel is the place to do metric evaluation. After selecting a metric from the "Select metric" area and setting an input domain in the "Setup input domain" area, you can click the run button to start metric evaluation. You can start metric evaluation with and empty input domain and the result will be always zero.
|
||||
|
||||
[[Image:interface1|Defining an input domain]]
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
[[Property:title|Metric History Panel]]
|
||||
[[Property:weight|3]]
|
||||
[[Property:uuid|373d7403-eb3a-3c05-787e-b4a8cb5848cb]]
|
||||
The metric history panel lists all recorded metric evaluations. You can select them and reevaluate them to see the new value and if it differs from the old result.
|
||||
|
||||
Lets have a look at the buttons in the main toolbar highlighted in the following figure:
|
||||
|
||||
Reference in New Issue
Block a user