sistem development software


Ikhtisar

Tubuh besar dan terus berkembang organisasi menerapkan metodologi pengembangan perangkat lunak proses. Banyak dari mereka berada di industri pertahanan, yang di AS mewajibkan peringkat berdasarkan 'model proses' untuk mendapatkan kontrak.

Standar internasional untuk menjelaskan metode pemilihan, pelaksanaan dan pemantauan siklus hidup untuk perangkat lunak adalah ISO 12207.

Tujuan dekade-lama telah menemukan berulang, proses diprediksi yang meningkatkan produktivitas dan kualitas. Beberapa mencoba untuk melakukan sistematisasi atau memformalkan tugas tampak tegar menulis perangkat lunak. Lain-lain menerapkan teknik manajemen proyek untuk menulis perangkat lunak. Tanpa manajemen proyek, proyek perangkat lunak dengan mudah dapat dikirimkan terlambat atau melebihi anggaran. Dengan sejumlah besar proyek perangkat lunak tidak memenuhi harapan mereka dalam hal fungsi, biaya, atau jadwal pengiriman, manajemen proyek yang efektif tampaknya kurang.

Organisasi dapat membuat Rekayasa Perangkat Lunak Proses Group (SEPG), yang merupakan titik fokus untuk perbaikan proses. Terdiri dari praktisi garis yang memiliki keterampilan bervariasi, grup ini di pusat dari upaya kolaboratif dari semua orang di organisasi yang terlibat dengan peningkatan proses rekayasa perangkat lunak.
[Sunting] kegiatan pengembangan perangkat lunak
Kegiatan dari proses pengembangan perangkat lunak diwakili dalam model air terjun. Ada beberapa model lain untuk mewakili proses ini.
[Sunting] Perencanaan

Tugas penting dalam menciptakan sebuah produk software adalah penggalian persyaratan atau analisa kebutuhan. Pelanggan biasanya memiliki gagasan abstrak dari apa yang mereka inginkan sebagai hasil akhir, tetapi tidak software apa yang harus dilakukan. bertentangan persyaratan tidak lengkap, ambigu, atau bahkan diakui oleh para insinyur perangkat lunak terampil dan berpengalaman pada saat ini. Sering menunjukkan kode hidup dapat membantu mengurangi resiko bahwa persyaratan yang benar.

Setelah persyaratan umum dikumpulkan dari klien, analisis ruang lingkup pembangunan harus ditentukan dan dinyatakan dengan jelas. Hal ini sering disebut dokumen lingkup.

fungsionalitas tertentu dapat keluar dari lingkup proyek sebagai fungsi biaya atau sebagai akibat dari kebutuhan jelas pada awal pembangunan. Jika pembangunan tersebut dilakukan secara eksternal, dokumen ini dapat dianggap sebagai dokumen hukum sehingga jika ada yang pernah sengketa, setiap ambiguitas yang dijanjikan kepada klien dapat dijelaskan.
[Sunting] Implementasi, pengujian dan mendokumentasikan

Pelaksanaan adalah bagian dari proses di mana insinyur perangkat lunak sebenarnya program kode untuk proyek.

Software pengujian merupakan bagian integral dan penting dari proses pengembangan software. Bagian dari proses memastikan bahwa cacat diakui sedini mungkin.

Mendokumentasikan desain internal perangkat lunak untuk tujuan pemeliharaan masa depan dan peningkatan dilakukan di seluruh pembangunan. Hal ini juga dapat mencakup penulisan sebuah API, baik itu eksternal atau internal. Hal ini sangat penting untuk mendokumentasikan segala sesuatu dalam proyek tersebut.
[Sunting] Penyebaran dan pemeliharaan

Deployment dimulai setelah kode ini tepat diuji, disetujui untuk rilis dan dijual atau didistribusikan ke dalam lingkungan produksi.

Perangkat Lunak Pelatihan dan Dukungan penting dan banyak pengembang gagal untuk menyadari bahwa. Tidak peduli berapa banyak waktu dan perencanaan pengembangan menempatkan tim untuk menciptakan software jika tidak ada dalam sebuah organisasi akhirnya menggunakannya. Orang sering resisten terhadap perubahan dan menghindari bertualang ke daerah asing, sehingga sebagai bagian dari fase penyebaran, sangat penting untuk memiliki kelas pelatihan untuk klien baru perangkat lunak Anda.

Memelihara dan meningkatkan perangkat lunak untuk mengatasi masalah yang baru ditemukan atau persyaratan baru bisa memakan waktu jauh lebih banyak daripada pengembangan awal dari perangkat lunak. Mungkin perlu untuk menambahkan kode yang tidak sesuai dengan desain awal untuk memperbaiki masalah tak terduga atau mungkin bahwa seorang pelanggan yang meminta lebih banyak fungsi dan kode dapat ditambahkan untuk mengakomodasi permintaan mereka. Jika biaya tenaga kerja tahap pemeliharaan melebihi 25% dari biaya tenaga kerja-sebelum fase ', maka kemungkinan bahwa kualitas keseluruhan setidaknya satu tahap sebelumnya adalah miskin. [Rujukan?] Dalam hal itu, manajemen harus mempertimbangkan opsi tersebut membangun kembali sistem (atau sebagian) sebelum biaya pemeliharaan berada di luar kendali.

Bug Tracking System alat-alat yang sering digunakan pada tahap ini proses untuk memungkinkan tim pengembangan untuk berinteraksi dengan pelanggan / tim lapangan pengujian perangkat lunak untuk mengidentifikasi masalah nyata atau dirasakan. Alat-alat perangkat lunak, baik open source dan komersial berlisensi, memberikan proses disesuaikan untuk memperoleh, review, mengakui, dan merespon masalah yang dilaporkan. (Perawatan perangkat lunak)
[Sunting] Software Development Model

Beberapa model ada untuk merampingkan proses pembangunan. Masing-masing memiliki kelebihan dan kontra, dan terserah kepada tim pengembangan untuk mengadopsi satu yang paling tepat untuk proyek ini. Kadang-kadang kombinasi dari model mungkin lebih cocok.
[Sunting] Air Terjun Model
Artikel utama: model air terjun





Model air terjun menunjukkan sebuah proses, dimana pengembang harus mengikuti fase-fase dalam rangka:

   1. Persyaratan spesifikasi (Persyaratan analisis)
   2. Desain Software
   3. Integrasi
   4. Pengujian (atau Validasi)
   5. Deployment (atau Instalasi) 
   6. Pemeliharaan 

Dalam model Waterfall yang ketat, setelah setiap tahap selesai, hasil ke yang berikutnya. Tinjauan mungkin terjadi sebelum pindah ke tahap berikutnya yang memungkinkan untuk kemungkinan perubahan (yang mungkin melibatkan proses perubahan kontrol formal). Tinjauan juga dapat digunakan untuk memastikan bahwa fase ini memang lengkap; kriteria tahap penyelesaian ini sering disebut sebagai "gerbang" bahwa proyek tersebut harus melewati untuk pindah ke tahap berikutnya. Air Terjun menghambat ulang dan merevisi semua tahap sebelumnya setelah itu selesai. Ini "kaku" dalam model Waterfall murni telah menjadi sumber kritik oleh lain yang lebih "fleksibel" model.
[Sunting] Spiral Model
Artikel utama: Model Spiral

Karakteristik kunci dari model Spiral adalah manajemen risiko pada tahap teratur dalam siklus pembangunan. Pada tahun 1988, Barry Boehm menerbitkan sebuah sistem pengembangan perangkat lunak formal "model spiral", yang menggabungkan beberapa aspek kunci dari model air terjun dan metodologi prototyping cepat, tetapi memberikan penekanan di daerah banyak kunci merasa telah diabaikan oleh metodologi lain: analisis resiko yang disengaja iteratif , terutama cocok untuk sistem yang kompleks skala besar.

The Spiral adalah divisualisasikan sebagai sebuah proses melewati beberapa nomor dari iterasi, dengan perwakilan diagram empat kuadran dari kegiatan berikut:

   1. merumuskan rencana untuk mengidentifikasi target perangkat lunak, dipilih untuk melaksanakan program, memperjelas pembatasan proyek pembangunan;
   2. Analisis risiko: penilaian analisis program yang dipilih, untuk mempertimbangkan bagaimana mengidentifikasi dan menghilangkan risiko;
   3. pelaksanaan proyek: implementasi pengembangan perangkat lunak dan verifikasi;

model spiral Risiko-driven, menekankan kondisi opsi dan kendala dalam rangka mendukung penggunaan kembali perangkat lunak, kualitas perangkat lunak dapat membantu sebagai tujuan khusus dari integrasi ke dalam pengembangan produk. Namun, model spiral memiliki beberapa kondisi membatasi, sebagai berikut:

   1. model spiral menekankan analisis risiko, tetapi memerlukan pelanggan untuk menerima dan percaya bahwa banyak dari analisis ini, dan membuat respon yang relevan tidak mudah, karena itu, model ini sering diadaptasi untuk pengembangan perangkat lunak skala besar internal.
   2. Jika penerapan analisis resiko akan sangat mempengaruhi keuntungan proyek, analisis maka risiko tidak berarti, karena itu, model spiral ini hanya cocok untuk proyek-proyek perangkat lunak skala besar.
   3. pengembang perangkat lunak yang baik harus mencari risiko, analisis risiko yang akurat, selain itu akan menimbulkan risiko yang lebih besar.

Tahap pertama adalah untuk menentukan tahap tujuan mencapai tujuan tersebut, pilihan dan kendala, dan kemudian dari perspektif program analisis risiko, strategi pengembangan, dan berusaha untuk menghapus semua potensi risiko, dan kadang-kadang diperlukan untuk mencapai melalui pembangunan prototipe. Jika risiko beberapa tidak dapat dikesampingkan, program untuk segera diakhiri, atau memulai pengembangan langkah-langkah berikutnya. Akhirnya, evaluasi hasil panggung, dan desain dari fase berikutnya.
[Sunting] pengembangan Iterative dan Tambahan
Artikel utama: pengembangan Iterative dan incremental

pembangunan Iteratif [1] mengatur pembangunan awalnya porsi kecil tetapi semakin besar dari proyek perangkat lunak untuk membantu semua mereka yang terlibat untuk mengungkap masalah-masalah penting awal sebelum masalah atau asumsi yang salah dapat menyebabkan bencana. proses Iteratif lebih disukai [rujukan?] oleh pengembang komersial karena memungkinkan potensi mencapai tujuan desain dari pelanggan yang tidak tahu bagaimana menentukan apa yang mereka inginkan.
[Sunting] Pengembangan Agile
Artikel utama: pengembangan perangkat lunak Agile

pengembangan perangkat lunak Agile menggunakan pengembangan berulang sebagai dasar tapi pendukung sudut pandang orang-centric lebih ringan dan lebih dari pendekatan tradisional. Agile proses menggunakan umpan balik, daripada perencanaan, sebagai mekanisme kontrol utama mereka. umpan balik yang digerakkan oleh tes reguler dan rilis perangkat lunak berkembang.

Ada banyak variasi proses agile:

    * Dalam Extreme Programming (XP), fase dilaksanakan sangat kecil (atau "continuous") langkah dibandingkan dengan yang lebih tua, proses "batch". Lewat (sengaja tidak lengkap) pertama melalui langkah-langkah yang mungkin mengambil hari atau minggu, bukan bulan atau tahun setiap langkah lengkap dalam model Waterfall. Pertama, satu menulis tes otomatis, untuk memberikan tujuan konkret untuk pembangunan. Berikutnya adalah pengkodean (oleh sepasang programmer), yang lengkap bila semua tes lulus, dan programer tidak bisa memikirkan tes lagi yang diperlukan. Desain dan arsitektur muncul keluar dari refactoring, dan datang setelah coding. Desain dilakukan oleh orang yang sama yang melakukan coding. (Hanya fitur terakhir - menggabungkan desain dan kode - yang umum bagi semua proses lincah lain.) Sistem tidak lengkap tapi fungsional disebarkan atau ditunjukkan untuk (beberapa subset dari) pengguna (setidaknya salah satunya adalah di tim pengembangan) . Pada titik ini, para praktisi mulai lagi pada menulis tes untuk bagian selanjutnya yang paling penting dari sistem.

    * Scrum

[Sunting] Perbaikan Model Proses

Capability Maturity Model Integrasi
    The Capability Maturity Model Integration (CMMI) adalah salah satu model terkemuka dan berdasarkan praktek terbaik. penilaian organisasi Independen kelas pada seberapa baik mereka mengikuti proses yang telah ditentukan mereka, bukan pada kualitas proses-proses atau perangkat lunak yang dihasilkan. CMMI telah menggantikan CMM.

ISO 9000
    ISO 9000 menjelaskan standar untuk proses resmi terorganisir untuk memproduksi sebuah produk dan metode pengelolaan dan pemantauan kemajuan. Meskipun standar ini awalnya diciptakan untuk sektor manufaktur, standar ISO 9000 telah diterapkan untuk pengembangan perangkat lunak juga. Seperti CMMI, sertifikasi dengan ISO 9000 tidak menjamin kualitas hasil akhirnya, hanya itu proses bisnis formal telah diikuti.

ISO 15504
    ISO 15504, juga dikenal sebagai Software Peningkatan Kemampuan Proses Penentuan (SPICE), adalah "kerangka kerja untuk penilaian proses perangkat lunak". Standar ini bertujuan menetapkan model proses yang jelas untuk perbandingan. SPICE digunakan seperti CMMI. Ini model proses untuk mengelola, mengendalikan, mengarahkan dan memantau pengembangan perangkat lunak. Model ini kemudian digunakan untuk mengukur apa sebuah organisasi pembangunan atau tim proyek sebenarnya selama pengembangan perangkat lunak. Informasi ini dianalisis untuk mengidentifikasi kelemahan dan perbaikan drive. Hal ini juga mengidentifikasi kekuatan yang dapat dilanjutkan atau diintegrasikan ke dalam praktik umum bagi organisasi atau tim.

[Sunting] Metode Formal

metode formal pendekatan matematika untuk memecahkan software (dan hardware) masalah pada spesifikasi, persyaratan dan tingkat desain. Contoh metode formal termasuk B-Metode, jala Petri, membuktikan teorema Otomatis, MEMBANGKITKAN dan VDM. Berbagai notasi spesifikasi formal yang tersedia, seperti notasi Z. Secara umum, teori automata dapat digunakan untuk membangun dan memvalidasi perilaku aplikasi dengan merancang suatu sistem mesin negara yang terbatas.

Hingga keadaan mesin (FSM) metodologi berdasarkan spesifikasi perangkat lunak yang memungkinkan eksekusi dan oleh-lewat coding konvensional (lihat mesin negara virtual terbatas atau event driven mesin negara yang terbatas).

metode formal yang paling mungkin untuk diterapkan dalam perangkat lunak avionik, terutama di mana perangkat lunak adalah keamanan penting. Software standar jaminan keamanan, seperti metode permintaan DO178B formal di tingkat tertinggi kategorisasi (Level A).

Formalisasi pengembangan perangkat lunak yang merayap di, di tempat lain, dengan penerapan Objek Kendala Bahasa (dan spesialisasi seperti Java Modeling Language) dan khususnya dengan arsitektur Model-driven yang memungkinkan eksekusi desain, jika tidak spesifikasi.

Kecenderungan lain yang muncul dalam pengembangan perangkat lunak adalah untuk menulis spesifikasi dalam beberapa bentuk logika (biasanya variasi FOL), dan kemudian langsung mengeksekusi logika seolah-olah sebuah program. Bahasa OWL, berdasarkan Logika Keterangan, adalah contohnya. Ada juga bekerja pada pemetaan beberapa versi bahasa Inggris (atau bahasa alam) secara otomatis ke dan dari logika, dan melaksanakan logika secara langsung. Contohnya adalah Attempto Controlled bahasa Inggris, dan Internet Bisnis Logic, yang tidak berusaha untuk mengendalikan kosakata atau sintaks. Sebuah fitur dari sistem yang mendukung pemetaan bidirectional Inggris-logika dan pelaksanaan langsung dari logika ini adalah bahwa mereka dapat dibuat untuk menjelaskan hasilnya, dalam bahasa Inggris, pada bisnis atau tingkat ilmiah.

Government Accountability Office, dalam laporan 2003 di salah satu lalu lintas Federal Aviation Administration program pengendalian udara modernisasi, [2] merekomendasikan berikut bimbingan lembaga untuk mengelola sistem akuisisi besar-besaran dengan

    * Mendirikan, mempertahankan, dan mengendalikan data dasar pengukuran kinerja yang akurat, valid, dan saat ini, yang akan mencakup negosiasi semua pekerjaan, resmi unpriced dalam waktu 3 bulan;
    * Melakukan kajian dasar terpadu dari modifikasi kontrak besar dalam waktu 6 bulan, dan
    * Menyiapkan estimasi biaya siklus-hidup ketat, termasuk penilaian risiko, sesuai dengan panduan Sistem Akuisisi toolset dan mengidentifikasi tingkat ketidakpastian dalam estimasi.

Referensi :