SEF9 - 21 Reading on Software Metric

(QUESTION 1) You measure the physical size of a person by their height and weight. How do you measure the physical size of software?

(QUESTION 2) We measure the intelligence of a person by IQ (Intelligence Quotient), the emotional state and stability by EQ (Emotional Quotient) and by ability to follow studies by CGPA (Cumulative Grade Point Average). How do we measure the complexity of software? That is, how complicated is the processing inside the software (like being simple and straight forward or highly inter-twined processes).

(QUESTION 3) Why are we interested in the measurement of certain properties or characteristics of software? Think. Think Think. About planning cost of development, resources and time schedule. Ha ha ha. Read more.

Wassalam.
WRY


MEASUREMENT: Software Engineering Metrics. Estimation Model.
===========================================================

Software Engineering Metrics. Estimation Model.

http://en.wikipedia.org/wiki/Software_metric

A software metric is a measure of some property of a piece of software or its specifications. Since quantitative measurements are essential in all sciences, there is a continuous effort by computer science practitioners and theoreticians to bring similar approaches to software development.

The goal is obtaining objective, reproducible and quantifiable measurements, which may have numerous valuable applications in schedule and budget planning, cost estimation, quality assurance testing, software debugging, software performance optimization, and optimal personnel task assignments.

Common software measurements at URL. Common software measurements include:

VERY POPULAR SOFTWARE METRICS
=======================================
* Number of lines of code (LOC) or source lines of code (SLOC) - measurement software size (universal approx and acceptance)

* Function point analysis (FPA) - A function point is a unit of measurement to express the amount of business functionality an information system provides to a user.

* Number of classes and interfaces

* * Weighted Micro Function Points (WMFP) is a modern software sizing algorithm invented by a company Logical Solutions in 2009 which is a successor to solid ancestor scientific methods as COCOMO, COSYSMO, maintainability index, cyclomatic complexity, function points, and Halstead complexity. It produces more accurate results than traditional software sizing methodologies, while requiring less configuration and knowledge from the end user, as most of the estimation is based on automatic measurements of an existing source code.

* Coupling - (degree of dependence or reliance on each other or others)

* Cohesion - (degree to which the elements of a module belong together)

* Number of lines of customer requirements

* COCOMO - Constructive Cost Model

LESS POPULAR SOFTWARE METRICS
=======================================
* Bugs per line of code
* Balanced scorecard
* Code coverage
* Comment density - source code comments density.

* Connascent software components - if a change in one would require the other to be modified in order to maintain the overall correctness of the system.

* Cyclomatic complexity (McCabe's complexity) - indicate the complexity of a program. It directly measures the number of linearly independent paths through a program's source code.

* Halstead Complexity - Halstead makes the observation that metrics of the software should reflect the implementation or expression of algorithms in different languages, but be independent of their execution on a specific platform. These metrics are therefore computed statically from the code.

* Instruction path length
* Program execution time
* Program load time
* Program size (binary)
* Robert Cecil Martin’s software package metrics


The Constructive Cost Model (COCOMO) is an algorithmic software cost estimation model developed by Barry Boehm (Spiral Process Model). The model uses a basic regression formula, with parameters that are derived from historical project data and current project characteristics.

=================================================
LOC or SLOC (Source Lines Of Code) is a software metric used to measure the size of a software program. This is the simplest of the many software metrics.

The LOC is determined by counting the number of lines in the text of the program's source code.

We can break down the software into different software code categories and make LOC measurements for these categories. For example, we can count the average LOC for classes, functions and modules. Each category can again be split, for example, into simple classes, average classes and complex classes.

LOC is typically used to predict the amount of effort that will be required to develop a program. It is also used to estimate programming productivity among programmers. It is common sense that the higher the number of LOC, the more error-prone the software will be.

LINES OF CODE (LINUX)


LINES OF CODE (MICROSOFT)


FUNCTION POINTS ANALYSIS (FPA)
=================================================
Refer Good Book 1, Chapter 15, Figure 15.4 (How to Compute Function Points)

Function points are numerical values that are calculated. It is derived from a simple estimation algorithm (weighting) based on five(5) parameter counts of certain entities in the software. The five(5) parameters are:

(1) Number of External Inputs (Counts)
(2) Number of External Outputs (Counts)
(3) Number of External Inquiries (Counts)
(4) Number of Internal Logical Files (Counts)
(5) Number of External Interface Files (Counts)

http://www.devdaily.com/FunctionPoints/

How to Determine Your Software Application Size Using Function Point Analysis (By Alvin J. Alexander)

Most practitioners of Function Point Analysis (FPA) will probably agree that there are three main objectives within the process of FPA:

1. Measure software by quantifying the functionality requested by and provided to the customer.
2. Measure software development and maintenance independently of technology used for implementation.
3. Measure software development and maintenance consistently across all projects and organizations.

=================================================
http://www.cosmicon.com/

The COSMIC functional size measurement method (hereinafter referred to as the ‘COSMIC method’) is an internationally-standardized method for measuring a functional size of software. It is applicable to both business application and real-time software.

Common Software Measurement International Consortium, the 'COSMIC' organization has developed the most advanced method of measuring a functional size of software. Such sizes are important as measures of software project work-output, for estimating project effort, for benchmarking purposes, etc.

See attached COSMIC Measurement Manual ver 3.0.1 (2009) PDF, example to pages 14, 15, 16, 22, 29, 32, 43, (63, 71 important R-12) of 80, etc.


=================================================
OTHER IMPORTANT LINKS

http://en.wikipedia.org/wiki/Coupling_(computer_science)#Module_coupling
http://en.wikipedia.org/wiki/Coupling_(computer_science)#Coupling_versus_Cohesion
http://en.wikipedia.org/wiki/Cohesion_(computer_science)#Types_of_cohesion

http://en.wikipedia.org/wiki/Cyclomatic_complexity#Formal_definition
http://en.wikipedia.org/wiki/Halstead_complexity_measures#Calculation
http://en.wikipedia.org/wiki/Weighted_Micro_Function_Points#Calculation

http://www.aivosto.com/project/help/pm-oo-cohesion.html


--
WASSALAM
wruslan.hahaha

Microsoft Word Version
Return to Software Engineering Fundamentals (SEF9MMUWRY)
Previous Topic: 20 Project Work Assignment (40% of FINAL Grade)
Next Topic: 22 Quiz No. 1 for SEF9

0 comments:

Post a Comment