www.fatihkabakci.com

Personal Website and Computer Science TUR EN

HALSTEAD KARMASIKLIGI

Last update: 5/20/2015 1:39:00 PM

Yazan:Fatih KABAKCI

Fonksiyonel-yazılım karmaşıklık ölçüm yöntemlerinden biri olan Halstead karmaşıklığı(complexity), bir kod bloğu içerisinde operatör ve operand ifadelerinin sayısına göre yazılımın karmaşıklığını inceleyen bir yazılım metriği olarak bilinir. Halstead yönteminde temel olan elementler operatörler ve operandlardır. Hatırlanacağı üzere, operatörler aritmetik ve mantıksal işlemleri gerçekleştiren semboller ve anahtar kelimeler olarak adlandırılır. Operandlar ise, aritmetik ve mantıksal işlemlerde kullanılan diğer değişkenler ve sayılara verilen addır. Halstead bu operatörleri ve operandları aşağıdaki gibi birlikte toplayarak metrikler çıkarır.

µ1 = tekil operatörlerin sayısı
µ2 = tekil operandların sayısı
N1 = toplam operatörlerin sayısı
N2 = toplam operandların sayısı

N = N1 + N2 (Program Length)
µ = µ1 + µ2 (Program Vocabulary)

Yukarıdaki program uzunluğu ve sözcük kapasitesi Halstead' ın diğer metriklerinin hesaplanmasında temel girdi olarak rol oynar. Diğer metrikler ise aşağıda verilmektedir.

Halstead Program Uzunluğu (Length)

N = N1 + N2 (Program Length) en fazla 300 olmalıdır. 300 den büyük uzunluk değerine sahip bir kod bloğu yeniden tasarlanması tavsiye edilir. 500 den büyük uzunluk değerine sahip bir kod bloğu ise mutlaka gözden geçirilmeli ve yeniden tasarlanmalıdır.

Halstead Program Hacmi (Volume)

V = N x Log2 µ (Volume) en az 20, en fazla 1000 olmalıdır. 1000 den büyük hacim değerine sahip bir kod bloğu yeniden tasarlanması gerekir.

Halstead Program Zorluğu (Difficulty)

D = ( µ1 / 2 ) * ( N2 / µ2 ) programın hata toleransını gösterir ve en fazla 50 olmalıdır. 50' den büyük değerlere sahip bir kod bloğu yeniden tasarlanması gerekir.

Halstead Program Eforu (Effort)

E = V * D programın anlaşılma çabasını gösterir. 500.000' den büyük değerlere sahip bir kod bloğu az kaliteli olarak değerlendirilebilir ve yeniden tasarlanması gerekebilir.

Halstead Program Zaman Eforu

T = E / 18 programın anlaşılma çabasını saniye cinsinden gösterir. 5.000' den, yani 1 saat 30 dakikadan büyük değerlere sahip bir kod bloğu az kaliteli olarak değerlendirilebilir ve yeniden tasarlanması gerekebilir.

Halstead Program Hata(Bug) Sayısı

B = ( E^(2/3) ) / 3000 programda tahmin edilen hata sayısını gösterir.

Örnek 1

while(1) {
   static int sayi = 0;
   sayi++;
   if(sayi == 5)
   break;
}

Yukarıdaki örnekte basit bir C kodu parçası verilmektedir. Halstead ile bu kodun yapısal karmaşıklığını hesaplayalım. Operatörler ve operandların neler olduğunu ve programda kaçar adet geçtiğini hesaplamak istersek aşağıdaki gibi bir sonuç çıkar.

Operatörler

while 1
( 2
) 2
{ 1
static 1
int 1
= 1
; 3
++ 1
if 1
== 1
break 1
} 1

Operatörler arasında while dan 1 adet, açılış parantezinden 2 adet, kapanış parantezinden 2 adet ve diğer operatör ve programda kaçar kez geçtikleri yukarıda belirtilmektedir.

Operandlar

1 1
sayi 3
0 1
5 1

Aynı şekilde operandlar arasında 1 den 1 adet, sayi dan 3 adet, 0 dan 1 adet ve 5 den 1 adet olduğu görülmektedir.

Bu durumda;

µ1 = 13 (Tekil operatörlerin sayısı)
µ2 = 4 (Tekil operandların sayısı)
N1 = 17 (Toplam operatörlerin sayısı)
N2 = 6 (Toplam operandların sayısı)

olarak bulunur. Bir modülün uzunluğu 300 a kadar kabul edilebilir bir uzunluktur. Burada küçük bir kod parçasının uzunluğu N = N1 + N2 ' den N = 23 (Program Length) olarak bulunur.

Programın kelime haznesine bakılacak olursa, µ = µ1 + µ2 ' den µ = 17 (Program Vocabulary) olarak bulunur.

Halstead' ın diğer metrikleri bu argümanlar sayesinde bulunur. Programın hacmine bakılacak olursa, V = N x log2 µ ' den V = 93.84 (Program Volume) olarak bulunur. 20 ila 1000 arasındaki değerler makul olarak kabul edilir.

Programın zorluğuna bakılacak olursa, D = ( µ1 / 2 ) * ( N2 / µ2 ) ' den D = 9.75 (Program Difficulty) olarak bulunur. 50' ye yakın değerler kabul edilebilir değerlerdir.

Program eforu, E = V * D ' den E = 914.94 (Program Effort) olarak bulunur. 500.000 e kadar olan değerler makuldur.

Programı anlama zamanına bakılacak olursa, T = E / 18 ' den T = 50.84 s (Program Time Effort) olarak bulunur. Bu değer ortalama olarak, bir kişinin bu programı 50 saniyede anlamasını gösterir.

Son olarak programdaki hata sayısına bakacak olunursa, B = ( E^(2/3) ) / 3000 ' den B = 0.031 (Number of Program Bug) olarak bulunur.

Özetle Halstead karmaşıklığı, fonksiyonel yazılımlarda, yazılımların yapısal karmaşıklığını ölçerek program kodları hakkında sayısal bilgi sağlayan yazılım metrikleri olarak kullanılır. Temel çalışma mantığı ise, programlar içerisindeki operatör ve operand sayılarını araştırmasıdır. Bu sayıları aritmetik olarak toplayarak, bir programın karmaşıklığını ölçtüğünü iddia eder.

MemberCommentDate:
Fatih KABAKCI
Sağolun Akın Hocam.

in store walgreens coupons open prescription coupon
cialis as needed dosage cialis 20 mg dosage
cialis coupon card discount card prescription coupon for cialis
viagra wiki site viagra online
nizoral emulsiovoide nizoral kokemuksia nizoral tabletti
5/20/2015 2:34:00 PM
guest
Elinize sağlık. Böyle teknik yazılara ihtiyaç var.
Devamını bekleriz.

Akın
my ex cheated on me scottdangelo.com my husband cheated again
my girlfriend cheated on me with her ex i had a dream that my girlfriend cheated on me my girlfriend cheated on me twice
signs of a cheater tracyawheeler.com black women white men
canada drug pharmacy coupon site walgreen coupons online
cialis as needed dosage cialis 20 mg dosage
losartankalium teva 50 mg crownlimos.ca losartan medical valley
detrola detralex detrol la
allopurinol bph allopurinol bph allopurinol bph
sildenafil 100mg sildenafile sildenafil 100mg
5/20/2015 1:59:00 PM

Name:


Question/Comment
   Please verify the image




The Topics in Computer Science

Search this site for





 

Software & Algorithms

icon

In mathematics and computer science, an algorithm is a step-by-step procedure for calculations. Algorithms are used for calculation, data processing, and automated reasoning.

Programming Languages

icon

A programming language is a formal constructed language designed to communicate instructions to a machine, particularly a computer. It can be used to create programs to control the behavior of a machine. Java,C, C++,C#

Database

icon

A database is an organized collection of data. The data are typically organized to model aspects of reality in a way that supports processes requiring information.

Hardware

icon

Computer hardware is the collection of physical elements that constitutes a computer system. Computer hardware refers to the physical parts or components of a computer such as the monitor, memory, cpu.

Web Technologies

icon

Web development is a broad term for the work involved in developing a web site for the Internet or an intranet. Html,Css,JavaScript,ASP.Net,PHP are one of the most popular technologies. J2EE,Servlet, JSP,JSF, ASP

Mobile Technologies

icon

Mobile application development is the process by which application software is developed for low-power handheld devices, such as personal digital assistants, enterprise digital assistants or mobile phones. J2ME

Network

icon

A computer network or data network is a telecommunications network that allows computers to exchange data. In computer networks, networked computing devices pass data to each other along data connections.

Operating Systems

icon

An operating system is software that manages computer hardware and software resources and provides common services for computer programs. The OS is an essential component of the system software in a computer system. Linux,Windows

Computer Science

icon

Computer science is the scientific and practical approach to computation and its applications.A computer scientist specializes in the theory of computation and the design of computational systems.