Yazılım Geliştirme Genel Tanımlar

Benzer belgeler
SİSTEM ANALİZİ VE TASARIMI

Yazılım Mühendisliği 1

Açık Kaynak Kodlu Yazılım

Özgür Yazılım Lisansları

Sistem Geliştirme Yaşam Döngüsü (The Systems Development Life Cycle) (SDLC)

1.Yazılım Geliştirme Metotları 1

Yazılım Süreçleri Software Processes

SİSTEM VE YAZILIM. o Bilgisayar sistemleri donanım, yazılım ve bunları işletmek üzere gerekli işlemlerden oluşur.

BİT in Temel Bileşenleri (Yazılım-1)

BİLİŞİM SİSTEMLERİNİN PRENSİPLERİ

BMH-405 YAZILIM MÜHENDİSLİĞİ

I. Oturum: GNU/LINUX A GİRİŞ

Chapter 8 Yazılım Testi. Lecture 1. Chapter 8 Software testing

Bölüm 2 Yazılım Süreçleri. Ders 1

Bir yazılım geliştirme metodolojisi aşağıdaki adımlardan meydana gelir; Yazılım geliştirme sürecine destek verecek araçlar, modeller ve yöntemler.

Özgür Yazılım Proje Yönetimi

design)1980li ve 1990lıyıllar Birleştirilmiş Modelleme Dili (Unified Modeling Language-(UML) yazılım geliştirme araçlarının temelidir.

Bilişim Sistemleri. Modelleme, Analiz ve Tasarım. Yrd. Doç. Dr. Alper GÖKSU

Veritabanı. Ders 2 VERİTABANI

Y I L D I Z T E K N I K Ü N İ V E R S İ T E S İ MÜHENDİSLİĞİ

Finans Dünyasında Linux ve Özgür Yazılımlar

GNU Özgür Belgeleme Lisansı (GFDL) Kapsamındaki Dokümanlar Đçin Bir Çevrimiçi Arşiv Geliştirilmesi

MESLEKİ TERMİNOLOJİ I 1. HAFTA YAZILIM MÜH. TEMEL KAVRAMLAR

BLG Sistem Analizi ve Tasarımı. Öğr. Grv. Aybike ŞİMŞEK

Sistem Analizi ve Tasarımı DERS2

EYLÜL 2012 İŞLETİM SİSTEMLERİ. Enformatik Bölümü

Linux un Temel Bileşenleri. Linux Nedir? Aydın ÜSTÜN (Selçuk Üniversitesi) e-posta:

Öğretim planındaki AKTS Ulusal Kredi

SİSTEM MÜHENDİSLİĞİ TASARIMIN SENTEZLENMESİ II

İŞLETME RİSK YÖNETİMİ. Yrd. Doç. Dr. Tülay Korkusuz Polat 1/30

Kılavuz içerisinde TalksPBX kurulumu anlatılmakta olup, yapacağınız konfigürasyonlar satın aldığınız lisans ile sınırlıdır.

Bilgi Teknolojisi ve Muhasebe Bilgi Sistemi 6-1

Yazılım Mühendisliği Bölüm - 3 Planlama

9.DERS Yazılım Geliştirme Modelleri

Kılavuzu ; bir ürün veya sistemin kullanımıyla ilgili açıklamaların olduğu dokümantasyon olarak tanımlayabiliriz.

Yaz.Müh.Ders Notları #4 1

11.DERS Yazılım Testi

aselsan Açık Pozisyonlar Bilgi Teknolojileri (BT) Denetçisi İç Denetçi

NESNEYE YÖNELİK PROGRAMLAMA Unified Modelling Language (UML) Bütünleşik Modelleme Dili

İşletim Sistemleri; İÇERİK. Yazılım BİLGİ TEKNOLOJİLERİ VE UYGULAMALARI Yazılım Türleri

YAZILIM MÜHENDİSLİĞİ Şubat 2012 Yrd.Doç.Dr. Yunus Emre SELÇUK GENEL BİLGİLER

Varlık davranış modeli: Bu aşama her entity ye etki eden durumların tanımlandığı, modellendiği ve dokümante edildiği süreçtir.

BİLİŞİM SİSTEMLERİ GÜVENLİĞİNDE YENİ EĞİLİMLER

SİSTEM ANALİZİ VE TASARIMI. Sistem Analizi -Bilgi Sistemleri-

Yazılım Nedir? Yazılım Mühendisi. Yazılım Mühendisliği. ACM/IEEE Etik Kodu. Etik Kural için Önsöz BIL 304 YAZILIM MÜHENDİSLİĞİ

Yaz.Müh.Ders Notları #6 1

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

BM208- Nesneye Dayalı Analiz ve Tasarım. Öğr. Grv. Aybike ŞİMŞEK

O T O M A S Y O N P A R T N E R İ N İ Z C O F A S O. T A S A R I M G E L İ Ş T İ R M E Ü R E T İ M K O M P L E S Ü R E Ç M Ü H E N D İ S L İ Ğ İ

Yazılım Mühendisliği Bölüm - 2 Yazılım Geliştirme Yaşam Döngüsü. Cengiz GÖK

UNICASE.... kapsamlı bir CASE* aracı. *

Özgür Yazılım ve GNU/Linux'a Giriş

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Yazılım Mühendisliği II (BIL 306)

NESNEYE YÖNELİK ÇÖZÜMLEME SÜRECİ

Yazılım Mühendisliği Bölüm - 3 Planlama. Cengiz GÖK

YAZILIM MÜHENDİSLİĞİ TEKNOLOJİ FAKÜLTESİ / BİLGİSAYAR MÜHENDİSLİĞİ

Kemalettin YıldY KADIR HAS UNIVERSITY. UNIX SYSTEM ADMINISTRATOR

Sistem ve Yazılım Nedir?

IBM CLM Çözümleriyle Çevik Yazılım Süreçleri. Canberk Akduygu & Koray Okşar

İstemci Yönetimi ve Mobil Yazdırma Çözümleri

YAZILIM MİMARİLERİ DERSİ BİLGİSAYAR PROGRAMCILIĞI

Kullanım Durumu Diyagramları (Use-case Diyagramları)

Compiere Açık kodlu ERP + CRM yazılımı. Hüseyin Ergün Önsel Armağan Serkan Demir

TEMEL BİLGİ TEKNOLOJİLERİ KULLANIMI

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10. Yrd.Doç.Dr.Hacer Karacan

1.1. Yazılım Geliştirme Süreci

WEB PROJESİ YÖNETİMİ. Belli bir süre içerisinde, belli bir bütçe ile belirlenen hedeflere ulaşmak için uygulanan metodolojik süreçtir.

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ Yazılım Mühendisliği Bölümü

Eylül 2007 de v1.0 ı yayınlanan SysML sayesinde endüstri mühendislerinin de ihtiyacı karşılanmış oldu.

YZM 2108 Yazılım Mimarisi ve Tasarımı

İ.Ü. AÇIK VE UZAKTAN EĞİTİM FAKÜLTESİ Kullanıcı Deneyimi ve Kullanılabilirlik Değerlendirmesi Standardı

Veritabanı Yönetimi Bilgisayarların. Keşfi Hedefler. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi

IBM Rational ile Yazılım Yaşam Döngüsü Mehmet Çağrı ELIBOL IBM Rational Satış Yöneticisi

CMMI. CMMI ve Çevik Yöntemler. Orhan KALAYCI Haziran Yazılım Süreç Kalitesi ve Yönetim Danışmanlığı.

SiSTEM ANALiZi ve TASARIMI

Özgür yazılım nedir?

TÜMLEŞİK MODELLEME DİLİ. UML (Unified Modeling Language)

Etkileşimli Tasarım Temelleri. Etkileşimler ve Müdahaleler. Tasarım Nedir? Tasarımın Altın Kuralları. Tasarımın Altın Kuralları.

X. Çözüm Ortaklığı Platformu

Proje Çevresi ve Bileşenleri

NESNEYE YÖNELİK TASARIM SÜRECİ

USE IMPROVE EVANGELIZE. OpenSolaris. Afşin TAŞKIRAN EnderUNIX Yazılım Geliştirme Ekibi Türkiye OpenSolaris Kullanıcıları Grubu afsin ~ enderunix.

2- PROJE YÖNETİMİ BİLGİ ALANLARI Y R D. D O Ç. D R. K E N A N G E N Ç O L

Bilgisayarda Programlama. Temel Kavramlar

Yazılım Testine Bakış. Defne Şarlıoğlu

Linux e Giriş ve Dağıtımlar

Yazılım Mimari Tasarımından Yazılım Geliştirme Çatısının Üretilmesinde Model Güdümlü Bir Yaklaşım

4. ÜRÜN GELİSTİRME İŞLEMİ

Şeffaf İnsan Kaynakları. Aktif personel. Etkin yönetici

Proje Yönetimi Uygulamaları Görev Tanımlama

Pardus. Erkan Tekman, T. Barış Metin. 18 Mayıs Ulusal Dağıtım Projesi Ulusal Elektronik ve Kriptoloji Enstitüsü. Pardus için 10 Neden

Veritabanı Uygulamaları Tasarımı

İŞLETİM SİSTEMLERİ. Enformatik Bölümü

Pardus Yazılım Testleri ve Hata Takip Sistemi

Öğr.Gör. Gökhan TURAN Gölhisar Meslek Yüksekokulu

BMH-405 YAZILIM MÜHENDİSLİĞİ

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

Linux Nedir, Neden Önemlidir

IDE4DB Veritabanı Geliştirme Platformu Bitirme Projesi Sunumu

Transkript:

Yazılım Geliştirme Genel Tanımlar

Yazılım Projesi Genel Tanımlar: Yazılım: Bilgisayar programları ve gereksinimler, tasarım hedefleri, kullanıcı kılavuzları gibi tüm dokümanlar. Yazılım ürünleri başlıca iki sınıfa ayrılabilir: -Genel (Generic): Çok sayıda ve farklı müşteriye satılması için geliştirilen yazılımlar. Ör: Excel veya Word gibi PC yazılımları, çizim paketleri -Özelleştirilmiş (Customized): Bir müşterinin belirlediği spesifikasyonlara göre geliştirilmiş, müşteriye özel yazılım. Ör: Hava trafik kontrol sistemi yazılımı, hastane randevu sistemi yazılımı Gitgide daha fazla yazılım şirketi genel bir sistemle başlayıp, müşterinin gereksinimlerine göre ürünü uyarlama yoluna gitmektedir. Ör: SAP 2

İyi bir yazılımın özellikleri Bakım Kolaylığı (Maintainability): Yazılım, müşterilerin değişen gereksinimlerine uyarlanacak şekilde yazılmalıdır. Güvenilirlik (Dependability):Yazılım güvenilir olmalıdır (reliable, secure and safe). Etkinlik (Efficiency): Yazılım, bellek veya işlemci gibi sistem kaynaklarını boşu boşuna kullanmamalıdır. Kullanılabilirlik (Usability): Müşteri yazılımı rahat kullanabilmelidir. Gerekli dokümantasyon ve kullanıcı arayüzleri düzgün olmalıdır. 3

Yazılım Süreci (Software Process) Yazılım süreci: Bir yazılımı geliştirmek için kullanılan aktivite kümesi. Yazılım süreçleri: -Yazılım gereksinimlerinin/isterlerinin belirlenmesi (Software specification): Müşteriler ve yazılımcıların kısıtları ve gereksinimleri belirlediği adım. -Yazılımı geliştirme (Software development): Yazılımın tasarlanıp, programlandığı adım. -Yazılımı doğrulama (Software validation): Yazılımın müşterinin isteklerini yerine getirip getirmediğinin kontrol edildiği adım. -Yazılımın devamı/bakımı (Software evolution): Yazılımın değişen müşteri ve pazar gereksinimlerine göre uyarlandığı adım. 4

Yazılım Lisans Türleri - Tescilli yazılım (Proprietary Software/Closed Source Software) - Açık kaynak kodlu yazılım (Open Source Software/OSS) - GPL (General Public Licence) - BSD (Berkeley Software Distribution) 5

Yazılım Lisans Türleri: GPL - GPL (General Public License) = GNU GPL - GNU Projesi: 1983, Richard Stallman, free software, mass collaboration - Free(dom) Software - Copyleft lisansı: Bir programı veya başka bir çalışmayı, tüm değiştirilmiş ve genişletilmiş sürümleri ile birlikte özgür yapmak. Bu kavram GNU tarafından Genel Kamu Lisansı (General Public License-GPL) ile garanti altına alınmaktadır. - PERL: 1989 da GPL altında piyasaya çıktı. - GPL yazılımları ücretsiz olmak zorunda değildir. (Çok büyük bir kısmı ücretsiz.) - Genel yaklaşım: Yazılımdan değil, kullanıcıya sunulan kurulum, eğitim, yönetim ve ek modüller yazma süreçlerinden para kazanılması. - Ör: Linux,Apache HTTP Web Server 6

Yazılım Lisans Türleri: BSD - BSD (Berkeley Software Distribution) - İzin veren özgür yazılım lisansları sınıfında yer alır. - Yazılımın dağıtımı ile ilgili, copyleft lisansında olmayan ufak kısıtlamalar getirir. - Orijinal BSD, Unix benzeri bir işletim sistemi olan Berkeley Software Distribution için kullanılmıştır. - Orijinal BSD lisansı zaman içinde revize edilmiştir. - Özgür Yazılım Vakfı tarafından, GPL e uyumlu bir lisans olarak benimsenmiştir. 7

Yazılım Geliştirme Süreci

Yazılım Geliştirme Süreci Modelleri (Software Development Process Models) Kullanıcının ihtiyaçlarını anlamak (requirement analysis), çözümleri tasarlamak (design), yazılım dilleri ile ifade etmek (implementation) ve yazılımın bakımı gibi birbirleriyle ilişkili birçok adım... Birçok yazılım geliştirme modeli olsa da, başlıca dört model sayılır: Çağlayan/şelale modeli (Waterfall model): Süreci başlıca dört bölüme ayırır: İhtiyaç analizi, yazılım tasarımı, uygulama ve bakım. Evrimsel geliştirme (Evolutionary development): Yazılımın ihtiyaç analizi, tasarımı ve uygulaması içiçe geçmiştir. Müşteriden gelen ilk taleplerle, hızlıca bir sistem geliştirilip, müşteri talepleriyle şekillendirilir. Bileşen esaslı geliştirme (Component-based software engineering): Daha önceden geliştirilmiş çok miktarda bileşen bir araya getirilerek yeni yazılım oluşturulur. Yazılım geliştirme süreci, daha ziyade bileşenleri bir araya getirme üzerine yoğunlaşır. Kitle kaynak (Crowdsourcing): Gereksinimlerin ilan edilip, bir kurum veya kişinin önereceği çözümü beklemek. 9

0. Adım: Planlama Adımı Planlama adımı, ihtiyaç analizi ile iç içe geçmiş bir adımdır. Mutlaka kullanıcıyla beraber yapılmalı ve her isteğin bir maliyeti olduğu kullanıcıya anlatılmalıdır. Şirketin nasıl bir yazılım projesine ne zamana kadar ihtiyacı olduğu sorusuna genel bir cevap aranır. Projenin hangi kaynaklarla gerçekleştirileceği belirlenir. Projenin hedef kitlesi olan kullanıcı ve türleri belirlenir. Projede nelerin yapılıp, nelerin yapılmayacağı belirlenip, sınırlar çizilir. Yapılacak işlerin sırası ve işlerin süreleri belirlenir. Proje insan kaynakları planlanır. Kimler hangi görevleri yapacak, ayrıntılarıyla belirlenir. Proje maliyet planı yapılır. Yapılan her işlemin yaklaşık maliyet ve faydası proje başlangıcında belirlenir. Yazılacak projenin var olan projelerle birlikte çalışma şeklinin planlanması gerekir. Proje teknik ayrıntıları planlanır. Projede özellikle riskli ve değişebilecek kısımlar belirlenir ve bu değişikliklerin maliyet hesabı yapılır. 10

1. Adım: İhtiyaç/İster/Gereksinim Analizi (Requirement Analysis) - 1 Müşteri ihtiyaçlarının ve sistemden beklentilerinin ayrıntılı şekilde tanımlanmasıdır. Bir ihtiyaç aşağıdaki özellikleri taşımalıdır: Gerçekleştirilebilirlik (Feasibility) Doğrulanabilirlik: Objektif veya ölçülebilir kriterlerle doğrulanabilir (valid) olmalıdır. Tam anlaşılabilir: Belirsiz, birden fazla manaya gelecek ifadelerden kaçınılmalıdır. Çözümleri değil, istekleri ifade etmeli Tutarlılık (Consistency): Diğer ihtiyaçlarla tezat oluşturmamalıdır. Sistem hiyerarşisinde doğru yerde tanımlanmalıdır. Sistemin genel özellikleri analiz edilirken tek bir özellik için çok fazla ayrıntının araştırılması bütünlüğü bozar ve gereksiz zaman kaybına yol açabilir. 11

1. Adım: İhtiyaç/İster/Gereksinim Analizi(Requirement Analysis) - 2 İhtiyaç analizi için gerekli bilgiyi nasıl toplayabilirim? Kullanıcılarla görüşmek: Yazılım talep eden kişiler, yöneticiler, son kullanıcılar ile. Toplantı veya tek tek görüşme.toplantıda en fazla 5-6 kişi. Kullanıcının her sözü önemlidir. Bazen tek bir cümle, hatta kelime, hatta noktalama işareti, proje analizinde geniş çaplı değişikliklere sebep olabilir. Bir yazılım projesi, kullanıcıyı yazılım geliştirme ekibinin bir parçası haline getirdiği ölçüde başarılı olacaktır. Benzer uygulamalardan ve İnternet ten yararlanmak Müşterinin halihazırda kullandığı yazılımı inceleyip, eksik/sorunlu noktaları idrak etmek Müşterinin halihazırda kullandığı raporları, belgeleri, yönetmelikleri incelemek Analiz yaparken şekiller (diyagramlar) kullanmak 12

2. Adım: Sistem Tasarımı (System Design) Yapılan analizin, yazılım geliştirme araçlarının imkan, kural ve sınırları dahilinde bir modele dönüştürülmesi. İhtiyaç analizinden farkı:analiz ihtiyaçları anlamaya, tasarım ise çözüme yöneliktir. Doğru olan, her aşamanın ayrı ayrı belgelenmesidir. 13

3. Adım: Sistemin Gerçekleştirilmesi (System Implementation) Fiziksel veri yapılarının veritabanında oluşturulması, kodların, kullanıcı arayüzlerinin ve raporların yazılması gibi işlemleri içerir. Bu aşamada veri modeli de oluşturulacağından, verilerin ilk andaki büyüklüğü belirlenir. İleride nasıl büyüyeceği ile ilgili beklentilere göre tabloların, indekslerin veri dosyalarına nasıl yerleştirileceğine de karar verilir. Diğer tüm fonksiyonlardan önce, veri modeli sağlamlaştırılmalıdır. Test: Yapılanların kontrol edilmesi. Test, deneme yanılma değildir. Deneme yanılma yöntemi, programcılıkta tercih edilecek bir yöntem değildir. Yazılım geliştirmenin her adımında olduğu gibi, bu adımda da belgeleme çok önemlidir. Veri modelinin belgelenmesinde, veriler üzerinde işlem yapılırken dikkat edilmesi gereken kurallar, veri türleri, değer listeleri, değer aralıkları, test senaryoları gibi bilgilerin olması gereklidir. 14

4. Adım: Sistemin Devamı/Bakımı (System Evolution) Test aşaması tamamlandıktan sonra kullanıcı eğitimleri verilmesi ve nihai projenin kurulmasından sonraki destek çalışmalarını içerir. Veri miktarındaki artışla, ani performans düşmeleri veya hatalar, başlangıçta daha sık görülmektedir -> Sistemi ilk başlarda daha dikkatli izlemek gerek! Sonrasında da, sistemi sürekli izlemek ve yeni isteklere göre uyarlamak gerekir. 15

Şelale Modeli (Waterfall Model/ Sequential Model) - 1 İhtiyaç analizi Sistem ve yazılım tasarımı Uygulama ve birim testleri Entegrasyon ve testleri Bakım 16

Şelale Modeli (Waterfall Model) - 2 Her aşamanın sonuçları bir veya daha fazla dokümanla belgelenir. Bir önceki aşama bitmeden, bir diğer aşama başlamamalıdır. (Paralel olarak ilerlemez.) Şelale modelinin dezavantajları: Süreç ilerlerken, değişiklikler yapmanın zor olması. Bir aşama bitmeden diğer bir aşamanın başlayamaması. İhtiyaçların ilk başta ve eksiksiz belirlenmesi gerekliliği. Sadece ihtiyaçların çok iyi bilindiği ve değişiklik yapılmasının pek beklenmediği durumlar için uygun. Şelale modeli genelde, birden fazla mekanda, aynı anda geliştirilen büyük ölçekli ve karmaşık yazılım projelerinde kullanılır. 17

Evrimsel Geliştirme (Evolutionary Development) Basit bir uygulama yazıp, kullanıcıdan gelen yorumlara göre bu uygulamayı iyileştirmek, değiştirmek.yazılım tamamlanana kadar birçok versiyon olur. Sorunlar: Sürecin ileri evreleri genelde öngörülemez. Genelde geliştirilen sistemlerin ana yapısı sağlam değildir. Farklı araçlar (ör: Hızlı prototip tasarlamak için gerekli programlama dilleri) gerekebilir. Proje yöneticileri, ilerlemeyi görebilmek için, düzenli olarak rapora gereksinim duyarlar. Hangi durumlarda uygulanabilir? Küçük ve orta büyüklükteki etkileşimli (interactive) sistemlerde. Büyük sistemlerin bazı bölümlerinde (ör: Kullanıcı arayüzü tasarlama). Kısa ömürlü sistemlerde Büyük sistemlerde, şelale ve evrimsel geliştirme modelleri birlikte kullanılmalı ve ikisinin de en iyi yönleri ortaya çıkarılmalıdır. 18

Bileşen esaslı geliştirme (Component-based software engineering) Daha önceden yazılmış bileşenler, sistematik bir biçimde yeni projelerde de kullanılır. Sürecin adımları: Bileşen analizi (Component analysis) İhtiyaçların düzenlenmesi (Requirements modification) Tekrar kullanılan bileşenlerle sistem tasarımı (System design with reuse) Geliştirme ve entegrasyon (Development and integration) Gittikçe daha fazla kullanılan bir model... 19

Kitle kaynak (Crowdsourcing) - Competition-based software development approach - Ör:TopCoder 20

Yazılım Maliyetleri - 1 Yazılım maliyetleri, genelde donanım maliyetlerinden daha fazla tutar. Özellikle uzun ömürlü sistemlerde, yazılım maliyetlerinin büyük bir bölümü geliştirmeye değil, bakıma gider. Yazılım mühendisliğinin amacı, en az maliyetle en etkin yazılımı geliştirmektir. Kabaca, yazılım geliştirme maliyetinin %60 ı geliştirme adımına, %40 ı ise test adımına gider. 21

Yazılım Maliyetleri - 2 Yazılım maliyetleri yazılım geliştirilirken kullanılan modele göre değişir. 22

Yazılım Maliyetleri - 3 Özelleştirilmiş (customized) bir yazılım geliştirme sürecine ait maliyetler: 23

Computer-Aided Software Engineering (CASE) Tasarım sırasında kullanılan metodları otomatikleştirmek ve yazılımcıların tekrar tekrar yapmak zorunda kaldıkları işleri yaparak maliyeti azaltan yazılımlar. CASE araçları, düzgün bir dokümantasyon üretilmesini ve ekip içindeki çalışanların koordinasyonunu kolaylaştırır. CASE araçları, otomatik olarak çalışan çizelge, diyagram ekran çıktısı, rapor veri sözlüğü, gelişmiş raporlama araçları, kod üreticileri ve doküman üreticilerinden oluşur. Asıl amaçları: Verimlilik ve kaliteyi arttırmak. Ör: UML, Rational,... 24

TopCoder : Developing Software through Crowdsourcing

Ortaya Çıkış - 2001 yılında kurulmuş. - Kurucusu Hughes nun, önceki şirketindeki sıkıntıları: - İşe alım süreci: Maliyetli ve çok vakit harcatan bir süreç. İstenilen kalitede programcıları değerlendirmek zor. - En donanımlı programcının bilgisi bile, 1-2 sene sonra zayıflayabiliyor. Sektör içinde yoğun bir devirdaim var. - Her bir programı sıfırdan yaratmak yerine, programların bileşenlerini yeniden kullanarak, müşterinin maliyetini de düşürmek mümkün olabilir. 26

Ortaya Çıkış - 2001 yılında kurulmuş. - Kurucusu Hughes nun, önceki şirketindeki sıkıntıları: - İşe alım süreci: Maliyetli ve çok vakit harcatan bir süreç. İstenilen kalitede programcıları değerlendirmek zor. - En donanımlı programcının bilgisi bile, 1-2 sene sonra zayıflayabiliyor. Sektör içinde yoğun bir devirdaim var. - Her bir programı sıfırdan yaratmak yerine, programların bileşenlerini yeniden kullanarak, müşterinin maliyetini de düşürmek mümkün olabilir. 27

28