Best Practice of Working with Legacy Code


When you want to make change to legacy code, here some algorithm you can use:

  1. Identify change points.
  2. Find test points.
  3. Break dependencies.
  4. Write test.
  5. Make test
  6. Make change, refactor

The day-to-day goal in legacy code is to make changes, but not just any changes. We want to make functional changes that deliver value while bringing more of the system under test. At the end of each programming episode, we should be able to point not only to code that provides some new feature, but also its tests. Over time, tested areas of the code base surface like islands rising out of the ocean. Work in these islands becomes much easier. Over time, the islands become large landmasses. Eventually, you’ll be able to work in continents of test-covered code.

Nuget Getting Started


Nuget

Nuget merupakan visual studio extension yang mempermudah developer untuk menginstall library dan tools ke visual studio project. Dengan nuget, developer tidak perlu lagi mencari dan mendownload library beserta dependensinya secara manual.

Tutorial mengenai instalasi Nuget ke Visual Studio. Bagaimana cara menginstall .NET libarary menggunakan Nuget package manager dan package manager console ke Visual Studio Projects.

Untuk lebih detail, silahkan melihat video dibawah ini.

Searching pattern for user interface


Mengimplementasikan searching method untuk melakukan pencarian data bukanlah hal yang mudah. Bayangkan kita di assign task untuk mengimplementasikan searching departement dengan screen seperti dibawah ini:

Search Department
Name: [_______]
Age: from [__] to [__] year old
Budget: [ ]
{Search}

Data akses yang spesifik berhubungan dengan domain model di implementasikan dengan Repository pattern.  Cara umum yang biasa dilakukan orang adalah:

Lambda-Expression Repository

var result = departmentRepository.FindAll<Department>(
		x => x.Name.Contains(emailAddress) && x.StartDate > ageFrom
		&& x.StartDate > ageFrom && x.StartDate < ageTo || x.Budget < budget
	);

Aku suka dengan fitur Fluent diatas. Client API bisa dengan leluasa meng passing searching criteria ke parameter method tersebut. Tapi aku kurang nyaman dengan cara diatas, aku ga suka membiarkan searching criteria telanjang. Ketika aku hendak me-reuse criteria tersebut di screen lain tidak akan bisa. karena criteria di specify oleh client saat invoke method FindAll.

Continue reading

Del Learning Milis Archive


Learning milis Politeknikk Informatika Del sekarang sudah di-archive dan di publikasikan. Del learning milis ini merupkan sarana diskusi mengenai Computer Science dan Information Technology untuk mahasiswa dan alumni PI Del. Saya rasa banyak topik-topik IT yang bagus untuk di konsumsi oleh publik kususnya kalangan mahasiswa. Biasanya topik-topiknya mengenai trouble shooting seputar programming (Java, .NET, PHP dan Mobile Computing ) dan juga mengenai networking.

Saya harap dengan dipublishnya archive milis akan bermanfaat bagi mahasiswa-mahasiswa IT kampus lain dan juga IT industry.

Check it out

Java EE Learning Path


Dimilis sering bertanya:

Gan .., kalo mau belajar Java EE mulai dari mana yah ? ada ebook bahasa indonesia tidak ?

Ini summary saya dan saya gabung dengan beberapa pendapat member milis lainnya. Sebelum masuk ke Java EE sebaiknya harus menguasai Java Language dulu. Setelah itu masuk ke Java EE fundamental.

Fundamental

  1. Servlet fundamental (Servlet, Filter, Listener)
  2. JSP dan JSTL
  3. Struktur web.xml
  4. Session dan Cookie

Setelah fundamental selesai, next step adalah:

  1. JDBC API (CRUD, Transaction)
  2. MVC pattern
  3. Layered Architecture (Presentation Layer,  Service Layer, Repository, Domain)

Advance

Di advance mempelajari teknologi dan framework yang common digunakan pada Java EE Development di dunia kerja.

  1. ORM (Hibernate, JPA) boleh pilih salah satu *Hibernate recommended
  2. Spring Framework (IoC, Data Access Support)
  3. MVC Framework (Spring MVC atau Struts MVC) boleh pilih salah satu *Spring MVC recommended
  4. Remoting (REST, WebService)
  5. Messaging (JMS)

Ebook Fundamental bisa dari coreservlets dan moreservlets ada juga hands on lab nya.

Messaging and Event Driven Architecture Example


Berdasarkan postingan sebelumnya mengenai Messaging and Event Driven Architecture. Sekarang saat nya aku membahas bagaimana cara mengimplementasikanya. Contoh aplikasi kali ini aku ambil dari ChatDownloader Aplication yang aku post sebelum nya. Namun sebelum masuk membendah contoh aplikasi tersebut ada hal-hal yang perlu aku jelaskan.

Service Oriented Architecture

Kebanyakan orang mengalihkan bahwa SOA itu berhubungan dengan Application Integration, Platform Independent, ada component software yang bisa diakses ecara remote either itu Webservice, REST, atau dalam Bentuk BPEL. Namun fokus SOA sebenarnya bukan di sisi itu.

SOA itu merupakan architectural concept dalam software development dimana software tersebut di bangun berdasarkan service service yang saling berkolaborasi untuk melakukan specific business capability.

Layaknya Object Oriented Programming yang merupkakan konsep pengembangan software dimana software tersebut dibangun berdasarkan object object yang saling berkolaborasi.

Apakah service itu ? Berdasarkan tulisan Udidahan:

A service is the technical authority for a specific business capability.

Any piece of data or rule must be owned by only one service.

Continue reading