Bileşen tabanlı Uygulama Geliştirme Süreci

Slides:



Advertisements
Benzer bir sunumlar
SGB.NET’İN TEKNİK ALTYAPISI
Advertisements

FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ
WEB SERVİCE İDRİS YÜRÜK MAHMUT KAYA.
İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar)
e-Fatura İşlemleri e-Fatura İşlemleri İçin Gerekli Adımlar
Tuğba DEMİREL
Azrael Online Hasta Takip Programı
İSİM UZAYLARI.
Problemi Çözme Adımları
Bilgi Teknolojisinin Temel Kavramları
2. VISUAL BASIC PROGRAM YAPISI
BTP 108 BİLGİSAYAR AĞ SİSTEMLERİ AĞ KAVRAMI Birden çok bilgisayarın birbirine bağlı olarak kullanılmasıyla oluşturulan çalışma biçimine bilgisayar ağı.
ONLINE ELEKTRİK SAYAÇ OKUMA UYGULAMASI
Fonksiyonlar ve Alt Programlar
Excel’de VBA programlama (Visual Basic Application) Ders 4
Yazılım Test Süreci. Yazılım test süreci Test Hazırlık Adımında Neler Yapılmalıdır? Test edilecek yazılıma ait analiz ve teknik tasarım aşamaları ile.
VERİ TABANI ve YÖNETİMİ
Transaction.
PERFORMANS BÜTÇE HAZIRLIK SÜRECİ
1.  Bazı durumlarda, birden fazla işlem bir bütünün parçasıdır. Bu işlemlerden biri bile gerçekleşmese bütün işlemler anlamsız kalabilir  Bu türden.
DELEGATE OOP-UYG.
Fonksiyonlar.
NESNEYE DAYALI PROGRAMLAMA
BİLGİSAYAR AĞLARI.
Metotlar.
FONKSİYONLAR.
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
Test Driven Development (TDD) Nedir?
JAVA’DA DÖNGÜLER.
Hazırlayan:Emin BORANDAĞ. 4. BÖLÜM: Yazılımları Teknik İnceleme.
Quest Atlantis Dünya Üzerine Yayılmış Çok-Kullanıcılı Çevrim-İçi Eğitsel Bir Bilgisayar Oyununun Teknik Yapısı.
© Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Amaçlar Bu derste öğrenilecekler: –Uygulamaları “method”
2.4. Dönüşümlü Resimler (Rollover) Oluşturma
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
Görsel C# ile Windows Programlama
ASP.NET Web FORMS -> MVC FRAMEWORK
Bilgi Teknolojisinin Temel Kavramları
HATA YAKALAMA PROGRAMCI, OLABİLECEK HATALARI ÖNCEDEN TAHMİN EDEREK BUNLARA UYGUN KARŞILIKLARI VEREBİLECEK KODLARI YAZMAK ZORUNDADIR.
Meb.k12 uzantılı E-posta Hesabı Kurulumu
ÇOK KATMANLI MİMARİLER. Katman: Ortak işi yapan kodların bir yerde toplanması Örneğin hemen hemen her projemizde veri tabanı kullanırız, bunun için veritabanı.
Web Tasarım Nedir? Web tasarımı, bir ürünü ya da hizmeti veya bir bireyin reklam ve tanıtımını yapmak üzere veyahutsa toplumu eğitici ve öğretici çalışmalarla.
Modül 1: Giriş. Genel Bakış Temel.NET kavramları Geliştirme ortamında gezinti Bir C# projesi oluştur Use Visual Studio.NET Veriye eriş Hata ayıkla ve.
Modül 2: Formlar ve Kontroller ile Çalışmak. Programlama Kavramları Formlar ile Çalışmak Kontroller ile Çalışmak Kodu Biçemlemek Genel Bakış Visual Studio.NET.
BMS-301 Kabuk Programlama Güz 2015 (5. Sunu) (Yrd. Doç. Dr. Deniz Dal)
BM-103 Programlamaya Giriş Güz 2012 (3. Sunu)
İnternet Programlama-I
PROJENİN ADI “Doğrusal Konumlandırıcılar” için Profesyonel Kontrol Ara yüz Tasarımı ve İmalatı.
Üniversiteler İçin Öğrenci Topluluk Yönetim Bilgi Sistemi
Proje Oluşturma ve Yönetimi
KIRPMA (Clipping) Bir grafik veri tabanından bir parçayı çıkarma işlemi olan kırpma bilgisayar grafiğinin temel işlerinden birisidir. Kırpma algoritmaları.
Bilgisayar Görmesi Ders4:GUI OLUSTURMA Yrd. Doç. Dr. Serap KAZAN.
Ders 2 Algoritma İfade Şekilleri
BÖLÜM 11 DEĞERLENDİRME. BÖLÜM 11 DEĞERLENDİRME.
Röleve Programı Kullanımı. Programa “C:\Roleve” dizini altındaki Roleve.exe dosyası çalıştırılarak girilir. Program çalıştırıldığında ekrana Menü gelir.
DERS: MESLEKİ BİLGİSAYAR MODÜL -2: İŞLETİM SİSTEMİNDE MASA ÜSTÜ
Yeni Nesil Laboratuvar
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ
(Bircom Ergin BOYACI – Müşteri Deneyimi ve Ürün Geliştirme)
Diyalog pencereleri.
PROGRAMLAMA TEMELLERİ
Transaction ve Örnekler
2. VISUAL BASIC PROGRAM YAPISI
MS SQL VERİTABANININ HOST HESABINA TAŞINMASI SAVAŞ TUNÇER.
Amazon Web Servisleri ve Javascript Dilinin Birlikte Kullanımı
Problemi Çözme Adımları
Cumhuriyet Üniversitesi Yazılım Mühendisliği Dersi
Bölüm 6: Kullanıcı Tanımlı Fonksiyonlar I
NİŞANTAŞI ÜNİVERSİTESİ
Dünya Üzerine Yayılmış Çok-Kullanıcılı Çevrim-İçi Eğitsel
Transaction.
Sunum transkripti:

Bileşen tabanlı Uygulama Geliştirme Süreci Component Based Application Development Methodology

Component Modeli Öncelikle yapılan analiz sonucunda geliştirilecek uygulamanın data modeli ve bunun parallelinde de bu model üzerinde çalışacak metodlar yani business model’i belirlenir. Bu yönteme parallel decomposition adı verilir. Ardından her metod içerisindeki logic kodlanır ve test edilir. Bu metodlar business açısından consistent olmalıdırlar. Metodlar genelde non-transactional‘dır, yani kendi başlarına bir transaction değil, bir transaction’ın parçaları olarak kullanılırlar. Ancak gerekiyorsa transactional metodlar da geliştirilir ve test edilir. Bunların kendilerine ait bir window’ları da bulunur. Örn. Risk tipleri listeleme, Müşteri adından araştırma, Müşteri nuymarasına ait hesapların listelenmesi, Hesap görüntüleme Uygulama metodları bir arada bir package içerisinde toparlanır. Bu package başka bir açıdan bir component‘tir. Geliştirme de bu şekilde component tabanlı (component based development) yapılır. Bu component’in veri modeline başka hiç bir yerden ulaşılamaz. Eğer bu tip bir ihtiyaç varsa o component’ler için lazım olan metodlar da burada geliştirilir. Bu component için geliştirilen bir metodun başka bir yerdeki bir veriye ulaşması gerekiyorsa o işle ilgili başka bir componen’tin var olan bir metodu kullanılır veya işimize yarayan bir metod yoksa yoksa geliştirilmesi istenir. Her component en azından kendi hata kodundan kendi hata mesajını geri veren bir metod içermelidir PKG_RISK_COMPONENT P_RISK_READ(...) P_RISK_UPD(...) P_RISK_INS(...) P_RISK_LST(...) P_RISK_DEL(...) P_RISK_CRE(...) P_RISK_HESAPLA(...) P_RISK_...(...) F_RISK_errmsgbul(...) ... RISK COMPONENT RISK TYPE HRK DATA MODEL LOGIC --------------- BUSINESS LOGIC ---------------

Component’ler Bu şekilde geliştilen component kendi veri modellerini gizleyerek (encapsulation) dışarıya metodlar sağlarlar. Bu şekilde arka tarfta veri modeli değiştirilmesi gerektiğinde sadece metodların içi değişeceğinden bunları kullanan diğer component’ler veya uygulamalar’ın değiştirilmesi gerekmez. Bir metod’un argumanları yani arayüzü (interface) değiştiğinde tabi ki bunu kullanan dış dünyanın da buna uyması gerekebiliri. Ancak bu bir şekilde, en azından belli bir süre için birden fazla metod sürümü (version) ile sağlayarak idare edilebilir. Bu şekilde geliştirilen component’ler yeri geldiğinde bu compoennt’in başka bir sürümü (version) ile yer değiştirebilir. Ayrıca dışarıdan hazır alınabilecek bir component ile de yer değiştirebilir. Eğer satın alınan component’in arayüzü farklı ise basit bir component ile metodlarının etrafı sarılarak (wrap) edilerek içeriye yansıtılmaması mümkün olabilir. Gelkiştirilen bu component’ler başlangıçta uygulama geliştirme sürecinin yavaşlatsa bile kısa zamanda geliştirme sürecini kat kat hızlandırar. Bu component’ler business için birer assest haline gelirler. Ve uzun erimde business’in rekabet gücüne değişen koşullara hızla adapte olmasını sağlayarak katkıda bulunurlar. PKG_RISK_COMPONENT P_RISK_READ(...) P_RISK_UPD(...) P_RISK_INS(...) P_RISK_LST(...) P_RISK_DEL(...) P_RISK_CRE(...) P_RISK_HESAPLA(...) P_RISK_...(...) F_RISK_errmsgbul(...) ... RISK COMPONENT RISK TYPE HRK Diğer COMPONENT PKG_UTIL_COMPONENT P_UTIL_genelservis(...) PKG_HES_COMPONENT P_HES_oku(...) P_HES_musbkybul(...) DATA MODEL LOGIC --------------- BUSINESS LOGIC ---------------

Uygulama Modeli - Client MODULERISK.fmb Triggers - Uygulama (application) kullanıcıların kullandığı arayüzdür. Yeri geldiğinde iş kurallarına (business model’i veya business rules) etki etmeden değiştirilebilmesi gerekir. Bir uygulama component’lerden tamamen bağımsız bir şekilde geliştirilmelidir. Hatta etki altında kalınmasını engellemek için component geliştirenler ile uygulama geliştirenler belli bir zamanda farklı kişiler olmalıdır. Uygulama içerisinde kesinlikle iş kararları olmamalıdır. Uygulama transaction’lardan meydana gelir. Her transaction’ın genelde bir penceresi (window) vardır. Bu pencerenin arkasında çalışan kod bir istemci yani client’tır. Genelde kullanıcı PC’sinde çalışan bu client’a modul adı da verilebilir. Client, içerisinde sadece window’un nasıl boyanacağını kontrol eden trigger veya diğer bir adla event’ler olmalıdır. Her event’te ne yapılması gerektiği uygulamanın analiz aşamasında ortaya çıkartılır. Gerektiğinde bir client’tan bir diğer clien’ta geçilebilir. Bu diğer client ya aynı uygulamanın bir client’ı veya başka bir uygulama nın bir client’ı olabileceği gibi bir component’in transactional bir metodu da olabilir. Başka bir client’a geçerken isteği ayrıdedebilmek için belli bir command ve extra argumanlar da verilebilir. Geri dönüş varsa gerektiğinde ayrıdedebilmek amacı ile aynı command ile bazı argumanlar da geri alınabilir. HESLIST MODULEbaşka.fmb CLIENT WINDOW --- USER INTERFACE ---

Uygulama Modeli - Server MODULERISK.fmb Triggers - P_SRV_RISK_MODULERISK if COMMAND=‘HESOKU’ then P_HES_oku(...) elsif COMMAND=‘BKYBUL’ then P_HES_musbkybul(...) elsif COMMAND=‘SAVE’ then F_RISK_UPD(...) P_UTIL_genelservis(...) end if; if error then F_RISK_errmsgbul(...) ROLLBACK else COMMIT Event’ler genelde ekranda bazı değişiklikler yaratırlar. Bunları event’in kendisi yapabileceği ekrana koyacağı bir veri parçası için business modelindeki bazı component’lardan bazı metodlar’ın kullanılması da gerekebilir. Ancak event’ler imkanları dahilinde olsa da bu metodlar’ı doğrudan kullanmamaları gerekir. Bunun yerine arka tarafta yani server makinada çalışacak olan ve bu client’a karşılık gelen ve server adı verilen bir programı geliştirilmeli ve istekler sadece buna yönlendirilmelidir. Her istek server tarafından ayırdedilebilmesi için bir command ve gerekiyorsa bazı argumanlar ile hazırlanan bir mesaj şeklinde geçirilmelidir. Bu mesaj ileride client modul’un şimdikinden daha farklı bir uygulama geliştirme ürünü ile (Visual Basic, Delfi, Visual C, Forms, Power Builder vs) yeni baştan geliştirilebileceği düşünülerek mümkün olduğunca standart (ör. string) tasarlanmalıdır. Bu server program gerektiğinde başka bir ortamdan aynı mesajlarla iletişim sağlayacak başka client’lara hizmet verebilir. Ör. Kullanıcı PC’sindeki bir virman client modulune hizmet verebileceği gibi bir ATM makinasından veya internet şubesi kullanıcı arayüzünden gelecek isteklere de hizmet verebilmelidir. Bir anlamda kullanıcı arayüzü (user interface) PC’deki ve server makinadaki server modul’ün ikisinden beraber meydana gelir. İki modül LAN üzerinden iletişim sağlayabileceği gibi aralarından WAN da bulunabilir HESOKU BKYBUL SAVE WAN CLIENT SERVER WINDOW ------------------- USER INTERFACE -------------------

Server Server’ın içi çok basit design edilmelidir, genelde client’taki event’lere karşılık gelen ve mekanik iş yapan bölümlerden meydana gelmelidir. Hangi bölümün çalıştırılacağı ise client’tan gelen mesajın içerisindeki command’dan anlaşılabilir. Her kısımda mesaj içerisinde gelen arguman’lar kullanılarak bu isteğe karşılık gelen bir veya daha fazla component metodu çağrılır. Yapılan iş sadece bu metod’lara aktarılacak argumanların belirlenip metodların çağrılması, varsa metod’dan geri gelen argumanların alınması, gerekiyorsa ikinci bir metod’a geçirilmesi, ve sonunda da client’a aktarılacak mesajın hazırlanmasıdır P_SRV_RISK_MODULERISK if COMMAND=‘HESOKU’ then P_HES_oku(...) elsif COMMAND=‘BKYBUL’ then P_HES_musbkybul(...) elsif COMMAND=‘SAVE’ then F_RISK_UPD(...) P_UTIL_genelservis(...) end if; if error then F_RISK_errmsgbul(...) ROLLBACK else COMMIT Server’da yapılan önemli bir iş daha vardır. Herşeyden önce her metod çağrıldıktan sonra o metod’un hata kodu return edip etmediği kontrol edilir ve bir sonraki metod buna göre çağrılır. Eğer bir metod hata deödürdü ise bu metod’un compoent’in sağlaması gereken hata mesajı bulan metod kullanılarak hata mesajı alınır ve client’a gönderilir. Hata durumunda ROLLBACK yapılarak metodların yapmış olduğu işler geri alınır, normal durumda ise COMMIT yapılarak iş (transaction) gerçekleştirilmiş olur. Client business logic içermediğinden two phase commit sözkonusu değildir. SERVER ------------------- USER INTERFACE -------------------

Genel Model WAN LAN --------------- BUSINESS LOGIC --------------- MODULERISK.fmb Triggers - P_SRV_RISK_MODULERISK if COMMAND=‘HESOKU’ then P_HES_oku(...) elsif COMMAND=‘BKYBUL’ then P_HES_musbkybul(...) elsif COMMAND=‘SAVE’ then F_RISK_UPD(...) P_UTIL_genelservis(...) end if; if error then F_RISK_errmsgbul(...) ROLLBACK else COMMIT PKG_RISK_COMPONENT P_RISK_READ(...) P_RISK_UPD(...) P_RISK_INS(...) P_RISK_LST(...) P_RISK_DEL(...) P_RISK_CRE(...) P_RISK_HESAPLA(...) P_RISK_...(...) F_RISK_errmsgbul(...) ... RISK COMPONENT RISK TYPE HRK HESOKU BKYBUL SAVE Diğer COMPONENT WAN PKG_UTIL_COMPONENT P_UTIL_genelservis(...) LAN PKG_HES_COMPONENT P_HES_oku(...) P_HES_musbkybul(...) MODULEbaşka.fmb --------------- BUSINESS LOGIC --------------- WINDOW CLIENT SERVER ------------------- USER INTERFACE ------------------- LOGIC DATA MODEL

Genel Model WAN LAN --------------- BUSINESS LOGIC --------------- MODULERISK.fmb Triggers - P_SRV_RISK_MODULERISK if COMMAND=‘HESOKU’ then P_HES_oku(...) elsif COMMAND=‘BKYBUL’ then P_HES_musbkybul(...) elsif COMMAND=‘SAVE’ then F_RISK_UPD(...) P_UTIL_genelservis(...) end if; if error then F_RISK_errmsgbul(...) ROLLBACK else COMMIT PKG_RISK_COMPONENT P_RISK_READ(...) P_RISK_UPD(...) P_RISK_INS(...) P_RISK_LST(...) P_RISK_DEL(...) P_RISK_CRE(...) P_RISK_HESAPLA(...) P_RISK_...(...) F_RISK_errmsgbul(...) ... RISK COMPONENT RISK TYPE HRK HESOKU BKYBUL SAVE Diğer COMPONENT WAN PKG_UTIL_COMPONENT P_UTIL_genelservis(...) LAN PKG_HES_COMPONENT P_HES_oku(...) P_HES_musbkybul(...) MODULEbaşka.fmb --------------- BUSINESS LOGIC --------------- WINDOW CLIENT SERVER ------------------- USER INTERFACE ------------------- LOGIC DATA MODEL