{"id":179,"date":"2012-09-27T23:14:45","date_gmt":"2012-09-27T20:14:45","guid":{"rendered":"http:\/\/yarimada.gen.tr\/?p=179"},"modified":"2013-07-27T23:26:40","modified_gmt":"2013-07-27T20:26:40","slug":"yazilim-muhendisligi","status":"publish","type":"post","link":"https:\/\/yarimada.gen.tr\/?p=179","title":{"rendered":"Yaz\u0131l\u0131m M\u00fchendisli\u011fi"},"content":{"rendered":"<p>Dil Derne\u011fi taraf\u0131ndan yay\u0131mlanan s\u00f6zl\u00fckte bilgisayar, \u201c\u00e7ok say\u0131da aritmetiksel ya da mant\u0131ksal i\u015flemlerden olu\u015fan bir i\u015fi, \u00f6nceden verilmi\u015f bir izlenceye g\u00f6re yap\u0131p sonu\u00e7land\u0131ran elektronik ayg\u0131t\u201d olarak tan\u0131mlan\u0131r. Bilgisayar, donan\u0131mdan (hardware) ve yaz\u0131l\u0131mdan (software) olu\u015fur. Yine ayn\u0131 s\u00f6zl\u00fckte donan\u0131m, \u201cbilgisayar\u0131 olu\u015fturan gere\u00e7lerin t\u00fcm\u00fc\u201d , yaz\u0131l\u0131m ise \u201cbir bilgii\u015flem dizgesinin i\u015fleyi\u015fiyle ilgili bilgisayar izlencelerinin, kurallar\u0131n ve gerekti\u011finde belgelemenin t\u00fcm\u00fc\u201d \u015feklinde tan\u0131mlan\u0131r. Bir di\u011fer deyi\u015fle, donan\u0131mla bilgisayar\u0131n dokunulabilir bile\u015fenlerine, yaz\u0131l\u0131mla ise maddi olmayan bile\u015fenlerine i\u015faret edilir. Buna g\u00f6re, fare, klavye, monit\u00f6r, disk vb. donan\u0131m kapsam\u0131nda de\u011ferlendirilirken, i\u015fletim sistemi, oyunlar, belge bi\u00e7imleri (jpg, xml, html, mpg vb.), ofis uygulamalar\u0131 vb. yaz\u0131l\u0131m kapsam\u0131nda de\u011ferlendirilir.<!--more--><\/p>\n<p>Yaz\u0131l\u0131m terimi ilk kez 1958 y\u0131l\u0131nda, \u00fcnl\u00fc bir istatistik uzman\u0131 olan John Wilder Tukey taraf\u0131ndan kullan\u0131l\u0131r. Tukey ayn\u0131 zamanda 1946 y\u0131l\u0131nda, bilgisayar programlar\u0131n\u0131n temeli olan 1ler ve 0lar i\u00e7in kullan\u0131lan binary digit &#8216;i(ikili say\u0131) bit olarak k\u0131saltan ki\u015fidir. Tukey, yaz\u0131l\u0131m terimini ilk kez kullan\u0131rken yaz\u0131l\u0131m\u0131n giderek daha fazla \u00f6nem kazanaca\u011f\u0131n\u0131n da alt\u0131n\u0131 \u00e7izer. Ancak 1960&#8217;lar\u0131n ikinci yar\u0131s\u0131na kadar yaz\u0131l\u0131m, donan\u0131m\u0131n bir par\u00e7as\u0131, bilgisayarlar\u0131n ikincil bir bile\u015feni olarak g\u00f6r\u00fcl\u00fcr. 1960lar\u0131n sonunda ger\u00e7ekle\u015fen \u00fc\u00e7 olay, yaz\u0131l\u0131m ve donan\u0131m end\u00fcstrilerini ay\u0131r\u0131r. \u0130lk olay, IBM System 360 bilgisayar ailesinin piyasaya girmesi ve farkl\u0131 yaz\u0131l\u0131m firmalar\u0131n\u0131n de\u011fi\u015fen kullan\u0131c\u0131lara g\u00f6re yaz\u0131l\u0131m geli\u015ftirme olana\u011f\u0131 kazanmas\u0131 ve bunu satabilmesidir. \u0130kinci olay, 6 Aral\u0131k 1968&#8217;de IBM&#8217;in art\u0131k donan\u0131m\u0131 ve yaz\u0131l\u0131m\u0131 ayr\u0131 ayr\u0131 fiyatland\u0131raca\u011f\u0131n\u0131 duyurmas\u0131d\u0131r. O vakte kadar m\u00fc\u015fteriler, bilgisayara bir b\u00fct\u00fcn olarak para \u00f6demektedirler. IBM bu hamlesinin y\u00fckselen yaz\u0131l\u0131m maliyetlerinin bir neticesi oldu\u011funu s\u00f6yler. Fakat OECD raporunda (1985), IBM&#8217;in bu karar\u0131nda anti-tr\u00f6st yasalar\u0131n\u0131n etkin oldu\u011fu iddia edilir . Gerek\u00e7esi her ne olursa olsun, IBM&#8217;in bu hamlesi \u00e7e\u015fitli yaz\u0131l\u0131m firmalar\u0131na IBM uyumlu yaz\u0131l\u0131mlar geli\u015ftirme olana\u011f\u0131 sa\u011flar. \u00dc\u00e7\u00fcnc\u00fc olay ise mikrobilgisayar end\u00fcstrisinin geli\u015fimidir. Mikrobilgisayarlarla beraber, k\u00fc\u00e7\u00fck i\u015fletmeler de bilgisayar alabilir ve kullanabilir duruma gelirler (Campbell-Kelly, 1995).<\/p>\n<p>Donan\u0131m, Intel \u015firketinin kurucular\u0131ndan Gordon Moore&#8217;un 19 Nisan 1965 y\u0131l\u0131nda yay\u0131nlanan makalesinde \u00f6ng\u00f6rd\u00fc\u011f\u00fc gibi \u00e7ok h\u0131zl\u0131 bir \u015fekilde geli\u015fir. Moore, 1965 y\u0131l\u0131nda mikroi\u015flemciler i\u00e7indeki transist\u00f6r say\u0131s\u0131n\u0131n her y\u0131l iki kat\u0131na \u00e7\u0131kaca\u011f\u0131n\u0131 \u00f6ng\u00f6rm\u00fc\u015f, 1975 y\u0131l\u0131nda ise bunu \u201cher iki y\u0131lda bir iki kat\u0131na \u00e7\u0131kacak\u201d \u015feklinde d\u00fczeltmi\u015ftir. Moore, 2005 y\u0131l\u0131nda kendisiyle yap\u0131lan bir s\u00f6yle\u015fide bu \u00f6ng\u00f6r\u00fcs\u00fcn\u00fcn bir s\u00fcre sonra ge\u00e7ersiz olabilece\u011fini belirtir.<\/p>\n<figure id=\"attachment_180\" aria-describedby=\"caption-attachment-180\" style=\"width: 460px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/yarimada.gen.tr\/wp-content\/uploads\/2013\/07\/moore.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-180\" alt=\"Moore Kanunu\" src=\"http:\/\/yarimada.gen.tr\/wp-content\/uploads\/2013\/07\/moore.png\" width=\"460\" height=\"404\" srcset=\"https:\/\/yarimada.gen.tr\/wp-content\/uploads\/2013\/07\/moore.png 460w, https:\/\/yarimada.gen.tr\/wp-content\/uploads\/2013\/07\/moore-300x263.png 300w\" sizes=\"auto, (max-width: 460px) 100vw, 460px\" \/><\/a><figcaption id=\"caption-attachment-180\" class=\"wp-caption-text\">Moore Kanunu<\/figcaption><\/figure>\n<p>Fakat ayn\u0131 parlak geli\u015fim \u00e7izgisi yaz\u0131l\u0131m alan\u0131nda g\u00f6r\u00fclmez. Yaz\u0131l\u0131m geli\u015ftirme ve verimlilik hep sorunlu olagelir. Edsger Dijkstra 1972 y\u0131l\u0131nda \u015f\u00f6yle yazmaktad\u0131r:<\/p>\n<blockquote><p>Yaz\u0131l\u0131m krizinin temel nedeni, bilgisayarlar\u0131n birka\u00e7 kat daha g\u00fc\u00e7l\u00fc hale gelmi\u015f olmas\u0131d\u0131r. A\u00e7\u0131k\u00e7a s\u00f6ylersek, bilgisayarlar yokken programlama gibi bir derdimiz yoktu, birka\u00e7 zay\u0131f bilgisayar\u0131m\u0131z oldu\u011funda programlama basit bir sorundu ve \u015fimdi dev gibi bilgisayarlar\u0131m\u0131z var ve programlaman\u0131n kendisi de dev gibi bir sorun.<\/p><\/blockquote>\n<p>Dijkstra&#8217;n\u0131n vurgulad\u0131\u011f\u0131 gibi daha g\u00fc\u00e7l\u00fc donan\u0131m, daha geni\u015f ve karma\u015f\u0131k yaz\u0131l\u0131mlar\u0131 g\u00fcndeme getirmi\u015ftir ve bunun kendisi ba\u015fl\u0131 ba\u015f\u0131na bir sorundur. Bu sorun, yaz\u0131l\u0131m krizi olarak adland\u0131r\u0131l\u0131r. Krizin ba\u015fl\u0131ca g\u00f6r\u00fcn\u00fcmleri \u015funlard\u0131r:<\/p>\n<ul>\n<li>A\u015f\u0131lan proje b\u00fct\u00e7eleri<\/li>\n<li>Zaman\u0131nda tamamlanamayan projeler<\/li>\n<li>Geli\u015ftirilen yaz\u0131l\u0131m\u0131n verimsiz ve d\u00fc\u015f\u00fck kalitede olmas\u0131<\/li>\n<li>\u00c7o\u011fu zaman ihtiya\u00e7lar\u0131 tam kar\u015f\u0131layamamas\u0131<\/li>\n<li>Yaz\u0131l\u0131m kodunun y\u00f6netilemez (unmanagable) ve desteklenemez (unmaintainable) olu\u015fu<\/li>\n<li>Yaz\u0131l\u0131m\u0131n hi\u00e7 teslim edilememesi<\/li>\n<li>G\u00fcn\u00fcm\u00fczde de k\u0131smen devam eden yaz\u0131l\u0131m krizini a\u015fa\u011f\u0131daki \u015fekilde karikat\u00fcrize etmek de m\u00fcmk\u00fcn:<\/li>\n<\/ul>\n<figure id=\"attachment_181\" aria-describedby=\"caption-attachment-181\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/yarimada.gen.tr\/wp-content\/uploads\/2013\/07\/yazilimGelistirme.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-181\" alt=\"Yaz\u0131l\u0131m Geli\u015ftirme\" src=\"http:\/\/yarimada.gen.tr\/wp-content\/uploads\/2013\/07\/yazilimGelistirme.png\" width=\"800\" height=\"592\" srcset=\"https:\/\/yarimada.gen.tr\/wp-content\/uploads\/2013\/07\/yazilimGelistirme.png 800w, https:\/\/yarimada.gen.tr\/wp-content\/uploads\/2013\/07\/yazilimGelistirme-300x222.png 300w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><figcaption id=\"caption-attachment-181\" class=\"wp-caption-text\">Yaz\u0131l\u0131m Geli\u015ftirme<\/figcaption><\/figure>\n<p>Yaz\u0131l\u0131m m\u00fchendisli\u011fi, bu krizi a\u015fma amac\u0131yla, yaz\u0131l\u0131m geli\u015ftirmenin bir m\u00fchendislik \u00e7er\u00e7evesinde de\u011ferlendirilebilece\u011fi iddias\u0131yla g\u00fcndeme gelir. Bu do\u011frultuda, \u00e7e\u015fitli yaz\u0131l\u0131m geli\u015ftirme metotlar\u0131 geli\u015ftirilir. Donan\u0131mdaki geli\u015fim h\u0131z\u0131na hi\u00e7bir zaman eri\u015filememi\u015f olmas\u0131na kar\u015f\u0131n \u00f6nemli ba\u015far\u0131lar da elde edilir.<\/p>\n<p>Peki yaz\u0131l\u0131m geli\u015ftirmeyi zor yapan nedir?<\/p>\n<p>Brooks (1995), ilk kez 1986 y\u0131l\u0131nda yay\u0131nlanan ve b\u00fcy\u00fck yank\u0131 uyand\u0131ran, \u201cG\u00fcm\u00fc\u015f Kur\u015fun Yok: Yaz\u0131l\u0131m M\u00fchendisli\u011finde T\u00f6z ve \u0130linek\u201d (No Silver Bullet- Essence and Accident in Software Engineering ) ba\u015fl\u0131kl\u0131 makalesinde bu konuyu tart\u0131\u015fmakta ve donan\u0131mdaki gibi bir geli\u015fimin yaz\u0131l\u0131mda olanakl\u0131 olmad\u0131\u011f\u0131n\u0131 vurgulamaktad\u0131r. Brooks&#8217;un yaz\u0131l\u0131m konusundaki temel tezlerine ge\u00e7meden \u00f6nce, makalesinin ba\u015fl\u0131\u011f\u0131n\u0131 a\u00e7\u0131kl\u0131\u011fa kavu\u015fturmak gerekiyor. G\u00fcm\u00fc\u015f kur\u015fun, Avrupa masallar\u0131nda kurtadamlara, cad\u0131lara ya da canavarlara kar\u015f\u0131 etkili olan tek kur\u015fun tipi. Brooks, t\u00f6z (essence) ve ilinek (accident) kavramlar\u0131n\u0131 Aristoteles felsefesinden al\u0131r. T\u00f6z ile bir nesneyi neyse o yapan \u00f6zellikleri anlatmak ister. \u0130line\u011fin ise kendi ba\u015f\u0131na bir varl\u0131\u011f\u0131 yoktur, t\u00f6zle birlikte var olur ve t\u00f6z\u00fc de\u011fi\u015ftirmeksizin de\u011fi\u015febilen bir niteliktir. Orhan Han\u00e7erlio\u011flu&#8217;nun Felsefe S\u00f6zl\u00fc\u011f\u00fc&#8217;nde dikkat \u00e7ekti\u011fi gibi ilinek terimini olumsal terimi ile kar\u0131\u015ft\u0131rmamak gerekir. Olumsal, hi\u00e7bir \u015feyle belirlenmemi\u015ftir. \u0130linek ise t\u00f6zle belirlenir. \u00d6rne\u011fin, elman\u0131n rengi bir ilinektir. Elman\u0131n rengi zamanla de\u011fi\u015fip ye\u015fil, sar\u0131, k\u0131rm\u0131z\u0131 olsa da, elma hep elma olarak kal\u0131r.<\/p>\n<p>Brooks, yaz\u0131l\u0131m projelerinin geli\u015fimini, insandan kurda d\u00f6n\u00fc\u015fen kurtadamlara benzetmektedir. Sorunsuz ba\u015flayan ve bir s\u00fcre b\u00f6yle devam eden masum yaz\u0131l\u0131m projeleri bir s\u00fcre sonra kurtadam olmaktad\u0131r: Zaman\u0131nda ya da hi\u00e7 teslim edilemeyen \u00fcr\u00fcnler, b\u00fct\u00e7e a\u00e7\u0131klar\u0131, kullan\u0131c\u0131lar\u0131n ihtiyac\u0131n\u0131 tam kar\u015f\u0131layamama&#8230; Bu kurtadam\u0131 yok edecek g\u00fcm\u00fc\u015f kur\u015funa olan ihtiya\u00e7 her ge\u00e7en g\u00fcn kendini daha \u00e7ok hissettirmektedir. Donan\u0131mlar\u0131n performans\u0131 art\u0131p fiyatlar\u0131 d\u00fc\u015ferken neden yaz\u0131l\u0131mda ayn\u0131 ba\u015far\u0131 elde edilememektedir?<\/p>\n<p>Brooks, donan\u0131mdaki h\u0131zl\u0131 geli\u015fimin yaz\u0131l\u0131mda ya\u015fanamayaca\u011f\u0131n\u0131 iddia eder. Birincisi, donan\u0131mdaki geli\u015fim, iki y\u0131lda iki kat\u0131na \u00e7\u0131kma, zaten s\u0131ra d\u0131\u015f\u0131 bir olgudur. \u0130kincisi yaz\u0131l\u0131m\u0131n do\u011fas\u0131, benzer bir geli\u015fime olanak vermez. Yaz\u0131l\u0131mla beraber, kafa ve kol eme\u011fi tart\u0131\u015fmas\u0131 daha farkl\u0131 bir noktaya ta\u015f\u0131nmaktad\u0131r. Yaz\u0131n\u0131n ba\u015f\u0131ndaki tan\u0131mlar\u0131 hat\u0131rlarsak, donan\u0131m bilgisayar\u0131n maddi, yaz\u0131l\u0131m ise maddi olmayan bile\u015fenlerine i\u015faret eder. Dolay\u0131s\u0131yla, bir elektronik m\u00fchendisinin donan\u0131mdaki kafa eme\u011finin \u00fcr\u00fcn\u00fc elle tutulur hale gelirken, yaz\u0131l\u0131m m\u00fchendisinin eme\u011fi sadece bi\u00e7im de\u011fi\u015ftirir ama maddile\u015femez. Sanat eserlerinde de benzer bir durum s\u00f6z konusudur. Ama bili\u015fim teknolojilerinin, dolay\u0131s\u0131yla yaz\u0131l\u0131m\u0131n, d\u00fcnya ekonomisindeki yeri dikkate al\u0131nd\u0131\u011f\u0131nda sorun daha kritik hale gelir. Brooks&#8217;a g\u00f6re yaz\u0131l\u0131m geli\u015ftirmede harcanan eme\u011fi, Aristoteles&#8217;ten hareketle, t\u00f6zsel ve ilineksel olarak ikiye ay\u0131rmak gerekir. T\u00f6zsel, yaz\u0131l\u0131m\u0131n do\u011fas\u0131na i\u00e7sel olan \u00f6geleri, ilineksel ise yaz\u0131l\u0131m\u0131n do\u011fas\u0131nda olmayan ama yine de onun bir par\u00e7as\u0131 olan \u00f6geleri belirtir. Bu ba\u011flamda, yaz\u0131l\u0131mdaki t\u00f6zsel emek, maddi olan ili\u015fkilerin zihinde algoritmalar, veri k\u00fcmeleri, ili\u015fkiler vb halde soyutlanmas\u0131n\u0131, ilineksel emek ise bu soyutlaman\u0131n programlama dilleri ve benzeri ara\u00e7larla donan\u0131m \u00fczerinde somutlanmas\u0131n\u0131 ifade eder. Brooks, yaz\u0131l\u0131m geli\u015ftirmedeki as\u0131l zorlu\u011fun, programlamada ve testte de\u011fil, soyutlamada oldu\u011funu vurgular.<\/p>\n<p>Brooks&#8217;s g\u00f6re yaz\u0131l\u0131m\u0131n t\u00f6z\u00fcn\u00fcn temel \u00f6zellikleri \u015funlard\u0131r: karma\u015f\u0131kl\u0131k, uygunluk, de\u011fi\u015fkenlik, g\u00f6r\u00fcnmezlik.<\/p>\n<h2>Karma\u015f\u0131kl\u0131k<\/h2>\n<p>Yaz\u0131l\u0131m sistemleri, \u00e7ok say\u0131da benzer par\u00e7adan olu\u015fan otomobillerden ve binalardan farkl\u0131d\u0131r. Yaz\u0131l\u0131m, birbirine benzemeyen \u00e7ok say\u0131da par\u00e7adan olu\u015fur. Bunun yan\u0131nda, herhangi bir yaz\u0131l\u0131m sisteminin i\u00e7erdi\u011fi olas\u0131 durumlar maddi sistemlere g\u00f6re daha fazlad\u0131r. Do\u011fal olarak bu da yaz\u0131l\u0131m geli\u015ftirenlerin g\u00f6z \u00f6n\u00fcnde bulundurmas\u0131 gereken durumlar\u0131 artt\u0131r\u0131r.<\/p>\n<p>Bir binada ya\u015fayan ki\u015fi say\u0131s\u0131n\u0131 iki kat\u0131na \u00e7\u0131karmak i\u00e7in \u00e7o\u011fu zaman kullan\u0131lan fiziksel kaynaklar\u0131 iki kat\u0131na \u00e7\u0131karmak yeterlidir. Ancak bir yaz\u0131l\u0131m, ayn\u0131 anda 100 kullan\u0131c\u0131ya hizmet verebiliyorsa bu say\u0131y\u0131 200 yapmak i\u00e7in ayn\u0131 yaz\u0131l\u0131mdan iki tane \u00e7al\u0131\u015ft\u0131rmak yeterli olmayacakt\u0131r. Yaz\u0131l\u0131m\u0131n kendisine i\u00e7sel olan bu karma\u015f\u0131kl\u0131k, yaz\u0131l\u0131m projelerinin y\u00f6netimine de yans\u0131r. Proje ekibi geni\u015fledik\u00e7e, ileti\u015fim sorunlar\u0131 nedeniyle soyut olan\u0131n i\u00e7erdi\u011fi karma\u015f\u0131kl\u0131k daha da b\u00fcy\u00fcr.<\/p>\n<h2>Uyumluluk<\/h2>\n<p>Karma\u015f\u0131kl\u0131k, yaln\u0131zca yaz\u0131l\u0131ma \u00f6zg\u00fc bir durum de\u011fildir. \u00d6rne\u011fin fizikte de karma\u015f\u0131k olgular \u00fczerine \u00e7al\u0131\u015f\u0131l\u0131r. Fakat bu \u00e7al\u0131\u015fmalar \u00e7o\u011fu zaman belirli bir alana odaklan\u0131r ya da belirli bir d\u00fczen i\u00e7inde var olan evrene dair genel a\u00e7\u0131klamalar geli\u015ftirilmeye \u00e7al\u0131\u015f\u0131l\u0131r. Evrende bir uyum aran\u0131r.<\/p>\n<p>Yaz\u0131l\u0131m sistemleri ise s\u00fcrekli di\u011fer sistemlerle ili\u015fki halinde var olurlar. Ba\u015fka sistemlerle uyumlu \u00e7al\u0131\u015fma zorunlu\u011fu, karma\u015f\u0131kl\u0131\u011f\u0131 daha da artt\u0131r\u0131r. Ayr\u0131ca, yaz\u0131l\u0131mlardan donan\u0131m alan\u0131ndaki geli\u015fmelere ve farkl\u0131l\u0131klara kar\u015f\u0131 duyarl\u0131 olmas\u0131 ve \u00e7al\u0131\u015fmas\u0131n\u0131 ona g\u00f6re devam ettirmesi beklenir.<\/p>\n<h2>De\u011fi\u015fkenlik<\/h2>\n<p>Yaz\u0131l\u0131m somut ihtiya\u00e7lar\u0131n \u00f6nce kavramsal soyutlanmas\u0131, sonras\u0131nda bu ihtiya\u00e7lar\u0131n programlama dilleri arac\u0131l\u0131\u011f\u0131yla somutlanmas\u0131d\u0131r. \u0130n\u015fa edilen bir binada, binan\u0131n mimarisine ait bir de\u011fi\u015fiklik yapmadan y\u0131llarca oturulabilir. De\u011fi\u015fiklik, sat\u0131lan bir binada ya da otomobilde istisnad\u0131r. Fakat sadece, geli\u015ftirilen ve kullan\u0131lmayan yaz\u0131l\u0131m de\u011fi\u015fmez. Yaz\u0131l\u0131mlar, kullan\u0131lmaya ba\u015fland\u0131ktan sonra, hi\u00e7bir hata i\u00e7ermese bile,<\/p>\n<ul>\n<li>Kulland\u0131k\u00e7a, yeni ihtiya\u00e7lar\u0131n fark\u0131na var\u0131lmas\u0131<\/li>\n<li>Donan\u0131m teknolojisinin de\u011fi\u015fmesi<\/li>\n<li>Farkl\u0131 sistemlerle entegrasyon ihtiyac\u0131<\/li>\n<\/ul>\n<p>vb nedenlerle de\u011fi\u015ftirilir.<\/p>\n<p>De\u011fi\u015ftirilen veya geni\u015fletilen her yaz\u0131l\u0131m\u0131n i\u00e7erdi\u011fi karma\u015f\u0131kl\u0131k daha da artar. Bu de\u011fi\u015fiklikler, \u00f6nceden dikkate al\u0131n\u0131p bir yaz\u0131l\u0131m geli\u015ftirilmi\u015f olsa toplam karma\u015f\u0131kl\u0131k x de\u011ferinde olacakt\u0131r. Ama var olan bir yaz\u0131l\u0131ma yeni \u00f6zelliklerin eklenmesi bu karma\u015f\u0131kl\u0131\u011f\u0131 x&#8217;ten \u00e7ok daha b\u00fcy\u00fck yapar. Bu nedenle, yaz\u0131l\u0131ma daha sonradan eklenen her \u00f6zellik yaz\u0131l\u0131m\u0131 daha karma\u015f\u0131k hale getirece\u011finden bir m\u00fcddet sonra yaz\u0131l\u0131m bu karma\u015f\u0131kl\u0131\u011f\u0131 kald\u0131ramayacak noktaya gelebilir ve yaz\u0131l\u0131m yeniden yaz\u0131labilir.<\/p>\n<h2>G\u00f6r\u00fcnmezlik<\/h2>\n<p>Yaz\u0131l\u0131m\u0131n yukar\u0131daki \u00f6zellikleri, bir modele aktar\u0131lmas\u0131n\u0131 da zorla\u015ft\u0131r\u0131r. \u0130\u00e7erdi\u011fi ili\u015fkilerin karma\u015f\u0131kl\u0131\u011f\u0131 yan\u0131nda bunlar\u0131n dinamik ili\u015fkiselli\u011fi modellenmesini problemli hale getirir. Bu durum, \u00f6zellikle birden fazla ki\u015finin geli\u015ftirdi\u011fi yaz\u0131l\u0131mlarda ortak bir kavray\u0131\u015f\u0131n olu\u015fturulmas\u0131nda \u00f6nemli bir engel haline gelir.<\/p>\n<p style=\"text-align: center;\">***<\/p>\n<p>Brooks, son y\u0131llarda yaz\u0131l\u0131m m\u00fchendisli\u011findeki geli\u015fmelerin yaz\u0131l\u0131m\u0131n t\u00f6z\u00fcnden \u00e7ok, ilineksel \u00f6zelliklerine yo\u011funla\u015ft\u0131\u011f\u0131n\u0131 ve bu alandaki sorunlar\u0131 gidermek i\u00e7in \u00e7al\u0131\u015fmalar yapt\u0131\u011f\u0131n\u0131 belirtir. \u00d6rne\u011fin, y\u00fcksek d\u00fczeyli (high level) programlama dilleri, i\u015fletim sistemlerinin ayn\u0131 anda birden fazla i\u015fi yapabilmesi (time-sharing) ve b\u00fct\u00fcnle\u015fik programlama ortamlar\u0131n\u0131n olu\u015fturulmas\u0131 (Unified programming environments) yaln\u0131zca yaz\u0131l\u0131m\u0131n donan\u0131m \u00fczerinde ifadesinde kar\u015f\u0131la\u015f\u0131lan sorunlar\u0131 azaltabilmi\u015f fakat t\u00f6zsel sorunlarda herhangi bir de\u011fi\u015fiklik olmam\u0131\u015ft\u0131r.<\/p>\n<p>Buna kar\u015f\u0131n, \u00e7ok say\u0131da g\u00fcm\u00fc\u015f kur\u015fun \u00f6nerileri de gelmi\u015ftir. \u00d6rne\u011fin bunlar\u0131n en \u00f6nemlisi olan nesne y\u00f6nelimli programlama, ger\u00e7ek ili\u015fkilerin soyutlanmas\u0131 ve bunlar\u0131n bilgisayar \u00fczerindeki temsili aras\u0131ndaki aras\u0131ndaki u\u00e7urumu kapatm\u0131\u015f, farkl\u0131 bile\u015fenlerin birbirleriyle uyumunu aray\u00fczler arac\u0131l\u0131\u011f\u0131yla artt\u0131rm\u0131\u015ft\u0131r. Yaz\u0131l\u0131m\u0131n modellenmesi ve g\u00f6r\u00fcn\u00fcr hale getirilmesi i\u00e7in \u00e7e\u015fitli \u00f6neriler getirilmi\u015ftir. Ayr\u0131ca, geli\u015fmi\u015f geli\u015ftirme ortamlar\u0131n\u0131n kullan\u0131lmas\u0131n\u0131n yaz\u0131l\u0131m geli\u015ftirmedeki t\u00f6zsel zorluklar\u0131n \u00fcstesinden gelebilece\u011fi iddia edilmi\u015ftir. Fakat Brooks, \u00f6nerilen bu g\u00fcm\u00fc\u015f kur\u015funlar\u0131n kurtadam\u0131 tam anlam\u0131yla alt edemedi\u011fini belirtmektedir.<\/p>\n<p>Brooks&#8217;un makalesinin ilk kez 1986 y\u0131l\u0131nda yay\u0131nland\u0131\u011f\u0131n\u0131 bir kez daha hat\u0131rlat\u0131p, yaz\u0131l\u0131m\u0131n t\u00f6zsel sorunlar\u0131n a\u015f\u0131lmas\u0131na y\u00f6nelik \u00f6nerilerine g\u00f6z atmakta fayda var. Brooks&#8217;un \u00f6nerilerinin g\u00fcn\u00fcm\u00fczde \u00e7e\u015fitli yaz\u0131l\u0131m metotlar\u0131nda somutland\u0131\u011f\u0131n\u0131 g\u00f6r\u00fcyoruz:<\/p>\n<p><strong>Geli\u015ftirmek yerine sat\u0131n almak:<\/strong> Herhangi bir yaz\u0131l\u0131m\u0131 s\u0131f\u0131rdan geli\u015ftirmek yerine tasarlanan sistemin baz\u0131 bile\u015fenlerini sat\u0131n almak daha uygun olabilir. Bunun i\u00e7in \u00f6ncelikle, \u00e7e\u015fitli paketlerin sat\u0131labildi\u011fi bir yaz\u0131l\u0131m piyasas\u0131na gereksinim vard\u0131r. G\u00fcn\u00fcm\u00fczde, Brooks&#8217;un bu \u00f6nerisi ola\u011fan hale geldi\u011fi gibi \u00f6zellikle \u00f6zg\u00fcr ve a\u00e7\u0131k kaynak kodlu yaz\u0131l\u0131m depolar\u0131 (bkz. http:\/\/sourceforge.net) yaz\u0131l\u0131m m\u00fchendislerine e\u015fsiz olanaklar sunmaktad\u0131r. Tasarlanan herhangi bir sistemde kullan\u0131lmas\u0131 planlanan \u00f6zelle\u015fmi\u015f bile\u015fenler ya da uygulamalar, bu depolardan bulunup, gerekti\u011finde kaynak kodlar\u0131 de\u011fi\u015ftirilerek sisteme entegre edilebilirler.<\/p>\n<p><strong>Gereksinimleri belirleme ve prototip olu\u015fturma:<\/strong> Yaz\u0131n\u0131n ba\u015f\u0131nda yer alan karikat\u00fcrde g\u00f6sterilmek istendi\u011fi gibi yaz\u0131l\u0131m geli\u015ftirmenin en zor a\u015famalar\u0131ndan biri kullan\u0131c\u0131 isteklerinin belirlenmesidir. Kullan\u0131c\u0131 \u00e7o\u011fu zaman ne istedi\u011fin bilmez, bilse bile bu iste\u011fin programc\u0131lara aktar\u0131lmas\u0131 yaz\u0131l\u0131m\u0131n t\u00f6zsel \u00f6zelliklerinden dolay\u0131 zordur. Kullan\u0131c\u0131 gereksinimlerini belirlemek i\u00e7in prototipler olu\u015fturulmas\u0131 ve kullan\u0131c\u0131ya sunulmas\u0131, ihtiya\u00e7lar\u0131n kavramsal in\u015fas\u0131na yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<p><strong>Art\u0131ml\u0131 Geli\u015ftirme:<\/strong> Klasik m\u00fchendislik projelerinde analiz, tasar\u0131m, ger\u00e7ekle\u015ftirim ve test birbirini takip eden a\u015famalard\u0131r. Ancak yaz\u0131l\u0131m m\u00fchendisli\u011fi, nesnesinin soyut olmas\u0131yla di\u011fer m\u00fchendisliklerden ayr\u0131l\u0131r. Brooks&#8217;un belirtti\u011fi yaz\u0131l\u0131m \u00f6zsel niteliklerini de an\u0131msarsak, yaz\u0131l\u0131m\u0131 bir bina gibi in\u015fa edip sonland\u0131rmak m\u00fcmk\u00fcn de\u011fildir. Yaz\u0131l\u0131m yaz\u0131lmaz veya in\u015fa edilmez; geli\u015ftirilir ve b\u00fcy\u00fcr. Hedef, bir son \u00fcr\u00fcn\u00fcn in\u015fa edilip kullan\u0131c\u0131ya teslim edilmesinden \u00e7ok karma\u015f\u0131kl\u0131\u011f\u0131n kontrol alt\u0131na al\u0131nabildi\u011fi, di\u011fer sistemlerle uyumlu \u00e7al\u0131\u015fan ve istenen de\u011fi\u015fikliklere cevap verebilecek bir yaz\u0131l\u0131m geli\u015ftirmektir. Brooks&#8217;un art\u0131ml\u0131 geli\u015ftirme \u00f6nerisi, g\u00fcn\u00fcm\u00fczde bir \u00e7ok yaz\u0131l\u0131m geli\u015ftirme metodunda i\u00e7selle\u015ftirilmi\u015ftir.<\/p>\n<p style=\"text-align: center;\">***<\/p>\n<p>Brooks&#8217;un makalesinin \u00fczerinden 25 y\u0131ldan fazla bir zaman ge\u00e7ti. T\u00f6z ve ilinek ayr\u0131m\u0131 felsefede eski bir tart\u0131\u015fma konusu. Fakat, yaz\u0131l\u0131m m\u00fchendisli\u011finin 1980lerdeki, hatta 1990lardaki d\u00fczeyi de\u011ferlendirildi\u011finde soyut kavramlar olu\u015fturma ve bu kavramlar\u0131n programlama dilleri arac\u0131l\u0131\u011f\u0131yla bilgisayar \u00fczerinde somutlanmas\u0131 aras\u0131ndaki ayr\u0131m anlaml\u0131d\u0131r. Fakat, Brooks&#8217;un da de\u011findi\u011fi, nesne y\u00f6nelimli programlama ile ba\u015flayan s\u00fcre\u00e7 ve yeni yaz\u0131l\u0131m geli\u015ftirme metotlar\u0131 g\u00fcn\u00fcm\u00fczde soyutlama ve somutlama aras\u0131ndaki u\u00e7urumu da b\u00fcy\u00fck oranda kapatm\u0131\u015ft\u0131r. Nesne y\u00f6nelimli programlama, nesne y\u00f6nelimli analizi ve tasar\u0131m\u0131 da olanakl\u0131 hale getirmi\u015ftir.<\/p>\n<p>1960lar\u0131n sonunda, yaz\u0131l\u0131m kriziyle beraber vurguland\u0131\u011f\u0131 gibi yaz\u0131l\u0131m \u00fcretiminin m\u00fchendisli\u011fe ihtiyac\u0131 vard\u0131r. Fakat yaz\u0131l\u0131m m\u00fchendisli\u011fi, yeni bir m\u00fchendisliktir ve di\u011fer m\u00fchendisliklerde oldu\u011fu gibi arkas\u0131nda y\u00fczy\u0131llar\u0131n fizik ve kimya birikimi yoktur. Zaman zaman, soyutla daha i\u00e7li d\u0131\u015fl\u0131 olan felsefeden ve matematikten kendisine bir \u015feyler arar. Yaz\u0131l\u0131mlar\u0131n grafiksel kullan\u0131c\u0131 aray\u00fczlerinin haz\u0131rlanmas\u0131nda bili\u015fsel psikolojinin tespitlerinden faydalan\u0131rlar.<\/p>\n<p>Ancak hala yaz\u0131l\u0131m m\u00fchendislerinin ellerinde klasik m\u00fchendisliklerin form\u00fclleri ve T cetvelleri yok. Kurtadamla m\u00fccadele devam ediyor. Yaz\u0131l\u0131m geli\u015ftiriciler kar\u015f\u0131la\u015ft\u0131klar\u0131 sorunlar\u0131 analiz ediyorlar, \u00e7\u00f6z\u00fcmler \u00fcretiyorlar ve bu \u00e7\u00f6z\u00fcmlerini pratikte s\u0131n\u0131yorlar. T\u00fcm sorunlar a\u015f\u0131lamam\u0131\u015f olmas\u0131na ra\u011fmen yaz\u0131l\u0131m m\u00fchendisli\u011fi, yaz\u0131l\u0131ma i\u00e7sel olan sorunlar\u0131n fark\u0131nda olmas\u0131 ve metotlar\u0131yla ad\u0131m ad\u0131m kendini olu\u015fturuyor.<\/p>\n<h3>Kaynaklar<\/h3>\n<p>Brooks, Fred P. (1995). <i>The Mythical Man-Month<\/i>, Addison-Wesley, s 180-226<\/p>\n<p>Campbell-Kelly, M. (1995). <i>Development and structure of the international software industry<\/i>, 1950-1990. BUSINESS AND ECONOMIC HISTORY, Volume 24, no. 2, Winter.<\/p>\n<p>OECD (1985). <i>Software: An Emerging Industry. Information Computer Communucations Policy<\/i>, Paris.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dil Derne\u011fi taraf\u0131ndan yay\u0131mlanan s\u00f6zl\u00fckte bilgisayar, \u201c\u00e7ok say\u0131da aritmetiksel ya da mant\u0131ksal i\u015flemlerden olu\u015fan bir i\u015fi, \u00f6nceden verilmi\u015f bir izlenceye g\u00f6re yap\u0131p sonu\u00e7land\u0131ran elektronik ayg\u0131t\u201d<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27],"tags":[],"class_list":["post-179","post","type-post","status-publish","format-standard","hentry","category-yazilim-muhendisligi"],"_links":{"self":[{"href":"https:\/\/yarimada.gen.tr\/index.php?rest_route=\/wp\/v2\/posts\/179","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yarimada.gen.tr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yarimada.gen.tr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yarimada.gen.tr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yarimada.gen.tr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=179"}],"version-history":[{"count":2,"href":"https:\/\/yarimada.gen.tr\/index.php?rest_route=\/wp\/v2\/posts\/179\/revisions"}],"predecessor-version":[{"id":183,"href":"https:\/\/yarimada.gen.tr\/index.php?rest_route=\/wp\/v2\/posts\/179\/revisions\/183"}],"wp:attachment":[{"href":"https:\/\/yarimada.gen.tr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=179"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yarimada.gen.tr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=179"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yarimada.gen.tr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=179"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}