Proje Geliştirmede Sistem Yaklaşımı
Ne öğrenilecek Sistemin tanımı. Sistemin Temel özellikleri Sistemin yapısı Sistem Geliştirme süreci Yazılım sistemleri Yazılım Geliştirme süreci
Sistemin tanımı Sistem,bir amaca yönelik olarak bir araya gelen ve aralarında düzenli ilişkiler bulunan öğelerin oluşturmuş oldukları bir bütündür Sistem yaklaşımı, sistem ve alt sistemlerin uyumlu,verimli bir biçimde çalışmalarını sağlar Sistem yaklaşımı, proje yönetiminde bir düşünme yolu olup, projenin başarılı yönetimi için gereklidir Sistem yaklaşımı sorunu bir bütün olarak ele alan ,hedefleri ve amaçları düzenleyen ve sonucu değerlendiren bir yaklaşımdır
Sistemin temel özellikleri Her sistem alt sitemlerden oluşur. Sistem içinde yer alan daha küçük sistemler alt sistemler olarak adlandırılır. Bir alt sistem diğer alt sisteme doğrudan ve ya dolaylı bağlıdır. Alt sistemler kendi içinde bir bütünlük oluşturan ve kapsamı içinde oldukları sistemin amacı doğrultusunda çalışan sistemlerdir. Her altsistemin amacının gerçekleştirilmesi bütün olarak sistemin amacının gerçekleştirilmesidir
Sistemin temel özellikleri-devamı Her sistemin hedefleri ve amaçları vardır.Sistemin etkinliği ve verimliliğini değerlendirmek için sistemin amaçlarının iyi tanımlanmış ve ölçülebilir olması gerekmektedir. Her sistemin yapısı farklıdır. Yapılarına göre sistemler açık ve kapalı; canlı ve cansız; doğal ve yapay ola bilir.
Sistemin temel özellikleri-devamı Sistemin ve altsitemlerin girdisi,işlem süreci ve çıktısı vardır. Her hangi bir altsistemin girdisi diğer bir altsistemin çıktısını ve herhangi bir altsistemin çıktısı diğer bir alt sistemin girdilerini oluşturablir Sistemde varolan girdi, çıktı ve işlem unsurları o sistemin genel yapısını oluşturur. girdi çıktı İşlem Verimlilik Tasarruf karlılık Bilgi Çevre enerji Bilgi Geri besleme Sistemin genel yapısı
Sistemin genel yapısı Sistemin girdileri; 3 grup: Bilgi- bilgi sistemin temeli ve yüküdür; sistemin yükü örneğin, bir hastanedeki hastalar, bir okuldaki öğrencilerdir Sistemin işlevini etkileyen çevresi; çevre, denetim dışı etkilerden oluşur. Bunun değiştirilmesi mümkün değildir. Ama sistemin tasarımında bu etkiler göz önüne alınmalıdır; yerçekimi, yasalar, iktisadi durum… Enerji, para, yönetim, insan gücü,arsa, araç-gereç… İşlem bölümü; Bu bölümün amacı sistemin amacı ile eşdeğerlidir. Çeşitli girdileri önceden tanımlanmış bir çıktıya dönüştürme işlemi yapar. Sistemin başarısı sistemin güvenilir olmasına bağlıdır. Sistemin güvenilir olması ise çıktıyı üretebilmesidir. Sistemin çıktıları: örn., bir otomobil fabrikasında belirli bir zamanda üretilen otomobil sayısı ve kalitesidir
Sistem geliştirme süreci Sistem geliştirme aşağıdaki 5 aşamada gerçekleştirilir. Ön çözümleme Sistem çözümlemesi Sistem Planlaması Sistemi gerçekleştirme Sistemin başlatılması İzleme ve değerlendirme- tüm aşamalar boyunca yapılaması gereken sürekli bir görevdir
Ön çözümleme Projenin temel belgeleri hazırlanır; belgelerde proje programında belirtilen hususların ön çözümlemesi yapılır Sorunun çözümü için , ön çözümleme sonuçları şematik bir biçimde ortaya konulur. Eğer çözümleme sonuçları tasarısında yeni bir sisteme gerek olduğu ortaya çıkarsa, taslak yeniden ele alınır , görev ve sorunlar tanımlanarak sonuçlandırılır. Ön çözümleme sonuçları: hedeflenen sistemin amacı, görevleri, maliyet, vb. gerekler Sorunların tanımı ve çözüm yolları Sistemin bölümleri ve görevlerinin tahlili Geçici bir proje yapısının hazırlanması Projenin tümüne ilişkin zaman ve maliyet tahmini yapılması Bunun sonunda hazırlanan ön çözümleme raporunda sistem çözümlemesine gerek olup olmadığı belirtilir
Sistem çözümlemesi Görevler, ön çözümlemede belirlenmiş bulunan hedeflenen sistemden türetilir ve düzenlenir. Görev türü ve niteliği çözümlenir; sorunlar, stratejiler, hedefler belirlenir; Ön çözümlemedeki çözüm yollarına dayanılarak öngörülen bir tasarı geliştirilir Sistem ve bölümlerinin işlevleri ve sistemin çevresi çözümlenir Bilginin toplanması,tahlili, yorumlanması, düzenlenmesi ve çerçevesinin belirlenmesi yapılır Sistem değişikliklerinin olası etkileri incelenir; Proje taraflarına sistemin verimliliği ve ekonomikliği konusunda bilgi vermek için taslak hazırlanır; Taslak, sistemin planlanması aşamasında “çalışma planı” olarak kullanılabilecek biçimde hazırlanmalıdır Tüm görevler sıralanmalı ve zayıf noktalar belirlenmelidir Bilgisayar donanımı ve yazılımı konusundaki görüşler de taslakta yer almalıdır
Sistem planlanması Proje şemalarının tanımlanması ve ve sistemin niteliklerinin belirlenmesinde aşağıdakilerden yararlanılır: Sistemin gerekçesi Sistemin teknik özellikleri Sistemin bölümleri ve basamakları Deneme Sistemin başlatılmasına ilişkin program
Sistem geliştirme Önceki aşamada belirlenen ve çıkarılan sonuçlar tüm ayrıntılarıyla işlenip gerçekleştirilir Yeterlik denemeleri yapılır İlk prototip kullanım koşulları altında denenir. Eğer gerçekleşme olumlu ise uygulama belgeleri hazırlanır
Sistemi başlatma Sistem uygulamaya konulur “sistem planlama “ aşamasında gerçekleştirme ile ilgili plan esasında sistemin bölümlerinin kurulma sırası,gerekli çalışanlar ve araçlar konusundaki bilgiler ,başlatma yöntemine ilişkin hususlar belirlenir Bu aşama için projenin gerçekleştirilmesi sırasında kullanılacak el kitapları, belgeler, işletme kılavuzları,eğitim programları hazırlanmalıdır Tüm koşullar yerine getirildikten sonra sistemin denenmesi yapılır
Yazılım, yazılım mühendisi tarafından tasarlanır ve geliştirilir; Yazılıma genel bakış Yazılım, yazılım mühendisi tarafından tasarlanır ve geliştirilir; Yazılım toplumdaki hemen-hemen her kişi tarafından kullanılmaktadır; Yazılım geliştiriciler diğer insanlara zarar vermeyecek güvenilirli yazılım geliştirmek için ahlaki yükümlülük taşımaktadırlar; Yazılım kullanıcılarını, yalnız yazılım ürünlerinin beklentileri hangi seviyede karşıladıkları değil, aynı zamanda onların çalışmalarını ne kadar kolaylaştıracağı da düşündürmektedir.
Yazılım Sistemleri
YASAD (Türkiye Yazılım Sanayicileri Derneği) raporu verileri (2006) Dünya bilişim sektörü 2.3 trilyon Euro hacme sahip, yazılım sektörü ise bunun yaklaşık yüzde 25’ini oluşturuyor “2015'te en az 2 milyar dolarlık yazılım ihracatının gerçekleştirilmesi, yerli yazılım şirketlerinin küresel markalar olmaları, 2023'te ise Türkiye'nin ihracatçı güçleri arasında ilk 5'e girmesi amaçlanıyor İGEME (ihracatı geliştirme ve etüt Merkezi) “yazılım sektörü” raporuna göre: 2006 yılında Türk yazılım sektörünün ihracatı yüzde 20 oranında artarak 650 milyon dolara çıkacak.
YASAD (Türkiye Yazılım Sanayicileri Derneği) raporu verileri (2006) Dünyadaki yazılım harcaması 2007 yılında 740 milyar doları aşacak. Dünyada yazılım sektörünün önde gelen ülkeleri : ABD, Almanya, İngiltere, Hindistan, İsrail, İrlanda ve İsveç. Türkiye, henüz bu ülkelerle yarışabilecek kapasitede değil, ancak hızla yükselen ve gelişen bir sektöre sahip. Türkiye’de yazılım sektörünün hacmi 2005 yılında 540 milyon dolara ulaştı. Yazılım ihracatı yapılan ülkeler: ABD 2.2 milyon dolar, Almanya 2 milyon dolar. Yazılım ithalatına bakıldığında, ithalatta ABD ve AB ülkeleri başı çekiyor. Türkiye, 2005 yılında İngiltere’den 14.5 milyon dolar, Almanya’dan 13 milyon dolar ve ABD’den 11.8 milyon dolarlık ithalat yaptı.
Yazılım projeleri ile bağlı diğer istatistikler Kullanıcıların fikirlerini değiştirmesi nedeniyle tamamlanamayan yazılım projeleri tüm yazılım projelerinin yarısını oluşturuyor; Yazılım projelerinin neredeyse ¼’i gereksinimlerin değişmesi, zaman ve kaynak yetersizliği veya başka nedenlerle teslim edilemiyor Yazılım projelerinin yaklaşık 1/4 ‘i başarıyla teslim ediliyor; Bakım: Sistemin yaşam devri süresince Yazılım projesine harcanan çabanın % 70 ve daha fazlası yazılımın bakımına ve iyileştirilmesine ayrılıyor Teslim: Büyük yazılım projesinin kavramsal tasarımdan son kullanıcıya teslimine dek (veya gerçek kullanıma dek) geliştirilme maliyeti toplam maliyetin % 20-30’u arasındadır.Diğer faaliyetler (belgeleme, eğitim, destek, ağ tasarımı ve s) %70-%80 civarındadır. Ticari yazılım geliştiriciler, yılda 12.000 kod satırı yazıyorlar (kaynak: Wikipedia)
Yazılımın nitelikleri Yazılım geliştirilir veya tasarlanır; ama klasik anlamda imal edilemez Yazılım aşınmaz Pek çok yazılım özel oluşturulur; genelde varolan bileşenlerden yığılamaz
Donanımın Yetersizlik Eğrisi Çocuk ölümü eskime YETERSİZLİK SEVİYESİ zaman
Yazılımın ideal “yetersizlik eğrisi” YETERSİZLİK SEVİYESİ Eskiyene dek devam ediyor zaman
Yazılımın gerçek “yetersizlik eğrisi” YETERSİZLİK SEVİYESİ Gerçek eğri değişme İdeal eğri zaman
Yazılım Türleri Sistem Yazılımları Gerçek zaman Yazılımları İş Yazılımları Mühendislik ve Bilimsel Yazılımlar Gömülmüş Yazılımlar Kişisel Bilgisayarların Yazılımları Ağ yazılımları Yapay Zeka Yazılımları
YAZILIM SÜRECİ VE SÜREÇ MODELLERİ
4/2/2017 Yazılım süreci Yazılım Sistemlerinin belirtilmesi, tasarlanması, çalıştırılması ve denetimi için gereken faaliyetlerin uyumlu kümesi Faaliyetler: - Yazılım sisteminin tanımlanması ve çözümleme -yazılımın işlevselliği ve işlemlere koyulmuş sınırlamalar tanımlanmalıdır Tasarım (Geliştirme) –gereksinimleri sağlayan yazılım üretilmelidir Deneme –müşteri isteklerinin karşılandığına emin olmak için yazılım doğrulanmalıdır Çalıştırma ve bakım Yazılımın evrimi –müşterinin değişen isteklerinin sağlana bilmesi için yazılım gelişe bilmelidir 25
Yazılım Geliştirme Modelleri 4/2/2017 Yazılım Geliştirme Modelleri Yazılım süreci modeli sürecin basitleştirilmiş soyut tasviridir.O, her hangi özgü açıdan süreci ifade eder. Yazılımın geliştirilmesi için kullanılan genel modeller: Şelale modeli Faaliyetlere bağımsız süreçler gibi bakılıyor Evrimsel geliştirme Kullanıcı ve sistem gereksinimleri evrimsel olarak karşılanmaktadır 26
Şelale Modeli
Şelale Modelinin safhaları Gereksinimlerin çözümlenmesi ve tanımlanması Sistem ve yazılım tasarımı Birim ve bütünleşme denemesi Sistem ve teslimat denemesi Çalıştırma ve bakım Şelale modelinin yetersiz yönü, süreç tamamlandıktan sonra değişikliklerin yapılmasının zorluğudur
Şelale Modelinin sorunları Projenin farklı aşamalara esnek biçimde bölünmemesi; Bu, değişen müşteri gereksinimlerini yerine getirmekte zorluklar yaratır Bu nedenle, şelale modeli, gereksinimlerin yalnız çok iyi tanımlandığı takdirde uygun modeldir
Yazılım geliştirmenin gerçek süreci Yazılım geliştirme süreci safhaları
4/2/2017 Evrimsel Geliştirme Temel düşünce: ilkin bir çalışma yapmak,bunu müşteri görüşüne sunmak, bu görüşleri de dikkate alarak sistemin son gereken halini alana dek sürümlerini geliştirmek Açınsama (Exploratory)Geliştirmesi Müşteri ile birlikte çalışarak gereksinimlerin açınsaması; başlangıç ana hatlarıyla verilmiş belirteçten son sisteme doğru evrimsel geliştirme yapılması. Sistemin anlaşıla bilir kısmı ile başlanılmalıdır. Müşterinin önerdiği yeni özellikleri ilave etmekle evrimleşmelidir. Prototip geliştirme Hedef- müşteri gereksinimlerinin anlaşılması; sistem için en iyi gereksinim tanımlanmasının geliştirilmesi; müşteri gereksinimlerinin zayıf anlaşılır kısımları üzeride denemelere odaklanıyor. 31
Evrimsel geliştirme yaklaşımları arasındaki farklar Açınsama yaklaşımında hedef çalışır sistemi son kullanıcıya teslim etmektir. Daha iyi anlaşılır ve yüksek öncelikli gereksinimlerle başlanılır. Zayıf öncelikli ve kesin anlaşılmayan kısımlar yalnız kullanıcı isteği ile çalıştırılır. Prototip yaklaşımında ise hedef sistem gereksinimlerinin geçerliliğini yoklamaktır. Zayıf anlaşılabilir gereksinimlerle başlamanın nedeni onları daha iyi anlamaktır. Çok iyi anlaşılan gereksinimler için prototipe gerek yoktur
Evrimsel geliştirme yaklaşımları arasındaki farklar Açınsama yaklaşımında hedef çalışır sistemi son kullanıcıya teslim etmektir. Daha iyi anlaşılır ve yüksek öncelikli gereksinimlerle başlanılır. Zayıf öncelikli ve kesin anlaşılmayan kısımlar yalnız kullanıcı isteği ile çalıştırılır. Prototip yaklaşımında ise hedef sistem gereksinimlerinin geçerliliğini yoklamaktır. Zayıf anlaşılabilir gereksinimlerle başlamanın nedeni onları daha iyi anlamaktır. Çok iyi anlaşılan gereksinimler için prototipe gerek yoktur
Evrimsel Geliştirme çözümleme tasarım deneme Paralel işlemler İlk sürüm çözümleme Sistemin ana hatlarının tanımlanması tasarım Aralık sürümler deneme Nihai sürüm
Evrimsel geliştirme-Prototip Geliştirme başlama bitiş Gereksinimlerin edinmesi ve arındırma hızlı tasarım Mühendis ürünü Yeni prototipin tanımlanması Prototip oluşturma Son kullanıcı değerlendirmesi
Evrimsel Geliştirme (devamı) Sorunlar Geliştirme sürecini bütünlükle görmek mümkün olmaya bilir Sistemler çoğu zaman zayıf yapılanmış oluyorlar Özel marifetler (örneğin, hızlı prototipler oluştura bilen diller) gereke bilir Uygulana bilirlik Küçük ve orta boyutlu etkileşimli sistemler için Büyük sistemlerin kısımları için (örneğin, kullanıcı arayüzü) Kısa yaşam devirli sistemler için daha uygundur