Rekayasa perangkat lunak (RPL, atau dalam bahasa Inggris: Software Engineering atau SE) adalah satu bidang profesi yang mendalami cara-cara pengembangan perangkat lunak termasuk pembuatan, pemeliharaan, manajemen organisasi pengembanganan perangkat lunak dan sebagainya. Istilah software engineering, pertama kali digunakan pada akhir tahun 1950-an dan sekitar awal 1960-an. Pada tahun 1968, NATO menyelenggarakan konferensi tentang software engineering di Jerman dan kemudian dilanjutkan pada tahun 1969. Meski penggunaan kata software engineering dalam konferensi tersebut menimbulkan debat tajam tentang aspek engineering dari pengembangan perangkat lunak, banyak pihak yang menganggap konferensi tersebutlah yang menjadi awal tumbuhnya profesi rekayasa perangkat lunak Kategori perangkat lunak. Arsitektur perangkat lunak Pemrograman komputer Pengembangan perangkat lunak Pengujian perangkat lunak Proyek perangkat lunak Kategori Arsitektur perangkat lunak. Komputasi konkuren (1) Komputasi terdistribusi (3)
Kategori Komputansi konkuren dibagi 2 : Kluster komputerCluster, dalam ilmu komputer dan jaringan komputer adalah sekumpulan komputer (umumnya server jaringan) independen yang beroperasi dan terlihat oleh klien jaringan seolah-olah komputer-komputer tersebut adalah satu buah unit komputer. Proses menghubungkan beberapa komputer agar dapat bekerja seperti itu dinamakan dengan Clustering. Cluster didesain agar meningkatkan kemampuan sebuah server, yakni dengan meningkatkan hal-hal berikut: •
Toleransi kesalahan (fault tolerance), yang dapat menyebabkan server lainnya akan mengambil alih kerja server utama ketika server utama mengalami kegagalan. Client tidak akan melihat pergantian peran ini. Dengan begitu, downtime pun dapat dikurangi secara drastis.
•
Penyerataan beban (load-balancing), yang dapat mendistribusikan beban server ke semua server anggota cluster. Dengan begitu, kinerja dan skalabilitas server pun menjadi relatif lebih baik.
Beberapa sistem yang mendukung cluster antara lain: • • • • • • •
Windows NT Server, Enterprise Edition, dengan sebuah layanan yang disebut Microsoft Cluster Service (MSCS) Windows 2000 Advanced Server, dengan sebuah layanan yang disebut dengan Microsoft Clustering Service Windows 2000 Datacenter Server Windows Server 2003 Enterprise Edition (x86/IA-64/x64), dengan sebuah layanan yang disebut sebagai Microsoft Clustering Service Windows Server 2003 Datacenter Edition (x86/IA-64/x64) Solaris UNIX GNU/Linux
Karena menggunakan lebih dari satu buah server, maka manajemen dan perawatan sebuah cluster jauh lebih rumit dibandingkan dengan manajemen server tunggal yang memiliki skalabilitas tinggi (semacam IBM AS/400), meski lebih murah. ThreadThread dalam ilmu komputer adalah singkatan dari "thread of execution", didefinisikan sebagai sekumpulan instruksi yang dapat dieksekusi secara paralel dengan thread lainnya, dengan menggunakan metode time slice (ketika satu prosesor melakukan perpindahan antara satu thread ke thread lainnya) atau multiprocess (ketika threadthread tersebut dieksekusi oleh prosesor yang berbeda dalam satu sistem). Thread sebenarnya mirip dengan proses, tapi cara berbagi sumber daya antara proses dengan thread adalah sangat berbeda. Multiplethread dapat dieksekusi secara paralelel pada sistem komputer. Secara umum multithreading melakukan time-slicing (sama dengan time-division multipleks), dimana sebuah prosesor bekerja pada thread yang berbda, dimana suatu kasus ditangani tidak sepenuhnya secara simultan, untuk prosesor singel pada dasarnya benar-benar melakukan sebuah pekerjaan pada satu waktu. Teknik switching ini memungkinkan prosesor seolah-olah bekerja secara simultan. Komputasi terdistribusi terbagi menjadi 3 : P2P merupakan singkatan dari Peer-to-Peer (bahasa Inggris) atau teknologi dari “ujung” ke “ujung” pertama kali di luncurkan dan dipopulerkan oleh aplikasi-aplikasi “berbagi-berkas” (file sharing) seperti Napster dan KaZaA. Pada konteks ini teknologi P2P memungkinkan para pengguna untuk berbagi, mencari dan mengunduh berkas. Sistem P2P yang sebenarnya adalah suatu sistem yang tidak hanya menghubungkan “ujung” satu dengan lainnya, namun ujung-ujung ini saling berhubungan secara dinamis dan berpartisipasi dalam mengarahkan lalulintas komunikasi informasi-, pemrosesan-, dan penugasan pembagian bandwidht yang intensif, dimana bila sistem ini tidak ada, tugas-tugas ini biasanya diemban oleh server pusat.
Aplikasi P2P yang sebenarnya memerlukan satuan tim-tim kecil dengan ide cemerlang untuk mengembangkan perangkat lunak dan bisnis-bisnis yang mungkin dilakukan oleh perangkat tersebut – dan mungkin saja bisa membuat perusahaan besar yang sudah ada gulung tikar. P2P yang sebenarnya, bila diaplikasikan pada pasar yang sudah matang dan stabil adalah teknologi yang "mengganggu". Ide mengenai konsep ini muncul kira-kira pada akhir dekade 1980-an, ketika jaringan komputer dan tentunya juga komputer telah mulai masuk ke dalam salah satu barang wajib dalam perusahaan, baik itu perusahaan kecil maupun besar. Tetapi, arsitektur ini berkembang dalam jaringan yang terlalu kecil untuk memiliki sebuah server yang terdedikasi, sehingga setiap komputer klien pun menyediakan layanan untuk berbagi data untuk melakukan kolaborasi antara pengguna. Jaringan peer-to-peer pun mulai banyak digemari ketika Microsoft merilis sistem operasi Windows for Workgroups, meski sebelumnya sistem operasi MS-DOS (atau IBM PC-DOS) dengan perangkat MS-NET (atau PC-NET) juga dapat digunakan untuk tujuan ini. Karakteristik kunci jaringan tersebut adalah dalam jaringan ini tidak terdapat sebuah server pusat yang mengatur klien-klien, karena memang setiap komputer bertindak sebagai server untuk komputer klien lainnya. Sistem keamanan yang ditawarkan oleh metode ini terbilang lebih rendah dibandingkan dengan metode klien/server dan manajemen terhadapnya pun menjadi relatif lebih rumit. Konsep ini pun kemudian berevolusi pada beberapa tahun terakhir, khususnya ketika jaringan Internet menjadi jaringan yang sangat besar. Hal ini mulai muncul kirakira pada akhir dekade 1990-an, di saat banyak pengguna Internet mengunduh banyak berkas musik mp3 dengan menggunakan metode peer-to-peer dengan menggunakan program Napster yang menuai kritik pedas dari industri musik, seperti halnya Metallica dan banyak lainnya. Napster, pada saat dituntut oleh para pekerja industri musik, dikatakan memiliki anggota lebih dari 20 juta pengguna di seluruh dunia. Selanjutnya beberapa aplikasi juga dibuat dengan menggunakan konsep ini: eDonkey, Kazaa, BitTorrent, dan masih banyak lainnya. Meski banyak aplikasi peer-to-peer ini digunakan oleh pengguna rumahan, ternyata sistem ini juga diminati oleh banyak perusahaan juga. [Berbagi data terdistribusi Pengompres berkas adalah suatu perangkat lunak yang digunakan untuk menyatukan beberapa berkas menjadi satu atau beberapa berkas arsip untuk memudahkan pemindahan atau penyimpanan. Umumnya pengompres berkas menggunakan teknologi loosless data compression untuk mengurangi ukuran arsip yang berguna untuk memindahkan sejumlah besar berkas melewati jaringan yang memiliki latensi tinggi seperti internet.
Daftar pengompres berkas • • • • •
7zip WinAce WinZip WinRar ZipZag
Web service Kategori ini memiliki 3 halaman, dari total 3. Layanan webWeb Service Sepenuhnya berdasarkan standard web dan xml. Web Service dapat membantu: • • • •
Perantara pada integrasi platform sepanjang eksekusi mesin virtual. Integrasi antara Web dan OO middleware. Integrasi dari aliran kerja terisolasi dan sevice-service (Web Services Flow Language - WSFL). Pertukaran data pada aplikasi yang berbeda-beda (X-Schema, XSLT ++)
•
(Masa depan: standarisasi dari info konteks antara web servis dan klien – integrasi servis horizontal).
•
Pemain utama dan standard-standard
Microsoft: .NET SUN: Open Net Environment (ONE) IBM: Web Service Conceptual Architecture (WSCA) W3C: Web Service Workshop Oracle: Web Service Broker Hewlett-Packard: Web Service Platform •
Kemampuan aplikasi, fungsi atau operasi yang di ekspos untuk program lain melalui standard yang terbuka, dan interoperable.
•
“payloads” didefinisikan sebagai XML.
•
“transports” melalui http atau Internet protocol terbuka lainnya.
•
Data diakses dari berbagai bahasa pemrograman , platform hardware atau system operasi.
•
Middleware dari Internet.
Keuntungan penggunaan Web Service • • • • • • • • • • • • • • • •
Format penggunaan terbuka untuk semua platform. Mudah di mengerti dan mudah men-debug. Dukungan interface yang stabil. Menggunakan standard-standard “membuka service sekali” dan mempunyai pemakai banyak. Mudah untuk menengahi pesan-pesan proses dan menambahkan nilai. Routing and pengiriman. Security. management and monitoring. schema and service design. Akselerasi. mudah untuk mengembangkan dengan semantic transport tambahan. Terbuka, standard-standard berbasis teks. Pencapaian modular. Tidak mahal untuk diimplementasikan (relatif). Mengurangi biaya integrasi aplikasi enterprise. Implementasi yang incremental.
•
XML memungkinkan pengembang software untuk meng-expose sumber daya berharga pada bentuk yang memilki interoperabilitas tinggi, dimana sumber daya ini adalah semua tipe aplikasi atau pnyimpanan data yang digunakan oleh antar organisasi. Arsitektur XML Web services mendefinisikan mekanisme standard untuk menyediakan sumber daya melalui pengiriman pesan XML. Untuk mengakses sumber daya hanya dengan mentransmisikan pesan-pesan XML melalui protokol standard seperti TCP, HTTP, atau SMTP. Kata “Web Service” (singkatnya “service”) mengacu pada bagian kode yang mengimplementasikan interface XML menjadi sumber daya, dimana bias jadi sulit diakses
•
Arsitektur ini memungkinkan untuk konsumen dengan dukungan XML terintegrasi dengan aplikasi Web Service. Bagaimanapun, untuk memenuhi ini, konsumen harus menentukan antarmuka XML yang tepat sepanjang dengan pesan pesan yang beraneka ragam dan mempunyai detail-detail yang tepat. Skema XML dapat memnuhi kebutuhan ini karena mengizinkan pengembang untuk menjabarkan struktur dari pesan-pesan XML. Skema XML sendiri, bagaimanapun, tidak dapat menjabarkan detail-detail tambahan menyangkut komunikasi dengan Web Service. Definisi skema memberitahu pesan-pesan XML apa yang dapat digunakan tapi tidak bagaimana pesan-pesan tersebut berhubungan satu sama lain. Sebagai contoh, jika ada elemen XML dinamai Add dan nama lain AddResponse, ini sepertinya kedua nama tersebut berhubungan tapi tidak dapat mengindikasikan skemanya. Oleh sebab itu, sebagai tambahan untuk mengetahui pesan-pesan, konsumen harus juga mengetahui kemungkinan pertukaran pesan yang didukung
•
oleh Web Service (contoh:., jika anda mengirim pesan Add, anda mendapatkan pesan kembali berupa AddResponse). Pertukaran pesan dapat dimaksudkan sebagai pertukaran operasi. Operasi-operasi yang dilakukan konsumen kebanyakan pada point penting menginteraksikan service (Lihat gambar 2). Setiap kali menggunakan Web Service, akan dilakukan inspeksi daftar operasi yang didukung untuk mendapatkan semua proses yang tersedia. •
•
•
•
Ini biasa untuk developer untuk mengelompokkan operasi-operasi terhubung menjadi antarmuka-antarmuka. Konsumen harus mengetahui pengelompokkan ini mempengaruhi cara mereka membuat kode. Ini sungguh penting untuk developer-developer yang bekerja dengan Web Service pada lingkup berorientasi objek karena antarmuka XML dapat memetakan menjadi antarmuka programmatis (atau kelas-kelas abstract) pada pilihan bahasa yang dipilih. Konsumen juga harus mengetahui protocol komunikasi apa yang digunakan untuk pengiriman pesan menuju service, sepanjang mekanisme spesifik yang terlibat saat menggunakan protokol yang ditentukan seperti pada penggunaan perintah, header-header, kode error. Pembungkusan (binding) menspesifikasikan detail-detail konkrit atas apa yang terjadi pada kabel (wire) dengan mensketsakan cara penggunaan antarmuka dengan protokol komunikasi khusus. Binding juga mempengaruhi cara peasn-pesan abstract di enkodisasi pada wire dengan menspesifikasikan style dari service (document vs. RPC) dan mekanisme enkodisasi (literal vs. terenkodisasi). Service dapat mendukung binding-binding ganda pada antarmuka yang ditentukan, tapi setiap binding harus dapta diakses pada alamat unik yang diidentifikasikan oleh URI, juga ditujukan sebagai titik akhir dari Web Service (lihat gambar 3). Konsumen harus mencari tahu semua detail-detail yang dijabarkan sebelum mereka dapat berinteraksi menggunakan Web Service.
Sejarah •
Sebelum kita memasukki sejarah tentang Web Service, adabaiknya kita terlebih dahulu mebahas masalah paradigma pekembangan bahasa pemrograman terlebih dahulu.
Sejarah bahasa pemrograman adalah: • • • • • •
Pemrograman terstruktur. Pemrograman berorientasi- objek. Komputasi terdistribusi. Pertukaran data elektronik. World Wide Web. Web services.
Ada pun perusahaan yang mengusulkan konsep web service adalah: • • • •
Hewlett-Packard's e-Speak pada 1999 adalah penyedia e-service. Microsoft memperkenalkan nama "web services" pada Juni 2000. Microsoft “mempertaruhkan nama perusahaan" pada strategi web service ini. sekarang setiap vendor mulai menjadi “pemain”.
•
Untuk lebih lanjut mengenai perkembangan sejarah Web service yang mana cikal bakal terbentuknya dari arsitektur DCE, dapat dilihat pada gambar 4: Sejarah terbentuknya Web Service. Dari gambar tersebut dapat dilihat bahwa XML Web Service mempunyai interoperabilitas yang sangat tinggi karena pengembang Web service terdiri dari banyak vendor.
•
] Mekanisme Kerja Sebelum memasuki mekanisme kerja yang terjadi pada Web Service, akan dibahas terlebih dahulu komponen-kompenen yang mempunyai peranan penting pada Web Service, komponen-komponen tersebut dapat dilihat pada standard-standard web service itu sendiri, dimana standard-standard web service adalah sebagai berikut: WSDL Web Services Description Language http://www.w3.org/TR/wsdl Deskripsi-deskripsi dari web service UDDI Universal Discovery, Description & Integration http://www.uddi.org/specification.html Registry mengenai deskripsi servis SOAP Simple Object Access Protocol http://www.w3.org/TR/SOAP/ Protokol transport untuk berkomunikasi antar web service Standard-standard lain: WSRP, WSIA, WSXL……. Selain standard-standard Web Service, juga ada Bagian-bagian Web Service (Web Service Dumpstack) yang mendeskripsikan task-task yang akan terjadi pada proses berjalannya web service, dimana task-task tersebut antara lain: Wire Protocols, Description, Discovery. Untuk lebih lanjut mengenai bagian-bagian Web Service maka dapat dilihat ilustrasinya pada gambar 5: Bagian-bagian Web Service . Wire Protocols Aturan utama: menyediakan standard, channel komunikasi flexible Aturan tambahan: menyediakan standard, representasi wire-level data yang flexible Keuntungan: interoperabilitas pada level terendah Deskripsi Aturan utama: menyediakan standard, jalan untuk menjabarkan apa dan bagaimana web service melakukan yang harus dilakukan dengan fleksibel. Keuntungan: interoperabilitas. Discovery Aturan utama: menyediakan standard, jalur untuk menemukan dimana web service di tempatkan dan bagaimana mencari informasi tambahan tentang apa yang
dilakukan web service dengan fleksibel Keuntungan: interoperabilitas, integrasi yang dinamis
UDDI Kemampuan atribut metadata untuk service-service didaftarkan pada UDDI, dan lalu menjalankan quei-queri berdasarkan pada metadata tersebut yang menengahi secara mutlak menuju tujuan dari UDDI pada kedua waktu desain dan waktu pengekskusian. UDDI (Universal Description, Discovery, and Integration) mempunyai tugas sebagai berikut: Deskripsi yang Programmatic dari bisnis dan sevice yang didukung Deskripsi yang Programmatic dari spesifikasi web service Model pemrograman dan schema. Tahap Pengembangan dan Implikasi Bisnis
TahapPengembangan. •
Sebelum melakukan pengembangan, harus diketahui dulu ruang lingkup pengembangan aplikasi berbasiskan Web Service menurut media protokolnya, adapun ruang lingkup aplikasi Web Service tersebut adalah”
Dalam korporasi firewall Untuk aplikasi enterprise terintegrasi ringan •
Antar korporasi firewall
Untuk digunakan pada layanan eksternal (contoh: passport) Untuuk menyediakan data untuk partner-partner •
Melalui Web
Aplikasi komposit Komponen-komponen AliranKerja
Sedangkan tahap-tahap pengembangan Web Service itu sendiri adalah: • • • • • • •
Discover – browse registry UDDI untuk mencari Web Service yang sudah ada untuk integrasi. Create or Transform –buat Web Service dari project-project yang ada. Build – satukan artifak yang ada sebagai SOAP dan service HTTP dan jabarkan pada WSDL. Deploy – Aplikasikan menjadi server aplikasi Websphere atau Tomcat. Test – Uji coba web service baik local (stand alone computer) atau secara remote. Develop – Bangun contoh aplikasi untuk memberi masukkan dalam membuat aplikasi klien Web service Publish – publikasikan / upload Web Service pada bisnis registri UDDI.
Kesimpulan Dari Makalah ini dapat diambil kesimpulan sebagai berikut: • •
• • • • • •
Web service adalah teknologi dengan resiko rendah (relatif) yang dapat digunakan untuk mengimplementasikan strategi bisnis beresiko tinggi. Web service berdasarkan middleware OO, XML dan konsep Internet Protokol, dan membantu pergerakkan dari sistem-sistem heterogen menuju sistem yang lebih homogen Banyak-vendor turut membuat standard Membuka semua jenis kesempatan untuk semua orang Incremental, non-intimidating, minimal technology play Kostumer memulai tanpa menunggu vendor-vendor Web service mentransformasikan web browser centris menjadi servis centris Tool-tool yang lebih baik bersifat open source
SOA (service oriented architecture, arsitektur berorientasi layanan) adalah suatu gaya arsitektur sistem yang membuat dan menggunakan proses bisnis dalam bentuk paket layanan sepanjang siklus hidupnya. SOA juga mendefinisikan dan menentukan arsitektur teknologi informasi (TI) yang dapat menunjang berbagai aplikasi untuk saling bertukar data dan berpartisipasi dalam proses bisnis. Fungsi-fungsi ini tidak terikat dengan sistem operasi dan bahasa pemrograman yang mendasari aplikasi-aplikasi tersebut. SOA membagi fungsi-fungsi menjadi unit-unit yang berbeda (layanan), yang dapat didistribusikan melalui suatu jaringan dan dikombinasikan serta digunakan ulang untuk membentuk aplikasi bisnis. Layanan-layanan ini saling berkomunikasi dengan mempertukarkan data antar mereka atau dengan mengkoordinasikan aktivitas antara dua atau lebih layanan. Konsep SOA sering dianggap didasari atau berkembang dari konsepkonsep yang lebih lama dari komputasi terdistribusi dan pemrograman modular.
Pranala luar Open SOA SOA Practitioner's Guide Common XML Vocabularies Specific XML Vocabularies Info World SOA Executive Conference May 2007
• • • • •
•
WSDLWSDL (Web Services Description Language) adalah fromat XML yang diterbitkan untuk menerangkan web service.
WSDL mendefinisikan: • • • •
pesan-pesan (baik yang abstrak dan kongkrit) yang dikirim ke dan menuju web service koleksi-koleksi digital dari pesan-pesan (port type, antarmuka) bagaimana port type yang ditentukan dijadikan wire protokol di mana servis ditempatkan
WSDL menyediakan sebuah kamus XML untuk menjabarkan detil-detil ini. WSDL digunakan di mana skema XML tidak digunakan lagi dengan menyediakan jalur pesanpesan grup menjadi operasi-operasi dan operasi-operasi menjadi antarmuka. Ini juga menyediakan jalur untuk medefinisikan binding-binding untuk setiap antamuka dan kombinasi protokol sepanjang alamat titik akhir utnuk setiap kalinya. Definisi WSDL yang lengkap terdiri dari seluruh informasi yang dibutuhkan untuk meminta web service. Pengembang yang mau mempermudah yang lain untuk mengakses service-servicenya harus menyediakan defisi-definisi WSDL. WSDL memainkan peranan penting pada seluruh arsitektur web service semenjak menjabarkan kontrak lengkap pada komunikasi aplikasi (sama seperti peran IDL pada arsitektur DCOM). Walaupun teknik-teknik lain untuk menjabarkan Web service ada, WS-I Basic Profile Versi 1.0 memadati penggunaan WSDL dan skema XML untuk menjabarkan web service. Ini membantu untuk memastikan interoperbilitas pada layer deskripsi servis. Karena WSDL adalah mesin yang dapat dibaca (misalnya hanya file XML), tool-tool dan infrastruktur dan dengan mudah dibuat seputar ini. Saat ini pengembang-pngembang dapat definisi-definisi WSDL untuk membangun kode yang tahu dengan tepat bagaimana berinteraksi dengan web service yang menjabrkan. Pembangunan code tipe ini menyembunyikan detil-detil membosankan yang terlibat pada pengiriman dan penrimaan pesan-pesan SOAP pada protokol-protokol yang berbeda-beda dan menyebabkan web service dapat dicapai oleh massa. Microsoft® .NET Framework menggunakan utilitas command-line bernama wsdl.exe yang mengenerasi kelas-kelas dari definsi WSDL. Wsdl.exe dapat meng-generasi satu kelas untuk menggunakanservice dan yang lainnya untuk mengimplementasikan service.(Apache axis menggunkaan utilitas yang sama bernama WSDL2Java yang melakukan fungsi yang sama pada kelas-kelas java.) Kelas-kelas digenerasi dari definisi WSDL sama harus mampu berkomunikasi dengan yang lain sepanjang antarmuka WSDL yang tersedia, tanpa memperhatikan bahasa pemrograman yang digunakan WSDL 1.1 mempertimbangkan standar de facto saat ini karena dukungan industri yang luas. Kebanyakan toolkit-toolkit web service mendukung WSDL 1.1, tapi ada sedikit masalah interoperabilitas pada implementasi berbeda. Kebanyakan pembangunpembangun percaya bahwa fleksibilitas yang luas dari WSDL (dan kompleksitas hasil) adalah sumber fundamental dari masalah ini. WS-I telah membantu memecahkan beberapa dari masalah ini dengan memkasakan pengembang-pengembang untuk
menggunakan bagian-bagian tepat dari spesifikasi dan tidak menganjurkan mereka untuk menggunakan yang lainnya. W3C secara aktif bekerja pada versi WSDL “terdaftar” terakhir, WSDL 1.2, tapi saat ini hanya working draft dan tidak didukung oleh toolkit-toolkit mainstream, jika ada. •