Burak CODUR
E - mail : bcodur@milscint.com
Şu Yazılım Dedikleri…- [01.04.2006 ]
Bilgisayarlar açık ya da gömülü olarak günümüz askeri sistemlerinin çoğunda yer alır. Böylece, donanım ile birlikte bilgisayarları oluşturan diğer birleşen olan yazılım, askeri sistemlerin içinde bulunarak bir “silah” olma özelliğine kavuşur. Yazılım bir silah olmakla beraber, diğer silahlarla karşılaştırıldığında askerler tarafından hep göz ardı edilir.
Belki tüfek, top, tank, füze, bomba, gemi, uçak gibi silah sistemlerinden çok daha sonra ortaya çıktığı için yazılımın benimsenmesi için biraz daha süreye ihtiyaç var; belki de fiziksel bir varlık olmadığı için ve kendisine askerler tarafından savaş alanında müdahale edilemeyeceği (bakım, değişiklik gibi) için, yazılım hiçbir zaman benimsenmeyecek. Yazılıma karşı bu uzak duruşun da etkisi ile yazılım hakkında birçok yanlış anlaşılma ve yanlış değerlendirme bulunmaktadır ve bu “silah” henüz tam olarak benimsenememiş ve doğru anlaşılamamıştır.
Yazılım soyut bir kavramdır. Bilgisayarları, maddi varlıkları olan donanım ile birlikte oluşturan birleşen yazılımdır. Yazılım kavramının doğru anlaşılabilmesi için önce bilgisayarlara neden ihtiyaç duyulduğunun ortaya konması, daha sonra da yazılımın bir birleşen olarak bilgisayar içindeki rolünün açıklanması gerekir.
Bilgisayarlara ihtiyaç duyulmasının nedenleri şöyle sıralanabilir:
Otomasyon: Popüler tabir ile “elektronik beyin”ler olarak tarif edilebilen bilgisayarlar, sistemleri yöneten ve düzenleyen cihazlar olarak kullanılır. Günümüz bilgisayarlarının düşünme yetenekleri yoktur, fakat kendilerine tarif edilen işlemleri yapabilirler. Böylece bu işlevler insanlardan alınarak kendi başlarına daha yetenekli sistemler elde edilir. Bu tarif bir uçağın uçurulması gibi karmaşık ve çevredeki girdilerden etkilenen bir işi tanımlıyor olabilir.
Hızlı işlem yapabilme: Günümüz elektronik teknolojisi ile üretilen bilgisayarların işlem yapma düzeneklerinde elektrik kullanıldığı için birim işlemler teorik olarak ışık hızı ile üst sınırı belirlenen yüksek hızlarda gerçekleşir. Böylece bir insanın 3 saatte yapabildiği karmaşık bir hesabı, bir bilgisayar sadece birkaç saniyede tamamlar. Bilgisayarlar bu hızları sayesinde insanların zamanlıca yapamayacağı işleri yerine getirebilir. Örneğin acil bir durumda milisaniyeler içinde tepki vermek gerekiyorsa, bu sistemin başına insan bir bekçi koymaktansa bilgisayar kontrollü bir düzenek kurmak daha uygun olur.
Hatasızlık ve dayanaklılık: Günümüz bilgisayarları insanlara özgü içgüdü ve duygu kavramlarına sahip değildir. Canlılara özgü yorulma özelliği de bilgisayarlar için geçerli değildir. Böylece bilgisayarlar kendilerine verilen işleri her zaman aynı kalitede yerine getirir. Uzun süre çalışmak, buna bağlı yorgunluk ve konsantrasyon bozukluğu, duygusal sorunlar nedeni ile işini iyi yapamama gibi etmenler bilgisayarların çalışmasını etkilemez.
Yukarıdaki kullanım nedenleri incelendiğinde, bilgisayarların asıl işlevlerinin otomasyon olduğu görülür. Aslında otomasyon gerektirmeyen, fakat yüksek işlem yapma hızı gerektiren ya da insani nedenlerle yapılan hatalara tahammülü olmayan işlerde de bilgisayarlar kullanılır.
Bilgisayarlar kendilerinden beklenen işlevleri tamamen donanım ile gerçekleştirebilirler. Örneğin eski Dünya Satranç Şampiyonu Gary Kasparov’u yenen bilgisayarda hız gerektiren bazı işlemler salt donanım ile yapılıyordu. Fakat işlevlerin donanım ile gerçekleştirilmesi ileride işlev ekleme, mevcut işlevleri düzenleme gibi ihtiyaçlar doğduğunda donanımın değişitirilmesi gereğini de beraberinde getirir. Bu sebeple hedeflenen amaç, donanımın genel bir işlem yapma kapasitesi sunması, bilgisayarın da işlevlerini bu işlemleri belirli bir sıra ile yerine getirerek sağlamasıdır. Bilgisayarın işlevini gerçekleştirmek için barındırdığı işlemleri hangi sıra ile gerçekleştireceği yazılım ile tanımlanır.
Örnek 1 çok ilkel bir otomatik pilot bilgisayarının yazılımını konuşma dili ile veriyor. Her adımda belirtilen işlem, kabaca donanım tarafından gerçekleştirilen işlemlere denk gelir. Yazılımın yaptığı, bu işlemleri amaca uygun bir şekilde bir sıraya sokmaktır. Bu yazılım teknik ayrıntıda bu kadar basit ve genel ifadeler içermeyecektir, fakat yazılım geliştirmeyen kişiler için bu yazılımı bu seviyede bilmek yeterlidir.
Örnek 1 – Bir uçağın otomatik pilotunun uçağın başını rotada tutması için tasarlanmış yazılım
1. Uçağın başı bilgisini oku.
2. Uçağın başı bilgisi ile rotayı karşılaştır.
3. Eğer uçağın başı ile rota aynı değilse uçağın başını rotaya eşitleyecek manevrayı yap.
4. 100 milisaniye bekle.
5. 1 numaralı adıma geri dön.
Sözcüklerin Karmaşıklığı
Yazılım insanlar arası iletişimde kullanılan sözlü ve yazılı anlatıma benzetilebilir. Sözcükler ve cümleler insanlara birşeyler anlatır, yazılım da bilgisayarlara bir işlevi anlatmaya yarar.
Sarfedilen sözcükler ve cümleler şartlar değiştiğinde (zaman, bilgi, hayat görüşü gibi) daha farklı anlamlar kazanabilir. Sözcük ve cümleler ile ilgili bu değişken doğa yazılım için de geçerlidir. Bilgisayarlar ve onların bir birleşeni olarak yazılım ise aslında her zaman aynı sonucu üretir. Fakat bu sonuç değişen şartlarda değişik olayları tetikleyebilir. Örnek 1’de verilen yazılım olağan şartlarda beklenen sonucu verir, uçağı istenen yere ulaştırır. Rota üzerinde başka bir uçağın olması gibi olağanüstü bir durumda ise bu yazılım uçağı bir kazaya götürebilir. Burada yazılım açısından farklı bir şey yoktur, nasıl tasarlanıyorsa öyle davranmaya, uçağı rotasında tutmaya devam eder. Sorun, yazılımın tasarımında rota çakışması durumunun ele alınmamış olmasıdır.
Yazılım fiziksel bir varlık olmadığı için zamanla, dış etmenler yüzünden bozulmaz. Tamamlandığı anda nasıl ise kullanımı bittiğinde de aynı şekilde çalışmaya devam ediyordur. Diğer bir deyişle yazılım ile ilgili hatalar sadece tasarım hatasıdır. Bu sebeple yazılım için uygulanacak yaklaşım üretim tabanlı yaklaşımlardan farklı olmalıdır.
Yazılımın bu özelliğinin bir diğer etkisi de, tasarım hatası barındırmadıkça bakım gerektirmemesidir. Bir tüfeğin kurma mekanizması zamanın ve çevrenin etkileri ile tutukluk yapmaya başlayabilir. Bu durumda asker cephede tüfeğini söküp bakım yapabilir. Yazılım içinse bu yapılamaz. Diğer yandan yazılım böyle bir bakıma da ihtiyaç duymaz.
Üretim Değil Çoğaltma
Yazılım için üretim söz konusu değildir. Tasarlanan yazılım her yerde aynı şekilde kullanılır. Üretim adına yapılan tek faaliyet yazılımın dağıtım amacı ile CD gibi ortamlara kopyalanmasıdır.
Diğer taraftan donanımsal sistemlerde tasarım kadar üretim de önemlidir. Çok iyi bir tasarım, örneğin bir tüfek, kalitesiz bir üretim süreci sonunda kullanılamayan bir ürün olarak çıkabilir. O tüfeğin alıcısı, ürünün tasarımını olduğu kadar üretimini de denetlemeli ve sorgulamalıdır. Yazılım ise sadece tasarımdan oluştuğu için, bütün dikkat ve çaba tasarım üzerine yoğunlaşmalıdır. Yazılım ile ilgili bir sorun çıktığında da yazılımın tasarımına geri dönülmelidir.
Yazılım ile İlgili Sorunlar, Yanlış Anlaşılmalar
Yazılım ile ilgili temel sorun doğasının anlaşılamamasıdır. Yazının bu noktaya kadar olan bölümünde bu sorun giderilmeye çalışılmıştır.
Yazılım ile ilgili temel beklenti, silah sistemlerinin bir parçası olması itibari ile işlevini tam ve doğru olarak yerine getirmesidir. Fakat son yıllarda yaşanan çeşitli olayların etkisi ile yazılımın kaynak kodunun alınması ya da yazılımın milli olması gibi noktalar temel işlev kadar önemsenmeye başlandı. Aslında doğru ve sevindirici olan bu yaklaşımlar, yazılımın doğası göz önüne alınmadığında bazı sakıncalar ortaya çıkardı.
Milli Olsun
Yazılım, sistemlerin içine “Truva Atı” benzeri tuzakları sokmak için ideal bir araç olarak kullanılabilir. Bir telsiz üzerinden örnek verilecek olursa, çeşitli frekanslarda çeşitli dalga şekillerinde sinyalleri algılamak üzere tasarlanmış olan telsizi işlevsiz hale getirmek için şöyle bir yazılım işlevi tanımlanabilir: XX frekansından Y dalga şeklinde bir sinyal alırsan bütün sistem yazılımlarını sil (sistem bir daha açılamasın). XX ve Y parametrelerinin bir araya gelmesi çok düşük bir ihtimal ise telsizin kullanımı boyunca kullanıcı bu tuzağı farkedemeyebilir. Bu tuzağı yerleştiren ülke ya da onun müttefiki ile bir çatışma olduğunda ise tuzak acı bir şekilde ortaya çıkar.
Yazılıma bu potansiyeli katan özelliği soyut olmasıdır. Üretici bir tüfeğin namlusu için “5000 mermi atımı sonrası değişikliğe ihtiyaç duyar” dediğinde gerçekten 5000 atış yapılıp, namlunun daha erken işlevini kaybetmediği denenebilir. Yazılım için benzeri bir test ise kolaylıkla uygulanabilir değildir. Yukarıdaki telsiz örneğinden gidilecek olursa, XX ve Y parametrelerinden milyonlarca olabilir ve bunların tek tek test edilmesi göze alınır bir iş olmayabilir.
Silahlı kuvvetler, haklı olarak, yazılımın güvenilir ellerden çıkmış olmasını isterler. Bunun bir yolu yazılımın milli firmalarda çalışan, güvenlik soruşturmalarından geçmiş kişilerce geliştirilmesidir. Kritik sistemlerin yazılımları için bu yaklaşım vazgeçilmezdir. Kritik olmayan sistemlerde ise bu yaklaşımın uygulanması bir yarar – maliyet çözümlemesini gerektirir. Güvenilir ellerden çıkmış bir yazılımın maliyeti, hazır fakat tam anlamı ile güvenilmeyen yazılımın maliyetinin onlarca katı olabilir. Kritik olmayan sistemlerde maliyet düşürmek için hazır yazılımın kullanımı daha uygun olarak değerlendirilebilir.
Bu noktada ilginç bir uygulama da pek çok ülkenin ve bunların silahlı kuvvetlerinin bilgi işlem altyapısının ABD’nin Microsoft Firması’nın ticari yazılım ürünlerine dayanmasıdır. Bu altyapı daha çok barış zamanı işlemlerine yönelik olsa da eskiden kağıt ortamında yapılan işleri bünyesinde barındırdığı için kritik öneme sahiptir. Yine de pek çok ülke bu durumu sorgulamamaktadır. Kritik önemdeki işlevleri yerine getirirken hazır bir yazılımı, açık kaynak kodlu ve yerel olarak geliştirilebilir Linux gibi işletim sistemlerine tercih etmektedir.
Kaynak Kodu da VerinYazılım, bilgisayarların işlevlerinin değiştirilmesini ya da yeni bir işlev eklenmesini herhangi fiziksel bir değişim olmaksızın sağlayan birleşendir. Yazılımın bu özelliği silah sistemlerinde de sık sık kullanılır. Örneğin bir uçağın yeni bir füzeyi kullanma yeteneğine kavuşması çoğunlukla yazılım güncellemesi ile olur. Bu konuda yabancı firmalara bağımlı olmak genelde silahlı kuvvetlerin başını ağrıtır. Çünkü firmalar bu tür güncellemeler için çoğunlukla yüksek fiyatlar biçerler. Bunu yapabilecek başka bir kaynak olmadığında ise bu bedelin ödenmesinden ya da o işlevden yoksun kalmaktan başka çare bulunamaz.
Yazılım güncellemelerindeki bu sorunların üstesinden gelebilmek için müşteriler, çoğunlukla ürünle birlikte içerdiği yazılımların kaynak kodlarını da talep ederler. Bu kaynak kod ile güncellemeyi kendilerinin yapabilmelerini ya da başka bir firmaya yaptırmayı hedeflerler.
Öte yandan bilgisayarların asıl işlevleri olan otomasyon, sistemler ile ilgili kilit bilgilerin bilgisayar bünyesinde, dolayısı ile yazılımda toplanmasını gerektirir. Yine tüfekler üzerinden bir örnek verilecek olursa, tüfeğin namlusunu üretmek ile tüfeğin namlusunu tasarlamak farklı şeylerdir. Yabancı bir firma olan A firmasının tüfeğini seçip yurt içinde üretim yapmak istediğinizde size namluyu üretmek için nasıl bir metal alaşımı hazırlamanız gerektiği bilgisi verilir. Fakat “neden bu karışım?” bilgisi verilmez. Bu sorunun cevabı uzun yıllar süren ARGE çabalarının bir çırpıda öğrenilmesi anlamına gelir. Öğrenmenin bir bedeli vardır, yalnız bu bedel lisans altında üretimin bedelinden çok daha yüksektir. Yazılımın kaynak kodunun talep edilmesi de namlunun tasarım bilgilerini almaya benzer. Var oluşunun nedeni olan bu bilgiyi doğal olarak hiçbir yerli ya da yabancı firma vermek istemez.
Kaynak kodun talep edilmesinin özündeki neden olan gelecekte yapılacak güncellemelerle ilgili endişeler, yapılan alımın sözleşme aşamasında adreslenmelidir. Güncellemelerin hangi şartlar altında, hangi kontrollerle ve hangi bedel karşılığında yapılacağı tedariğin başlangıcında ele alınmalı ve belirli hale getirilmelidir. Yaşanan sorunların nedeni bu adreslemenin başlangıçta yapılmaması ve böylece geç kalındığında firmalara geniş hareket alanı tanınmasıdır.
Benimsemek
Sistemler bünyesindeki işlevi göz önüne alındığında yazılım kritik bir teknolojidir. Yazılımın doğası ve önemi, onu kullanan herkes tarafından benimsenmedikçe yazılım bir silah olarak etkili olamaz.
Benimsemek yazılımın ayrıntılarını bilmek, yazılımdan anlamak değildir. Benimsemek, yazılımı gerektiği gibi kullanmaktır. Örneğin bilgisayara yüklü bir anti virüs yazılımının hergün çıkan yeni virüslere karşı güncellenmesi gerekiyorsa bunun tüfeğin periyodik bakımını yaparken gösterilen özen ve dikkatin aynısı ile yapılmasıdır.
Askerlik görevimi yerine getirirken şube müdürüm birliklere göndermek üzere hazırladığımız bilgisayarların üzerine şu ifadeyi yapıştırırdı: “Bu bilgisayar sizin tüfeğinizdir. Ona tüfeğinize baktığınız gibi bakınız”. Bu ifadede özlü bir şekilde kendini anlatan anlayışa en üst seviyede komutanından her erine kadar ulaşan ordular günümüzün ve geleceğin teknolojisi olan yazılımı en iyi şekilde kullanan ve başarıya ulaşan ordular olacaktır.
RESMİN ÜZERİNE TIKLADIĞINIZDA HABERİN DERGİMİZDEKİ BASILI HALİNİ PDF DÖKÜMANI OLARAK GÖREBİLİRSİNİZ...
Bu haber 4768 defa okunmuştur.


