17 Ağustos 2013 Cumartesi

Yazılım Proje Yönetimi Kapsamındaki Faaliyetler

Genellikle yeni bir sistemin geliştirilmesine yönelik olarak üç temel adım vardır:
Fizibilite Çalışması,
Planlama,
Projenin Yürütülmesi.

Fizibilite Çalışması
Proje çalışmasına başlanmasına karar verilen bir ön çalışmadır. Gereksinimler toplanır, geliştirme ve işletim giderleri ile yeni sistemin getirileri belirlenir. Büyük sistemlerdeki fizibilite çalışması ayrı bir proje gibi yürütülür. Yapılan çalışma, yazılım geliştirmenin gereklilik ve önceliklerinin belirlendiği bir stratejik planlama gibidir.  Fizibilite çalışması bir projeye başlamadan önce yapılan bir ön çalışmadır. Proje ile ilgili olarak yapılan bir ön değerlendirme olarak düşünülebilir. Geliştirilecek proje ile ilgili gereksinimler toplanır. Gereksinimleri ortaya çıkarma, başlangıçta karmaşık ve zor olabilir. Kurumsal paydaşlar, proje ile ilgili gerçekleştirmek istedikleri hedefleri biliyor olabilir, ama bunların başarılı olacağı hakkında emin olamayız. Geliştirme ve işletme maliyetleri ile yeni sistemin getirileri hesaplanır. Büyük sistemlerdeki fizibilite çalışması ayrı bir proje gibi yürütülür. Yapılan çalışma, yazılım geliştirmenin gereklilik ve önceliklerinin belirlendiği bir stratejik planlama gibidir. Bazen organizasyonlar, bir çok projeden oluşan bir geliştirme programını da fizibilite çalışması olarak değerlendirirler. 

Planlama
Fizibilite çalışması projenin yapılabilir olduğunu gösteriyorsa planlama çalışmalarına geçilir.Büyük bir proje için detaylı planlama baştan yapılmaz, proje o aşamalara geldikçe detaylı planlama yapılır.Bunun sebebi, proje aşamaları için daha doğru ve detaylı bilgiler ancak başlama aşamasına gelindiğinde elde edilir.

Projenin Yürütülmesi
Planlama aşamasını takiben projenin yürütülmesine geçilir. Projenin yürütülmesi tasarım ve gerçekleştirme alt safhalarını içerir.Planlama ve tasarım arasındaki fark: Planlama ürünler için yürütülmesi gerekli aktiviteleri içerir, tasarım ise kullanıcı arayüzü, iç mimari gibi dıştan görülen yüzünü içerir. Detaylı seviyede tasarım kararları planlama kararlarını etkilediği için bu iki kavram karıştırılmaktadır.

16 Ağustos 2013 Cuma

Sözleşme Yönetimi ve Teknik Proje Yönetimi

Kurum-içi projeler (in-house projects), kurumun ihtiyaçları  doğrultusunda kullanıcılar ile geliştiricilerin ortaklaşa çalışması sonucu ortaya çıkan projelerdir. Kurumlar bu tür projelerde genellikle sözleşmeli programcılardan yararlanırlar. Kurum ile geliştirici yazılım firması arasında sözleşme yapılmaktadır. 

Ayrıca kurumlar bu tür projeler için, hem yapılan sözleşmeyi denetleyecek hem de proje için teknik kararları alabilecek bir kişiyi “proje yöneticisi” olarak belirlemektedir.
Bu sayede geliştirilen projenin, müşteri gereksinimlerini karşılaması, zamanında ve bütçesinde tamamlanmasına çalışılır. 
Bir yazılım projesi,  geçerli yazılımın sadece yazılması ile ilgili değildir. Aslında, bir yazılım uygulaması hazır paket program olarak satın alınabilinir. 

Satın alınacak bu yazılıma ilişkin aktivitelerin, özelliklerin incelenmesi ve gerekli alt yapı çalışmalarının yapılması süreci de bir yazılım projesi olarak değerlendirilebilir. 

Yazılım Proje Yönetimi ile İlgili İstatistikler

Amerika’da Standish Group tarafından yapılan bir araştırmaya göre yazılım projelerinin:
%33’ü bitmeden iptal edilmekte,
%53’ünde maliyet tahminleri % 189 oranında aşılmakta, 
Proje süre aşımı ortalama olarak % 222 oranında olmaktadır.
Sebepler:
Hedeflerdeki belirsizlikler,
Kötü planlama,
Teknolojideki yenilikler, 
Proje yönetim yöntemi eksikliği,


Proje Yönetiminin Popülerliği ve Diğer Projelerden Farkları

Proje yönetiminin son yıllarda  popülaritesinin artmasının bazı nedenleri: 
Firmalarda çalışan insan kaynağında azalma olmasına rağmen, ortaya çıkarılan işlerin niteliğinde ve kalitesindeki artış (teknolojik  gelişmelerin etkisi),
Projelerin daha kapsamlı olmaya başlaması, 
Küreselleşmenin getirdiği rekabet ortamı, 
İletişimin daha kolaylaşması, 
Pazarın genelini devamlı takip eden ve üreticilerin istekleri doğrultusunda yönlendirilebilen müşterilerin etkisi, 
Çok uluslu iş yapma olanaklarındaki artış, 
Gelişmeleri merkezden düzenli olarak izleyebilme ve gerekirse müdahale edebilme isteği.

Yazılım Projelerinin Diğer Projelerden Farkları 

Yazılım projelerini diğer projelerden ayıran özellikler: 
Görünmezlik (Invisibility): Bina, köprü gibi bir inşaat projesi yapıldığı sırada görünürdür, ancak bir yazılım projesi görünür değildir. Yazılım proje yönetimi, görünürlüğü görünmezlik yapan bir süreç  alarak görülebilir. 
Karmaşıklık (Complexity): Yazılım ürünleri yapılan harcamalar göz önünde bulundurulduğunda, diğer projelere göre daha karmaşıktır. 
Uygunluk (Conformity): Fiziksel sistemler belli malzemeler kullanılarak yapılır, ancak hepsinin sabit belli kuralları vardır. Yazılım projelerinde amaç müşteri istekleri ile uygunluktur. 
Esneklik (Flexibility): Yazılım ürünlerinde kolayca değişiklik yapılabilmesi esneklik sağlar. Güç olarak görünen bir yazılımı değiştirmek kolaydır. 
Genelde proje yönetim tekniklerinin çoğu, aynı zamanda yazılım proje yönetimi için uygulanmaktadır. Ancak 
Fred Brooks yazılım projelerini diğer projelerden ayıran bazı karakteristik özellikler tanımlamıştır. 

Esneklik Özelliğinin Devamı: 

Proje Yönetimi Nedir?

Proje yönetimi, proje hedeflerine ulaşmak için maliyet, zamanlama ve kalite kriterlerinin göz önünde bulundurularak, mühendislik aktivitelerinin doğru olarak planlanması ve denetimi işlemleridir. Her projenin başarılı olabilmesi için ; Zamanında tamamlanması, Kendisi için tanılanan bütçe dahilinde tamamlanması, Başından itibaren şart koşulan performans gereklerini yerine getirmesi gerekmektedir. Proje yönetimi, performans, maliyet ve zaman hedeflerine ulaşabilmek için eldeki kaynakları en verimli bir şekilde programlama ve proje aktivitelerini kontrol etme sürecidir.

Proje Yönetimi ile İlgili İstatistikler
A.B.D. projelere her yıl $2.3 trilyon harcamaktadır.
Tüm dünyada ise yaklaşık $10 trilyon harcanmakta.
Ortalama bir proje yöneticisi yılda $82,000 kazanıyor.
Proje İşletmeciliği Enstitüsü (PMI), 1969 yılında kurulmuştur. 1990 yılına kadar 7.500 üyesi varken 5 yıl sonra 17.000’nin üzerinde üyesi olmuştur. 2001 yılına kadar 86.000 üyeye sahip olup, günümüzde bu rakam 100.000 üyeyi geçmiştir.

Projelerin Özellikleri

•Projeyi rutin işlerden ayıran özellikler:
•Sıradan olmayan işleri içerir,
•Planlama gerektirir,
•Özel hedeflere veya ürünlere yöneliktir,
•Önceden belirlenmiş bir süresi vardır,
•Yapılan iş çeşitli alanlarda uzmanlık ister,
•Yapılan işin çeşitli aşamaları bulunur,
•Proje için kullanılacak kaynaklar belirlenir,
•Projeler daha büyük ve karmaşıktırlar.

Projeler sıradan olmayan işleri içerir: Projeler tekrarlanmazlar, bir kerelik veya bir adetlik yapılırlar. Örneğin, Boğaz köprüsü yapımı gibi… Bir adetten fazla yapılan işler; sıradan, tekrarlanan, rutin işlerdir. Bu işlerde hiçbir belirsizlik yoktur, yapılacak her şey bellidir. Örneğin, yeni ürün geliştirme veya prototip yapımı bir proje kapsamına girer, ürünün seri olarak üretimi ise rutin bir iş olup, proje kapsamına girmez.

Her proje belli bir amaç için yapılır ve bu amaca ulaşınca proje sona erer. Bu amacın; açık ve anlaşılır biçimde tanımlanması, gerçekçi, somut ve ölçülebilir olması gerekir. Projede söz konusu olan iş veya ürün belli bir ölçeğin üstünde büyüklükte ve/veya karmaşık yapılıdır. Örneğin, bir gemi yapımı, uzay aracının yapımı aylar, hatta yıllar sürebilir.

Proje Nedir?

Yazılım Projesi belirli bir başlangıç ve bitiş noktası olan,amacı,kapsamı,bütçesi açıkça tanımlanmış ve bir defaya mahsus olarak gerçekleştirilen planlanmış aktiviteler  bütünüdür.Proje, tanımlanabilen bir sorunun çözümüne yöneliktir. Proje, bir sonuca ulaştırılması gereken, özgül, dinamik, süreli bir değişim sürecidir.


Projeler bir değişim ihtiyacı sonunda ortaya çıkarlar. Burada, değişim tabirinden yenilik getirmeyi anlıyoruz. Yenilik dediğimiz şey, herhangi bir sistemin daha ileri bir düzeye gelmesi için gerçekleştirilmesi tasarlanan ürün, işlem veya faaliyettir.
Örneğin; otobüste, trende veya metro da kullanılan biletlerin yerine, “akıllı bilet” tabir edilen mıknatıslı sayaçların kullanılması bir yeniliktir. Banka hesap cüzdanlarının yerine bankamatik kartlarının kullanılması bir başka yeniliktir. Anlaşılacağı üzere, hemen her yeniliğin arkasında çoğunlukla bir teknolojik ilerleme vardır. Bununla beraber, her yenilik mutlak bir surette bir teknolojik gelişmenin sonucudur demek, her zaman için geçerli değildir.

Projeler bir yenilik getirirler. Bu bir ürün geliştirme projesi olabileceği gibi, süreç iyileştirme, yeni kalite standartlarının belirlenmesi gibi projeler de olabilir. Projelerin getirmesi amaçlanan yenilikler; genellikle büyük ölçekli, çok yaygın etkisi olan, kapsamlı, karmaşık düzenlemeler olup, günlük olağan değişiklikler sonucu yapılan küçük düzenlemeler bu tarz yenilikten sayılmazlar. Onlar daha ziyade, kurumun doğal gelişmesi sonucu oluşan küçük ilerlemelerdir.  

İnsanoğlunun kurduğu ve yaşattığı medeniyetler dikkatlice incelendiğinde, projelerin planlanması ve yönetimi süreçleriyle karşılaşırız. Modern organizasyonlar, proje yönetiminin bir çok avantaj kazandırdığını keşfetmiştir. Müşterilerin daha iyi ve daha hızlı ürün veya hizmet beklentilerine, en kolay cevap verme yönteminin proje yönetimi metodolojisi olduğu ispatlanmıştır.
Günümüzün refahını oluşturan bütün sanayi üretim araçları, binalar, bütün mamuller, etrafımızda gördüğümüz her şey çeşitli projelerin ürünleridir.
Bir projenin amacı bir fayda sağlamak, bir ihtiyacı gidermek ve bir probleme çözüm bulmaktır. 

13 Ağustos 2013 Salı

Java'da Çoklu Koşul Kullanımı Switch -10

Birden fazla koşulu bir arada değerlendirmek için Switch operatörü kullanılabilir.
Swtich ile ilgili örnek aşağıda verilmiştir.

class Switch10
{
public static void main(String args[])
{
int yaslari=3;
//Çoklu Koşulları Bir Arada Değerlendirmek için Switch Kullanılır.
//yasları değeri değiştirilip tekrardan çalıştırılıp switch konusu daha iyi anlaşılabilir.
switch (yaslari)
{
case 1:
System.out.println("1. Yaşında");
break;
case 2:
System.out.println("2. Yaşında");
break;
case 3:
System.out.println("3. Yaşında");
break;
default:
System.out.println("Yaş Bilimiyor!");
}
}

Java'da Mantıksal Operatörler -9

Java'da iki farklı durumu birbiri ile bağlamak içinde diğer dillerde olduğu gibi && (ve) || (veya) operatörleri kullanılabilir. Bu sayede && işaretleri "ve" anlamındadır. 2 farklı şart birbirine bağlanabilir. || işareti "veya" anlamındadır. 2.Şarttan birinin olması koşulun yeterliliği için yeterlidir.
Konu ile ilgili kodlar aşağıda verilmiştir.

import java.util.Scanner;

public class Mantiksal9
{
public static void main(String args[])
{
Scanner bucky = new  Scanner(System.in);
int kizlar,erkekler,insanlar;
//&& işaretleri "ve" anlamındadır. 2 farklı şart birbirine bağlanabilir.
//|| işareti "veya" anlamındadır. 2.Şarttan birinin olması koşulun yeterliliği için yeterlidir.

kizlar = 6;
erkekler = 4;
if (kizlar > erkekler && erkekler < 5 )
{
System.out.println("Kızların sayısı Erkeklerden Fazla ve Erkeklerin Sayısı 5 ten Az! ");
}
if (kizlar > erkekler || erkekler < 1 )
{
System.out.println("Kızların sayısı Erkeklerden Fazla Yada Erkeklerin Sayısı 1 ten Az! ");
}
}


}