Rabu, 11 Desember 2013

SOFTWARE PROSES

Software Process :


Software : Perangkat lunak yang berfungsi membanti brainware menjalankan fungsi hardware.

 

Proses : Suatu urutan dalam menjalankan sesuatu baik yang terjadi secara alami ataupun yang sudah direncanakan.

 

Software Process : Urutan yang sudah direncanakan yang bertujuan untuk membuat sebuah software ataupun mengevaluasinya.

http://tmm999.blogspot.com/2012/04/dasar-dasar-rekayasa-perangkat-lunak.html

 

Ada 5 Generic Proses Framework :

  1. Communication

  2. Planning

  3. Modelling

  4. Construction 

  5. Deployment

http://dewaadeandrea.blogspot.com/2013/03/software-process.html

 

CMMI (Capability Maturity Model Integration atau Integrasi Model Kematangan Kemampuan)

adalah : metodologi yang mengutamakan keintergritaskan sebuah sistem agar mengurangi redudansi informasi yang dihasilkan.

 

Model CMMI yang terbaru ada 2 macam :

  • CMMI DEV (Development/Pengembangan)

  • CMMI ACQ (Acquisition /Akuisisi) 

http://id.wikipedia.org/wiki/CMMI

 

CMMI DEV :

  • Pada Agustus 2006 CMMI ver 1.2 CMMI-DEV (CMMI for Development) yang dirilis pada Agustus2006 dan ditunjukan untuk proses pengembangan produk dan jasa.

CMMI ACQ :

  • Pada November 2007 dirilis dan  ditujukan untuk manajemen rantai suplai, akuisisi, serta proses outsourching di pemerintah dan industri.

http://degazrinaldo17.blogspot.com/2011/06/cmmi-capability-maturity-model.html

 

Manfaat CMMI :

  • Berhasil meningkatkan kinerja organisasi dari sisi biaya, waktu, mutu, kepuasan pelanggan dan Return On Investment (ROI).

  • Meningkatkan produktivitas dan menekan resiko proyek.

  • Tersedianya 'Road Map' untuk peningkatn lebih lanjut.

  • Mempunyai fitur fitur yang bersifat institusional, yaitu komitmen, kemampuan untuk melakukan sesuatu, analisis dan pengukuran serta verifikasi implementasi.

  • Menekan resiko dalam pengembangan perangkat lunak.

http://jyoris.wordpress.com/2012/03/01/sekilas-cmmi-6/

 

Perusahaan yang sudah menerapkan CMMI :

  • Huawei

  • Toshiba

  • NASA

  • ATSI (the Association of Thai Software Industry

  • PT. Sigma Karya Sempurna

  • Bank Danamon, Divisi IT

http://jyoris.wordpress.com/2012/03/01/sekilas-cmmi-6/


Minggu, 08 Desember 2013

AGILE

'AGILE'

Where did 'Agile' come from ?

In 1970, Dr. Winston Royce presented a paper entitled “Managing the Development of Large Software Systems,” which criticized sequential development. He asserted that software should not be developed like an automobile on an assembly line, in which each piece is added in sequential phases. In such sequential phases, every phase of the project must be completed before the next phase can begin. Dr. Royce recommended against the phase based approach in which developers first gather all of a project’s requirements, then complete all of its architecture and design, then write all of the code, and so on. Royce specifically objected to this approach due to the lack of communication between the specialized groups that complete each phase of work.
It’s easy to see how the “waterfall” methodology is far from optimized compared to agile methodology. First of all, it assumes that every requirement of the project can be identified before any design or coding occurs. Put another way, do you think you could tell a team of developers everything that needed to be in a piece of software before it was up and running? Or would it be easier to describe your vision to the team if you could react to functional software? Many software developers have learned the answer to that question the hard way: At the end of a project, a team might have built the software it was asked to build, but, in the time it took to create, business realities have changed so dramatically that the product is irrelevant. In that scenario, a company has spent time and money to create software that no one wants. Couldn’t it have been possible to ensure the end product would still be relevant before it was actually finished?
 

What is Agile model – advantages, disadvantages and when to use it ?

 
 

Advantage of using Agile :
  • Customer satisfaction by rapid, continuous delivery of useful software.
  • People and interactions are emphasized rather than process and tools. Customers, developers and testers constantly interact with each other.
  • Working software is delivered frequently (weeks rather than months).
  • Face-to-face conversation is the best form of communication.
  • Close, daily cooperation between business people and developers.
  • Continuous attention to technical excellence and good design.
  • Regular adaptation to changing circumstances.
  • Even late changes in requirements are welcomed
Disadvantage of using Agile :
  • In case of some software deliverables, especially the large ones, it is difficult to assess the effort required at the beginning of the software development life cycle.
  • There is lack of emphasis on necessary designing and documentation.
  • The project can easily get taken off track if the customer representative is not clear what final outcome that they want.
  • Only senior programmers are capable of taking the kind of decisions required during the development process. Hence it has no place for newbie programmers, unless combined with experienced resources.
When to use Agile process ?
  • When new changes are needed to be implemented. The freedom agile gives to change is very important. New changes can be implemented at very little cost because of the frequency of new increments that are produced.
  • To implement a new feature the developers need to lose only the work of a few days, or even only hours, to roll back and implement it.
  • Unlike the waterfall model in agile model very limited planning is required to get started with the project. Agile assumes that the end users’ needs are ever changing in a dynamic business and IT world. Changes can be discussed and features can be newly effected or removed based on feedback. This effectively gives the customer the finished system they want or need.
  • Both system developers and stakeholders alike, find they also get more freedom of time and options than if the software was developed in a more rigid sequential way. Having options gives them the ability to leave important decisions until more or better data or even entire hosting programs are available; meaning the project can continue to move forward without fear of reaching a sudden standstill.

 How to use Agile Methodology :

 
Method 1 : Planning and Architecture
  1. Identify the high level scope
  2. Identify initial "requirements stack".
  3. Create initial requirements model. Use the company’s usage model, initial domain model, and initial user interface model to create the model for initial requirements.
  4. Assign an architecture team. The core architecture team is responsible for envisioning the initial architecture, then they bring the initial architecture to the project team for feedback. The architecture team should be comprised of developers whom are experienced in the technologies that your organization is working with and they should have the ability to work on architecture spikes to explore new technologies.
  5. Identify an architectural vision. Once a vision is created, assign an architecture owner.
  6. Complete the initial set-up and planning.
  7. Model the architecture.
Method 2 : Iteration
  1. Estimate the amount of work required for each requirement.
  2. Create a model for iteration. The model should be complete enough to give good estimates and include a plan for the work required for iteration.
  3. Complete Test Driven Design (TDD).
 
Method 3 : Test Driven Design (TDD)
  1. Add a test (add enough code to fail).
  2. Run the test. If the test passes go back to step 1. If the test fails continue to step 3.
  3. Make a little change to the code.
  4. Run the tests. If the test passes go back to step 3. If the test passes, but there are still development tests to complete return to step 1. It the test passes and development stops Continue to the Final Stage.
Method 4 : Final Stage
  1. Envision the initial architecture.
  2. Communicate architecture with stakeholders. If feedback from stakeholders requires changes go to step 3. If no changes are needed continue to step 4.
  3. Update architecture work products and their models. Once everything has been updated go back to step 2.
  4. Work with developers to complete project.

Rabu, 22 Mei 2013

RUP (Rational Unified Proses)


RUP (Rational Unified Process)


RUP merupakan suatu metode rekayasa perangkat lunak yang dikembangkan

dengan mengumpulkan berbagai best practises yang terdapat dalam

industri pengembangan perangkat lunak. Seperti yang udah dibahas di atas,

RUP dikembangkan oleh perusahaan Rational Software. RUP menggunakan

konsep object oriented, dengan aktifitas yang berfokus pada pengembangan

model dengan menggunakan Unified Model Language (UML).


Cara kerja RUP itu didasarkan pada 6 kunci prinsip bagi perkembangan bisnis yang terkendali yaitu :

 

1. Mengadaptasi proses

2. Menyeimbangkan prioritas dari para stakeholders

3. Melakukan kolaborasi antar tim

4. Mendemonstrasikan hasil-hasil yang ada secara berulang-ulang

5. Menaikkan level abtraksi dari sebuah software

6. Memfokuskan pada kualitas secara terus-menerus

 

(adopted by: http://k4t4ku.wordpress.com/2009/03/03/ruprational-unified-process/)


Tiga feature yang penting pada Rational Unified Process yang tidak boleh diabaikan, antara lain :

  1. Peran dari use case dalam mengontrol aspek dalam pengembangan.

  2. Penggunaannya sebagai kerangka proses yang dapat dikhususkan dan diperluaskan oleh suatu organisasi yang mengadopsinya.

  3. Kebutuhan akan tools pengembangan perangkat lunak dalam mendukung proses.

Tahap-tahap yang dilakukan Rational Unified Process antara lain tahapan insepsi, elaborasi, konstruksi, transisi.

 

1. Insepsi.

    • Merupakan tahap awal dari proses Rational Unified Process

    • Menentukan ruang lingkup objek

    • Membuat “business case”

    • Menjawab pertanyaan “apakah yang dikerjakan dapat menciptakaan ‘good business sense’ sehingga proyek dapat dijalankan”

2. Elaborasi

    • Merupakan tahapan kedua dalam perancangan perangkat lunak.

    • Menganalisa risiko dan berbagai persyaratan.

    • Menetapkan batasan-batasan pada perancangan perangkat lunak.

3.  Konstruksi

    • Tahap ketiga dalam pengimplementasian perancangan perangkat lunak.

    • Melakukan sederatan iterasi.

    • Pada setiap iterasi juga melibatkan proses-proses seperti analisa, desain, implementasi, coding.

4. Transisi

    • Tahapan terakhir untuk instalasi, deployment, dan sosialisasi perangkat lunak.

    • Melaksanakan apa yang sudah dimodelkan menjadi suatu produk jadi.

    • Dalam tahap ini dilakukan fase seperti:

      • Performance testing

      • Membuat dokumentasi tambahan.

      • Membuat peluncuran produk ke komunitas pengguna.

(adopted by: http://handzmentallist.blogspot.com/2012/04/rup-rational-unified-process.html)

 


Keuntungan Menggunakan RUP

 

Ada beberapa keuntungan dengan mengunakan RUP di antaranya :

  • Menyediakan akses yang mudah terhadap pengetahuan dasar bagi anggota tim.

  • Menyediakan petunjuk bagaimana menggunakan UML secara efektif.

  • Mendukung proses pengulangan dalam pengembangan software.

  • Memungkinkan adanya penambahan-penambahan pada proses.

  • Memungkinkan untuk secara sistematis mengontrol perubahan-perubahan yang
    terjadi pada software selama proses pengembangannya.

  • Memungkinkan untuk menjalankan test case dengan menggunakan
    Rational Test Manager Tool.

Kelemahan Menggunakan RUP

  • Metodologi ini hanya dapat digunakan pada pengembangan perangkat lunak yang berorientasi objek dengan berfokus pada UML (Unified Modeling Language).

 (adopted by: http://student.uniku.ac.id/sutarna/2013/01/16/metodologi-rup-rational-unified-prosess/)

 

 


Thanks ,...
Raga Kuswardhono











Senin, 08 April 2013

OOAD (Objek Orinted Analysis and Design)

OOAD (Objek Orinted Analysis and Design).

 

OOAD sendiri pengertiannya adalah metode analisis yang memerikasa requirements dari sudut pandang kelas kelas dan objek yang ditemui dalam ruang lingkup permasalahan yang mengarahkan ke arsitektur software yang didasarkan pada manipulasi objek-objek system atau subsistem.OOAD merupakan cara baru dalam memikirkan suatu masalah dengan menggunakan model yang dibuat menurut konsep sekitar dunia nyata.Untuk dasar pembuatan OOAD sendiri itu adalah objek,dimana objek itu merupakan kombinasi dari  struktur data dan perilaku dalam satu entitas. 

*Note : Entitas itu sebuah objek yang keberadaannya dapat dibedakan terhadap objek lain, bisa berupa orang benda, tempat, kejadian  dll.

  Konsep OOAD :

1. Objek adalah benda secara fisik dan konseptual yang ada di sekitar kita. Sebuah objek memiliki keadaan sesaat yang disebut state .

2. State dari sebuah objek adalah kondisi dari objek atau himpunan keadaan yang menggambarkan objek tersebut. State dinyatakan dengan nilai dari atribut objeknya

3. Atribut adalah nilai internal suatu objek yang mencerminkan karakteristik objek, kondisi sesaat, koneksi dengan objek lain dan identitas.

4. Behaviour (perilaku objek) mendefinisikan bagaimana sebuah objek bertindak dan memberi reaksi. Behaviour ditentukan oleh himpunan semua atau beberapa operasi yang dapat dilakukan oleh objek tersebut, yang dicerminkan oleh interface, service, dan method dari objek tersebut.

5. Interface adalah pintu untuk mengakses service dari objek.

6. Service adalah fungsi yang dapat dikerjakan oleh sebuah objek.

7. Method adalah mekanisme internal objek yang mencerminkan perilaku objek tersebut. 

OOA (Object Oriented Analysis)

 

OOA mempelajari permasalahan dengan menspesifikasikannya atau mengobservasi permasalahn tersebut dengan menggunakan metode berorientasi objek. Biasanya analisa sistem dimulai dengan adanya dokumen permintaan (requirement) yang diperoleh dari semua pihak yang berkepentingan. (Mis: klien,developer, pakar, dll)

 

Dokumen permintaan memiliki 2 fungsi yaitu : memformulasikan kebutuhan klien dan membuat suatu daftar tugas


Analisis berorientasi obyek (OOA) melihat pada domain masalah, dengan tujuan untuk memproduksi sebuah model konseptual informasi yang ada di daerah yang sedang dianalisis. Model analisis tidak mempertimbangkan kendala-kendala pelaksanaan apapun yang mungkin ada, seperti konkurensi, distribusi, ketekunan, atau bagaimana sistem harus dibangun. Kendala pelaksanaan ditangani selama desain berorientasi objek (OOD). Analisis dilakukan sebelum Design


Sumber-sumber untuk analisis dapat persyaratan tertulis pernyataan, dokumen visi yang formal, wawancara dengan stakeholder atau pihak yang berkepentingan lainnya. Sebuah sistem dapat dibagi menjadi beberapa domain, yang mewakili bisnis yang berbeda, teknologi, atau bidang yang diminati, masing-masing dianalisis secara terpisah.

 

Hasil analisis berorientasi objek adalah deskripsi dari apa sistem secara fungsional diperlukan untuk melakukan, dalam bentuk sebuah model konseptual. Itu biasanya akan disajikan sebagai seperangkat menggunakan kasus, satu atau lebih UML diagram kelas, dan sejumlah diagram interaksi. Tujuan dari analisis berorientasi objek adalah untuk mengembangkan model yang menggambarkan perangkat lunak komputer karena bekerja untuk memenuhi seperangkat persyaratan yang ditentukan pelanggan.

 

OOD (Object Oriented Design)


OOD mengubah model konseptual yang dihasilkan dalam analisis berorientasi objek memperhitungkan kendala yang dipaksakan oleh arsitektur yang dipilih dan setiap non-fungsional – teknologi atau lingkungan – kendala, seperti transaksi throughput, response time, run – waktu platform, lingkungan pengembangan, atau bahasa pemrograman.


Teknik Pemodelan dalam OOAD


Model Objek :

  • Model objek Menggambarkan struktur statis dari suatu objek dalam sistem dan relasinya

  • Model objek berisi diagram objek. Diagram objek adalah graph dimana nodenya adalah kelas yang mempunyai relasi antar kelas.


Model Dinamik :

  • Model dinamik menggambarkan aspek dari sistem yang berubah setiap saat.

  • Model dinamik dipergunakan untuk menyatakan aspek kontrol dari sistem.

  • Model dinamik berisi state diagram. State diagram adalah graph dimana nodenya adalah state dan arc adalah tarnsisi antara state yang disebabkan oleh event.

Model Fungsional :

  • Model fungsional menggambrakan transformasi nilai data di dalam sistem. 

  • Model fungsional berisi data flow diagram. DFD adalah suatu graph dimana nodenya menyatakan proses dan arcnya adalah aliran data.

based on : http://sa3o.net/ringkasan-tentang-ooad/ 


Karakterisstik OO :

 

Pembungkusan (Encapsulation)

 

Pembungkusan (encapsulation) merupakan suatu karakteristik OOP di mana program terbungkus (menjadi satu) data (property/field) dan perilaku(fumgsi/method), artinya lebih memperhatikan aspek internal daripada aspek eksternal.

 

Polymorphisme 

 

Polymorphisme merupakan suatu karakter OOP di mana objek yang berbeda dapat memakai method dengan nama yang sama pada suatu kelas (class).

 

 

Turunan (Inheritance)

 

Turunan merupakan suatu karakteristik OOP di mana suatu kelas (parent class/baseclass) dapat diturunkan ke kelas yang lain (child class/derived class), sehingga kelas anak dapat memiliki data atau perilaku kelas orang tuanya. 

 

based on http://okecamel.blogspot.com/2012/10/konsep-karakteristik-object-oriented.html and  http://etofia.blogspot.com/2010/03/karakteristik-oop-obhect-oriented.html

 

 

 

 


Keuntungan OOP :

 

  • Reusability 

  • Stability

  • Perancang berfikir dalam sudut pandang object 

  • Objek bisa dikembangkan menjadi sesuatu yang kompleks

  • Lebih Reliability

  • Perancangan yang lebih cepat

  • Kualitas design yang lebih tinggi

  • Integrity : suatu struktur data hanya bisa digunakan pada program tertentu saja

  • Pemeliharaannya lebih mudah

  • Inventability

  • Design Independence : tidak tergantung pada platformnya

  • Interoperability

  • Paralel computing  

based on http://anieksuryanti.blogspot.com/2009/01/keuntungan-object-oriented.html 

 

Terimakasih.