İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa] İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa] İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa]
 Site Haritası 
 
Site Map
Ana SayfaYeriniz | Ana Sayfa | Makaleler | Programcılık | Yazılım Mimarlığı

Diğer Yazılar
PHP
JavaScript
CSS
XHTML
MySQL
XML
On Yılda Programlama Öğrenin
Programlamanın Taosu
Anti Pattern
Kötü Tasarımın Belirtileri
Use Case Diyagramları İle Başarılı Proje Analizi
RSS Dosya Yapısı
Flash Oyunları
Ajax
Android


E-posta Gönderin Yorum Yazın
Güvenlik Kodu:9501Güvenlik Kodu:9501Güvenlik Kodu:9501Güvenlik Kodu:9501




En Son Okunan 10 Makale
  1. Büyüklere Masallar
  2. Kelimelerin Önemi
  3. E-Kitap
  4. Flash Oyunları
  5. Web Araçları
  6. AJAX a Giriş
  7. Port Nedir?
  8. İnsanlar web sayfalarını nasıl inceliyor?
  9. Zirveye Tırmanma Yolları
  10. Stresin Üstesinden Gelmek
 
Yazılım Mimarlığı>
Yazı Tipi KüçültYazı Tipi BüyütAna SayfaYazıcıdan ÇıkarPDF Belgesi Olarak GörüntüleFavorilerime EkleArkadaşıma Tavsiye EdeceğimRTF (Word Dokümanı) olarak görüntüle

Tanımlar:

Yazılım Mühendisliği, ilki 1968 ve ikincisi 1969 yıllarında yapılan NATO konferanslarında baslık olarak kullanıldı. Birinci Uluslararası Yazılım Mühendisliği Konferansı 1973 yılında yapıldı ve IEEE’ in Yazılım Mühendisliği kayıtları 1975 yılında yayınlandı.

Tanım 1:
IEEE Standardları Yazılım Mühendisliği’ni su şekilde tanımlar:

geliştirme, operasyon ve bakim gibi yazılıma yönelik mühendislik uygulamalarının, sistematik, disipline edilmiş, niceliksel yaklaşım olarak uygulanması.

1.madde de sözü edilen yaklaşım üzerinde çalışma

Bu tanım gerçekte Yazılım Mühendisliği değil, mühendislik tanımıdır.Bu tanım Yazılım Mühendisliğini diğer Mühendislik formlarından ayırt etmekte basarisiz olmaktadır. Örneğin, yazılım yerine elektronik kelimesin koyduğumuzda farkı ayırt edemeyiz.

Tanım 2:
Humphrey Yazılım Mühendisliği’ni su şekilde tanımlamaktadır:

Yazım problemlerine, bilgisayar bilimi ve matematik ilkelerini içeren,uygun maliyetli çözümleri sunan mühendislik formu.

Bu tanım da benzer yönden başarısızlığa uğramaktadır.

Tanim 3:
Blum Yazılım Mühendisliği’ni su şekilde tanımlamaktadır:

Gerçek dünyaya ait problemin otomatik çözümünün üretimine ve bakımına yönelik uygulama araçları, metotları ve disiplinleri.

İlginçtir ki bu tanım yazılım, hesaplama yada bilgisayar terimlerinden hiç bahsetmemektedir.Buna rağmen bu tanım yazılım üretimi amacının ilerisinde Yazılım Mühendisliği amacına odaklanmaktadır. Bu tanımı farklı kılan yön ise otomatik çözümü referans etmesidir.

Tanım 4:
Burada sunulan tanım Blum’un yapmış olduğu tanım’ın geliştirilmiş halidir. Üretilmekte olan yöntemi ve açık olarak çözüme yönelik yazılım kullanımı düşüncesini içermektedir.

Araçlar, metotlar ve disiplinlerin uygulanması

Uygun maliyet yöntemi

Gerçek dünyaya yönelik problemlerin çözümünün bakımının uygulanması

Yazılım tarafından tam olarak yada kısmen otomatikleştirme


BT mimarlığı, tamamen iş amaçlarına ulaşmaya odaklanmış iş süreçlerinin iskeletini (framework), interaktifliği ve teknolojiyi ifade eder. BT mimarı, tutarlı ve bütünleşik olan teknoloji planlarını dizayn eder ve bu konuda yol gösterir. Yani, BT mimarlığı ve BT mimarı her ikisi birden BT işlerini yönlendirmekle uğraşır. Buna göre, mimarinin temel yaklaşımı, etkili bir şekilde uygulanabilecek, suni karmaşıklığı en aza indiren sonuca ulaşmaya çalışmaktır.

Bu yaklaşım, hemen her proje hakkında sorabileceğimiz bazı temel ve basit sorulardan oluşur:
-Bu noktaya nasıl geldik?
-Nereye gittiğimizi nasıl bilebiliriz?
-Neden bu noktaya gidiyoruz?
-O noktaya ulaşmak için neleri yapmamız gerek?
-Yapmamız gerekenleri hangi sırada yapmalıyız?
-Oraya ulaştığımızı nasıl anlayacağız?
-Hesaba katmamız gereken başka ne var?

Mimarinin temel yaklaşımı, projenin daha ilk aşamasında bu soruları cevaplamaya çalışır ve devamlı olarak projenin başından sonuna dek bir yönlendirme, rehberlik sağlar. Ek olarak, bu yaklaşım, organizasyonun aşağıdaki dengelerini de etkiler:
-İş temelli gereksinimler
-Kritik tasarım kararları
-Projenin yaşamı boyunca ihtiyaç duyulacak insan kaynağı
-Organizasyona olan finansal etkisi

Organizasyonlar uygulama gereksinimlerini saptamak için aşırı efor sarfetmek zorunda kalırlar. Yeni uygulamalar, birçok sebepten dolayı son derece ilgi ve bakım gerektirir:
-Geniş dağıtım: Uygulamalar, geniş alan ağları (WAN) ile veya Internet vasıtası ile dünya çapına yayılmış olabilir.
-Geniş kullanıcı tabanı: Potansiyel olarak, milyonlarca kullanıcı vardır. Birçok durumda bu kullanıcılar, şirketin BT bölümünden habersiz veya onların kontrolü dışında olabilir.
-Bağlantı sınırlaması: Kullanıcı ve uygulama arasındaki bağlantı, geçici olaiblir veya limitli bant genişliğine sahip olabilir.
-Depolama sınırlaması: Uygulamanın ihtiyaç duyduğu veriler, biden çok bilgisayarda depolanıyor olabilir. Bu bilgisayarlar, geniş bir coğrafi yapıya yayılmış olabilir ve her zaman kullanımda olmayabilirler.
-Donanım sınırlaması: Varolan donanım ve yazılım yatırımları gözden geçirilmek zorunda kalınabilir. Kullanıcılar, kapasitesi değişik çeşitli bilgisayarlar kullanıyor olabilirler. Veri, değişik tür veritabanlarında tutuluyor olabilir. Bunlara bağlı olarak, yeni uygulama farklı platformlarda va rolan eski uygulamalar ile etkileşmek zorunda kalabilir.

Yazılım mimarisinin temel amacı:
-Mantıksal tutarlılık: Mimarinin iki veya daha fazla parçası karşılaştırıldığında, mantıksal olarak birbirlerine uyarlar.
-Aktiviteler ve koordinasyonlu projeler: Mimari, hem devam eden aktivitelere hem de tek tek projelere hitap eder.
-Şu andaki durumdan arzu edilen duruma ilerleme: Mimari, şu andaki durumu açıklamaktan çok daha fazla şey yapar. Gelecekte amaçlanan vizyonu sunar. En önemlisi de bir yazılım mimarisi, versiyonlu sürümler sayesinde şu andaki durumdan arzu edilen duruma ilerlemek için gereken yolu açık seçik işaret eder.
-Şu andaki ve projelendirilmiş iş amaçları ve süreçleri: Bir Yazılım Mimarisi, mevcut iş durumu ve projelendirilmiş iş planı ve süreçlerine göre inşa edilmediyse son derece değersizdir. Bu, BT arenasında şekillendirilmiş iş planları içinde geçerlidir örneğin şirketler içindeki e-ticaret bölümlerinin global Internet erişimleri gibi...



Yazılım Mimarının Görev ve Sorumlulukları
Mimar; akıllarda elitist, sanatsal ve bazen mükemmellikle özdeşleşen kavramları çağrıştıran önemli bir kelime. Aklıma amerikanın çok izlenen komedi dizisi Seinfeld’deki George tiplemesi geliyor. Diziyi takip eden müdavimleri bilirler, Georgu’un olmak istediği ama hiçbir zaman olamayacağı şey; mimar olmak yada Matix’de geçen “the architect” mimar tiplemesi. Bu ve benzeri analojiler aslında her alanda mimar kelimesinin ne denli önemli olduğunu gösteriyor. Fikir mimarları, yapı mimarları …. Ve bizim ilgi alanınımız yazılım mimarları. 

 
Yazılım projelerinin en kritik rollerinden yazılım mimarlarının görev alanları ve sorumlulukları bu yazımızın konusunu teşkil ediyor. Yazılım mimarları, yazılımlara tırnak içinde ruhunu kazandıran ve adeta onu bi eser gibi şekillendirmeye ve kalıcı olmasına uğraşan bir kimliktir. Yazılım mimarlarının sorumluluk alanları çok geniş ve zordur. Bu sorumluluk alanlarını ana başlıklar halinde incelemeye başlayalım:
 
Projede kullanılacak teknolojileri seçerler
 
Çoğu organizayon ve kurumda tercih edilen veya standart kullanılan teknolojiler vardır (J2EE, .NET, C++), buradan aslında mimarların bir seçim yapma şanslarının olmadığı düşünülebilir fakat bu durum her zaman böyle değildir. Bazı projelerde kesin teknoloji kısıtları yoktur, müşteri seçim şansını size bırakmıştır yada uzun sürmesi düşünülen bir projede hangi ata oynadığınız büyük önem kazanmaktadır. Teknoloji seçerken o teknolojinin tarihini yada hangi firmaların bu teknolojiye destek verdiğini kısacası bu gibi alanlarda stratejik karar verme yetisine sahip bir entelektüel olmanız gerekmektedir. Bu tecrübeyle kazanılan, edinilmesi kişisel bilgi ve kültüre bağlı bir süreçtir.
 
Her zaman teknoloji seçimi karşınıza geliştirme ortamı şeklinde de çıkmayabilir. Mesela projenizde J2EE kullanacaksınız fakat veri katmanında EJB, JDO yada Hibernate arasında kendinizi zor bir dönemeçte bulabilirsiniz. Teknoloji seçme kabiliyeti kendini bir çok alanda gösterebilir;
  • IDE: seçeceğiniz IDE ekibin hızını ve üretkenliğini etkileyebilir
  • Geliştirme Ortamı (Java, .NET): çözüm stratejileri göz önüne alındığında bu 2 teknoloji farklı parametreler sunabilirler
  • Framework: yazılım dünyası artık frameworklerin dünyası haline gelmeye başladı, frameworkleri doğru kullanmak eskisinden çok daha hayati
  • 3. parti kontroller: size hız kazandıracak hazır kontrolleri seçmek ve onlardan haberdar olmak
 
Proje metodolojisi ve süreçlerinde tavsiyelerde bulunmak
 
Projede izlenecek süreçler ve proje yönetimi konusunda proje parametrelerine (kapsam, takım, zaman, kalite, teknik…) uygun olanların değerlendirilmesi ve Proje yöneticisine bu noktalarda tavsiyelerde bulunulması bir gerekliliktir. Çünkü bu gibi parametreler bir noktada teknik sezgi ve bilgi gerektiren konulardır. Proje yöneticisi ve yazılım mimarı burada ortak çalışmalı ve proje yöneticisi mimarın görüşlerini dikkate almalıdır. Sonrasında uygulanacak süreç ve metodların proje teknik ekibine aktarılması ve uyarlanması da yine yazılım mimarının sorumluluğu altındadır. Sorumluluk alanlarına;
  • Metodoloji yada süreç seçimi: XP, RUP, MSF
  • Kalite standartları: CMM, AQAP, ISO
  • Geliştirme teknikleri: TDD (Test Driven Development), DDD (Domain Driven Development), MDA (Model Driven Architecture)
 
gibi alanlar örnek olarak gösterilebilir.
 
Uygulamanın genel tasarım ve yapısını oluşturmak ve korumak
 
Mimar, uygulamaların genel tasarım ve yapısını çıkarmaktan sorumludur. Bazı durumlarda kritik modüllerde mikro seviyede tasarıma da yardımcı olur. Fakat bundan sonraki uygulama süreci programcılara aittir. Uygulama aşamasında mimar bir orkestra şefi gibi takımı tek bir ses çıkarması adına yönetir ve kod parçalarının başta belirlenen tasarımsal ve yapısal bütünleğe uygun olmasını sağlar. Bu zor bir görevdir çünkü her programcının kendine ait alışkanlıkları ve tekniği vardır.
 
Projenin yeterli seviyede tanımlandığından emin olmak
 
Mimarlar projede proje analistleri ve yöneticileri ile birlikte projenin tanımlanmasında ve analizinde beraber çalışırlar. Bu tanımlar projenin teknik yönlerini de etkileyen parametreler olduğundan mimarlar bu tanımların yeterli, tutarlı ve açık olduğundan emin olmalıdırlar.
 
Uygulama tasarımının yeteri kadar dökümante edilmesi
 
Dozunda bir uygulama tasarım dökümantasyonu programcıların takım içi iletişimi için önemli bir adımdır. Dökümante edilmiş somut bir tasarım daha kolay anlaşılır ve sürdürülebilir. Takıma yeni eklenen üyelerin adaptasyonları ve uyumları daha az risk ve maliyet taşır. Ortaya çıkan dökümanlar bir sonraki projelerinizde size çözüm kapılarını açan önemli bir kütüphane olabilir. Bu sayede daha üretken olabilirsiniz.
 
Kodlama standartlarını ve pratiklerini tesis etmek ve korumak
 
Bir çok konuda olduğunu gibi kodlamada  da uyulması gereken standartların ve pratiklerin, çok farklı tercih ve standartlara sahip programcılar arasında tesisi önemlidir.  Standartlar kodların okunabilirliği, iletişimi ve bakımı gibi bir çok alanda size avantaj sağlar. Kodlama standartları şunlardan oluşur;
  • İyi kod pratikleri (değişken kullanımı, parametre, metod parçalama…)
  • İsimlendirme (naming convention)
  • Test
  • İstisnai durumların idaresi (Exception Handling)
  • Loglama
 
Bu standartların tesisi kadar korunması ve kodların uygunluğunu sağlamak da mimarın sorumluluk alanı içersindedir. Standartları korumak ve uygunluğunu sürdürmek adına programcılarla birlikte kod inceleme oturumları yapmak ve bu sayede programcıları buna zorlamak alınması gereken önlemlerden biridir.
 
Proje yöneticisine teknik görev tahminlerinde yardım etmek
 
Proje yöneticilerinin her zaman teknik yetkinliklerinin olması beklenmez. Bu bir avantaj olsada bir şart değildir. Projede atanacak görevler proje yönetici tarafından belirlenirken, süre tahminleri için mimardan yardım alması gerekmektedir.
 
Zor teknik görevlerde programcılara yol göstermek
 
Genel olarak mimarlar programcılardan teknik olarak daha tecrübelidirler. Bazı zor görevlerde programcıların yavaşladığı durumlarda onlara yardım edecek kişi mimardır. Bir çok  projede mimar uygulamacıdan daha çok akıl hocalığı görevini yürütür. Programcıların teknik sorunlarına cevap bulur ve onlara koçluk yapar
 
Proje yöneticisine proje maliyetleri ve yararları konusunda yardımcı olmak
 
Bir çok teknolojinin bir arada kullanıldığı projelerde, kullanılan teknoloji beraberinde de kendine has maliyetleri getirir. Bu maliyetlerin belirlenmesi ve faydalarının araştırılmasında yazılım mimarı bu konuda yetersiz olan proje yöneticisine yardımcı olmalıdır.
 
Teknik personel seçimi ve işe alımında yönetime yardımcı olmak
 
Her ne kadar çalışan seçimi bir yönetim görevi olarak görülse de, yazılım alanında çalışan seçimi özel teknik bir eleminasyon ve süzgeç gerektirir. Mimarların bu alandaki deneyimlerinden ve fikirlerinden yararlanılması uygun olur.


Not: Yazılar konusundaki yorumlarınız için lütfen Yorum Yazın bölümümüzü kullanın.

Yazar : http://www.yazilimmimarlari.com
Son Güncelleme : 26 Ekim 2005, Çarşamba
Sayfa Sürümü : 1
Okunma Adedi : 8,792
Son Okunma : 2017-07-21 09:36:03
Kaynaklar : http://www.yazilimmimarlari.com

On Yılda Programlama ÖğreninYazılım MimarlığıProgramlamanın Taosu
© [Site Haritası]
| Makaleler | Seyir Defteri | Kaynaklar | İndirin | İletişim |

RSS dosyasını görmek için tıklayınız. RSS dosyasını görmek için tıklayınız.XML versiyonu için tıklayınız WAP versiyonu için tıklayınız Bu site DyNA İçerik Yönetim Sistemi üzerinde çalışmaktadır.
İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa
ismail kırbaş ile web sitesi tasarimi sitemap ismail kırbaş ile web sitesi tasarimi sitemap
  Sitemizde 3 kişi çevirimiçi | Bugün =128 | Dün =213 | Bu Ay=4,938 | Günlük En Fazla=1,109 tekil ziyaretçi