İçeriğe geç

Yazılım Nedir?

Kategori: Nedir Ne Değildir?

Bir önceki yazımızda değindiğimiz Programlama Nedir? konusuna baktığınızı ya da bildiğinizi varsayarak “Yazılım Nedir?” sorusuna en kaba tabirle cevap verecek olursam; yazılım programlamanın raconudur diyebilirim. Ya da biraz daha kafa karıştırıcı bir ifadeyle:

Yazılım, değişik ve çeşitli görevler yapma amaçlı tasarlanmış elektronik aygıtların birbirleriyle haberleşebilmesini ve uyumunu sağlayarak görevlerini ya da kullanılabilirliklerini geliştirmeye yarayan makine komutlarıdır.

Vikipedia

Ama ben ilkini daha çok sevdim 🙂 Tabi bununla ne demek istediğimi yazının devamında açıklamaya çalışacağım.

Programlamanın bilgisayarlara hangi durumda ne yapması gerektiğini onun anladığı dilden söylemek olduğundan bahsetmiştik. İşte bu şekilde oluşturulan programların tümüne Yazılım adı verilir. Kısaca belirli bir işlemi yapmak üzere tasarlanmış her bir bilgisayar programına yazılım diyoruz.

Örneğin bilgisayarınızda kullandığınız Windows veya MacOS, ya da cep telefonlarınızdaki Android veya iOS birer işletim sistemi yazılımıdır. Yani sizin vereceğiniz komutlar eşliğinde cihazın kendi kendini yönetebilmesi için yazılmış programlardır. Bir diğer örnek ise cep telefonunuza yüklediğiniz uygulamalar ya da bilgisayarınızdaki Office benzeri programlardır. Bunlar da uygulama yazılımı olarak geçer.

Yeri gelmişken bilgisayarın anladığı dil ifadesine biraz daha yoğunlaşacak olursak, şimdilik bu konuyla ilgili çok kafa karıştırmak istemem. Ancak şunu bilmemiz yeterli;

Elektronik cihazların algılayabildiği ve yorumlayabildiği bir çok dil geliştirilmiştir. Elbette ki yazılım geliştirme ya da programlama yapabilmeniz için bu dillerin tümünü bilmenize gerek yok. Hangi dilleri bilmeniz gerektiği ise tam olarak hangi platformda nasıl bir yazılım yapmak istediğinize göre şekillenecektir.

Bahsettiğimiz bu dillerin neler olduğuna ve olmadığına da bir sonraki konuda değinelim…

Şimdi biraz yazılım geliştirme sürecinden bahsedelim. Size tavsiyem Yazılım ve Süreç kelimelerini birbirinden hiç ayırmamanız gerektiğidir. Yani yazılım geliştirme bir süreçtir ve çoğu zaman bu süreç yazılımı daha iyi hale getirebilmek adına bir döngü içinde kendini tekrar eder. Konuyu daha iyi kavramak adına aşağıdaki görseli inceleyelim.

Yazılım Geliştirme Döngüsü

yazilim-gelistirme-dongusu
Resim-1: Yazılım Geliştirme Döngüsü

İşte “racon” derken bundan bahsetmiştim. Şimdi bu adımları sırasıyla açıklamaya çalışalım.

1- Planlama (Planning)

planlama

Yazılım geliştirmenin ilk adımı olan planlama sürecinde öncelikle ihtiyaçlar ve problemler belirlenir. Örneğin bir fabrikadaki tüm üretim süreçlerini yönetecek bir yazılım geliştirmek istediğinizi varsayın. İlk akla gelen problemler ham madde ve stokların takibi, ürün bileşenleri, yan ürünler, atıklar, fireler, hangi personelin üretimin hangi aşamasında ne iş yapacağı, ürün başına maliyetlerin hesaplanması vb. olacaktır. Tabi ki örnekler çoğaltılabilir. Burada yapılması gereken tüm bu problemleri ve ihtiyaçları olabildiğince net bir şekilde belirleyip buna göre ortaya çıkacak olan programın tam olarak ne iş yapacağını belirlemektir. Bu sayede işin ne zaman bitebileceği, kaç kişinin çalışması gerektiği ve ne kadara mal olacağı gibi durumlar da büyük ölçüde netleştirilmiş ve müşteriye gerekli dönüşler yapılmış olur.

2- Analiz (Analysis)

analiz

Yazılım geliştirme sürecinin belki de en çok yatırım yapılan (zaman ve para anlamında) ve en önemli kısmı analiz adımıdır. Peki analizi bu kadar önemli yapan nedir?

Şöyle bir senaryo düşünelim.

Yukarıda bahsettiğimiz fabrika bir mobilya fabrikası olsun. Bu yazılımı geliştirecek olan programcılar doğal olarak mobilya üretim süreçleri hakkında bilgi ve tecrübe sahibi olmayacaklardır. Ayrıca “Her yiğidin yoğurt yiyişi farklıdır” sözünden yola çıkarsak bu fabrikanın üretim süreçleri aynı tip ürünler üretmelerine rağmen yanındaki fabrikadan çok daha farklı işleyebilir. İşte burada devreye analistler girer. Onların görevi bu fabrikadaki süreçleri araştırıp işlerin nasıl yürüdüğünü, hangi aşamalarda ne tür problemler yaşandığını, yazılacak olan programın nasıl işlemesi gerektiğini geliştirme ekibine aktarmaktır. İşlerin mümkün olduğunca kısa sürede, az eforla ve az hata ile tamamlanması için bu adım önemlidir.

3- Tasarım (Design)

arayüz tasarımı

Takdir edersiniz ki bu program yazıldıktan sonra onu kullanacak olan kişiler genellikle tasarımcı, program geliştirici vb. olmayacaktır. Bu sebeple arayüz dediğimiz programın kullanıcıya görünen kısmının sade, kullanışlı, kolay anlaşılır ve öğrenilir olması önemlidir. İşte bu aşamada devreye UI (User Interface – Kullanıcı Arayüzü) ve UX (User Experience – Kullanıcı Deneyimi) tasarımcıları girer. Ya da bu arayüzler daha önceden tasarlanmış olan yapıya uygun hazır kodlardan seçilip yine aynı kişiler tarafından özelleştirilir. Yazılımın kullanıcıya görünen bu kısmına Front-End denir. Tabi ki tasarlanacak olan kısım bununla bitmez. Yazılımın bir de kullanıcıya görünmeyen ancak gerekli bilgileri arka planda işleyerek kullanıcıdan programa ya da programdan kullanıcıya aktardığı kod kısmında da veri yapısının ve işleyişin nasıl olacağı tasarlanır. Ki bu kısma da biz Back-End diyoruz. Bu kavramları ileriki yazılarımızda açıklayacağız.

4- Kodlama, Programlama, Uygulama (Implementation)

kodlama

Geldik işin en havalı görünen kısmına. Evet programcılığın ya da programlamanın dışarıdan bakıldığında bir cazibesi var katılıyorum. İşin içine Hollywood etkisini de katarsak bilmeyen biri için bilgisayar başında kod yazan kişiler adeta birer hacker ya da dahi gibi görünmüyor değil. İtiraf edeyim ilk başlarda bana da öyle geliyordu 🙂 Bunu tabi ki programlamayı küçümsediğim için söylemiyorum. Ancak bilmeniz gereken şu. Kodlama ya da programlama adımında yaşayabileceğiniz iki senaryo var.

Birinci durumda İlk üç adım doğru bir şekilde tamamlanmıştır ve yazacağınız programla ilgili gerekli bilgiler size iletilmiştir ve artık ne yapmanız gerektiğini ve sizden tam olarak ne istendiğini biliyorsunuzdur. Yapmanız gereken tek şey Programlama Nedir? yazısında bahsettiğimiz gibi size anlatılanları bilgisayarın diline çevirip aynen ona anlatmaktır. “Bak burada şunu yapacaksın, olur da şuraya tıklarlarsa bu verileri getireceksin, ha şöyle bir durum mu oldu o zaman şunu yapacaksın. Şöyle bir şey görürsen uyanık ol. Şu ekranı göster.” gibi şeyler söylemekten başka birşey değildir. Ve gerçekten çok zevklidir. Tabi bu yapılan işlemlerin hepsi bilgisayar kaynaklarını ve zamanı tükettiğinden iyi ve vasat programcı da bunları en hızlı ve etkili şekilde yaptırmakta birbirinden ayrılır. Sonuç olarak bu senaryodaki programcı vasat da olsa rahat programcıdır. 🙂

Gelelim en sık rastlanan ikinci senaryoya. Burada ilk iki adım genelde yoktur. Vakit kaybı olarak görülür ya da buralara harcanacak maliyetten kaçınarak zamandan ve paradan tasarruf edildiğini düşünen yöneticilerce yok sayılır. Yapılıyorsa da işi bir an önce sonuçlandırıp faturayı kestirmek arzusuyla “Hallederiz abi” modunda geçilir. Üçüncü adım ise bahsettiğim şekilde hazır kodlar bulunarak (tercihen ücretsiz olanlar) inanılmaz tasarruf edilir. Hatta bazı şirketlerde tüm bu aşamaları programcının kendisi tek başına yapmak zorunda bırakılır. Bu süreç genelde “Hele bi işi bağlayalım da kervan yolda düzülür” mottosuyla başlar.

Ve programcının çileli günleri başlar…

Önünüzde bir dokümantasyon ya da plan olmadığı için işin her aşamasında dönüt alma ihtiyacı duyarsınız. Tabi bu plan var da size gösterilmiyor değildir. Dönüt alacağınız kişi veya kişilerde de yoktur. 🙂 Bu sebeple genelde “Ya orası şöyle olsun demiştik.”, “Dur falanca beye bir sorayım.” ya da siz sorduğunuz anda yeni bir ampul yanarak “Şöyle yapsak nasıl olur?” gibi cümleler duyarak işinizi devam ettirmeye çalışırsınız. Bu tıpkı gözleriniz bağlı bir şekilde el yordamıyla yolunuzu bulmaya çalışmanıza benzer. Peki sürecin sonunda ne mi olur? Bir türlü bitmeyen program, sürekli ertelenen teslim tarihi, kabusunuz olan hata ve düzeltmeler, mutsuz müşteriler, bir türlü kesilemeyen faturalar, alınamayan ödemeler, (bazen tüm hata sizinmiş gibi de davranabilen) kızgın yöneticiler ve siz…

Tam bir buhran senaryosu oldu ama emin olun öyledir. Burada çalıştığınız kurumun, şirketin ya da ekibin vizyonu ve sizin vizyonunuz uyumlu ve gelişime açık olmalıdır.

Tabi burada şöyle de bir parantez açmam gerekir. Programcı tarafından bakıldığında da kendini geliştirmek gibi kaygıları olmayan, ezberinden şaşmayan, sürekli günü kurtarmaya çalışan ve neyi ne kadar bildiğinden bile emin olmayan, her şeyden önce bir kariyer hedefi olmayan yazılım geliştiricilerin sayısı da ne yazık ki azımsanamayacak ölçüdedir. Eğer bu işi yapacaksanız onlardan olmamaya çalışın 🙂

5- Test, Kurulum ve Tamamlama (Testing and Integration)

yazılım testleri

Bu aşamada yazılan program amacına uygun çalışıp çalışmadığı, vaat edileni yerine getirebildiği, yeterince kullanışlı ve güvenli olduğu gibi konularda gerekli testlerden geçirilir. Tabi normal şartlar altında bu işlemleri de Tester dediğimiz işin uzmanları yapar. (Onlar da belli alanlarda uzmanlaşmış yazılım geliştiricilerdir.) Ve program tüm testlerden başarılı olursa ilgili yerde kurulum ve çalıştırma aşamasına geçilir.

Ancak ikinci senaryoda test işlemi program müşteriye kurulduktan sonra onu en son kullananlar tarafından yapılıyor olur ki bu da bir hata çıktığında “Program çalışmıyor” türküsünü sardırıp sardırıp dinlediğiniz günlere tekabül eder 🙂

6- Bakım & Onarım (Maintenance)

bakım onarım

Takdir edersiniz ki işler ne kadar yolunda giderse gitsin ilk beş adımın sıfır hata ile tamamlanması yazılımın kapsamına da bağlı olarak çok çok düşük bir ihtimaldir. Her iki tarafın da öngöremediği hatalar çıkabilir. Ya da uygulama kullanıldıkça biriken verileri işlemek için en başta sağlanan alt yapı artık yetersiz kalmaya başlayabilir. Başka bir durumda ise süreçlerin artık değişmesi sebebiyle yazılımda bir takım iyileştirmelere ve yeniliklere gerek duyulabilir. İşte bu gibi durumlar için de uygulama kurulduktan ve teslim edildikten sonra takibi yapılarak gerekli önlemler alınır ve mümkün olduğunca sağlıklı bir şekilde işleyişine devam etmesi sağlanır. Tabi burada bahsettiğimiz yenilikler için bu döngü baştan başlar ve yazılım geliştirme döngüsü kendini tekrar eder. Eğer iyi bir planlama ve analiz yapılmışsa bu tür durumlar öngörülerek yazılımın belirli aralıklarla kendini temizleyeceği modüller de programcılar tarafından yazılıma eklenebilir ve gerekli durumlarda çalıştırılabilir.

Özetle

Bir önceki yazımızı da okuduğunuzu varsayarak, Yazılım Nedir? Programlama Nedir? “Yazılımcı” ve “Programcı” aynı şeyler midir? Bu tabirler doğru mudur? gibi soruları cevaplamaya çalıştık.

Toparlayacak olursak;

Yazılım geliştirme kendini tekrar eden bir süreçtir. Programlama ise bu sürecin yalnızca bir adımıdır.

Eğer yeni başlıyorsanız lütfen yazıda geçen teknik terimlere ya da bilgilere takılmayın. Ve aşağıdaki maddeleri aklınızdan çıkarmayın.

  1. Her şeyden önce ne istediğinizden emin olun.
  2. Kendinizi iyi tanıyın. Yeterince ilgi ve kararlılığa sahip misiniz?
  3. Doğru soruları sormaya çalışın ki doğru cevaplar bulabilesiniz.
  4. Gelişime ve değişime açık, bilgi ve öğrenmeye aç olun.
  5. Kimse size kolay olacağını söylemiyor. Çabuk pes etmeyin.
  6. Daha önümde çok uzun bir yol var. Hiç bir şey bilmiyorum korkusuna kapılmayın.
  7. Tüm çabalarınıza rağmen olmuyorsa zorlamayın. 🙂

Unutmayın! Bugün bilgiye ulaşmak zor değil. Önemli olan bu sürecin neresinde yer almak istediğiniz ve sonrasında bununla ilgili doğru bilgi ve tecrübelere hangi yollardan ulaşabileceğinizdir. Dilerim yazılım geliştirme yolunda emin adımlarla ilerler ve gönlünüzdeki yere bilinçli çabalarla gereken zamanda gelebilirsiniz. Sonraki yazılarımızda görüşmek üzere.

Sevgilerle…

Tek Yorum

  1. Değerli bilgiler için teşekkür ederim 🙂

    Kasım 22, 2020
    |Cevapla

Alper için bir cevap yazın Cevabı iptal et