Bu günlerde yeni projelere başlamaktansa, eski projeleri adam etmekle yada yeni sistemlere uydurmakla vakit harcıyoruz. Genelde devir aldığımız projeler zamanın şartlarına göre güzel yazılmış fakat artan veri yığınları ve eskiyen teknolojiler nedeni ile ya performansları düşmüş yada yeni sistemlerle konuşamaz duruma gelmiş oluyor.

Bazende firmaların kısır düşünceleri ve günlük politikaları yüzünden, günü kurtarmak amaçlı alına iki eleman ile eski projeler canlı tutulmaya çalışılıyor. Bazı firmalar, bırakın gelecek seneyi, önümüzdeki haftayı düşünüp planlamazken, bütün iş yükünü bu iki elemana yükleyip bir şeyler bekliyorlar. Bu iki eleman sihirbaz mıdır da sihirli deynekleri ile sistemi ayağa kaldırıp, bir o kadar da hatayı düzeltip programı çalışır hale getirsin.

Diyelim ki böyle bir projeyi Proje Müdürü olarak devir aldınız. İlk yapacaklarınız neler olurdu bir bakalım.

Proje hakkında yeterli döküman var mı?

Benim devir aldığım projelerin hepsinde dökümantasyon eksikliği vardı. Belkide benim istediğim kalitede dökümana hiç bir zaman erişemeyeceğim ama herkesin hayalleri var değil mi? Kimi zaman veritabanı dizaynlarına rastlasamda genelde işi anlatan döküman bulmak zor olur. Hele hele birde UML model filan arıyorsanız işiniz zor. Her zaman firma standartlarını anlatan bir kaç döküman da bulunur ama bu standartlarda oluşturulmuş bir proje dökümanına ulaşmak her zaman imkan dahilinde olmaz. Genelde kaynak kodu, firma standartları ve çok şanslı iseniz birde veritabanı dizayn dökümanı bulabilirsiniz. Projenin ne olduğunu, müşteri gereksinimlerini, senaryoları, iş akışlarını anlatan dökümanların olmaması sizin için önemli bir riskdir. Programatik hataları kod içinde düzeltseniz bile iş akışları ile ilgili hataları düzeltemezsiniz.

Bu büyük riski ortadan kaldıramasakta alacağımız bir kaç önlem ileride işimize yarayabilir. Bunlar:

  • İşi bilen ve iş akışlarında yardımcı olacak sektörden bir elemana erişim. Böyle birisini bulursanız, bu kişinin tam zamanlı olarak projede çalışması için istekte bulunun. Bu kişinin görevi projenin iş akışlarını dökümante etmek olacaktır.
  • Bir UML modelleme aracı ile mevcut kaynak kodunu kullanarak model oluşturmaya çalışın. Bu size genel olarak tüm projede kullanılan nesneler ve aralarındaki ilişkiler hakkında bilgi verecektir. Eğer OO yazılmış bir proje ise işiniz nisbeten kolayç Bazı UML araçları kodu Re-Engineering yaparak koddan model oluşturabiliyor.
  • Modelleme sırasında dağınık bir yapı ortaya çıkıyorsa, ufak modüller halinde toparlamaya çalışın. Böl ve yönet mantığı ile daha kolay anlaşılabilir hale getirebilirsiniz.

Yazacağınız raporda bu riskten geniş biçimde bahsetmeyi unutmayın.

Kaynak kodu derlenebiliyor mu?

Tüm kodu derlemeye çalışın ve bağımlılık şeması çıkartmaya çalışın. Modül bazında derleme sırasını oluşturmaya çalışın. Kullandığınız UML aracı ile bu derleme sırasını modelleyin. Eksik, kayıp, gereksiz modüller var mı tesbit edin. Kullanılan üçüncü parti modülleri de tesbit edin. Eğer kod sorunsuz olarak derlenebiliyorsa bu sizin başlangıç noktanız olacaktır. Yeni bir VSS veritabanı yaratıp tüm kodu buraya aktarın ama kodun tarihçesini almayın. Eski VSS veritabanını da daha sonra kullanmak üzere yedekleyin. Yeni yarattığınız VSS sanki yeni açılmış bir proje gibi olacak.

Derlenemeyen kod varsa bunlarda risk oluşturacaktır. Raporunuza bu riskleri de ekleyin.

Bir müşteri istekleri ve hata veritabanı mevcut mu?

Daha önce kullanılmış bir hata ve istek veritabanı size projenin gidişatı ve şimdi bulunduğu konum hakkında bilgi verecektir. Bir kaç analiz yapıp iyi ve kötü modülleri yada hataların genelde nerelerde çıktığını tesbit edebilirsiniz. Bu veritabanını yedekleyip yeni ve temiz bir tane oluşturun. Aynen VSS gibi sıfırdan başlayacak.

Kaynak kodu bir kod kontrol veritabanına bağlı mı?

Eğer daha önce VSS gibi bir kod kontrol uygulaması kullanılmış ise, kodun tarihçesinden ne değişiklikler yapılmış görebilirsiniz. Bu değişiklikleri hata veritabanı ile karşılaştırabilirsiniz. Ama bu eski kod kontrol veritabanını kullanmayın. Tüm kodu indirip derlendiğine emin olduğunuz kısımları yeni bir kod kontrol veritabanına aktarın. Böylece başlangıç için elinizde bir temel olmuş olacak.

Kullanan müşteri var mı?

Bu proje müşterilere kurulmuş mu kontrol edin. Eğer kurulmuş ise müşterinin isteklerini göz önüne alarak bir plan yapın ve bir yapılacak işler listesi çıkarın. Eğer pilot olarak kurulmuş ise bu pilot uygulamalarını tekrardan çalışır hale getirmek için neler gerekli çıkartın. Müşteri tarafında bağlantı kuracağınız kişilerin de bir listesini yapın.

Kurulum programı var mı?

Bu yazılımın bir kurulum programı var mı araştırın. Yoksa kurulum için neler gerekiyor araştırın. Daha sonra piyasadaki kurulum hazırlama programlarını veya mevcut elde varsa yeni sürümlerini araştırın. Yamaların ve kurulumların müşteriye sorunsuz ulaştırılması ve fazla bilgisayar bilgisi olmayan müşterilerin rahatça kurabilmesi için mümkün olduğunca basit bir kurulum hazırlamaya çalışın.

Yazılım için kullanılan araçlar son sürümler mi, lisansları tamam mı?

Kullanılan tüm yazılım araçlarını kontrol edip eksik lisanslı olanlarını ve eski sürümleri tesbit edin. Sağlayıcı firmalardan kiminle kontak kurulacağını tesbit edin. Eğer eksik lisanslar varsa bu bir risk teşgil eder. Raporunuza bunları eklemeyi unutmayın.

Yeterli teknik alt yapı mevcut mu?

Kullanılan bilgisayarlar, sunucular, sabit disk kapasitesi, ağ ve internet erişimi proje için yeterli mi araştırın. Projenin derlenmesi, veritabanının oluşturulması gibi işlem gücü ve hafıza isteyen operasyonlar çok zaman alıyor mu kontrol edin. Yeterli hafıza, sabit disk, işlemci için istekte bulunun ve risk olarak bunları raporunuza ekleyin.

Projede kullanılmış üçüncü parti modül var mı?

Bu proje dahilinde yazılmamış veya hazır satın alınmış modüller, ActiveX nesneler yada assembly'ler, aynı firma içinde başka bir projede yazılmış modüllerin hepsi üçüncü parti modüllerdir ve sorumluluğu başkasına aittir. Fakat genede proje içinde bunları yönetecek bir elemana ihtiyaç vardır. Bu kişi gerekli firmalar yada kişiler ile bağlantı kuracak, yeni sürümleri takip edecek, yamaları uygulayacak ve çıkan hataları sağlayıcı firmalara bildirecektir. Bu aşamada böyle bir elemana sahip olmasanız da üçüncü parti tüm modülleri tesbit edip bir liste haline getirin, sağlayıcı firmalardan kontak kurulacak kişileride karşılarına yazın. Yukarıda bahsettiğim elemanı ekibinize dahil ettiğinizde yapacağı işler az çok çıkmış olur.

Projede kullanılabilecek üçüncü parti modül var mı? Özellikle çalışmayanların yerine kullanılabilecek.

Hazır satılan bir muhasebe modülü, kredi kartı kontrol modülü, portal şablonları vs. gibi piyasada hazır bulunan modüllerin araştırılması ve bir kar zarar analizi ile projede kullanılıp kullanılamayacağını araştırın. Hatalı modülleri yeniden yazmak mı daha karlı olur yoksa hazır bulunan bir modülü entegre etmek mi?

En fazla sorun çıkaran modüller hangileridir?

Hata ve istek veritabanından çok sorun çıkartan modülleri bulun. Değiştirilecek yada çok fazla zaman alacak kısımları ortaya çıkartın. Bu modülleri önem sıralarına göre dizip işe nereden başlamanız gerektiği konusunda bir plan ortaya çıkartabilirsiniz.

Genelde sorunlar basit programatik sorunlar mı yoksa iş akışlarında mı?

Gene hata ve istek veritabanından sorunların programatik sorunlar mı (örneğin sıfıra bölme, text box'ların yerlerinin değiştirilmesi, veritabanına kayıt sırasında bir sahanın unutulması vs) yoksa iş akışlarında mı (örneğin bir sipariş alma ve gönderme sırasında geçen olaylar ve kullanılacak fonksiyonlar)? Programatik sorunları çözmek kolaydır fakat iş akışlarındaki hatalar ancak işi bilen birisi tarafından bulunabilir ve çözülebilir. Eğer programatik hatalar çoğunlukta ise işiniz nisbeten daha kolay.

Bir proje planı mevcut mu?

MS Project veya MS Excel gibi bir araçla oluşturulmuş bir proje planı var mı ve var ise gelecekte yapılacak işler yazılmış mı? Böylece ileride yapılacak işlere buradan da bir kaç madde eklenebilir.

Hızlı çözülebilecek hatalar nelerdir?

Hızlı çözülebilecek hataların tesbitini yapıp bunları yeni mezun programcılara yada stajyerlere verebilirsiniz. Böylece zamanla hem mevcut koda hemde iş akışına aşikar olacaklardır. Biraz daha sistem hakkında bilgileri artınca diğer hatalarıda atayabilirsiniz. Onlar için en iyi eğitim bu şekilde olur sanırım.

Patronun istekleri nelerdir?

Patronun hedefleri nelerdir, sizden neler bekliyor öğrenmeniz, ileride doğacak yanlış anlamaları ortadan kaldıracaktır. Sizin yapıp yapamayacağınız işler imkanlar dahilinde ortaya çıkmıştır ve eğer patron sizden gerçek dışı, doğa üstü bir şey istiyorsa güzel bir dille sizin büyücü olmadığınızı ve geleceği gösteren kristal topunuzun olmadığını, böyle bir öngörü istiyorsa Medyum Keto yada Memiş'i proje müdürü olarak almasını tavsiye edin. Yada bir ara yolu düştüğünde Kıbrıs'ta Elmas Hanım'dan da danışmanlık alabilir. Ama danışmanların pahallıya mal olacağını söylemeyi unutmayın.

Patron, proje müdürü için bir çeşit müşteridir ve mutlu edilmesi gerekir.

Kompleks modüller bölünebilir mi?

Fazla kodlamadan dolayı yada fonksiyon fazlalığından şişmiş modüller bölünüp daha kolay yönetilebilir parçalar haline getirilebilir. Bu tür imkanlar varsa kesinlikle uygulayın. İleride işleri programcılara atarkende işinize yarar. Küçük parçalarda hata aramak ve düzeltmek te daha kolay olacaktır.

Modül testleri yapabilmek için test senaryoları oluşturmaya başlayın

Test senaryoları size bir modülün nasıl çalıştığını ve ne tür hata durumları oluşacağını belirtir. Bu dökümanları hazırlamak uzun sürer. İlk oluşturulan test dökümanları yetersiz olabilir fakat zaman içinde bu yetersizlikler dökümana eklenerek tam bir test dökümanına kavuşabilirsiniz.

Projenin yeni bir teknoloji ile yazılması makul müdür?

Böyle bir öneriyi patrona götürürken çok dikkatli olmalısınız. Zira tüm yük omuzlarınızda kalabilir. Fakat zaman zaman yazılımlar o kadar eskirki artık ne yazıldığı dil sağlayıcı firma tarafından destekleniyordur nede çalıştığı işletim sistemi. Öte yandan bu yazılım yazıldığı sırada hiç kimse bu yazılımın emekli olacağı zamanı düşünmemiş ve planlara katmamıştır. Her projenin bir hayat süreci vardır, projeler doğduğu gibi ölürler de. Ama nedense bu ölüm zamanı planlarda pek bulunmaz (en azından yazılım dünyası için).

Eğer patronda yeni teknolojiye geçmekte gerçekten hevesli ise ve bu geçiş projesine emek, zaman, para harcayacaksa işiniz biraz daha kolay. Tabii bu durumda yukarıda yazdığım planların çoğu değişiyor. Sizin için yeni bir proje ve yeni bir başlangıç olacaktır.

Ne kadar bütçemiz var?

Bütçe konuşmaları en sıkıcı konuşmalardır. Manav gibi pazarlık yapma hüneriniz yoksa hiç girmeyin daha iyi. Ama Proje Müdürü olarak girmek zorundasınız. Bütçe projenin ihtiyacı olan insan sayısı, hataların sayısı, riskler, temel ihtiyaçlar (yemek, çay, kahve), donanım ihtiyacı, yazılım ihtiyacı, masa sandalye gibi mobilyalar, ofis kirası, elektrik ve su giderleri gibi daha burada unuttuğum pek çok değişkene dayalı olarak hesaplanmalıdır. Patronun kafasında eski deneyimlerine dayanarak ve bu projenin yediği bütçeyi düşünerek zaten bir rakam vardır. Sizin göreviniz patronun beynini bu rakam bariyerinden kurtarmak ve daha mantıklı bir düşünce sistemine getirmek olmalıdır. Bir mühendis olarak imkanları, riskleri, ihtiyaçları sıralamak, piyasadan örnekler vermek ve ayakları yere basan gerçekçi bir plan sonucu ucu açık bir bütçe istemek gerekir. "Ucu Açık" tan kastım tam olarak kapalı bir bütçe yerine esnek, ekleme çıkartma yapabileceğimiz bir bütçedir.

Na kadar zamanımız var?

"Zaman" her zaman dar olduğumuz bir ihtiyaç. Genelde tam ihtiyacımız olduğu anda biter. Ne kadar zamanınız olduğunu Patrondan öğrenin ve gerçekçi olup olmadığı konusunda; kendi planlarınız ile karşılaştırıp bir rapor halinde patrona sunun. Riskler ve tam olarak belli olmayan müşteri istekleri raporun ana kaynağı olacak ve bu riskleri ortadan kaldırmak için sunacağınız bir kaç yöntem -onaylanırsa- sizin çözüm yolunuz olacaktır. Zamanınızı iyi kullanmak sizin elinizde, eğer iyi bir planlama yaparsanız ve kaynakları iyi kullanırsanız her şey mümkün.

Yeni eleman alabilir miyiz?

Eleman alımları eğer onaylanırsa, işinize yarayacak elemanları bulmak size kalıyor. Vereceğiniz ilanlarda hem kullanılan teknolojiyi hemde işin yapısını belirtin. Projenin boyuna göre alınacak bir kaç Gereksinim ve Modelleme Uzmanı, Yeni mezun ve usta programcıların karmasından oluşmuş bir yazılım ekibi, sistem yöneticisi, veritabanı uzmanı ilk aşamada ihtiyacınız olanlar.

Program kaça satılacak, beklenen kar nedir?

Programın satışı ve fiyat belirlemelerini yapacak pazarlama ekibi ile sıkı bağlantılar, yazılımın pazar gücünü arttıracaktır. Pazarlama ekibi üretilen yazılımın tüm artı ve eksilerini bilmeli ve piyasadaki diğer rakipler ile karşılaştırmalı tablolar hazırlamalıdır. Eğer sizin ürününüzde olmayan fonksiyonlar varsa, bunları analiz edip genel iş akışı olarak belgeler ve yazılım ekibinden istekte bulunabilir. Görüyorsunuz pazarlama ekibi bile yazılım ekibine istekte bulunarak projeye katkı sağlayabiliyor. Göz ardı edilmemesi gereken bir kaynak bence.

Hazır müşteri var mı?

Hazırda bekleyen müşteriler de sizin için bulunmaz bir fırsat. Pilot firma olarak kullanıp ürün testleri yada kullanıcı kabul testleri yapabilirsiniz. Bu tür müşterileri organize edecek bir elemanda atamanız gerekebilir.

Programın desteğini verecek ekip var mı? Eğitimleri yeterli mi?

Destek ekibi genelde yazılım ekibi içinden gelir fakat çok sıkıcı bir iş olduğundan yazılım ekibinden kimse yapmak istemez. Aslında yanlış da bir uygulamadır çünkü bir yazılım uzmanına ödediğiniz maaş destek elemanına ödeyeceğiniz maaşdan çok daha fazladır. Yazılım uzmanının hem destek vermesi hemde program yazması bekleniyorsa; bu da işleri ucuza getirme felsefesinden doğuyordur ki profesyonelliğin öldüğünün ve batmaya başlayan firmanın göstergesidir. Destek ekibinin eğitimi çok önemlidir ki müşteri tarafında destek verirken hızlı ve doğru olsunlar.

Medya ile bağlantıları sağlayacak biri var mı?

Ürünün tanıtımını yapacak, dergilerde, gazetelerde, televizyonda reklamlarını ve röportajları yönetecek bir medya uzmanı gereklidir. Böylece ürünün reklamı yapılırç MEdya uzmanının ürün hakkındaki bilgisi pazarlama uzmanları ile aynı olmalıdır.

Programın tanıtılacağı bir örütbağ sitesi var mı?

Ürününüzü örütbağ üzerinde tanıtacak, müşterilerin aradıklarında bulmasını sağlayacak, kullanım kılavuzlarının yer aldığı bir site çok işinize yarayabilir. Müşterilerin kullanacağı bir forum, bir e-posta listesi ve bir hata bildirme formu müşteriyi mutlu edecektir.

Programın deneme sürümleri, öğrenci sürümleri olacak mı?

Ürününüzün yayılması ve mümkün olan en fazla kitleye erişebilmesi için okullara, firmalara deneme sürümlerinin yada kısıtlı sürümlerinin satılması yada ücretsiz verilmesi düşünülebilir.

Böyle bir projeden genelde beklenen kısa zamanda piyasaya çıkması ve satılmasıdır ki zaten zarara uğramış bir projeden bir miktar da olsa geriye dönüş olsun. Fakat planlama aşamalarına az zaman harcandığı ve gerçeklikten uzak olduğu için istenen sonuç elde edilemez. Sonuçta önemli olan planın gerçeğe yakın olmasıdır.

Öte yandan eminim bütçe kısıtlı olacaktır ve ekstra eleman almak mümkün olmayacaktır. İşinin ehli, sistem üzerinde biraz bilgisi olan bir kaç yazılım uzmanı tüm planları hızlandırabilirdi oysaki. Ama tabii firma sahipleri kaz gelecek yerden tavuğu her zaman esirgerler di mi? Proje müdürü olarak bu bariyerleri kırmak sizin elinizde. Bir mühendis olarak tüm problemleri ve riskleri delilleri ile beraber ortaya koyup olası çözümleri sunduğunuzda epey bir yol katetmiş olacaksınız. Üst yönetim ekibinin bu riskleri ve çözümleri hazmetmesi için bir kaç gün zaman verin. Onaylarlarsa projeye başlayabilirsiniz.

Buraya kadar yazdıklarıma bir eklemeniz varsa yada benim unuttuğum konular; yorumlarınızı bekliyorum.

Reklamlar


Bu girdiye atılan yorumlar:

# re: Eski Projeler

Yorum test. Kimse yorum atmiyor. Bir test edeyim dedim

Gurkan Test tarafından  9/2/2005 8:30 AM tarihinde atılmıştır.

Yorumunuzu buradan giriniz

Yorumlar onaylandıktan sonra yayınlanacaktır

*


*


 (Görüntülenmeyecek)


 (İsminizde link olarak görüntülenecek)


*
Bold Italic Underline Blockquote Hyperlink Hyperlink

 

Please add 8 and 2 and type the answer here:

Yorum Önizleme:

 

Arama



Hakkımda

Merhaba, ben Gürkan Yeniçeri. 10 yılı aşkın süredir özel sektör ve hükümet iştiraklerinde yazılım mühendisliği yapıyorum. Bu sitede 2005 Mart ayından beri genelde yazılım mühendisliği ve hobilerim hakkında yazmaktayım. Profesyonel iş geçmişim hakkında daha fazla bilgiyi aşağıdaki Linkedin.com linkinden alabilirsiniz.
Gürkan Yeniçeri'nin profilini görmek için tıklayın

Kontak

Soru sormak veya öneride bulunmak isterseniz buradaki kontak formunu kullanın. Mesajlarınıza en kısa zaman içinde cevap vermeye çalışacağım. Ayrıca Windows Live Messenger kullanarak gyeniceri {AT} hotmail {DOT} com adresinden bana ulaşabilirsiniz.

Eğer İngilizce blogumu okumak isterseniz buraya buyrun.
Blogumu RSS Bandit gibi bir RSS okuyucusu ile de takip etmek için kullanın.
Ayrıca aşağıdaki linklerden hakkımda ayrıtılı bilgi alabilirsiniz.
Twitter
Friendfeed
Facebook

RSS 2.0

Reklamlar


Vezir

Vezir Proje Danışmanı
Sitede birde Vezir isminde wikimiz var. Bu wikiyi yazmayı düşündüğüm bir kitap için oluşturmuştum daha sonra herkese açmaya karar verdim. Vezir yazılım firması kurmak isteyenlere tavsiyeler vermek için hazırlandı. Ayrıca UML ve Modül Tabanlı Geliştirme hakkında da bilgiler mevcut. Vakit buldukça yeni eklemeler yapıyorum. Değişikliklerden haberdar olmak için RSS çıktısına üye olabilirsiniz.

Tag Bulutu

Tüm taglar...
www.flickr.com
This is a Flickr badge showing public photos from gurkanyeniceri. Make your own badge here.
Bu blogda 265 yazı ve 509 yorum var. Diğer sitelerden 26 adet link gelmiş.

Reklamlar