.com. Kurumsal Java. Özcan Acar com

Benzer belgeler
.com. Özcan Acar 2009 Kurumsal Java.com

.com. Kurumsal Java. Özcan Acar com

.com. Özcan Acar 2009 Kurumsal Java.com

Özcan Acar 2010 Kurumsal Java Akademisi.com

Kitapta UML diyagramları kullanılarak, tasarım şablonları görsel olarak açıklanmıştır. İçerik aşağıdaki bölümlerden oluşmaktadır:

Open Closed Principle (OCP) Açık Kapalı Tasarım Prensibi KurumsalJava.com

İçindekiler. Okuma lisansı info acar, için verilmiştir. Çoğaltılması ve dağıtılması yasaktır

Facade (Cephe) Tasarım Şablonu KurumsalJava.com

İçindekiler. Okuma lisansı info acar, için verilmiştir. Çoğaltılması ve dağıtılması yasaktır.

Business Delegate Tasarım Şablonu KurumsalJava.com

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com

ÖZGÜR YAZILIMLAR İLE J2EE

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Büyük Ölçekli Bir Sistem Projesinde IBM Rational Jazz Platformu Kullanarak Çevik Süreçlerin Uygulanması. Serap Bozbey

19 Şubat 2016 Cuma

YZM311 YAZILIM YAPIMI BÖLÜM 4 TASARIM KALIPLARI. Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi

Decorator Tasarım Şablonu

Loose Coupling (LC) Esnek Bağ Tasarım Prensibi KurumsalJava.com

JBoss Seam. Melih Sakarya

Java EE 5 Teknolojileri Jboss Seam

Intercepting Filter Tasarım Şablonu KurumsalJava.com

Java Kodunuzun Nesne-Merkezli Olmadığının 10 İşareti

Üst Düzey Programlama

JAVA API v2.0 Belge sürümü: 2.0.2

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

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

Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.

PAKET TRANSFER SİSTEMİ

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

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

public class SalesLineItem // Java { private int quantity; private ProductSpecification description; public Money getsubtotal() {...

BİL-141 Bilgisayar Programlama I (Java)

Chain of Responsibility Tasarım Şablonu KurumsalJava.com

2. Bölüm Spring İle Tanışalım

«BM364» Veritabanı Uygulamaları

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.

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

Üst Düzey Programlama

Klavyeden Basit Giriş/Çıkış İşlemleri

Sol tarafta yer alan Click here to activate your account linkini seçiniz.

JBoss Seam Next Generation Integration Framework


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

THY A.O. Bilgi Teknolojileri Alanında Tecrübeli Çalışma Arkadaşları Arıyor

Bİ L 131 Hafta 2. 1) Bilgisayara Java SE Development Kit 7 kurulması

CAN TECİM HEDEF DENEYİM. Tecrübe bütün öğretmenlerin en iyisidir. Publilus Syrus

PAKET TRANSFER SİSTEMİ

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

Akış. Atik Yazılım Geliştirme Tanımı ve Kavramlar Tarihi Metotları Dünyada Atik Yazılım Geliştirme Örnekleri Sonuç BİL 588 2

TÜRKİYE ELEKTRONİK FON ALIM SATIM PLATFORMU WEB SERVİS İŞLEMLERİ

Useroam Cloud Kurulum Rehberi

Üst Düzey Programlama

PAKET TRANSFER SİSTEMİ

Gönderilen uygulama incelendiğinde, belirtilen gerekliliklerin bir kısmının karşılandığı görülmüştür.

Builder Tasarım Şablonu KurumsalJava.com

Java Programlamaya Giriş

[Type text] Başvuru Kılavuzu

Spring Application Framework Harezmi Bilişim Çözümleri

BİL-141 Bilgisayar Programlama I (Java)

Veritabanı İşlemleri

JDBC kütüphanesi, her görev için genellikle veritabanı kullanımı ile ilişkili API leri içerir:

e-logo e-fatura Özel Entegratör Sistemi

Spring Framework Eğitimi

CMMI ve Çevik Yöntemler

TC KİMLİK NO SMS GÖNDERİM SOAP API

Cambridge LMS e başlama- Öğrenciler

Spring Framework Eğitimi

BİL132 Bilgisayar Programlama II

Cambridge LMS e Başlama- Öğrenciler

BMH-303 Nesneye Yönelik Programlama

Tasarım Prensipleri. KurumsalJava.com. Özcan Acar Bilgisayar Mühendisi

Bölüm 3 Çevik (Agile) Yazılım Geliştirme. Ders 1

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Cambridge LMS e Başlama- Öğrenciler

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama

Maliye Uzman Yardımcılığı Giriş Sınavı (Bilişim) 16 Mart 2014 A

Maliye Uzman Yardımcılığı Giriş Sınavı (Bilişim) 16 Mart 2014 B

Spring Ekosisteminde Kurumsal Yazılım Geliştirme. Kenan Sevindik Harezmi Bilişim Çözümleri A.Ş.

Çevik Yazılım Geliştirme Yaklaşımları (SE 571) Ders Detayları

Sunum İçeriği. Programlamaya Giriş

ABONELİK AVANTAJLARINI KEŞFEDİN

Java Interface ve Abstract Sınıflar

Java Programlama Giriş

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

Teknoloji Geliştirmede Bütünleştirici Yaklaşımlar

Scrum Çevik Süreçlerinin Ar-Ge Yazılım Projelerinde Kullanımı

Dreamspark Nedir? ÖNEMLİ NOT: Parolanız türkçe karakter içeriyorsa türkçe karakter içermeyen bir parolayla değiştirmelisiniz.

MVP, Observer ve Mediator Örüntüleri ile Yeniden Kullanılabilir Uygulama Bileşenleri Geliştirme

Java Kodunuzun Nesne-Merkezli Olmadığının 10 İşareti

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 8: Sınıf (Class) Yapılarına Giriş

MOBILEPAX XML PRODUCT API KULLANIM ŞEKLİ

Transkript:

. Özcan Acar urumsal J

Çevik Java EE 5 Web Uygulamaları ve Mimarileri Özcan Acar acar@unitedinter.net http://www.ozcanacar. http://www.kurumsalj urumsal urumsaljj

Özcan Acar Hakkında public class OezcanAcar { public static void main(string[] args) { Acar oezcan = new Acar(); oezcan.setbirthday("18.07.1974"); oezcan.setbirthplace("izmir"); oezcan.setjob("bilgisayar Mühendisi"); oezcan.setpassion("java EE"); } } urumsal urumsaljj

Özcan Acar Hakkında urumsal urumsaljj

Java Tasarım Şablonları ve Yazılım Mimarileri Tasarım şablonu nedir? Interface / Abstract sınıf nedir? Oluşturucu Tasarım Şablonları Factory, Abstract Factory, Builder, Prototype, Singleton Yapısal Tasarım Şablonları Adapter, Bridge, Facade, Decorator, Composite, Flyweight, Proxy Davranışsal Tasarım Şablonları Command, Memento, Strategy, Iterator, State, Observer, Visitor urumsal urumsaljj

Extreme Programming Çevik süreç nedir? Çevik manifesto Extreme Programming nedir? XP değerleri ve prensipleri Çevik proje planlaması Çevik süreçlerde iletişim Çevik tasarım Sürekli entegrasyon Test güdümlü yazılım Yazılım metrikleri urumsal urumsaljj

.. urumsal urumsaljj

. Üniversite Seminerleri 07 Mart Işık Üniversitesi İstanbul 21 Mart Firat Üniversitesi Elazığ 04 Nisan 18 Mart Üni. Çanakkale 09 Mayıs Sütçü İmam Üni..maraş JJ urumsal urumsal

Sunumun İçeriği Yazılımda çeviklik Çevik süreç ve çevik metotlar Extreme Programming Çevik süreç ile tipik bir Java EE web aplikasyon implementasyonu urumsal urumsaljj

Giriş Yazılım da çevik(lik) nedir? Çeviğim Çeviksin Çevik misin? urumsal urumsaljj

Çevik Olmak Çeviklik göreceli ve soyut bir kavramdır. Çeviklik uygulanabilecek bir yazılım metodu değildir. Çevik manifesto haricinde çevikliğin yazılımda bir anlamı yoktur. Çevik olabilmek icin çevik manifestoda yer alan değerlerin ve prensiplerin uygulanması gerekmektedir. Bu yüzden bir çevik sürece ihtiyacımız var. urumsal urumsaljj

Neden Çevik Olmalıyız? Müşteri gereksinimlerinin iyi anlaşılması gerekir! Müşteri gereksinimleri devamlı değişikliğe uğrayabilir. Müşteri yeni gereksinimleri olduğunu anlayabilir. Müşteri gereksinimlerini doğru ifade edemeyebilir. urumsal urumsaljj

Çevik Süreç Çevik olmak çevik süreç ile anlam kazanır ve somutlaşmaya başlar Çevik süreç, çevik yazılım filozofisini takip edebilmek için somut yöntemler ihtiva eder. Çevikliği somutlaştıran, çevik sürecin ihtiva ettiği yazılım yöntemleridir. Extreme Programming ve Scrum çevik süreç örnekleridir. urumsal urumsaljj

Çevik Süreç Çevik Filozofi Scrum Extreme Prog. RUP? Hibrid urumsal urumsaljj

Çevik Süreçten Beklentilerimiz ısa aralıklarla müşteriye kullanabileceği sürümler sunabilmeliyiz. 2-4 haftalık iterasyon bazında çalışabilmemiz gerekiyor. Projenin ilerleyen safhalarında bile müşterinin talep ettiği değişiklikleri kabullenebilmeli ve uygulayabilmeliyiz. Upfront design yapılmamalı! Oluşan kodun kalitesi yüksek düzeyde olmalı. Unit testleri oluşturmalıyız. Tasarım yapılan değişikliklere ayak uydurabilmeli. Çevik tasarım uygulanmalı. Müşteri ve programcılar beraber çalışabilmeli. urumsal urumsaljj

Çevik Metotlar Test Güdümlü Yazılım (TDD Test Driven Development) Sürekli Entegrasyon (CI Continuous Integration) Eşli Programlama (PP Pair Programming) Upfront tasarım yerine Basit Tasarım (SD - Simple Desing) üçük sürümler (SR Small Releases) Yeniden yapılandırma (Refactoring) Proje planlama (PG Planning Game) urumsal urumsaljj

Extreme Programming XP bir çevik süreçtir. Yazılımda çevikliği somutlaştırır ve uygulanabilir hale getirir. Çevik olmayı mümkün kılar Çevik yazılım metotları ihtiva eder. urumsal urumsaljj

oynumuzda Beslediğimiz Yılan JSF JPA Transaction Security EJB 3 Hibernate urumsal urumsaljj

Süpermen misin, Hulk mı? Müşteri gereksinimleri proje başlangıcında en ince detayına kadar dokümente edilir. Şelale yazılım yönteminde testler en sona bırakılır. Code coverage < % 15 Tüm tasarım proje başında oluşturulur. Tasarım çevik olamaz! Projenin ilerleyen saflarında değişiklik yapmak zorlaşır. urumsal urumsaljj

Yazılım Sadece Yazılım Değildir! Planlama Yazılım Geliştirme Bakım urumsal urumsaljj

İleriyi Görebilmek Ivar Jacobson: All systems change during their life cycles. This must be born in mind when developing systems are excepted to last longer than the first version. Her program görev süresince değişikliğe uğrar. Bu ilk sürümden ötesi düşünülen programların yazılımında göz önünde bulundurulmalıdır. urumsal urumsaljj

İleriyi Görebilmek İleriyi görebilmek ve hedefe ulaşabilmek için hafif bir bavulla yola çıkılması gerekiyor. 1. Az dokümentasyon 2. Basit tasarım 3. Basıt araç 4. Çok test 5. Sürekli urumsal urumsaljj

Extreme Programming ile Tipik Bir Java EE Projesi Süreç nasıl işler? urumsal urumsaljj

ullanıcı Hikayeleri (User Story) Müşteri kullanıcı hikayelerini (user story) oluşturur. ullanıcı Hikayesi urumsal urumsaljj

Sürüm Planlama Oyunu (Planning Game) Müşteri ve yazılımcı ekip sürüm planlama oyununda bir araya gelerek, sürüm planlaması yaparlar. urumsal urumsaljj

Planlama Pokeri Müşteri ve yazılımcı ekip sürüm planlama oyununda bir araya gelerek, sürüm planlaması yaparlar. urumsal urumsaljj

Load Factor İdeal iş birimi = Günde 8 saat Toplantı + Diğer = Günde 3 saat ------------------------------------------------Normal iş birimi = Günde 5 saat Load Factor = H bitiş zamanı / H Tahmin Süresi 2 = 16 saat / 8 Saat Load Factor 2 ile 5 arasında bir değerdir urumsal urumsaljj

Spike Solution urumsal urumsaljj

ullanici Hikayesi Öncelik Sırası Programcılar tarafından her kullanıcı hikayesi için tahminler yapıldıktan sonra, müşteri kullanıcı hikayelerini program açısından sahip oldukları değerlere göre sıraya koyar. Değer ullanıcı Hikayesi Yüksek A (3) B (2) C (1) Orta D (3) E (3) F( 2) Düşük G (2) urumsal urumsaljj

Iterasyon urumsal urumsaljj

Çalışma Hızı (Velocity) urumsal urumsaljj

Sürüm Planı İterasyon Hikaye Puanı ullanıcı Hikayesi 1 3 2 A B 2 1 3 1 C D H 3 3 2 E F 4 2 G urumsal urumsaljj

Iterasyon Planı urumsal urumsaljj

Iterasyon Planı urumsal urumsaljj

Test Güdümlü Yazılım Test Driven Development (TDD) Tasarım Test Test İmplementasyon urumsal urumsaljj

Test Güdümlü Yazılım Test Driven Development (TDD) TDD Bottom-Up JSF EJB 3 JPA Hibernate Transaction Security Calculator Top-Down urumsal urumsaljj

Test Güdümlü Web Yazılımı Onay/abul Testleri Gösterim atmanı Unit Testleri İşletme atmanı Mock Unit Testleri Persistens atmanı Mock Entegrasyon Testleri App Server urumsal urumsaljj

Onay / abul (Acceptance) Testleri Onay/abul testleri ile sistemin bütünü kullanıcı gözüyle test edilir. Bu tür testlerde sistem kara kutu olarak düşünülür. Akseptans testleri müşteriye sistemin ne zaman çalışır durumda olduğunu ve programcıya ne implemente etmesi gerektiğini söyler. XP projelerinde akseptans testlerini müşteri ve sistem kullanıcıları tanımlar ve bu testler programcılar ya da testçiler tarafından implemente edilir. XP de geri dönüm önemlidir. Akseptans testleri müşteri ve proje ekibi için iyi bir geri dönüm mekanizmasıdır. Sistemin çalışır yada çalışmaz durumda olduğu akseptans testleri aracılığıyla öğrenebiliriz. Bunun yanı sıra akseptans testleri ile projede ilerleme ölçülebilir. urumsal urumsaljj

Onay / abul (Acceptance) Testleri urumsal urumsaljj

Görev ullanıcı Hikayesi urumsal urumsaljj

Onay / abul (Acceptance) Testleri ullanıcı Hikayesi Onay/abul Test 1: ullanıcı login sayfasına gider. Email adresi ve şifre alanlarını boş bırakarak login butonuna tıklar. ullanıcıya Lütfen email adresinizi ve şifrenizi giriniz! hata mesajı gösterilir. Akseptans Test 2: ullanıcı login sayfasına gider. Email adresini girer ve şifre alanını boş bırakarak login butonuna tıklar. ullanıcıya Lütfen şifrenizi giriniz! hata mesajı gösterilir. Akseptans Test 3: ullanıcı login sayfasına gider. Email adres alanını boş bırakarak, şifresini girer ve login butonuna tıklar. ullanıcıya Lütfen email adresinizi giriniz! hata mesajı gösterilir. Akseptans Test 4: ullanıcı login sayfasına gider. Email adresi ve şifreni girer ve login butonuna tıklar. Email adresi ve şifre doğrudur. Login işlemi gerçekleşir. Üye hoş geldiniz sayfasına yönlendirilir. urumsal urumsaljj

Onay / abul (Acceptance) Testleri urumsal urumsaljj

Mimari urumsal urumsaljj

Onay / abul (Acceptance) Testleri WicketTester public void testlogincredientalnotsupplied() { WicketTester tester = new WicketTester(); tester.startpage(loginpage.class); tester.assertrenderedpage(loginpage.class); tester.assertnoerrormessage(); tester.assertcomponent("loginform", LoginForm.class); FormTester form = tester.newformtester("loginform"); assertnotnull("form null", form); form.setvalue("email.border:email",""); form.setvalue("password.border:password", ""); form.submit(); tester.asserterrormessages(new String[] { USERNAME_REQUIRED, PASSWORD_REQUIRED }); tester.assertrenderedpage(loginpage.class); } urumsal urumsaljj

Unit Testleri JUnit ile metot bazında test yapılır. Bağımlılıkları taklit etmek için mock nesneler kullanılır. JUnit testleri aralarında bağımlılık ihtiva etmez. urumsal urumsaljj

Mock Nesneler LoginManagerImplTest public void testemailinvalid() { try { result.setstatus(statuscodes.email_invalid.getvalue()); String email ="test_email"; String password = "test_password"; mockdao.expects(once()).method("finduser").will(returnvalue(result)); LoginResult loginresult =manager.login(email, password); asserttrue(loginresult.getstatus() == StatusCodes.EMAIL_INVALID.getValue()); } catch (Exception e) { fail(); } } urumsal urumsaljj

Mock Nesneler LoginManagerImpl public LoginResult login(string email, String password) { LoginResult result = new LoginResult(); try { LoginDaoResult daoresult = dao.finduser(email,password); copyresult(daoresult, result); } catch (Exception e) { throw new LoginManagerException(e); } return result; } urumsal urumsaljj

Entegrasyon urumsal urumsaljj

DBUnit dbunit-dataset.xml <?xml version='1.0' encoding='utf-8'?> <dataset> <account id="1" email="admin@test." password="admin activated="true admin="true firstname="adir" name="inanir" /> </dataset> urumsal urumsaljj

DBUnit & Ant build.xml <target name="filldatabase" depends="createdatabase"> <dbunit datatypefactory="org.dbunit.ext.hsqldb. HsqldbDataTypeFactory" driver="org.hsqldb.jdbcdriver url="jdbc:hsqldb:hsql://localhost:9006/smart" userid="sa" password=""> <classpath> <pathelement location="${hjar}" /> </classpath> <operation type="insert" src="${properties.dir}/dbunit-dataset.xml" /> </dbunit> </target> urumsal urumsaljj

HSQLDB & Ant build.xml <target name="hsqldb-start"> <java fork="true classname="${hclass} classpath="${hjar} args="${hfile} -dbname.0 ${halias} -port ${hport} spawn="true" newenvironment="true" failonerror="false"/> </target> urumsal urumsaljj

Entegrasyon Testleri public void testemail() { try { String email="admin@test."; String password="admin"; LoginResult result = manager.login(email,password); assertequals(email, result.getaccount().getemail()); assertequals(password, result.getaccount().getpassword()); } catch (Exception e) { fail(); } } urumsal urumsaljj

Spring <bean id="loginmanager" class="smart.web.login.business.impl.loginmanagerimpl" scope="prototype"> <property name="dao" ref="logindao"/> </bean> <bean id="logindao" class="smart.web.login.persistence.impl.logindaoimpl" scope="prototype"> <property name="sessionfactory"> <ref bean="sessionfactory" /> </property> </bean> urumsal urumsaljj

Entegrasyon Testleri & Ant <target name="run-integration" depends="pile, hbm2ddl"> <junit fork="false" clean pile failureproperty="tests.failed" showoutput="true" db-start printsummary="yes" haltonfailure="yes"> <test name="$ {integration.testcase.class}" db-create dbunit haltonfailure="yes" outfile="build/integrationresult"> <formatter type="xml" /> </test> </junit> </target> run-integration-test db-stop generate-report urumsal urumsaljj

Çevik Araçlar Checkstyle JDepend urumsal urumsaljj

Sürekli Entegrasyon (Continuous Integration) urumsal urumsaljj

Agile Happy End urumsal urumsaljj

aynak: urumsalj urumsal urumsaljj

urumsaljavaakademisi. urumsal urumsaljj

Son İlginiz için teşekkür ederim. Özcan Acar urumsal J