PENGEMBANGAN APLIKASI MANAJEMEN PROYEK PERANGKAT LUNAK BERBASIS SPRING : MODUL CORE SYSTEM DAN MANAJEMEN SOURCE CODE Glend S. Maatita1, Febriliyan Samopa2, Radityo Prasetianto Wibowo3 1,2,3 Jurusan Sistem Informasi, Fakultas Teknologi Informasi, Institut Teknologi Sepuluh Nopember (ITS) Surabaya, 60111, Indonesia Telp: (031)5939214, Fax : (031) 5964965 Email :
[email protected],
[email protected],
[email protected] Abstrak Manajemen proyek diperlukan untuk mengelola jalannya proyek agar proyek berjalan dan selesai dengan baik serta dapat dipertanggung jawabkan hasilnya. Namun, mengelola proyek pengembangan perangkat lunak adalah hal yang tidak mudah untuk dilakukan. Untuk itu, tim proyek dapat memanfaatkan TI untuk pengelolaan proyek, yaitu dalam bentuk penggunaan aplikasi manajemen proyek. Aplikasi manajemen proyek yang baik harus dapat secara fleksibel menyesuaikan kebutuhan dari tim proyek. Dengan kata lain, aplikasi manajemen proyek tersebut dapat ditambah/dikurangi fungsionalitasnya agar sesuai dengan kebutuhan dari tim proyek. Salah satu teknologi yang dapat digunakan dalam mengembangkan aplikasi yang fleksibel sesuai dengan pengertian fleksibel diatas adalah OSGi (Open Services Gateway Initiative Framework). OSGi merupakan suatu kontainer, lingkungan deployment dan platform service yang mengimplementasi sebuah model komponen yang dinamis untuk aplikasi yang dikembangkan menggunakan Java. Dengan menggunakan OSGi sebagai kontainer tempat aplikasi dideploy, sebuah aplikasi Java dapat dipecah menjadi bundle-bundle kecil yang berdiri sendiri dan yang saling berinteraksi dalam pertukaran data melalui sebuah mekanisme yang sudah disediakan oleh OSGi. Di sisi lain, Spring Framework sebagai salah satu stack development dalam pengembangan
aplikasi Java sudah menjembatani agar aplikasi Java yang dikembangkan diatas Spring Framework dapat dengan mudah dideploy ke kontainer OSGi, yaitu dengan menggunakan library dari Spring yaitu Spring DM (Dynamic Modules). Hasil yang dicapai dalam Tugas Akhir ini adalah sebuah aplikasi manajemen proyek perangkat lunak yang dikembangkan menggunakan Spring Framework dan dideploy ke kontainer OSGi dengan dukungan dari Spring DM. Sehingga aplikasi manajemen proyek yang dihasilkan ini adalah aplikasi yang modular, dapat ditambah fungsionalitasnya melalui bundle-bundle yang juga dideploy ke OSGi Container sebagai komponen dari aplikasi manajemen proyek ini. Key Words: aplikasi manajemen proyek, OSGi, Spring 1. Pendahuluan
Banyak proyek pengembangan perangkat lunak yang mengalami kegagalan. Kegagalan tersebut dapat berarti keluaran (output yang dihasilkan) maupun berjalannya proyek tidak sesuai dengan yang direncanakan (dari sisi waktu, biaya, dan cakupan). Dari sisi waktu, penyelesaian proyek lebih lama dari waktu yang telah ditentukan dan disepakati. Dari sisi biaya, biaya proyek membengkak melebihi ketentuan biaya yang disepakati. Dan dari segi cakupan, cakupan tidak sesuai atau meleset dengan apa yang direncakan. Kegagalankegagalan tersebut dapat disebabkan oleh banyak faktor, salah satunya adalah
pengelolaan proyek yang kurang baik sehingga proyek mengalami kegagalan. Oleh karena itu, dalam mengelola proyek, dikenal suatu bidang ilmu yang disebut Manajemen Proyek, dengan berbagai macam panduannya yang terkenal dan dipakai secara luas, seperti PMBOK (Project Management Body of Knowledge). Manajemen proyek diperlukan untuk mengelola jalannya proyek agar proyek berjalan dan selesai dengan baik serta dapat dipertanggung jawabkan hasilnya. Proyek pengembangan perangkat lunak, seperti halnya proyek lainnya, memerlukan manajemen proyek yang baik dalam mengelola berjalannya proyek. Namun, mengelola proyek pengembangan perangkat lunak adalah hal yang tidak mudah untuk dilakukan. Oleh karena itu, tim proyek dapat memanfaatkan kemajuan TI untuk mempermudah pengelolaan proyek, yaitu dalam bentuk penggunaan aplikasi manajemen proyek. Sudah cukup banyak aplikasi manajemen proyek yang beredar di pasaran berserta keunggulan fitur masing-masing. Aplikasi manajemen proyek yang baik tidak hanya dapat membantu tim proyek dalam mengelola proyek yang ditanganinya, lebih dari itu, aplikasi manajemen proyek yang baik dapat secara fleksibel menyesuaikan kebutuhan dari tim proyek. Dengan kata lain, aplikasi manajemen proyek tersebut dapat ditambah/dikurangi fungsionalitas untuk menyesuaikan dengan kebutuhan dari tim proyek. 2. Tinjauan Pustaka Dalam pembangunan aplikasi, digunakan beberapa dasar dari beberapa sumber bacaan tentang konsep dan teknologi apa saja yang akan digunakan atau di terapkan. 2.1. Manajemen Proyek Manajemen Proyek adalah merencanakan, menyusun organisasi, memimpin dan mengendalikan sumber daya perusahaan untuk mencapai sasaran jangka pendek yang telah ditentukan. Lebih jauh lagi manajemen proyek menggunakan pendekatan hirarki vertical dan horizontal. (H. Kurzner, 1982) Salah satu panduan dalam menjalankan manajemen proyek yaitu PMBOK (Project Management Body Of Knowledge) terbagi dari 39
proses manajemen kedalam sembilan knowledge area, sebagaimana terlihat pada Gambar 2.1.
Gambar 2.1 Project Management Body Of Knowledge (Project Management Institute, 2008) 2.2. Spring Spring (termasuk Spring MVC) merupakan framework handal yang sudah digunakan secara luas. Spring dianggap sebagai standard stack development untuk pembuatan aplikasi berbasis Java EE. Dasar arsitektur dari Spring adalah container Inversion of Control (IoC) berdasar dari kegunaan JavaBean [4]. Hal ini memungkinkan Spring dapat melakukan Dependency Injection pada suatu object. Dependency Injection salah satu implementasi dari IoC yang dikhususkan pada kemampuan suatu container untuk meng-inject dependency dari suatu object melalui object lain. Spring menyediakan berbagai abstraksi untuk mengakses data. Spring dapat dengan mudah diintegrasikan dengan berbagai macam ORM dan library untuk mengakses data seperti Hibernate, Ibatis, maupun menggunakan JDBC biasa. Gambar 2.2 menunjukkan 17 modul yang terbagi menjadi beberapa kategori pada Spring Framework .
Gambar 2.2 Spring Framework (SpringSource, 2010)
2.3. Hibernate Hibernate berfungsi untuk memetakan data dari suatu model object (dalam kasus ini adalah Java Class) ke tabel database relasional. Selain itu Hibernate juga menyediakan data query dengan menggunakan HQL maupun SQL. Hibernate juga dapat dengan sangat mudah diintegrasikan dengan Spring. Gambar 2.4 memperlihatkan arsitektur dari Hibernate. Gambar 2.5 Interaksi OSGi (Walls, 2009) Spring DM sendiri merupakan library yang dapat dijadikan solusi dalam mengembangkan aplikasi berbasis Spring yang dapat di deploy di container OSGi. Gambar 2.6 memperlihatkan konsep dasar dari Spring DM.
Gambar 2.4 Hibernate (King, 2011) Layer terbawah adalah database. Hibernate menyediakan abstraksi akses data ke berbagai macam database seperti Oracle, MySQL, PostgreSQL, dan DBMS lainnya. Layer diatas database merupakan layer dimana Hibernate bekerja. Secara umum, fungsi utama dari Hibernate terletak pada dua obyek di layer ini, yaitu XML Mapping yang berisi pemetaan class-class Java ke tabel-tabel pada database dan file hibernate.properties yang berisi keterangan mengenai database yang dipakai, driver yang digunakan, dan berbagai variable lainnya yang digunakan oleh XML mapping. Sedangkan Persistence Object merepresentasikan object dari Java Application (dalam kasus ini berupa Java Class) yang dipetakan ke tabeltabel database relasional. 2.4. OSGi dan Spring DM OSGi merupakan suatu konsep baru dalam pola pengembangan perangkat lunak berbasis Java. Secara umum, OSGi memecah aplikasi menjadi modul-modul kecil (dalam OSGi dikenal dengan nama Bundle) yang secara terpisah melakukan proses tersendiri di dalamnya. Bundle-bundle tersebut kemudian saling berinteraksi dalam pertukaran data melalui serviceservice yang telah didaftarkan ke OSGi container. Gambar 2.5 menjelaskan proses interaksi antar bundle yang terjadi di dalam container OSGi.
Gambar 2.6 Konsep Spring DM (Walls, 2009) Spring DM tersusun dari kumpulan OSGi bundles yang memungkinkan Spring DM mengatur konfigurasi dari aplikasi berbasis Spring yang di deploy di OSGi container, Spring DM bahkan bisa menjalankan aplikasi web melalui OSGi container. 3. Pembahasan Aplikasi manajemen perangkat lunak ini, dikembangkan dengan framework Spring dan dideploy ke OSGi Container . Di dalam OSGi Container juga dideploy bundles Tomcat, Hibernate, Srping Library, dan berbagai bundle lain dari komponen yang akan menempel diatas nantinya. Dibawah OSGi tetap membutuhkan JVM (Java Virtual Machine). Pada 3.1 dibawah ini merupakan arsitektur sistem yang akan dibuat.
Gambar 3.1 Arsitektur Sistem
3.1. Pembuatan Aplikasi Sistem berbasis web ini dikembangakan dengan menggunakan bahasa pemrograman berbasis Java menggunakan framework Spring. Piranti lunak (editor) utama yang digunakan adalah editor open-source Eclipse Helios. Tahapannya meliputi persiapan lingkungan pengembangan aplikasi, konfigurasi awal Spring Framework MVC, penulisan kode program, pembuatan view, persiapan lingkungan untuk OSGi deployment, uji coba, dan analisis ujicoba
Konfigurasi File untuk Pembuatan Aplikasi Pada pengembangan aplikasi berbasis Spring ini dibutuhkan beberapa file yang memiliki kegunaan masing-masing. File-file konfigurasi tersebut pada umumnya berupa file XML dan file yang berekstensi ‘.properties’. File konfigurasi pertama yang harus disetting adalah build.xml. Ant akan melakukan build ataupun deploy sesuai dengan konfigurasi yang ada di build.xml ini. Gambar 5.4 berikut memperlihatkan potongan kode pada build.xml untuk melakukan build dan deploy.
3.1.1. Persiapan lingkungan pengembangan aplikasi Pengembangan aplikasi ini dilakukan dengan menggunakan laptop yang memiliki spesifikasi dan detail perangkat keras dan perangkat lunak yang dapat dilihat pada Table 5.1 berikut ini. Table 3.1 Spesifikasi perangkat keras dan lunak
Spesifikasi Prosesor : Intel Pentium (R) Dual-Core CPU E5700 @ 3.00 GHz Memori : 2.00 GB RAM Sistem Operasi : Ubuntu Desktop Edition Struktur Directory Project Pada tahapan ini, dilakukan pembuatan struktur direktory untuk penempatan source files yang akan dibuat. Pada awalnya membuat nama project terlebih dahulu, kemudian membuat sub-direktori src’ sebagai tempat file source Java yang akan dibuat nantinya serta sub-direktori ‘war’ untuk menyimpan apapun yang seharusnya menjadi file WAR yang akan digunakan dalam package dan untuk mendeploy aplikasi. Semua file source selain source Java juga diletakkan dalam direktori ‘war’. Dalam direktori ‘war’ dibuat subdirektori ‘WEB-INF’ yang berfungsi untuk direktori pelengkap dalam pembuatan aplikasi berbasis web. Direktori struktur yang dibuat seperti pada Gambar 3.1
Gambar 3.2 Script build.xml
Berikutnya adalah setting konfigurasi file utama dari Spring yaitu applicationContext.xml. File applicationContext.xml berisi konfigurasi bean-bean yang digunakan dalam aplikasi. Gambar 3.3 berikut memperlihatkan konfigurasi pada file applicationContext.xml.
Gambar 3.3 Konfigurasi pada applicationContext.xml
File konfigurasi penting yang hibernate.cfg.xml. Gambar memperlihatkan konfigurasi hibernate.cfg.xml.
Gambar 3.1 Struktur Direktori
lain 5.7 pada
adalah berikut file
tersebut mengimplementasi interface tersebut.Gambar 5.9 memperlihatkan potongan kode pada file ClientDao
Gambar 3.4 Konfigurasi pada file hibernate.cfg.xml 3.1.2 Penulisan Kode Program Tahap ini merupakan tahap penulisan kode. Penulisan kode sepenuhnya dilakukan di directory src. Agar penulisan kode lebih rapi dan terstruktur, penulis memisahkan file-file source Java ke dalam beberapa package sesuai fungsinya, yaitu: Package ‘projectapp.model’ Package ini berisi file-file POJO (Plain Old Java Object) yang digunakan untuk merepresentasikan seluruh data yang digunakan pada aplikasi ini ke dalam class Java. POJO ini dapat mereprenstasikan tabel-tabel yang ada pada database maupun data yang ditampilkan pada view. Gambar 5.8memperlihatkan potongan kode program dari salah satu file Java dalam package model yaitu Client.java. File ini menyimpan atribut yang dimiliki tabel Client pada database beproject_db.
Gambar 3.6 Potongan kode ClientDao Package ‘projectapp.controller’ Package Controller ini berisi class Java yang berfungsi sebagai Controller pada aplikasi. Controller ini memiliki fungsi menangani request dan mengembalikan response ke user client. Request yang ditangani oleh controller pada aplikasi ini meliputi banyak hal, yang utama adalah menagani reques untukmembuat, membaca, menghapus, memperbarui data. Gambar 5.10 memperlihatkan salah satu method untuk proses membuat dari salah satu file Java dalam package controller yaitu ClientController.java.
Gambar 3.7 Potongan Kode ClientController.java Package ‘projectapp.servicedao’ Gambar 3.5 Potongan kode Client.java
Package ‘projectapp.service’ Package ini khusus berisi class-class interface yang harus diimplementasi terlebih dahulu agar dapat digunakan. Class-class interface ini sangat berguna dalam pengimplementasian teknologi OSGi pada aplikasi ini, dimana untuk menggunakan suatu OSGi service, suatu bundle tidak dapat langsung mengakses class yang menyediakan service tersebut, akan tetapi harus melalui class interface dimana class yang menyediakan service
Package ini merupakan package yang berisi class-class Java yang akan menangani proses untuk menyediakan fungsionalitas pada class DAO yang hanya berisi interface pada subbab package service sebelumnya. Gambar 5.11 memperlihatkan salah satu method dalam salah satu class Java yang ada dalam package servicedao.
file sebagai tempat menjalankan OSGi Container yang diberi nama BeProject
Gambar 3.8 Potongan ClientDaoImpl.java
Class-class pada package projectapp.servicedao menyediakan mekanisme untuk pengaksesan penuh terhadap database yang meliputi proses insert, update, delete, dan retrieve dengan menggunakan Hibernate. Package ‘projectapp.serviceosgi’ Package ‘projectapp.serviceosgi’ berfungsi hampir sama dengan ‘projectapp.servicedao’. Perbedaannya adalah class-class pada ‘projectapp.serviceosgi’ ditujukan khusus sebagai implementasi dari interface DAO pada class-class yang berada pada package ‘projectapp.sevice’. Classclass pada package inilah yang akan menyediakan OSGi service untuk mengakses data pada core system. Gambar 3.9 memperlihatkan salah satu method dalam salah satu file Java yang ada dalam package serviceosgi.
Gambar 3.9 ClientDaoOsgi
3.1.3 Pembuatan View Aplikasi ini menggunakan Java Server Pages (JSP) untuk komponen view dengan dipercantik dengan CSS. Dan untuk memperkuat user interface, digunakan JQuery. Berikut ini contoh beberapa tampilan yang masingmasing mewakili proses retrieve, create, update, dan detail. 3.1.4 Persiapan lingkungan untuk OSGi Deployment Deployment OSGi memerlukan suatu lingkungan khusus agar OSGi Container dapat terinstall dengan benar dan bundle yang terinstall pada OSGi Container dapat berjalan dengan lancar. Untuk itu penulis menyiapkan suatu directory khusus dengan beberapa sub directory dan
3.1.5 Deployment Proses deployment dengan menggunakan teknologi OSGi sangat berbeda dengan deployment Java Application pada umumnya. Untuk deployment pada OSGi Container ada beberapa hal yang perlu untuk diperhatikan, antara lain: • Pemecahan aplikasi menjadi beberapa bundle Pada proses deployment aplikasi manajemen proyek ini, penulis memecah aplikasi menjadi lima bundle sesuai dengan package yang ada pada directory ‘src’ yaitu: 1. projectapp.controller dan projectapp.servicedao, akan menjadi projectapp-web.war 2. projectapp.model, akan menjadi projectappmodel.jar 3. projectapp.service, akan menjadi projectappservice.jar 4. projectapp.serviceosgi, akan menjadi projectapposgi.jar Aplikasi inti terletak pada bundle projectappweb.war. Bundle ini berisi semua file konfigurasi dan file-file JSP untuk view. Selain itu, walaupun classclass pada package projectapp.servicedao dan projectapp.serviceosgi sama mengimplementasi class-class yang ada pada package projectapp.service, penulis membedakan class-class tersebut dan memisahkannya ke package berbeda. Hal ini dikarenakan beberapa faktor yaitu: 1. Pada prakteknya penulis menggunakan class-class pada package projectapp.servicedao untuk pengaksesan database pada bundle projectapp-web.war. Sedangkan untuk class-class pada package projectapp.serviceosgi, penulis khusus menggunakannya sebagai class-class yang menyediakan OSGi Service untuk dipakai oleh bundle lain. Operasi database yang ada pada classclass pada package projectapp.serviceosgi juga penulis batasi, yaitu hanya menyediakan operasi retrieve yang notabene adalah read-only. Untuk operasioperasi database yang mengubah value pada data di database, penulis tidak menyertakannya di classclass tersebut. Sehingga dapat diambil kesimpulan bahwa OSGi Service yang disediakan oleh core sytem hanya service yang menyediakan operasi retrieve pada data yang ada di database. 2. Penggunaan library yang berbeda untuk pengaksesan database pada kedua package
tersebut. Untuk class-class pada projectapp.servicedao, penulis menggunakan Hibernate sedangkan untuk classclass pada projectapp.serviceosgi, penulis menggunakan JDBC. Perbedaan penggunaan ini disebabkan karena Hibernate tidak bisa digunakan pada bundle yang menyediakan OSGi Service yang digunakan oleh bundle lain. Untuk kasus ini, package projectapp.servicedao disatukan dengan package projectapp.controller menjadi bundle projectapp-web.war sehingga proses pengaksesan data pada database terjadi di internal bundle projectapp-web.war dan tidak perlu menggunakan OSGi Service dari bundle lain. Untuk itu, penggunaan Hibernate tidak masalah untuk masalah ini. Permasalahan terjadi untuk package projectapp.serviceosgi yang menjadi bundle projectapp-osgi.jar. Bundle ini menyediakan OSGi Service untuk digunakan oleh komponen-komponen aplikasi manajemen proyek ini sehingga penggunaan Hibernate pada projectapp.serviceosgi menjadi tidak memungkinkan. Sebagai gantinya, digunakan JDBC untuk pengaksesan database. 3.1.5 Analisis Uji Coba Pada saat tahapan implementasi dan uji coba, penulis menemukan beberapa permasalahan. Permasalahan-permasalahan tersebut terutama terjadi pada saat proses deployment bundle ke OSGi Container. Beberapa permasalahan yang ditemui penulis antara lain: • Apache Tomcat tidak dapat meng-compile JSP pada bundle projectapp-web.war. Sumber permasalahan disebabkan karena beberapa library yang berkaitan dengan JSP Taglibs belum diimpor oleh bundle projectapp-web.war sehingga Apache Tomcat yang penulis gunakan tidak dapat mengcompile file JSP menjadi Servlet. Untuk menyelesaikan masalah tersebut, penulis mendefinisikan semua library JSP Taglib pada MANIFEST.MF di bundle projectappweb.war • Hibernate tidak dapat dipakai pada bundle untuk menyediakan akses ke database pada OSGi Service yang digunakan oleh bundle lain. Sehingga pemakaian Hibernate untuk akses data pada bundle yang menyediakan OSGi Service tidak memungkinkan untuk dilakukan. Hal ini disebabkan oleh beberapa faktor sebagai berikut : Hibernate menggunakan session dalam setiap koneksi ke database. Session ini digunakan oleh Hibernate Transaction Manager untuk
•
melakukan operasi database. Akan tetapi, session ini tidak bisa diekspor sebagai OSGi Service Untuk mengakses sebuah OSGi Service yang disediakan oleh suatu class, suatu bundle hanya dapat mengakses class interface dimana class penyedia service tersebut mengimplementasi class interface tersebut. Hibernate sendiri tidak menyediakan interface untuk mengakses class Hibernate Transaction Manager. Driver MySQL tidak dikenali ketika menggunakan class Driver Manager bawaan dari Spring, yaitu org.springframework.jdbc.datasource .DriverManagerDataSource. Dan sebagai solusinya, penulis mengganti class Driver Manager bawaan dari Spring dengan driver manager dari Apache, yaitu org.apache.commons.dbcp.BasicDataSo urce.
4. Saran dan Kesimpulan
4.1 Kesimpulan Berdasarkan hasil penelitian tugas akhir ini, maka dapat disimpulkan bahwa aplikasi manajemen proyek perangkat lunak berbasis Spring yang dikembangkan pada Tugas Akhir ini berhasil di-deploy diatas OSGi Container dan berjalan dengan lancar. Hal ini dibuktikan dengan terpenuhinya semua test case yang dirancang untuk uji coba fungsionalitas dari aplikasi ini. Sehingga penulis bisa membuat aplikasi manajemen proyek ini menjadi aplikasi berbasis komponen. 4.2 Saran Beberapa saran yang dapat dipertimbangkan untuk penelitian mendatang yaitu: • Pertukaran data dengan menggunakan OSGi Service pada aplikasi manajemen proyek ini hanya bersifat satu arah yaitu dari core system ke komponen. Untuk penelitian dan percobaan yang akan datang, penulis menyarankan untuk memodifikasi core system sehingga core system ini memiliki mekanisme untuk pertukaran data melalui OSGi Service yang bersifat dua arah, yaitu antara core system dengan komponen, maupun antar komponen. • Penelitian selanjutnya dapat menambahkan library lain untuk manajemen source code, misalnya Git atau Mercury.
Daftar Pustaka Brampton, M. (2008). PHP5 CMS Framework Development. Birmingham: PACK Publishing. Basecamp, T. (2011). Homepage. Dipetik February 24, 2011, dari http://basecamphq.com/: http://basecamphq.com/tour/ Collins-Sussman, B., Fitzpatrick, B. W., & Pilato, C. M. (2008). http://svnbook.red-bean.com/en/1.5/svnbook.html. Jira, T. (2011). Introduction. Dipetik Februari 24, 2011, dari http://www.atlassian.com: http://www.atlassian.com/software/jira/ Johnson, R. (2005, Mei 1). Introduction to the Spring Framework. Dipetik Februari 24, 2011, dari http://www.theserverside.com: http://www.theserverside.com/news/1364527/Introduction -to-the-Spring-Framework King, G. (2011). http://docs.jboss.org/hibernate/core/3.6/ Martin, B. (2008). PHP 5 CMS Framework Development. Birmingham: Packt Publishing. Project Management Institute, I. (2008). A Guide To The Project Management Body of Knowledge. Pennsylvania: Project Management Institute, Inc. Rooney, G., & Haarmans, G. (2006). http://subversion.open.collab.net/articles/IntroductionTo VersionControl.html. Rosenberg, D., & Matt, S. (2007). Use Case Driven Object Modelling with UML. Apress Publisher. SpringSource. (2010). http://static.springsource.org/spring/docs/3.0.x/springframework-reference/html/overview.html. Subversion, A. (2011). FAQ. Dipetik Februari 21, 2011, dari Apache Subversion Features: http://subversion.apache.org/docs/ Tempo, I. (2007, Februari 20). Belanja TI Indonesia US$ 4 Miliar Tahun Ini. Dipetik Februari 24, 2010, dari http://www.tempointeraktif.com: http://www.tempointeraktif.com/hg/ekbis/2007/02/20/brk, 20070220-93734,id.html Walls, C. (2009). Creating Flexible Applications with OSGi and Spring. Dallas: www.pragprog.com. Westland, J. (2006). The Project Management Life Cycle. London: Kogan Page Limited.