Sistem analizi ve tasarımına giriş: SDLC ve metodolojiler
SDLC'nin dört evresi, sistem analistinin rolleri ve waterfall'dan Scrum'a kadar metodolojilerin farkları. Vizede tanım ve 'hangi metodoloji uygun' soruları buradan gelir.
Bu ders, yazılımı kodlamadan önce yapılan işin dersidir. “Ne yapacağız, neden yapacağız, nasıl yapacağız” sorularını cevaplamayı öğrenirsin. İlk hafta bütün dönemin iskeletidir: sonraki her konu (fizibilite, use case, class diagram, test) SDLC’nin bir evresine oturur. Vizede genellikle tanım soruları (“which phase…”, “which methodology…”) ve kısa bir senaryo verilip “hangi metodoloji uygun, neden” sorusu gelir.
Altın kurallar:
- SDLC dört evredir: Planning, Analysis, Design, Implementation. Sırayı ve her evrenin sorusunu ezberle.
- Her evre bir çıktı (deliverable) üretir. Çıktı, sonraki evrenin girdisidir.
- Metodoloji, evrelerin nasıl sıralanacağını söyler. Evreler aynıdır, sıralanış ve tekrar sayısı değişir.
- Doğru metodoloji projeye göre seçilir: gereksinimlerin netliği, takvim, teknik risk, kullanıcının ne zaman sistem görmek istediği.
Sistem analizi ve tasarımı nedir?
Bir bilgi sistemi (information system) donanım, yazılım, veri, süreç ve insanların birlikte bir iş ihtiyacını çözmesidir. Sistem analizi ve tasarımı (systems analysis and design, SAD), bu sistemi kurmak için izlenen düzenli süreçtir. Burada sık yapılan hata, SAD’ı sadece “programlama öncesi belge yazmak” sanmaktır. Asıl amaç iş değeri (business value) üretmektir: sistem kurumun para kazanmasına, tasarruf etmesine ya da daha iyi hizmet vermesine yarar.
Projelerin çoğu teknik nedenlerle değil, kötü analiz yüzünden batar: yanlış gereksinim, belirsiz kapsam, kullanıcının sürece katılmaması. Bu yüzden ders kodla değil, süreçle başlar.
SDLC: dört evre
Sistem geliştirme yaşam döngüsü (systems development life cycle, SDLC), her bilgi sisteminin geçtiği dört temel evredir.
| Evre | Cevapladığı soru | Tipik adımlar | Çıktı |
|---|---|---|---|
| Planning | Neden? Değer mi? | Proje başlatma, fizibilite, proje yönetimi | System request, feasibility analysis, project plan |
| Analysis | Kim, ne, ne zaman, nerede? | Analiz stratejisi, gereksinim toplama, modelleme | System proposal |
| Design | Nasıl çalışacak? | Tasarım stratejisi, mimari, arayüz, veritabanı, program tasarımı | System specification |
| Implementation | İnşa et ve devret | Kodlama, test, kurulum, eğitim, destek planı | Çalışan sistem |
[Planning]->[Analysis]->[Design]->[Implementation]
| | | |
system system system installed
request proposal spec system
Planning
Proje bir system request ile başlar: bir iş birimi bir ihtiyacı yazılı olarak bildirir. Onay komitesi (approval committee) ya da yönlendirme komitesi (steering committee) talebi değerlendirir. Fizibilite analizi (feasibility analysis) teknik, ekonomik ve organizasyonel açıdan “yapılabilir mi, değer mi” sorusuna bakar. Onaylanırsa proje yönetimi başlar: iş planı, takvim, ekip.
Analysis
Analist mevcut sistemi (as-is) inceler, yeni sistemin (to-be) ne yapması gerektiğini çıkarır. Gereksinim toplama teknikleri (görüşme, JAD, anket, gözlem) burada kullanılır. Sonra gereksinimler modellere dökülür: fonksiyonel model (use case, activity diagram), yapısal model (class diagram), davranışsal model (sequence, state machine). Hepsi bir system proposal belgesinde toplanır ve komite projeye devam edip etmemeye karar verir.
Design
Sistemin nasıl çalışacağına karar verilir: yazılımı satın mı alacağız, kendimiz mi yazacağız, dışarıya mı yaptıracağız (design strategy)? Fiziksel mimari (client-server, cloud), kullanıcı arayüzü, veritabanı ve dosya yapıları, program modülleri tasarlanır. Çıktı system specification’dır.
Implementation
Sistem yazılır, test edilir, kurulur. Eski sistemden yeniye geçiş (conversion) planlanır, kullanıcılar eğitilir, destek ve bakım planı hazırlanır. Bu evre en pahalı evredir.
TUZAK · test sadece implementation’da değil. Testi planlamak analizde başlar (kabul kriterleri), tasarımda devam eder. Kodlama ve test koşturma implementation’dadır ama “test ilk kez burada düşünülür” demek yanlıştır.
Sistem analistinin rolleri
Büyük projelerde analistlik tek kişinin işi değildir, roller ayrılır:
| Rol | Odak |
|---|---|
| Business analyst | İş değeri, iş süreçleri, sistemin kuruma faydası |
| Systems analyst | Bilgi teknolojisinin iş süreçlerini nasıl iyileştireceği, analiz ve tasarım |
| Infrastructure analyst | Ağ, donanım, veritabanı, sistemin mevcut altyapıyla uyumu |
| Change management analyst | İnsanlar ve organizasyon: eğitim, benimseme, direnç yönetimi |
| Project manager | Takvim, bütçe, ekip, risk; projeyi zamanında ve bütçede bitirmek |
Analistin temel becerileri: teknik bilgi, iş bilgisi, analitik düşünme, iletişim ve etik. Analist kullanıcıyla geliştirici arasındaki köprüdür; kullanıcının dilini de programcının dilini de konuşabilmelidir.
Metodolojiler
Metodoloji (methodology), SDLC evrelerini uygulamanın formalize edilmiş yoludur: hangi adımlar, hangi sırayla, hangi çıktılarla. Metodolojiler üç büyük gruba ayrılır.
1. Yapısal tasarım (structured design)
Waterfall. Evreler sırayla yapılır, bir evre bitip onaylanmadan diğerine geçilmez. Geri dönmek mümkündür ama pahalıdır.
Planning
\--> Analysis
\--> Design
\--> Implementation
Güçlü yanı: gereksinimler kodlamadan önce netleşir, belgeleme güçlüdür. Zayıf yanı: kullanıcı çalışan sistemi çok geç görür; iş ortamı değişirse sistem çıktığında artık doğru olmayabilir.
Parallel development. Planlama ve analizden sonra genel bir tasarım yapılır, sistem alt projelere bölünür ve her alt proje aynı anda tasarlanıp yazılır. Sonda entegrasyon yapılır. Süre kısalır; ama alt projeler birbirine bağımlıysa entegrasyon zordur.
V-model. Waterfall’ın bir türevidir: her geliştirme evresinin karşısında bir test seviyesi vardır (gereksinim ↔ kabul testi, mimari ↔ sistem testi, modül tasarımı ↔ birim testi). Test planı erken yazılır.
2. Hızlı uygulama geliştirme (RAD)
RAD (rapid application development) kullanıcıya erkenden çalışan bir şey göstermeyi hedefler.
- Iterative (phased) development: Sistem sürümlere bölünür. Sürüm 1 en önemli gereksinimleri içerir ve kurulur, sonraki sürümler eklenerek büyür. Kullanıcı erken değer görür, ama ilk sürüm eksiktir.
- System prototyping: Analiz, tasarım ve implementation aynı anda hızla yapılır, prototip kullanıcıya gösterilir, geri bildirimle büyüyüp sistem olur. Risk: aceleyle yapılan prototip, iyi düşünülmemiş bir tasarıma dönüşebilir.
- Throwaway prototyping: Prototip sadece belirsiz gereksinimleri anlamak için yapılır (çoğu zaman bir arayüz taslağı), sonra atılır. Sistem sağlam bir tasarımla yazılır.
3. Çevik geliştirme (agile)
Agile, Agile Manifesto’nun değerlerine dayanır: süreç ve araçlardan çok bireyler ve etkileşim, kapsamlı belgeden çok çalışan yazılım, sözleşme pazarlığından çok müşteriyle iş birliği, plana bağlı kalmaktan çok değişime yanıt verme.
Extreme Programming (XP): Kısa sürümler, test-first (önce test yazılır), pair programming, sürekli entegrasyon, refactoring, ortak kod sahipliği, müşteri ekibin yanında.
Scrum: En yaygın agile çerçevedir.
| Öğe | Anlamı |
|---|---|
| Product owner | Ürün vizyonundan ve product backlog’un önceliğinden sorumlu |
| Scrum master | Süreci kolaylaştırır, engelleri kaldırır; patron değil |
| Development team | Kendi kendini yöneten, çapraz fonksiyonlu ekip |
| Product backlog | Önceliklendirilmiş tüm iş listesi (user story’ler) |
| Sprint | 1-4 haftalık sabit süreli iterasyon |
| Sprint backlog | O sprintte yapılacak işler |
| Daily scrum | 15 dakikalık günlük toplantı: dün ne yaptım, bugün ne yapacağım, engel var mı |
| Sprint review / retrospective | Ürünü göster / süreci iyileştir |
Agile’ın zayıf yanı: büyük ve dağıtık ekiplerde, sıkı belgeleme gerektiren (sağlık, savunma) projelerde zorlanır.
Unified Process (RUP)
Unified Process, nesne yönelimli (object-oriented) projeler için UML ile birlikte kullanılan bir metodolojidir. Üç özelliği vardır: use-case driven, architecture-centric, iterative and incremental. İki boyutludur: zaman boyunca dört evre, her evrenin içinde iş akışları.
| Evre | Ne olur | Biter |
|---|---|---|
| Inception | Kapsam, iş gerekçesi, fizibilite | Ana fikir ve onay |
| Elaboration | Gereksinimlerin çoğu, mimari netleşir | Mimari temel (baseline) |
| Construction | Yazılımın büyük kısmı geliştirilir, test edilir | Beta sürüm |
| Transition | Kullanıcıya devir, kurulum, eğitim | Çalışan sistem |
İş akışları (engineering workflows): business modeling, requirements, analysis, design, implementation, test, deployment. Her iş akışı tüm evrelerde vardır ama yoğunluğu değişir: requirements Inception ve Elaboration’da, implementation Construction’da yoğundur.
TUZAK · UP evresi ≠ SDLC evresi. “Elaboration = Analysis” diye birebir eşleme yapma. UP’de her evrede birden çok iş akışı aynı anda çalışır. Elaboration’da analiz yoğundur ama tasarım ve kodlama da başlar.
Metodoloji seçimi: çözümlü örnek
Senaryo: Bir spor salonu zinciri üyelik sistemi istiyor. Yönetim ne istediğini tam bilmiyor, “görünce anlarız” diyor. Sistem 4 ay içinde yeni şubeyle birlikte açılmalı. Ekip küçük ve tecrübeli.
Kriterlere tek tek bak:
| Kriter | Bu projede | İşaret ettiği yöntem |
|---|---|---|
| Gereksinim netliği | Düşük | Prototyping, agile |
| Teknik karmaşıklık | Orta, alışılmış teknoloji | Hepsi olur |
| Takvim | Kısa | RAD, agile |
| Kullanıcının erken görmesi | İstiyor | Prototyping, iterative, agile |
| Ekip | Küçük, tecrübeli | Agile uygun |
Sonuç: Scrum ya da system prototyping. Waterfall uygun değil çünkü gereksinimler belirsiz ve kullanıcı erken görmek istiyor.
Karşı senaryo: Bir bankanın faiz hesaplama modülü. Kurallar yasal mevzuatla kesin tanımlı, değişmiyor, hata maliyeti çok yüksek, denetim için belge şart. Burada waterfall ya da V-model mantıklıdır.
Sık yapılan hatalar
| Yanlış düşünce | Doğrusu |
|---|---|
| SDLC beş evre, “maintenance” da evre | Bu derste dört evre: Planning, Analysis, Design, Implementation |
| Fizibilite analiz evresinde yapılır | Planning evresinde yapılır |
| System proposal tasarımın çıktısı | Analizin çıktısı; tasarımın çıktısı system specification |
| Agile = belge yok, plan yok | Belge ve plan var, sadece “yeterli kadar” ve kısa döngülerle |
| Scrum master ekibin patronu | Kolaylaştırıcıdır; önceliği product owner belirler |
| Parallel development entegrasyonu kolaylaştırır | Tersine, entegrasyon en zor kısmıdır |
| System prototype atılır | Throwaway atılır; system prototype büyüyüp sistem olur |
| UP’de her iş akışı tek evrede | İş akışları tüm evrelere yayılır, yoğunluğu değişir |
Kendini test et
Sınavdaki gibi İngilizce sorular. Önce kâğıt kalemle çöz, sonra cevabı aç.
Which SDLC phase answers the question why the system should be built and whether it is feasible?
- Planning
- Analysis
- Design
- Implementation
Cevabı göster
Planning evresi iş değerini (business value) ve fizibiliteyi inceler: "Neden yapıyoruz, değer mi?" sorusu. Analysis "kim, ne, ne zaman, nerede" sorularını, Design "nasıl çalışacak" sorusunu cevaplar.
List the four phases of the SDLC in order.
Cevabı göster
Sıra sabit: Planning (neden) → Analysis (ne) → Design (nasıl) → Implementation (inşa et, kur, devret). Her evre bir sonraki evrenin girdisi olan bir çıktı (deliverable) üretir.
What is the main deliverable at the end of the analysis phase?
- System request
- System proposal
- System specification
- Installed system
Cevabı göster
Analysis evresi analiz stratejisi, gereksinimler ve analiz modelleriyle biten bir system proposal (sistem önerisi) ile kapanır. System request planlamanın girdisidir, system specification tasarımın çıktısıdır.
In which methodology is the design phase split into subprojects that are designed and implemented at the same time, then integrated at the end?
- Waterfall
- Parallel development
- Prototyping
- Extreme Programming
Cevabı göster
Parallel development, genel tasarımdan sonra sistemi alt projelere böler, bunlar aynı anda tasarlanıp gerçekleştirilir ve sonda entegre edilir. Süre kısalır ama entegrasyon zorlaşır.
Give two disadvantages of the waterfall methodology.
Cevabı göster
Waterfall'da gereksinimler en başta dondurulur. Kullanıcı çalışan bir şeyi ancak projenin sonunda görür, bu arada iş ortamı değişmiş olabilir. Geri dönüp bir evreyi yeniden yapmak pahalıdır. Avantajı: gereksinimler net ve sabitse disiplinli, belgelemesi güçlü bir süreç.
Which role of the systems analyst focuses on how people and the organization will react to the new system and on managing resistance?
- Business analyst
- Infrastructure analyst
- Change management analyst
- Project manager
Cevabı göster
Change management analyst kullanıcıların sistemi benimsemesine odaklanır: eğitim, iletişim, direnci azaltma. Business analyst iş değerine, infrastructure analyst teknik altyapıya (ağ, donanım) bakar.
In Scrum, what is the name of the fixed time period (usually 1 to 4 weeks) in which a potentially shippable increment is produced?
Cevabı göster
Scrum'da iş sprint denen sabit sürelerde yapılır. Sprint başında sprint planning ile product backlog'dan işler seçilir, her gün daily scrum yapılır, sonda sprint review ve retrospective.
A university wants a new course-registration system. Requirements are unclear and users want to see something working early, but the project has a strict deadline. Which methodology family fits best and why?
- Waterfall, because it is the most structured
- A RAD/iterative or agile approach, because users can give early feedback
- Parallel development, because it removes integration risk
- No methodology is needed
Cevabı göster
Belirsiz gereksinim + erken görme isteği + kısa takvim üçlüsü, kullanıcıya erken sürüm gösteren yöntemleri (prototyping, iterative, agile) işaret eder. Waterfall belirsiz gereksinimde zayıftır. Parallel development entegrasyon riskini azaltmaz, artırır.
In the Unified Process, name the four phases in order.
Cevabı göster
Unified Process (RUP) dört evreden oluşur. Inception: kapsam ve iş gerekçesi. Elaboration: gereksinimlerin çoğu ve mimari. Construction: yazılımın büyük kısmı inşa edilir. Transition: kullanıcıya devir, beta, kurulum. Evrelerin içinde iş akışları (workflows: requirements, analysis, design, implementation, test...) farklı yoğunlukta sürer.
Which statement about the Unified Process is TRUE?
- Each workflow happens in exactly one phase
- It is use-case driven, architecture-centric, iterative and incremental
- It forbids iterations inside a phase
- It does not use UML
Cevabı göster
UP'nin üç temel özelliği: use-case driven (gereksinimler use case ile yönetilir), architecture-centric (mimari erken netleşir), iterative and incremental (her evre birden çok iterasyon içerebilir). Workflow'lar tüm evrelere yayılır, sadece yoğunlukları değişir.
A throwaway prototype and a system prototype differ mainly in what way?
Cevabı göster
System prototyping'de hızlıca yapılan sürüm kullanıcı geri bildirimiyle büyüyüp gerçek sistem olur. Throwaway prototyping'de prototip sadece gereksinimleri anlamak içindir (çoğu zaman sadece arayüz taslağı), sonra atılır ve sistem sağlam bir tasarımla baştan yazılır. Belirsiz ve teknik riskli projelerde throwaway daha güvenlidir.
Which agile practice requires two programmers to work together at one workstation, one writing code and one reviewing?
- Refactoring
- Pair programming
- Timeboxing
- Daily scrum
Cevabı göster
Pair programming Extreme Programming (XP) uygulamasıdır. Bir kişi yazar (driver), diğeri anlık gözden geçirir (navigator). Hata erken yakalanır, bilgi ekipte yayılır.
Doğrulama: Kavramsal sorular; cevaplar SDLC evreleri, analist rolleri ve metodoloji tanımlarının standart (Dennis, Wixom ve Tegarden çerçevesi) tanımlarıyla tek tek karşılaştırılarak kontrol edildi. Sayısal cevap yok.