SEN2022 · 1. hafta · Introduction to Systems Analysis and Design

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.

systems development life cycle (SDLC)planninganalysisdesignimplementationsystems analystdeliverablewaterfallparallel developmentiterative developmentagileScrumsprintUnified Process (RUP)prototyping

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:

  1. SDLC dört evredir: Planning, Analysis, Design, Implementation. Sırayı ve her evrenin sorusunu ezberle.
  2. Her evre bir çıktı (deliverable) üretir. Çıktı, sonraki evrenin girdisidir.
  3. Metodoloji, evrelerin nasıl sıralanacağını söyler. Evreler aynıdır, sıralanış ve tekrar sayısı değişir.
  4. 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.

EvreCevapladığı soruTipik adımlarÇıktı
PlanningNeden? Değer mi?Proje başlatma, fizibilite, proje yönetimiSystem request, feasibility analysis, project plan
AnalysisKim, ne, ne zaman, nerede?Analiz stratejisi, gereksinim toplama, modellemeSystem proposal
DesignNasıl çalışacak?Tasarım stratejisi, mimari, arayüz, veritabanı, program tasarımıSystem specification
Implementationİnşa et ve devretKodlama, 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:

RolOdak
Business analystİş değeri, iş süreçleri, sistemin kuruma faydası
Systems analystBilgi teknolojisinin iş süreçlerini nasıl iyileştireceği, analiz ve tasarım
Infrastructure analystAğ, donanım, veritabanı, sistemin mevcut altyapıyla uyumu
Change management analystİnsanlar ve organizasyon: eğitim, benimseme, direnç yönetimi
Project managerTakvim, 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.

ÖğeAnlamı
Product ownerÜrün vizyonundan ve product backlog’un önceliğinden sorumlu
Scrum masterSüreci kolaylaştırır, engelleri kaldırır; patron değil
Development teamKendi kendini yöneten, çapraz fonksiyonlu ekip
Product backlogÖnceliklendirilmiş tüm iş listesi (user story’ler)
Sprint1-4 haftalık sabit süreli iterasyon
Sprint backlogO sprintte yapılacak işler
Daily scrum15 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ı.

EvreNe olurBiter
InceptionKapsam, iş gerekçesi, fizibiliteAna fikir ve onay
ElaborationGereksinimlerin çoğu, mimari netleşirMimari temel (baseline)
ConstructionYazılımın büyük kısmı geliştirilir, test edilirBeta sürüm
TransitionKullanı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:

KriterBu projedeİşaret ettiği yöntem
Gereksinim netliğiDüşükPrototyping, agile
Teknik karmaşıklıkOrta, alışılmış teknolojiHepsi olur
TakvimKısaRAD, agile
Kullanıcının erken görmesiİstiyorPrototyping, iterative, agile
EkipKüçük, tecrübeliAgile 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üşünceDoğrusu
SDLC beş evre, “maintenance” da evreBu derste dört evre: Planning, Analysis, Design, Implementation
Fizibilite analiz evresinde yapılırPlanning 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 yokBelge ve plan var, sadece “yeterli kadar” ve kısa döngülerle
Scrum master ekibin patronuKolaylaştırıcıdır; önceliği product owner belirler
Parallel development entegrasyonu kolaylaştırırTersine, entegrasyon en zor kısmıdır
System prototype atılırThrowaway 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ç.

Soru 1kolay

Which SDLC phase answers the question why the system should be built and whether it is feasible?

  1. Planning
  2. Analysis
  3. Design
  4. Implementation
Cevabı göster
A) Planning

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.

Soru 2kolay

List the four phases of the SDLC in order.

Cevabı göster
Planning, Analysis, Design, Implementation

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.

Soru 3orta

What is the main deliverable at the end of the analysis phase?

  1. System request
  2. System proposal
  3. System specification
  4. Installed system
Cevabı göster
B) System proposal

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.

Soru 4kolay

In which methodology is the design phase split into subprojects that are designed and implemented at the same time, then integrated at the end?

  1. Waterfall
  2. Parallel development
  3. Prototyping
  4. Extreme Programming
Cevabı göster
B) Parallel development

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.

Soru 5orta

Give two disadvantages of the waterfall methodology.

Cevabı göster
Long time before users see a working system; changes late in the project are expensive.

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ç.

Soru 6orta

Which role of the systems analyst focuses on how people and the organization will react to the new system and on managing resistance?

  1. Business analyst
  2. Infrastructure analyst
  3. Change management analyst
  4. Project manager
Cevabı göster
C) Change management analyst

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.

Soru 7kolay

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
Sprint

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.

Soru 8orta

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?

  1. Waterfall, because it is the most structured
  2. A RAD/iterative or agile approach, because users can give early feedback
  3. Parallel development, because it removes integration risk
  4. No methodology is needed
Cevabı göster
B) A RAD/iterative or agile approach

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.

Soru 9orta

In the Unified Process, name the four phases in order.

Cevabı göster
Inception, Elaboration, Construction, Transition

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.

Soru 10zor

Which statement about the Unified Process is TRUE?

  1. Each workflow happens in exactly one phase
  2. It is use-case driven, architecture-centric, iterative and incremental
  3. It forbids iterations inside a phase
  4. It does not use UML
Cevabı göster
B) It is use-case driven, architecture-centric, iterative and incremental

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.

Soru 11zor

A throwaway prototype and a system prototype differ mainly in what way?

Cevabı göster
A throwaway prototype is discarded after clarifying requirements; a system prototype evolves into the final system.

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.

Soru 12kolay

Which agile practice requires two programmers to work together at one workstation, one writing code and one reviewing?

  1. Refactoring
  2. Pair programming
  3. Timeboxing
  4. Daily scrum
Cevabı göster
B) Pair programming

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.

Deftere not kartı

SDLC: Planning (neden?) → Analysis (ne?) → Design (nasıl?) → Implementation (inşa+kur) Çıktılar: system request → system proposal → system specification → çalışan sistem Analist rolleri: business, systems, infrastructure, change management, project manager Waterfall: sırayla, geri dönüş pahalı, gereksinim sabitse iyi Parallel: alt projeler aynı anda, entegrasyon riski V-model: her evrenin karşısında bir test seviyesi Iterative / RAD: sürüm sürüm, kullanıcı erken görür Prototyping: system (büyüyüp sistem olur) vs throwaway (atılır) Agile (XP, Scrum): kısa iterasyon, az belge, müşteri yanında Scrum: product backlog, sprint (1-4 hafta), daily scrum, review, retrospective Scrum rolleri: product owner, scrum master, development team UP evreleri: Inception → Elaboration → Construction → Transition UP: use-case driven, architecture-centric, iterative + incremental Seçim: belirsiz gereksinim + kısa süre → agile/prototip; net + uzun → waterfall