Rabu, 13 Juni 2012

Software Maintenance untuk Software Engineers


[Tulisan ini dibuat untuk Calon Mahasiswa Informatika, para mahasiswa program studi informatika dan khalayak umum yang ingin mengetahui kompetensi dasar seorang software engineers; untuk tulisan saya sebelumnya yang terkait dengan bagian ini, dapat dilihat disini:
1) Problem Solving untuk Software Engineers disini: http://stanleykarouw.blogspot.com/2012/06/problem-solving-untuk-software.html
2) Matematika Dasar untuk Software Engineers disini: http://stanleykarouw.blogspot.com/2012/06/matematika-dasar-untuk-software.html
3) Dasar Komputasi untuk Software Engineers disini: http://stanleykarouw.blogspot.com/2012/06/dasar-komputasi-untuk-software.html
4) Software Construction untuk Software Engineers disini:
5) Software Modelling untuk Software Engineers disini: http://stanleykarouw.blogspot.com/2012/06/software-modelling-untuk-software.html
6) Software Configuration untuk Software Engineers disini:
http://stanleykarouw.blogspot.com/2012/06/software-configuration-untuk-software.html
karena tulisan ini merupakan tulisan bersambung mengenai topik Kompetensi Yang Harus dimiliki seorang Software Engineers]
Seorang software engineers secara umum, harus memiliki keahlian dalam SOFTWARE DEVELOPMENT atau pengembangan perangkat lunak. Software Development dapat dibagi menjadi beberapa bagian utama, yakni:

  • Software Construction (Konstruksi Software)
  • Software Engineering Models and Methods (Pemodelan Software)
  • Software Maintenance (Perawatan Software)
  • Software Configuration (Konfigurasi Software)
Pada bagian ini, saya akan menulis tentang Software Maintenance atau Perawatan Perangkat Lunak. Pembahasan tentang perawatan perangkat lunak, merupakan bagian yang sangat penting, disamping software construction atau software modelling. Terlebih, bagian ini merupakan bahasan yang paling sering disalahpahami oleh kaum awam, bahkan para mahasiswa Teknik Informatika itu sendiri.
Perlu kita pahamai bersama, bahwa software maintenance itu merupakan termasuk dalam proses pengembangan perangkat lunak secara keseluruhan. Tujuan utama dari software maintenance adalah untuk memodifikasi software yang telah selesai dikerjakan sebelumnya, sambil mempertahankan integrity dari perangkat lunak tersebut. Perawatan perangkat lunak, awalnya sudah mulai dilakukan saat proses perencaanaan, pemodelan, pembangunan dan kebanyakan terjadi saat implementasi sistem.
Berikut adalah breakdown topik pembahasan dari Software Maintenance menurut versi SWEBOK IEEE Tahun 2012:
1. Dasar-dasar software maintenance; yakni definisi dan pembatasan masalah, nature dari perawatan perangkat lunak, kepentingan perawatan perangkat lunak, biaya perawatan perangkat lunak, evolusi (atau pembaharuan) perangkat lunak, klasifikasi perawatan perangkat lunak.
2. Isu - isu penting dalam software maintenance; yakni isu-isu teknis, isu-isu management, estimasi biaya perawatan perangkat lunak, pengukuran perawatan perangkat lunak.
3. Proses Perawatan Perangkat Lunak; terdiri atas proses dan aktivitas perawatan perangkat lunak.
4. Teknik Perawatan Perangkat Lunak, terdiri atas Program Comprehension, Re-engineering, Reverse Engineering, Migrasi dan Retirement.
5. Tools Perawatan Perangkat Lunak.

Minggu, 10 Juni 2012

Kumpulan Link Catatan Seminar

Membawakan seminar maupun diskusi mengenai dasar - dasar teknologi informasi adalah bagian tanggung jawab saya sebagai dosen dan pelayan kerohanian. Dibawah ini saya berikana beberapa link terkait materi seminar (atau diskusi) mengenai dasar - dasar teknologi informasi. Semoga dapat memberi manfaat.


Untuk Seri Materi Pengantar Teknologi Informasi bisa dilihat disini:
1. Pengantar Teknologi Informasi dan Tren menuju Tahun 2020, klik disini

2. Mengenai Paradigma Web 2.0, bisa dibaca disini (pendataran) dan disini (agility)

3. Mengenai Apa itu Web 2.0, klik disini
4. Untuk Film yang menjelaskan tentang Web 2.0 bisa dilihat disini

5. Tentang Monetizing Web 2.0 dapat dilihat disini.
6. Tentang Pengantar Cloud Computing (Komputasi Awan), bisa dilihat disini 
7. Tentang Wawasan Cybersecurity dapat dilihat disini

Beberapa Materi Terkait lainnya mengenai ketrampilan praktis dalam menggunakan Internet dan Browsing dapat dibaca pada link dibawah ini:
1. Manfaat Praktis Internet dan Aplikasi Browser, klik disini 
2. Manfaat Praktis Internet dan Aplikasi Mesin Pencari, klik disini 

Sebuah e-Book tentang Pengetahuan Dasar Internet bisa diunduh disini
Kumpulan Materi Seminar yang pernah saya lakukan, bisa diunduh disini.

Rabu, 06 Juni 2012

Software Configuration untuk Software Engineers

[Tulisan ini dibuat untuk Calon Mahasiswa Informatika, para mahasiswa program studi informatika dan khalayak umum yang ingin mengetahui kompetensi dasar seorang software engineers; untuk tulisan saya sebelumnya yang terkait dengan bagian ini, dapat dilihat disini:
1) Problem Solving untuk Software Engineers disini: http://stanleykarouw.blogspot.com/2012/06/problem-solving-untuk-software.html
2) Matematika Dasar untuk Software Engineers disini: http://stanleykarouw.blogspot.com/2012/06/matematika-dasar-untuk-software.html
3) Dasar Komputasi untuk Software Engineers disini: http://stanleykarouw.blogspot.com/2012/06/dasar-komputasi-untuk-software.html
4) Software Construction untuk Software Engineers disini:
5) Software Modelling untuk Software Engineers disini: http://stanleykarouw.blogspot.com/2012/06/software-modelling-untuk-software.html
karena tulisan ini merupakan tulisan bersambung mengenai topik Kompetensi Yang Harus dimiliki seorang Software Engineers]

Seorang software engineers secara umum, harus memiliki keahlian dalam SOFTWARE DEVELOPMENT atau pengembangan perangkat lunak. Software Development dapat dibagi menjadi beberapa bagian utama, yakni:
  • Software Construction (Konstruksi Software)
  • Software Engineering Models and Methods (Pemodelan dan Metode Software)
  • Software Maintenance (Perawatan Software)
  • Software Configuration (Konfigurasi Software)
Pada bagian ini saya akan menulis tentang Software Configuration atau Konfigurasi Perangkat Lunak. Apa yang dimaksud dengan software configuration? Konfigurasi perangkat lunak mengacu pada "interaksi" sebagai sistem pada perangkat lunak. Interaksi ini menyangkut setiap elemen yang mendukung, sehingga perangkat lunak bisa berfungsi sesuai peruntukannya. 
Dalam konteks konfigurasi perangkat lunak, maka karakteristik fisik dan fungsi lingkungan implementasi dan dokumentasi menjadi perhatian utama. Termasuk diantaranya adalah kumpulan spesifik (dalam versi tertentu) dari hardware, software dan firmware yang turut digunakan untuk pengembangan perangkat lunak. Fokus lainnya adalah "pengelolaan" dari konfigurasi sistem perangkat lunak tersebut. Misalnya pengelolaan perubahan persyaratan perangkat lunak ataupun traceability konfigurasi pada daur hidup pengembangan perangkat lunak.
IEEE/ISO/IEC 2010 mengartikan software configuration management sebagai
" A discipline applying technical and administrative direction and surveillance to: identify and document the functional and physical characteristics of a configuration item, control changes to those characteristics, record and report change processing and implementation status, and verify compliance with specific requirements"

Software Configuration meliputi aspek-aspek manajemen perangkat lunak, yang meliputi perencanaan, analisis dan perancangan, pengembangan, perawatan dan jaminan kualitas. Seperti pada Gambar diatas, ditampilkan dengan lengkap berbagai aspek yang terkait dengan kompetensi software engineers ini.

Berikut adalah topik bahasan yang terkait dengan Software Configuration Management (SCM):
1. Management Proses SCM, meliputi pembahasan: Organizational Context for SCM; Constraints and Guidance for SCM Process; Planning for SCM; SCM Plan; and Surveillance of SCM.
2. Software Configuration Identification, meliputi pembahasan: Identifying Items to be Controlled, Software Library.
3. Software Configuration Control, terkait dengan: Requesting, Evaluating and Approving Software Changes; Implementing Software Change; dan Deviation and Waivers.
4. Software Configuration Status Accounting, berkaitan dengan: Software Configuration Status Information; Software Configuration Status Reporting.
5. Software Configuration Auditing, membahas tentang: Software Functional Configuration Audit; Software Physical Configuration Audit, In-Process Audits of a Software Baseline.
6. Software Release Management and Delivery, terkait dengan topik-topik seperti: Software Building; Software Release Management
7. Software Configuration Management Tools

Software Modelling untuk Software Engineers


[Tulisan ini dibuat untuk Calon Mahasiswa Informatika, para mahasiswa program studi informatika dan khalayak umum yang ingin mengetahui kompetensi dasar seorang software engineers; untuk tulisan saya sebelumnya yang terkait dengan bagian ini, dapat dilihat disini:
1) Problem Solving untuk Software Engineers disini: http://stanleykarouw.blogspot.com/2012/06/problem-solving-untuk-software.html
2) Matematika Dasar untuk Software Engineers disini: http://stanleykarouw.blogspot.com/2012/06/matematika-dasar-untuk-software.html
3) Dasar Komputasi untuk Software Engineers disini: http://stanleykarouw.blogspot.com/2012/06/dasar-komputasi-untuk-software.html
4) Software Construction untuk Software Engineers disini:
karena tulisan ini merupakan tulisan bersambung mengenai topik Kompetensi Yang Harus dimiliki seorang Software Engineers]

Seorang software engineers secara umum, harus memiliki keahlian dalam SOFTWARE DEVELOPMENT atau pengembangan perangkat lunak. Software Development dapat dibagi menjadi beberapa bagian utama, yakni:
  • Software Construction (Konstruksi Software)
  • Software Engineering Models and Methods (Pemodelan dan Metode Software)
  • Software Maintenance (Perawatan Software)
  • Software Configuration (Konfigurasi Software)
Pada bagian ini saya akan menulis tentang Software Engineering Models and Methods.  Aspek ini terbagi pada dua bagian besar, yakni Pemodelan Perangkat Lunak dan Metode Pengembangan Perangkat Lunak. Selain, kontruksi perangkat lunak, maka pemodelan perangkat lunak merupakan kompetensi utama yang HARUS dimiliki oleh seorang software engineers.


Metode dan Pemodelan Perangkat Lunak merupakan struktur teknik informatika yang bertujuan untuk membuat konstruksi perangkat lunak berfokus pada aktivitas yang sistematis, repeatable dan success-oriented. Model perangkat lunak memberikan pendekatan baru dalam konstruksi perangkat lunak yang lebih "problem - solving", dengan menggunakan notasi dan prosedur yang menekankan proses analis dan perancangan perangkat lunak. Metode perangkat lunak menyediakan pemahaman kerangka kerja yang mengikuti "daur hidup", sehingga menuruti prinsip logis, berurutan dan berkesinambungan. Fokus kompetensi software engineers terkait bagian ini adalah pemahaman komprehensif tentang pengembangan perangkat lunak, mulai dari perencanaan, spesifikasi, perancangan, konstruksi, pengujian hingga implementasi.

Materi kurikulum terkait Software Engineering Models and Methods menurut Software Engineering Body of Knowledge IEEE adalah sebagai berikut:
1. Modelling
Modelling terbagi atas Modelling Principles, Properties and Expression; Syntax, Semantics dan Pragmatics; Pre-conditions, Post-conditions dan Invariants,
2. Types of Models
Tipe Model Perangkat Lunak terbagi atas: Information Modelling, Behavioral Modelling, Structure Modelling.
3. Analysis of Models
Analisis Model Perangkat Lunak terdiri atas: Analisis untuk Completeness, Analisis untuk Consistency, Analisis intik Correctness, Traceabiliy (keterlacakan/keterunutan) dan Analisis Interaksi.
4. Metode Perangkat Lunak
Bagian ini terdiri dari: Metode Heuristics, Metode Formal, Metode Prototyping dan Metode Agile.



Software Construction untuk Software Engineers

[Tulisan ini dibuat untuk Calon Mahasiswa Informatika, para mahasiswa program studi informatika dan khalayak umum yang ingin mengetahui kompetensi dasar seorang software engineers; untuk tulisan saya sebelumnya yang terkait dengan bagian ini, dapat dilihat disini:
1) Problem Solving untuk Software Engineers disini: http://stanleykarouw.blogspot.com/2012/06/problem-solving-untuk-software.html
2) Matematika Dasar untuk Software Engineers disini: http://stanleykarouw.blogspot.com/2012/06/matematika-dasar-untuk-software.html
3) Dasar Komputasi untuk Software Engineers disini: http://stanleykarouw.blogspot.com/2012/06/dasar-komputasi-untuk-software.html
karena tulisan ini merupakan tulisan bersambung mengenai topik Kompetensi Yang Harus dimiliki seorang Software Engineers]

Setelah menulis tentang ketiga topik diatas yang merupakan kompetensi dasar utama dari seorang software engineers, maka pada bagian ini, saya akan menulis tentang kompetensi keahlian seorang software engineers. Seorang software engineers secara umum, harus memiliki keahlian dalam SOFTWARE DEVELOPMENT atau pengembangan perangkat lunak. Software Development dapat dibagi menjadi beberapa bagian utama, yakni:
  • Software Construction (Konstruksi Software)
  • Software Engineering Models and Methods (Pemodelan dan Metode Software)
  • Software Maintenance (Perawatan Software)
  • Software Configuration (Konfigurasi Software)

(gambar diatas diambil dari http://cs.anu.edu.au/student/comp2100/ )

Pada bagian ini, saya akan membahas tentang Software Construction/Konstruksi Perangkat Lunak. Secara umum, yang dimaksud dengan Konstruksi Perangkat Lunak adalah keseluruhan aktivitas menciptakan perangkat lunak yang berfungsi dan bermanfaat melalui berbagai proses kodifikasi, verifikasi, pengujian dan pemeriksaan-ulang. Konstruksi Perangkat Lunak adalah kompetensi yang terkait dengan disain perangkat lunak dan pengujian perangkat lunak.
Dari sudut pandang akademisi dan praktisi maka konstruksi perangkat lunak merupakan "bagian" proses pengembangan perangkat lunak yang memiliki "highest volume of configuration items" (atau aktivitas-aktivitas konfigurasi yang diutamakan). Konstruksi perangkat lunak berhubungan dengan penulisan kode, pengujian kode dan pemeriksaan-ulang kode sehingga tentu saja berkaitan dengan kualitas perangkat lunak itu sendiri. Secara mendasar, maka kualitas perangkat lunak itu ditentukan oleh kualitas penulisan, pengujuan dan pemeriksaan-ulang kode.
Disamping itu, konstruksi perangkat lunak juga sangat berkaitan dengan "kemampuan komputasi" (terutama pengetahuan algoritma), karena penulisan kode, pengujian kode dan pemeriksaan-kode sangat membutuhkan pemahaman komputasi dasar secara komprehensif dan mendalam.

Berikut adalah beberapa topik bahasan dalam kurikulum Teknik Informatika yang dikeluarkan oleh IEEE Software Engineering Body of Knowlede (SWEBOK IEEE):

1. Dasar-dasar Konstruksi Perangkat Lunak
Dasar-dasar konstruksi perangkat lunak ini termasuk: penyederhanaan kompleksitas; antisipasi perubahan persyaratan perangkat lunak;  konstruksi untuk verifikasi perangkat lunak; guna-ulang (atau disebut "reuse") dan standarisasi konstruksi perangkat lunak.

2. Pengelolaan Konstruksi Perangkat Lunak
Topik bahasan yang termasuk pada bagian ini adalah: 
Model Daur Hidup konstruksi perangkat lunak; Perencanaan Perangkat Lunak dan Pengukuran Konstruksi Perangkat Lunak.

3. Aspek-aspek Praktis Konstruksi Perangkat Lunak
Meliputi pembahasan tentang: Disain konstruksi perangkat lunak, bahasa pemrograman, kodifikasi, pengujian perangkat lunak, konstruksi untuk guna-ulang (dan konstruksi dengan guna-ulang), jaminan kualitas perangkat lunak dan integrasi perangkat lunak.

4. Aspek-aspek Teknis Konstruksi Perangkat Lunak
Topik bahasan bagian ini meliputi: 
Disain API dan Penggunaannya; Object-oriented Run-time; Generalisasi dan Parameterisasi; Assertion, Design by Contract, Defensive Programming; Pengendalian Error, Pengendalian Exception, dan Fault Tolerance; Executable Models; State-based dan Teknik Konstruksi Table Driven; Run-time Configuration dan Internationalization; Grammer-based Input Processing; Concurrency Primitives; Middleware; Metode Konstruksi untuk Distributed Software; Kontruksi Heterogeneous Systems; Analisis Performance dan Tuning; Platform Standards; Test-first programming.

5. Tools Konstruksi Perangkat Lunak
Terkait dengan materi ini adalah: Development Environments; GUI Builders; Unit Testing Tools; Profiling, Performance Analysis dan Slicing Tools.