910 likes | 1.22k Views
YAZILIM GELİŞTİRME İÇİN PRATİK ÖNERİLER. KONU BAŞLIKLARI. Süreçlere Yönelik Öneriler Tasarım Geliştirmeye Yönelik Öneriler Niteliği Arttırmak İçin Pratik Öneriler Toplantı Kuralları.
E N D
YAZILIM GELİŞTİRME İÇİN PRATİK ÖNERİLER
KONU BAŞLIKLARI • Süreçlere Yönelik Öneriler • Tasarım Geliştirmeye Yönelik Öneriler • Niteliği Arttırmak İçin Pratik Öneriler • Toplantı Kuralları
Amacımız, uygulama alanının özelliklerine bağlı olarak büyük projelerde nitelik, maliyet, müşteri memnuniyeti gibi önemli ölçütleri sağlayabilmeniz için pratikte uygulanabilir bir dayanak sağlamaktır.
Gerek maddi gerekse insan kaynaklarının en uygun şekilde kullanımı çok büyük önem taşır. Bunların hiç biri tek başına yeterli olmayacaktır. • Örneğin: yalnızca çok başarılı insanları bir araya toplayarak projelerin iyi sonlanması beklenemez.
A.Proje Yönetimi Yazılımın boyut,iş gücü ve takvim kestirimlerinin yapılması. Üst yönetimin onayının alınması sonrasında projenin başlatılması. Proje yöneticisinin resmi olarak atanması.
Projede tamamlanması gereken iş paketlerinin oluşturulması Proje ekibinde yer almaya aday çalışanların özelliklerinin araştırılması ve belirlenmesi Seçilen personeli proje iş grubuna atayarak proje ekibinin oluşturulması. Proje risklerinin tanımlanması ve izlenmesi. İş paketleri için zaman ve kaynak bilgileri girerek proje takviminin oluşturulması.
Projenin takvim,maliyet,nitelik açılarından başarımını izlemek için belirli ölçütler seçilmesi ve hedeflerin belirlenmesi. Proje süresince üretilecek düzenleşim öğelerinin(belgeler,modüller) tanımlanması ve izlenmesi Onaylı proje takvimindeki iş paketlerinin proje ekibindeki çalışanlara atanması.
Personelin proje kapsamında yapılan işler için harcadığı zamanı bildirmesi Geliştirme etkinlikleri sırasında düzenleşim ögelerinde fark edilen yazılım ve belge sorunlarının tanımlanması,belirlenen sorunların yönetim onayıyla düzeltilmesi ve bu düzeltmenin doğrulanması.
Tanımlanan yazılım birimleri,yapılan testler ve gözden geçirmeler ile ilgili kayıtların tutulması. Projenin süreçlere uygun yürütüldüğünü belirlemek amacıyla denetlenmesi. Proje takviminin, düzenleşim ögelerinin ve diğer proje bileşenlerinin gerektiğinde güncellenmesi.
B.İnsanKaynakları Planlaması • Personel yönetimi için bazı önerileri şu şekilde sıralayabiliriz: 1. İyi bir örgütlenme için; a)Yönetim personelinin konumları oluşturulmalıdır.b)Yetki ve sorumluluklar iyi tanımlanmalıdır.c)Bu konumlarda proje boyunca sabit olarak kalacak eleman bulunmalıdır.
2. Proje personelinin uyumu çok önemlidir. 3. Proje yöneticisi tüm ekibine kendilerini önemli hissettirmeli aynı zamanda da lider olduğunu göstermelidir.
4. Proje içinde aynı işle uğraşan ekipler 5-7 kişiden oluşmalıdır.Daha fazlası için sorumluluklar ve yetkiler bölünmelidir. 5. Proje yöneticisi planladığı işlere personel ataması yaparken adil olmalıdır
6. Personele her türlü teknik destek sağlanmalıdır. 7. Çalışmalar personeli yıldırmamalı ,karşılıksız fazla mesai yaptırılmamalı ve başarılı personel ödüllendirilmelidir. 8. Proje planları herkes tarafından erişebilir olmalıdır. 9. Projeye yeni katılan personel için proje içi eğitimler uygulanmalıdır.
10. Projede çalışan personel genel olarak dikkate alınmalı yalnızca o proje düşünülerek öldüresiye çalıştırılmamalıdır. 11. Haberleşme ortamı proje için son derece önemlidir. 12. Proje personelinin yazılım teknolojilerinin değişik alanlarında uzmanlaşmış olması önemlidir.
3.Maliyet Kestirimi ve Planlama Maliyet ve öz kaynakların etkin bir şekilde kullanılması için şu önerileri sıralayabiliriz: 1. Proje maliyeti ve zaman planlaması deneysel verilerle işe başlamadan kestirilmeye çalışılır. 2. İlk yapılan yazılımla ilgili kestirimler risk olarak görülür.Zamanla yenilenmelidir.
3. Tüm kestirimler bir maliyet modeli ile doğrulanmalıdır. • 4. İşin ayrıştırmasının alt düzeylerinde bulunan her bir iş için maliyet kestirimi yapılmalıdır.
5. Tüm maliyet kestirimleri ve planlamalar işe başlamadan önce proje yönetimi tarafından onaylanmalıdır. • 6. Genel maliyet kestirimi işe başlamadan önce yapılmalıdır.Daha sonra bu projenin başarımı için bir gereç olarak kullanılabilir.
7. Yazılım maliyet kestirimi geliştiricinin daha önceki deneyimlerini ve uygulama alanında yaygın olan bazı standartları dikkate alarak hesaplanmalıdır. • 8. Tüm yazılım maliyetleri proje planındaki ayrıntılı yazılım işlerine göre tanımlanarak hesaplanmalı ve buna göre izlenmelidir.
4.Metrik Kullanımı • Metrik kullanımına ilişkin önerilerimiz şunlardır: • Her türlü metrik tanımı uygulama alanını ve sınırlarını içerecek şekilde açıklanmalı ,sayısal değerlere oturtulmalıdır. • Toplanamayacak verilere dayanan metrikler kullanılmamalıdır. • Tüm projenin yaşam döngüsü boyunca tanımlanan metriklerin tanımlanması, incelenmesi ve gerekli yerlere rapor edilerek geri besleme sağlaması için ekip içinde sorumluluklar tanımlanmalıdır.
Metrik uygulaması süreklilikle yapılmalıdır. • Proje planı hazırlanırken metriklerden yararlanılmalıdır. • Metrikler geniş kapsamlı olmalıdır. • Toplanan veriler ve değerlendirmeler proje ekibinin rahatlıkla ulaşabildiği güvenli bir platformda saklanmalıdır.
5.Nitelik Hedeflerinin İzlenmesi Sistem hatalarını geliştirme sürecinin en erken zamanlarında bulabilmek ve giderebilmek için şu önerileri sunuyoruz : 1. Proje yöneticileri hataların en kısa zamanda bulunması ve giderilebilmesi için uygun yöntemler geliştirmelidirler. 2. Denetimler taviz verilemeden uygulanmalıdır.
3. Uygulamalar sonucunda ,sistemde bulunmuş hata sayısı, yakalanamayan hata sayısı,hatayı ortadan kaldırmadaki etkinlik gibi metrikler toplanmalıdır. • 4. Müşteri isteklerinin değişmesi nedeniyle değişiklik yapılması gereken durumlarda nitelik hedefleri de tekrar görüşümelidir. • 5. Nitelik hedeflerine uygunluk, geliştirme sırasında düzenli olarak müşteriye bildirilmeli,teslim sırasında risk görülen durumlar açıklanmalıdır.
6.Disiplinin Sağlanması • Hangi sektör olursa olsun etkinliklerde mutlaka belirli bir disiplin oluşturulması gerekir.Bunun için sunulan öneriler: • Proje Yöneticisinin yetkileri en üst düzey otorite tarafından tanımlanmalıdır. • Teknik kararlar yapılan tartışmalar sonucunda kesin olarak verilmelidir.
Tüm personel işletme yönetiminin koyduğu yönetsel kararlara uymalıdır. • Tüm bu disipline rağmen biraz esneklik her zaman olmalıdır. • Geliştirme ve test ortamında kişisel yazılımlar bulunmamalıdır. • İletişim ortam ve cihazları belirli kurallara göre kullanılmalıdır.
SÜREÇLERE YÖNELİK ÖNERİLER
Yazılım geliştirme sürecinin başarısı için yazılım isterleri çözümlemenin doğru yapılması son derece önemlidir. • Bir yazılım ne kadar iyi tasarlanırsa ya da geliştirilirse geliştirilsin müşteri (ya da son kullanıcı) ihtiyaçlarını karşılamıyorsa başarılı sayılamaz.
Yazılım isterlerinin çözümlenmesi aşamasında müşterinin yazılımdan ne beklediği ayrıntılı olarak belirlenir, gereksinimler açığa çıkarılır, yazılım isterleri modellenir ve tanımlanarak tasarım aşamasına geçilir. • Yazılım isterlerinin çözümlenmesi aşaması müşteri ve geliştirme grubu arasında ciddi bir işbirliği gerektirir.
Çözümleme aşaması bu iş için yeterince deneyime sahip olan kişilerce yapılmalıdır. Bu kişiler çözümleyici ya da gereksinim mühendisi olarak adlandırılır. • Problemin Anlaşılması: Bu aşamada problem derinlemesine incelenerek problemin ne olduğu ve çözüm için yazılımın kapsamının ne olacağı belirlenir. Problemi iyi anlamak problemin yarısını çözmek demektir.
Problemin Çözümlenmesi:İlkaşamada toplanan bilgilere göre, sistemi etkileyen giriş/çıkış etkinlikleri ve kısıtlamaları dikkate alınarak yazılım işlevleri tanımlanır. Yazılımın ne yapması gerektiği bu aşamada ortaya konulur. • Modelleme: Sistemin çalışma şekli, veri akışı, işlevsellik gibi parametreleri daha iyi anlayabilmek için modeller yaratılır. Bu işlem kağıt üzerinde çizimlerle yapılabileceği gibi prototipler de kullanılabilir.
Belirtim: Bu aşamada kullanıcının sistemi nasıl kullanacağını ortaya koyan taslak bir kullanım kılavuzu hazırlanır.Temel işlevler, kısıtlar, çalışma şekilleri, ara yüzler, başarım ölçütleri, doğrulama ve geçerleme yöntemleri tanımlanır. 5. Gözden Geçirme: Çözümleme aşaması sonunda ortaya çıkan belgeler müşteri ile birlikte gözden geçirilir ve eğer gerekli görülürse güncelleme ya da düzeltmeler yapılır.
Büyük ölçekli projelerde isterler genellikle birkaç aşamada düşünülür. • Düzey 1: Uygulama Alanı İsterleri: Müşteri görüşmeleri, yazılımın kullanılacağı ortamın ve benzer uygulamaların incelenmesi sonucunda temel gereksinimler çıkarılır ve müşterinin onayına sunulur.
Düzey 2: Kullanıcı İsterleri: Bu aşamada sistemi doğrudan kullanacak olan kullanıcıların beklentileri, istekleri alınır, kullanıcı ara yüzleri ve temel bileşenler ortaya konulur. • Düzey 3: İşlevsel İsterler: Bu aşamada geliştirilecek sistem bir bütün olarak düşünülerek işletim kuralları ve süreç yönetimi ile ilgili ayrıntılar tam olarak ortaya konulur.
Sistem isterleri belgesi hazırlanırken aşağıdaki sınıflardan uygun olanlar bu teknik belgeye dahil edilir. • İşlevsel Özellikler: Veri işleme özellikleri, işlem hızı ve kapasitesi, hatayla baş edebilme gibi. • Güvenlik: Kesintisiz kullanabilme, erişim güvenliği, veri güvenliği gibi.
Kullanım kolaylığı: Kullanıcı dostu ara yüzler, öğrenme kolaylığı, uygun kullanım kılavuzları gibi. • Diğer yazılımlar ile iletişim, • Bakım kolaylığı, taşınabilirlik, • Teknik belgeleme,veri yedekleme ve kurtarma, • Geliştirme dili ve platformu, • Uygunluk: Teknik şartnameler, standartlar, yasa ve yönetmelikler gibi.
TASARIM GELİŞTİRMEYE YÖNELİK ÖNERİLER
Tasarım sürecinin tüm etkinlikleri Yazılım Geliştirme Planı’nda belirtilen yöntemlere göre yapılmalıdır. • Ortaya çıkan ürünün özelliklerinin doğrulanması için testler yapılması tasarım standartlarının bir parçası olarak değerlendirilmelidir.İzlenebilirlik, tasarım, gerçekleştirim ve test sırasında devam ettirilebilmelidir. • Her türlü tasarım düzenleşim yönetim sistemine girmeden önce yapısal bir incelemeden geçirilmelidir.
Artımlı geliştirme modeli kullanıldığı taktirde tasarım da artımlı olarak yapılabilir. Ancak düzenleşim yönetim sisteminin bu yapıya uygun destek vermesi gereklidir. • Var olan yazılımın tekrar kullanımı planlandığı taktirde sistem ve yazılım mimarisi tasarımı uygun şekilde yapılmalıdır. • Sistem ve yazılım mimarileri üzerinde Yazılım Geliştirme Planı’nda belirtildiği şekilde doğrulama işlemi uygulanmalıdır.
Tasarımcıya Kendi Deneyimlerini Geliştirmesi İçin Öneriler • 1. Yapmak istediğiniz şeyin ne olduğunu önceden tam olarak belirleyiniz. • 2. Amaçlarınız açık ve somut olmasına dikkat edin. • 3. Sosyolojik problemlere teknolojik açıdan yaklaşmayınız. • 4. Var olan sistemlerden esinlenerek başlangıç noktası oluşturacak bir model belirleyiniz. • 5. Tasarımı esneklik, geliştirme, taşıma ve tekrar kullanım özelliklerini karşılaştırabilecek şekilde yapın.
6. Tekrar kullanım yazılım parçalarını belgeleri ile birlikte kullanıma sunulacak şekilde hazırlayın. • 7. Ayrıntılı düşünme çabalarınızı tüm yazılımın değil de onu oluşturan yazılım birimlerinin tasarımı üzerine yoğunlaştırın. • 8. Bir arayüzün başka arayüzlere bağlılığını en aza indirin. • 9. Arayüzleri , gereksinimi karşılamaya yetecek en az miktarda bilgi sağlayacak şekilde sağlayın.
10. Tasarımı ve sonra da gerçekleştirimi tekrar tekrar gözden geçirip gerekli gördüğünüz düzenlemeleri yapın. • 11. Tasarımı ve gerçekleştirimi test edip sonuçlarını değerlendirebilecek yazılım geliştirme yardımcı araçlar kullanın. • 12. Her şeyi olabildiğince basit halde ve küçük boyutta tutun.
13. Tasarımcıların, kodlayıcıların ve kullanıcıların da birer insan olduklarını ve her zaman hata yapabileceklerini unutmayın. • 14. Kullanıcıların her zaman bir mühendis kadar dikkatli ve bilgili olmayacağını düşünerek insan- makine arayüzlerinin uygunluğuna ve sistemin sağlamlığına gerekli önemi verin. • 15. Çevrenize tasarımın, kütüphanelerin ve soyut veri tiplerinin tekrar kullanımı fikrini yayın ve bu fikri somut örneklerle destekleyin.
TEKRAR KULLANIM • Tekrar kullanım esasları Yazılım Geliştirme Planı’nda yer almalıdır. • Tekrar kullanılacak ürünler, önce proje isterlerine göre kendi başlarına test edilmelidir. • Tekrar kullanıma esas olacak öğeler, hazır ticari ürünler ve özel üretilmiş birimler gibi geliştirme sürecinde üretilmeyecek yazılımlar birer risk unsuru olarak ele alınmalıdır. • Geliştirme süreci dışında temin edilecek öğelerin tekrar kullanımı ancak bu tür öğelerin özel bir denetim sonucu kabul edilmesinden sonra yapılmalıdır.
Bu tür öğelerin kullanıma karar verebilmek için tüm yaşam boyunca gerekecek bakım maliyeti, üst sürümlere yükseltme, garanti, lisans ve diğer öğelerle olan uyumluluk hususları dikkate alınmalıdır. • Bu tür öğelerin kullanımı için verilecek karar mimari ve tasarım tanımlamaları ile müşteri isteklerine uygun olmalıdır. • Sistemin yaşam çevrimi boyunca hazır olarak kullanılacak kritik öğelerin sorunsuzca kullanılabilmesi için gerekli çalıştırma lisansları, bakım ve destek olanakları ile mümkünse kaynak kod ve geliştirme lisanslarının temin edilmesi, bunların şimdiki ve gelecekti maliyetleri konusunda kestirimlerde bulunularak geliştirici ve müşteri arasında bire bir anlaşmaya varılmalıdır.
İSTEKLERİN VE TASARIMIN DENETLENMESİ • Geliştirilen yazılım ürünleri düzgün iletişim yönetim sistemi altına alınmadan önce resmi bir test ve denetimden geçirilmelidir. Bundan sonra bu ürünler başka ürünlerin geliştirmelerinde temel alınırlar. • Denetim, yazılım geliştirme planında belirtildiği şekilde, o ürün için geçerli olabilecek kabul esaslarına dayalı bir süreci şeklinde yapılmalıdır.
Denetim sırasında belirli bir takım metrikler toplanmalı ve izlenmelidir. Bu metrikler arasında, yazılım kusurları, kusurların bulunduğu yerler, bu kusurları gidermek için gerekli gayretler ve denetim için harcanan öz kaynakların miktarı bulunabilir. • Denetimler, kavram tanımlamasıyla başlar, mühendislik etkinliklerinin tamamlanmasıyla son bulur. • Program veya proje için ayrılan mali kaynaklar denetim ve sorun giderme için gerekli harcamaları da içermelidir.
Denetimlerin başarılı sonuçlanması ürünün veya tanımlanmış işin resmi bitişini göstermelidir. • Denetim ve gözden geçirme süreci ürünün tanımlanması ve ilk isterlerinin belirlenmesi ile başlar, mimari, tasarım, kodlama, tümleştirme, test ve belgelendirme aşamalarında devam eder.
GERÇEKLEŞTİRİM • Yordamlarınızı 20 satır fazla uzatmamaya çalışınız. • Bir kod dosyasının çok fazla uzamamasına gayret gösterin. • Büyük dosyalar yerine modüler bir dosya yapısı oluşturun. • Kod yazarken küçük ve mantıklı bölümler halinde yazıp sık sık derleme yapın.
Kullanılan bilgisayar mimarisinin özelliklerini dikkate alın. • Kod içerisinde sıkça kullandığınız sayı değerlerini sabit değerler olarak yazılımın tümü tarafından erişilebilecek bir yerde tasarlayın. • Yordamlara parametre geçirirken mümkün olan yerlerde nesnelerin adreslerini kullanın.
Kodlama da kullanılan programlama dili desteklese dahi ‘go to ‘deyimi kullanmayınız. • Mümkün oldukça açıklama satırı kullanınız. • Metinin şekilsel düzenine dikkat edin. • Kodlamada ilerlerken yazdıklarınızı sık sık değişik ortamlarda yedekleyiniz.
Dizin isimlerini mantıklı ve disiplinli bir şekilde oluşturunuz. • Yazılımı denetlerken hata oluştuğunda hemen donanım hatası olması yerine yazılımımızdaki mantık hatası arayınız. • Hiçbir zaman hatalara teslim olmayın.Hiçbir yazılım geliştirici hata ayıklama işleminden kaçamaz. • KOD YAZMAK BİR SANATTIR.