page-loader

Yazılım Geliştirme Aktiviteleri

software development process, software lifecycle, vgizy

Aslında “Yazılım Geliştirme Süreçleri”, “Yazılım Mühendisliği Aktiviteleri” çok derin bir konu. Kalın kalın kitaplar yazılmış, ilgili bölümlerde yıllarca işlenen bu konuları sadece bir makalede paylaşmak imkansız. Dolayısıyla, bu yazımızın amacı konular hakkında genel olarak bilgi sahibi olmak ve daha ileriye gidebilmek için gereken o ilk adımı atmaktır.

Öncelikle yazılım nedir?

“Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market.”

Bir bilgisayarda donanıma hayat veren ve bilgi işlemde kullanılan programlar, yordamlar, programlama dilleri ve belgelemelerin tümü.

Tanımlarda sadece kod yazmaktan bahsedilmemiş. Belgeleme, müşteri ya da genel bir market var. Yani aslında ulaşılacak bir amaç var. 

İyi bir yazılımın özellikleri nelerdir?

Good software should deliver the required functionality and performance to the user and should be maintainable, dependable, and usable.

İyi bir yazılım; zamanında, istenilen özelliklerde ve performansta teslim edilen, bakım yapılabilir, güvenilir ve kullanışlı olan yazılımdır.

Temel Yazılım Mühendisliği aktiviteleri nelerdir?

  • Software specification,
  • Software development,
  • Software validation, and
  • Software evolution.
software development process, software lifecycle, vgizy

Yazılım mühendisliği aktivitelerine biraz daha odaklanalım. Bir yazılım yapmak istiyorsak ortada ihtiyaç var demektir ya da bir ihtiyacı öngürüyoruz(Requirements). İhtiyaçları toplayıp onları analiz etmek yazılım yapmanın birinci adımıdır.

Bu ihtiyaçları/gereksinimleri 2’ye ayırıyoruz: işlevsel ve işlevsel olmayan (Functional requirement ve non- functional requirement). Bir bankamatik yazılımı yapıyorsak, ekranda yazan yazılar, para çekme fonksiyonalitesinin olması bu bankamatiğin functional requirementidir. Ancak basit bir para çekme işleminin 15 saniyede bitmesi non-functional requirementtir.

Bir müşteri varsa onunla düzenli toplantılar yapıp nasıl bir yazılıma ihtiyacı olduğunu anlamak requirement /ihtiyaçları toplamanın bir yoludur. Bir diğer yol da gözlemleyerek, deneyerek yani kendimizi müşteri yerine koyarak ihtiyaçları yaşayarak görmektir.

Sektörde, yazılım geliştirme süreçlerine uygun olarak roller de ayrılmıştır. Genelde analistler gereksinim toplama sürecinde görevlendiriliyor, bir yazılım geliştirici de ona eşlik ediyor ve sistemi kullanarak eksiklikleri yaşayarak gözlemliyorlar. Bazen bir fabrikada görev alırlarken bazen de havaalanında günlerini geçirmeleri gerekiyor.

Şimdi duralım ve düşünelim: toplu taşıma araçlarını kullananların nelere ihtiyacı var, nasıl bir yazılıma ihtiyaç duyarlar? Ya da gözlerinizi kapatarak 15 dakika durakta otobüs bekleyin ve bir görme engellinin otobüs bekleme macerasını tahmin etmeye çalışın.

Gereksinimleri topladık. Elimizde kullanıcının ya da genel marketin gereksinim listesi var. Şimdi biz bu gereksinimleri analiz etmeliyiz. Bu analiz süreci yazacağımız kodun kalitesini ve süresini ciddi derecede etkileyecektir.  Kötü analizi yapılmış bir kodda tüm SOLID ilkelerini başarıyla uygulamış olsak bile gelen her değişiklik fonksiyonel değişikliktir yani işin “logic”i değişecektir. Bu da genelde kodun ana yapısında değişikliğe zorlar. Tümüyle istemediğimiz bir durumdur.

İhtiyaç analizi, teknik insanların anlayacağı dilde olmalıdır. Yani analiz dokümanını sayfalarca hikaye anlatır gibi anlatmaktansa teknik kişilerin bakıp anlayacağı diagramları kullanmak zaman kazanmamızı sağlayacaktır. Peki bu diagramlar nelerdir?
UML Diagrams : https://www.uml-diagrams.org/

Unified Modelling Languages:

software development process, software lifecycle, vgizy

Analiz yapıldı, diagramlar çizildi. Artık yol haritamız hazır. Sonraki adım bu diagramlarda verilen işleri kodlamak. Burada çok detaya inmeyeceğim,  ileriki yazılarda göreceğimiz modellerde daha iyi inceleyeceğiz bu başlıkları.

Kod yazdığımızda yazdığımız kodun amaca uygun olup olmadığını ya da yazdığımız kod öngörmediğimiz bir bölümü etkileyip etkilemediğini anlamak için test yazmamız ve test etmemiz gerekiyor.

Tüm süreçler bitti, yazılım kullanıcıya/lara teslim edildi. Bundan sonraki aşamada Maintenance yani bakım süreci devreye giriyor. Aslında yazılıma başladığımız ilk dakikadan bakım yapmaya da başlıyoruz, değişikliklere ayak uydurarak.

Genel hatlarıyla inceleyecek olursak, yazılımın hayat döngüsünde, birbirini izleyen, başarılı bir yazılım için olmazsa olmaz aşağıdaki 5 maddenin olduğunu görürüz:

  1. Gereksinimleri belirleme
  2. Gereksinim analizi ve tasarım
  3. Kodlama
  4. Test
  5. Bakım

Herkese bugsız kodlar diliyorum..

Kaynakça

  • Sommerville, I. (2011). Software Engineering.(9 th ed.). Boston: Pearson Education.
  • Software Engineering(4 th ed.) P. L. Shari and A. M. Joanne

About the Author

admin
admin

You May Also Like

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir