BAB 2 LANDASAN TEORI 2.1 Software Engineering 2.1.1 Pengertian Software Engineering Software Engineering adalah sebuah disiplin engineering yang memperhatikan semua aspek produksi software mulai dari tahap awal spesifikasi sistem sampai perawatan sistem setelah sistem telah berjalan. Dalam definisi ini ada dua kata kunci : 1. Disiplin engineering. Para insinyur mengaplikasikan teori, metodologi, dan alat-alat yang mereka miliki sebagaimana diperlukan, tetapi kadangkala mereka juga mencari solusi baru suatu permasalahan meskipun tidak ada teori/metodologi yang mendukung. 2. Semua aspek produksi software. Software engineering tidak hanya terfokus pada halhal teknis pengembangan software tapi juga aktivitas-aktivitas seperti manajemen proyek dan pengembangan teori, metodologi, dan alat untuk mendukung pengembangan software. Secara umum, software engineers mengadopsi pendekatan sistematis dan terorganisir dalam pekerjaan mereka, mengingat ini merupakan teknik yang paling efektif. Tapi engineering itu sendiri berfokus pada penyeleksian metode-metode yang sesuai dengan masalah yang dihadapi dan terkadang suatu pendekatan yang kurang formal ternyata lebih cocok untuk penyelesaian masalah. Hal ini berlaku terutama pada konteks pengembangan sistem berbasis web yang memerlukan pencampuran antara keahlian software (teknikal) dan desain grafis. (Sommervile, 2006 : 7) 6 7 2.1.2 Waterfall Model Waterfall Model merupakan sebuah metodologi dalam pengembangan software yang alurnya sekuensial seperti sebuah air terjun. Gambar 2.1 Linear Sequential Model Ada lima tahapan dalam waterfall model, yaitu : (Pressman, 2010 : 39) a. Komunikasi Proses mempelajari berbagai masalah bisnis yang direncanakan untuk dicari solusinya. Tahap ini menentukan masalah bisnisnya, mengidentifikasi berbagai penyebabnya, menspesifikasi solusi, dan mengidentifikasi kebutuhan informasi yang harus dipenuhi solusi. b. Perencanaan Tahap ini berfokus pada perencanaan untuk tiga bagian utama, yaitu estimating (perkiraan) misalnya untuk perkiraan biaya, waktu, tenaga kerja, scheduling (penjadwalan), dan tracking (pengawasan) terhadap perkembangan proyek. c. Modelling Proses membuat perancangan-perancangan seperti rancangan sistem , rancangan layar, rancangan basis data, dsb. 8 d. Konstruksi Proses pembuatan software secara teknis, yaitu menulis baris-baris kode bahasa pemrograman tertentu yang nantinya akan membentuk sebuah software . e. Peluncuran Software yang telah dibuat dan dianggap memenuhi kriteria yang diharapkan akan di-implementasi. Setelah di-implementasi, pihak pengembang software (atau pihak yang bertanggung jawab) harus memastikan adanya dukungandukungan terhadap penggunaan software yang telah di-implementasi. Dukungan ini misalnya berupa customer support , maintenance, dsb. 2.1.3 Unified Modelling Language (UML) Unified Modeling Language (UML) adalah tujuan umum dari bahasa pemodelan visual untuk sebuah sistem. UML dirancang untuk menggabungkan praktek terbaik saat ini dalam pemodelan teknik dan rekayasa perangkat lunak. (Arlow, 2002 : 5) Pada dasarnya UML merupakan sebuah tools (alat) yang digunakan untuk membuat permodelan dan representasi sistem dengan menggunakan teknik analisis dan desain berbasis objek. 2.1.3.1 Use Case Diagram Sebuah use case diagram menampilkan hubungan antara aktor dan use case dalam suatu sistem. (Ambler, 2005 : 33) Pedoman penulisan use case : • Gunakan strong verb 9 • Beri nama use case dengan domain terminology • Berikan kesan pengurutan waktu pelaksaan dalam pengurutan use case Gambar 2.2 Use Case Diagram 2.1.3.2 Use Case Spesification Use case specification dapat disebut juga sebagai scenario. Use case specification menjabarkan urutan-urutan langkah aksi yang dilakukan dalam suatu usecase. (Ambler, 2005 : 40) 2.1.3.3 Activity Diagram Activity diagram merupakan model ekuivalen untuk pengembangan berorientasi objek dari flowchart dan flow diagram yang digunakan dalam pengembangan terstruktur. (Ambler, 2005 : 113) Pada dasarnya, activity diagram merupakan gambaran lain dari use case specification. Activity diagram menggambarkan urutan alur kerja suatu use case dalam bahasa awam, sehingga mudah dimengerti oleh pihak non-teknikal. 10 Gambar 2.3 Activity Diagram 2.1.3.4 Conceptual Class Diagram Conceptual class diagram merupakan sebuah diagram yang menggambarkan relasi-relasi class dalam suatu use case. Use case yang dimaksud di sini bukanlah use case keseluruhan namun poin (digambarkan berbentuk oval dalam use case diagram). (Ambler, 2005 : 55) 2.1.3.5 Sequence Diagram Sequence diagram berguna untuk : (Ambler, 2005 :80) • Validasi dan menjelaskan logika dan alur suatu aktivitas • Detect bottlenecks within an object oriented design 11 Gambar 2.4 Sequence Diagram 2.1.3.6 Class Diagram Class diagram menampilkan classes dari suatu sistem, hubungan antar class tersebut, serta atribut dan operasi dari masing-masing class. Class diagram berguna untuk : (Ambler, 2005 : 47) • Eksplorasi domain concept dalam bentuk domain model • Menganalisa requirement dalam bentuk model konseptual • Menggambarkan desain dari object oriented software Apabila conceptual class diagram menggambarkan relasi antar class dari suatu use case/sequence, maka class diagram menggambarkan relasi class secara keseluruhan sistem. 12 Gambar 2.5 Class Diagram 2.2 Database (Basis Data) 2.2.1 Pengertian Database Berikut beberapa pengertian tentang basis data, yaitu : (Indrajani, 2011 : 2) • Kumpulan terpadu dari elemen data logis yang saling berhubungan. Basis data mengonsolidasi banyak catatan yang sebelumnya disimpan dalam file terpisah. • Merupakan suatu kumpulan data yang berhubungan secara logis dan deskripsi data tersebut, yang dirancang untuk memenuhi informasi yang dibutuhkan oleh suatu organisasi. Artinya, basis data merupakan tempat penyimpanan data yang besar, di mana dapat digunakan oleh banyak pengguna. Seluruh item basis data tidak lagi dimiliki oleh satu departemen melainkan seluruh sumber daya perusahaan yang dapat digunakan bersama. 13 2.2.1 DBMS (Database Management System) (Database Management Sistem (DBMS) adalah perangkat lunak komputer khusus yang disediakan dari vendor-vendor komputer yang digunakan untuk membuat, mengakses, mengontrol, dan mengelola database. (Whitten, 2004 : 20) Keuntungan dari DBMS adalah: (Indrajani, 2011 : 9) 1. Mengontrol redundansi data 2. Konsistensi data 3. Informasi lebih dari sejumlah data yang sama 4. Pemakaian data bersama 5. Meningkatnya integritas data 6. Meningkatnya keamanan database 7. Meningkatnya standardisasi 8. Meningkatnya skala ekonomi 9. Keseimbangan konflik kebutuhan 10. Meningkatnya akses data dan tanggapan 11. Meningkatnya produktivitas 12. Meningkatnya pemeliharaan data karena independensi data 13. Meningkatnya konkurensi data 14. Meningkatnya service backup dan recovery 2.2.2 ERD (Entity Relationship Diagram) ERD (Entity Relationship Diagram) merupakan sebuah model diagram yang menggambarkan hubungan objek-objek dalam suatu database. (Connoly, 2005 : 342) Dengan kata lain, ERD merupakan representasi logik dari suatu basis data. 14 Gambar 2.6 ER Diagram 2.2.3 Microsoft SQL Server SQL server adalah produk utama Microsoft dalam bidang basis data, mulai dari SQL Server Express yang ditujukan untuk kelas bawah sampai SQL Server Enterprise Edition yang ditujukan bagi semua kelas pengguna. SQL Server hanya dapat dijalankan pada sistem operasi produksi Microsoft (misalnya Windows). Transact-SQL pada SQL Server juga kompatibel dengan ODBC, OLE DB, dan ADO.NET. (Taylor, 2011 : 247) 2.3 .NET Framework .NET Framework merupakan sebuah software framework yang dikembangkan Microsoft dan berjalan pada sistem operasi berbasis Windows. Program yang ditulis untuk .NET Framework dieksekusi dalam lingkungan software yang biasa disebut CLR (Common Language Runtime). CLR merupakan sebuah aplikasi mesin virtual yang menyediakan servis seperti sekuritas, manajemen memori, dan penanganan eksepsi. CLR dan class library bersama-sama membentuk .NET . 15 Programmer membuat software dengan menggabungkan source code mereka dengan .NET Framework dan class libraries yang dimiliki .NET. Saat ini, bahasa yang umum digunakan untuk membuat aplikasi .NET adalah VB (Visual Basic) dan C#. Untuk bisa menjalankan aplikasi berbasis .NET , pada sistem yang akan digunakan haruslah telah ter-install .NET Framework sesuai versi yang digunakan oleh aplikasi tersebut. 2.4 Object/Relational Mapper Peran O/RM (Object Relational Mapper) adalah menjembatani jarak antara model relasional (database) dan model berorientasi objek. Menggunakan mapping files atau atribut dalam suatu objek bisnis, sebuah framework O/RM dapat digunakan untuk memaksa objek bisnis ke database dan mengambilnya via API (Application Programming Interface) dari framework ORM dengan sedikit atau tanpa SQL. (Millet, 2009 : 2) 2.4.1 NHibernate NHibernate adalah port dari framework Hibernate yang popular digunakan untuk Java. Hibernate telah beredar bertahun-tahun dan telah terbukti sebagai komponen yang tangguh (robust). ORM berkembang lambat di dunia .NET. tapi seiring waktu banyak pengembang yang mulai melihat keuntungan dari mengautomasi Data Access Layer mereka. (Millet, 2009 : 2) 16 2.5 Web Portal Sebuah portal menyediakan konten suatu aplikasi kepada user melalui sebuah tampilan layar yang konsisten. (ORACLE) 2.6 Performance Testing Performance testing merupakan sebuah testing secara umum untuk menentukan performa suatu sistem dari segi responsiveness dan stabilitas ketika sistem berada dalam tekanan tertentu. Dalam penulisan skripsi ini, penulis menggunakan 2 tools untuk pengujian performa web yang dibuat yaitu YSlow dan PageSpeed. 2.6.1 YSlow YSlow merupakan sebuah add-on bagi Mozilla Firefox maupun Google Chrome yang dikembangkan oleh Yahoo dan berguna untuk menganalisa halaman web dan menyarankan cara-cara untuk meningkatkan performanya berdasarkan aturan-aturan yg telah ditetapkan dan diimplementasi YSlow. Adapun fitur-fitur utama dari YSlow adalah : • Mengukur halaman web berdasar set aturan yang telah ada atau set aturan yang dibuat user • Memberikan saran-saran untuk peningkatan performa • Merangkum komponen halaman • Menampilkan statistik halaman 17 2.6.2 PageSpeed PageSpeed merupakan add-on (untuk Mozilla Firefox maupun Google Chrome) yang dikembangkan Google dan berguna untuk menganalisa performa halaman web. Perbedaan mendasar PageSpeed dan YSlow adalah YSlow menampilkan hasil analisa per komponen dengan grade A-F , sementara PageSpeed menampilkan skor 1-100 untuk setiap halaman. PageSpeed menggunakan set aturan yang telah ditetapkan, adapun aturan-aturan tersebut adalah sebagai berikut : (GoogleDevelopers) • Optimize caching Sebagian besar halaman web menggunakan sumber daya/komponen yang berubah-ubah, seperti dokumen CSS , Javascript, dsb. Komponen-komponen ini memerlukan waktu untuk diunduh melewati jaringan, sehingga secara keseluruhan mempengaruhi kecepatan akses halaman web. HTTP caching memungkinkan komponen-komponen tersebut untuk disimpan, atau biasa disebut cached, berdasar browser atau proxy. Dengan metode ini, ketika pengguna mengakses suatu halaman, maka browser akan me-load komponen yang tersimpan (cached) secara lokal dan tidak perlu mengunduh komponennya secara langsung dari server, sehingga mengurangi waktu loading halaman web bersangkutan. • Minimize round trip times Round-trip time (RTT) merupakan waktu yang dibutuhkan klien untuk mengirim request dan server untuk memberikan respon melewati jaringan, tidak termasuk waktu yang dibutuhkan untuk transfer data. Lebih jelasnya, RTT melibatkan waktu yang dibutuhkan bagi request untuk dikirim dan dikembalikan lagi 18 melalui kabel, tapi tidak termasuk waktu yang dibutuhkan untuk sepenuhnya mengunduh byte data. Sebagai contoh, apabila suatu browser menginisiasi koneksi pertama kalinya ke sebuah web server, terjadi minimal 3 kali RTT : sekali untuk resolusi nama DNS, sekali untuk pengaturan koneksi TCP , dan sekali untuk HTTP request dan byte pertama dari HTTP response. • Minimize payload size Jumlah data yang dikirim dalam setiap respon server dapat menambah latency signifikan pada aplikasi, terutama pada area dimana bandwith-nya terbatas. Minimasi ukuran payload pada sumber daya dinamis dan statis dapat mengurangi latency jaringan secara signifikan. Selain itu, untuk scripts yang tercached, pengurangan ukuran byte dokumen bersangkutan mempercepat waktu yang dibutuhkan oleh browser untuk mengeksekusi dan me-render halaman web. • Minimize request overhead Setiap kali klien mengirimkan sebuah HTTP request, klien harus mengirim semua associated cookies yang telah diset untuk domain bersangkutan. Umumnya pengguna memiliki koneksi internet yang asimetris, dimana rasio koneksi i jauh lebih besar daripada upload. Contohnya, sebuah HTTP header request sebesar 500 byte dapat menghabiskan waktu yang setara untuk mengunduh sebuah data HTTP response sebesar 10KB. Cara terbaik untuk menurunkan waktu request klien adalah dengan mengurangi jumlah byte yang diupload sebagai request header data. 19 • Optimize browser rendering Begitu sumber daya telah diunduh ke klien, browser masih harus me-load , interpretasi, dan render kode HTML, CSS, dan Javascript. Memformat kode dan halaman dalam cara-cara yang mengeksploitasi karakteristik browser yang digunakan dapat meningkatkan performa pada sisi klien.