BAB 7 Coding dan Pengujuan unit



Nama : santi
Npm   : 43a87007150347
kelas   : S1/SI/3B/P



BAB 7
Coding dan Pengujian Unit

Tujuan dari coding atau pemrograman kegiatan adalah untuk menerapkan desain dengan cara terbaik mungkin. Aktivitas coding sebuah mengenai baik pengujian dan main-tenance mendalam. Seperti yang kita lihat sebelumnya, waktu yang dihabiskan di coding adalah sebagian kecil dari total biaya perangkat lunak, sementara pengujian dan pemeliharaan mengkonsumsi porsi besar. Dengan demikian, itu harus jelas bahwa tujuan selama coding tidak harus hanya untuk mengurangi biaya pelaksanaan, tetapi membantu mengurangi biaya tahap selanjutnya. Selama coding, harus diingat bahwa program tidak harus dibangun sehingga mereka mudah untuk menulis, tetapi dengan cara yang mereka mudah untuk membaca dan memahami. Sebuah program yang banyak membaca lebih sering dan lebih banyak orang selama fase kemudian. Memiliki pembacaan dan dimengerti sebagai tujuan yang jelas dari aktivitas cod-ing sendiri dapat membantu dalam mencapai itu.
Dalam bab ini kita akan membahas:

- Beberapa prisip seperti pemrograman terstruktur, informasi bersembunyi, penggunaan standar cod-ing, yang dapat membantu mengembangkan program lebih mudah dibaca.

- Beberapa proses programmer tingkat seperti pengembangan tambahan dan pengembangan uji-didorong, untuk effisien mengembangkan kode berkualitas tinggi.

- Bagaimana mengelola berkembang kode dengan menggunakan kontrol kode sumber yang tepat dan refac-toring.

- Bagaimana unit modul tes menggunakan kerangka pengujian unit.

- Sebuah proses pemeriksaan kode terstruktur yang dapat digunakan untuk meningkatkan kualitas kode.

7.1 Pemrograman Prinsip dan Pedoman

Tugas utama sebelum programmer untuk menulis kode yang dapat dibaca dengan beberapa bug di dalamnya. Sebuah gol tambahan adalah untuk menulis kode cepat. Menulis kode padat adalah keterampilan yang hanya dapat diperoleh dengan praktek. Namun, berdasarkan pengalaman, beberapa aturan umum dan pedoman dapat diberikan untuk programmer. pemrograman yang baik (memproduksi program yang benar dan sederhana) adalah independen praktek bahasa pemrograman sasaran, meskipun bahasa pemrograman yang terstruktur dengan baik membuat pekerjaan programmer sederhana. Pada bagian ini, kita akan membahas beberapa konsep dan praktik yang dapat membantu programmer menulis kode berkualitas tinggi yang juga mudah untuk dipahami.


7.1.1 Pemrograman Terstruktur

Seperti yang dinyatakan sebelumnya tujuan dasar dari kegiatan coding adalah untuk menghasilkan pro-gram yang mudah dimengerti. Telah dikemukakan oleh banyak bahwa praktek pemrograman terstruktur membantu mengembangkan program yang lebih mudah untuk dipahami. Gerakan pemrograman terstruktur dimulai pada tahun 1970-an, dan banyak yang telah dikatakan dan ditulis tentang hal itu. Sekarang konsep meresapi begitu banyak bahwa itu diterima-bahkan biasanya tersirat-yang pemrograman harus terstruktur. Meskipun banyak penekanan telah ditempatkan pada pemrograman terstruktur, yang con-kecuali bahwa dan motivasi di balik pemrograman terstruktur sering tidak baik di bawah-berdiri. pemrograman terstruktur sering dianggap sebagai "goto-kurang" pemrograman.

Sebuah program memiliki struktur statis serta struktur yang dinamis. Struktur statis adalah struktur teks dari program, yang hanya orga-nization linear laporan program. Struktur dinamis dari program ini adalah urutan pernyataan dijalankan selama pelaksanaan program. Dengan kata lain, baik struktur statis dan perilaku dinamis adalah urutan laporan; sedangkan urutan mewakili struktur statis dari sebuah program adalah tetap, urutan laporan dijalankan dapat berubah dari eksekusi eksekusi.

Seperti membaca program adalah kegiatan jauh lebih umum daripada menulis program, tujuan dari kegiatan coding adalah untuk menghasilkan program yang, selain bebas dari cacat, mudah untuk memahami dan memodifikasi.

Motivasi nyata untuk pemrograman terstruktur, bagaimanapun, adalah resmi pembuktian program. Untuk menunjukkan bahwa program benar, kita perlu menunjukkan bahwa ketika program dijalankan, perilakunya adalah apa yang diharapkan. Untuk menentukan perilaku, kita perlu menentukan kondisi output dari program harus memenuhi

Menggunakan notasi Hoare ini untuk memverifikasi program, pernyataan dasar tentang segmen program ini dalam bentuk
         P {S}Q.
Penafsiran ini adalah bahwa jika pernyataan P benar sebelum mengeksekusi S, maka pernyataan Q akan menjadi kenyataan setelah melaksanakan S, jika eksekusi S berakhir. Sikap tegas P adalah pra-kondisi program dan Q adalah pasca-kondisi. pernyataan ini adalah tentang nilai-nilai yang diambil oleh variabel dalam program sebelum dan setelah pelaksanaannya. Pernyataan umumnya tidak menentukan nilai nominal-TERTENTU untuk variabel, tetapi mereka menentukan sifat umum dari nilai-nilai dan hubungan di antara mereka.


7.1 Prinsip Pemrograman dan Pedoman 185

memanfaatkan konstruksi terstruktur. Dalam pemrograman terstruktur, pernyataan ini bukan pernyataan tugas sederhana, itu adalah pernyataan terstruktur. Properti kunci dari pernyataan terstruktur adalah bahwa ia memiliki single-entry dan satu-keluar. Artinya, selama eksekusi, eksekusi (terstruktur) pernyataan dimulai dari satu titik didefinisikan dan eksekusi berakhir pada satu titik didefinisikan. Dengan pernyataan single-entry dan single-keluar, kita dapat melihat program sebagai urutan laporan (terstruktur). Dan jika semua pernyataan adalah pernyataan terstruktur, maka selama eksekusi, urutan eksekusi pernyataan ini akan sama dengan urutan dalam teks program. Oleh karena itu, dengan menggunakan laporan single-entry dan single-keluar, korespondensi antara struktur statis dan dinamis dapat diperoleh.

Gunakan pemrograman terstruktur di mana program ini adalah urutan yang sesuai single-entry konstruksi single-exit membuat program yang mudah untuk memahami dan memverifikasi. praktek-praktek lainnya seperti menggunakan menyembunyikan informasi, cocok coding stan-dards, dan praktek pemrograman yang baik juga membantu meningkatkan pembacaan kode dan kualitas. Tujuan dasar menggunakan konstruksi terstruktur adalah untuk linearize aliran kontrol sehingga perilaku eksekusi lebih mudah untuk di bawah-berdiri dan berdebat tentang. Dalam aliran kontrol linier, jika kita memahami perilaku masing-masing konstruksi dasar benar, perilaku program dapat dianggap sebagai komposisi perilaku dari laporan. Untuk pendekatan ini untuk bekerja, itu tersirat bahwa kita dapat dengan jelas memahami dan menentukan perilaku setiap konstruk.

Titik utama adalah bahwa setiap konstruk tidak terstruktur harus digunakan hanya jika alternatif terstruktur lebih sulit untuk memahami. Pandangan ini dapat diambil hanya karena kita berfokus pada pembacaan. Jika tujuannya adalah pemastian formal, pemrograman terstruktur mungkin akan diperlukan.

7.1.2 Informasi Menyembunyikan

Sebuah solusi perangkat lunak untuk masalah selalu berisi struktur data yang dimaksudkan untuk mewakili informasi dalam domain masalah. Artinya, ketika perangkat lunak dikembangkan untuk memecahkan masalah, perangkat lunak menggunakan beberapa struktur data untuk menangkap informasi dalam domain masalah.

Secara umum, hanya operasi tertentu dilakukan pada beberapa informasi. Artinya, sepotong informasi dalam masalah domain hanya digunakan dalam sejumlah cara dalam domain masalah. Sebagai contoh, sebuah buku besar di akuntan memiliki beberapa kegunaan yang sangat jelas: debit, kredit, memeriksa saldo, dll Sebuah operasi di mana semua debet dikalikan bersama-sama dan kemudian dibagi dengan jumlah semua kredit biasanya tidak dilakukan.

Ketika informasi tersebut direpresentasikan sebagai struktur data, prinsip yang sama harus diterapkan, dan hanya beberapa operasi yang didefinisikan harus dilakukan pada struktur data. Ini, pada dasarnya, adalah prinsip bersembunyi informasi. Informasi yang ditangkap dalam struktur data harus disembunyikan dari sisa dari sistem, dan hanya akses fungsi pada struktur data yang mewakili operasi yang dilakukan pada informasi yang harus terlihat. Dengan kata lain, ketika informasi tersebut ditangkap di struktur data dan kemudian pada struktur data yang mewakili beberapa informasi, untuk setiap operasi pada informasi fungsi akses harus disediakan.

Untuk pengembang, hal ini sangat efektif untuk mengembangkan kode secara bertahap. Hal ini dapat dilakukan dengan menulis kode sedikit demi sedikit, dan pengujian dan debugging setiap kenaikan sebelum menulis kode lebih. Atau, pengembangan uji-driven dapat diikuti di mana uji kasus yang ditulis pertama dan kemudian kode ditulis untuk lulus uji kasus ini. Meskipun coding dari modul umumnya dilakukan oleh programmer individu, alternatif adalah pasangan pemrograman, di mana coding dilakukan oleh sepasang programmer-baik strategi bersama-sama berkembang, struktur data, algoritma dll

7.1.3 Beberapa Praktek Pemrograman

Konsep yang dibahas di atas dapat membantu dalam menulis kode sederhana dan jelas dengan beberapa bug. Ada banyak praktek pemrograman yang juga dapat membantu ke arah tujuan itu. Kita bahas di sini beberapa aturan yang telah ditemukan untuk membuat kode lebih mudah dibaca serta menghindari beberapa kesalahan.

Kontrol Constructs: Seperti telah dibahas sebelumnya, hal ini diinginkan bahwa sebanyak mungkin single-entry, konstruksi single-exit digunakan. Hal ini juga diinginkan untuk menggunakan beberapa konstruksi kontrol standar daripada menggunakan berbagai konstruksi, hanya karena mereka tersedia dalam bahasa.

Gotos: gotos harus digunakan dengan hemat dan secara disiplin. Hanya ketika alternatif untuk menggunakan gotos lebih kompleks harus yang gotos digunakan. Dalam kasus apapun, alternatif harus memikirkan sebelum akhirnya menggunakan goto. Jika goto harus digunakan, transfer ke depan (atau melompat ke pernyataan kemudian) lebih diterima daripada melompat ke belakang.

Informasi Menyembunyikan: Seperti telah dibahas sebelumnya, informasi bersembunyi harus didukung mana mungkin. Hanya fungsi akses untuk struktur data harus dibuat terlihat saat bersembunyi struktur data di balik fungsi tersebut.

Jenis Buatan Pengguna: bahasa modern memungkinkan pengguna untuk menentukan jenis seperti tipe enumerasi. Ketika fasilitas tersebut tersedia, mereka harus ex-ploited mana yang berlaku.

Nesting: Jika bersarang jika-maka-lain konstruksi menjadi terlalu dalam, maka logika menjadi sulit untuk memahami.

Modul Ukuran: Kami membahas masalah ini selama desain sistem. Seorang programmer harus hati-hati memeriksa setiap fungsi dengan terlalu banyak laporan (mengatakan lebih dari 100). modul besar sering tidak akan fungsional kohesif. Tidak ada aturan keras-dan-cepat tentang ukuran modul; prinsip harus kohesi dan kopling.

Modul Interface: Sebuah modul dengan antarmuka yang kompleks harus diteliti dengan seksama. Sebagai aturan praktis, setiap modul yang antarmuka memiliki lebih dari lima parameter harus diteliti dengan seksama dan patah menjadi beberapa modul dengan antarmuka sederhana jika mungkin.

Kode Berkembang perlu dikelola dengan baik. Hal ini dapat dilakukan melalui kontrol alat kode sumber yang tepat yang memungkinkan manajemen mudah dari versi berbeda yang bisa dibuat, serta mudah kehancuran perubahan yang perlu digulung kembali.

7.1.4 Standar Coding

Programmer menghabiskan jauh lebih banyak waktu membaca kode daripada menulis kode. Selama kehidupan kode, penulis menghabiskan waktu yang cukup membacanya selama debugging dan peningkatan. Orang lain selain penulis juga menghabiskan cukup e ff ort dalam membaca kode karena kode ini sering dipelihara oleh orang lain selain penulis. Singkatnya, itu adalah sangat penting untuk menulis kode dengan cara yang mudah dibaca dan dimengerti. Coding standar memberikan aturan dan pedoman untuk beberapa aspek pemrograman untuk membuat kode lebih mudah dibaca. Sebagian besar organisasi yang mengembangkan perangkat lunak secara teratur mengembangkan standar mereka sendiri.

File Ada konvensi tentang bagaimana file harus dinamai, dan apa file harus berisi, sehingga pembaca bisa mendapatkan beberapa ide tentang apa file con-tains. Beberapa contoh konvensi ini adalah:

- File sumber Java harus memiliki ekstensi .java-ini diberlakukan oleh sebagian besar kompiler dan alat.
- Setiap file harus berisi satu kelas luar dan nama kelas harus sama dengan nama file.
- Panjang garis harus dibatasi kurang dari 80 kolom dan khusus charac-ters harus dihindari. Jika garis lebih panjang, hal itu harus dilanjutkan dan kelanjutan harus dibuat sangat jelas

Laporan Pedoman ini adalah untuk deklarasi dan dieksekusi negara-KASIH dalam kode sumber. Beberapa contoh diberikan di bawah. Namun, perlu diketahui bahwa tidak semua orang akan setuju pada ini. Itulah sebabnya organisasi umumnya mengembangkan pedoman mereka sendiri yang dapat diikuti tanpa membatasi fleksibilitas programmer untuk jenis pekerjaan organisasi tidak.

- Variabel harus diinisialisasi di mana dinyatakan, dan mereka harus dinyatakan dalam lingkup terkecil yang mungkin.
- Menyatakan variabel yang terkait bersama-sama dalam sebuah pernyataan umum. Tidak terkait vari-ables tidak harus dinyatakan dalam laporan yang sama.
- Variabel Kelas tidak harus dinyatakan publik.
- Gunakan hanya pernyataan kontrol loop dalam untuk loop.
- Variabel loop harus diinisialisasi segera sebelum loop.
- Hindari penggunaan istirahat dan terus dalam satu lingkaran.
- Hindari penggunaan do ... sementara membangun.
- Hindari kondisional kompleks ekspresi memperkenalkan sementara boolean variabel-variabel-bukan.
- Hindari pernyataan dieksekusi dalam conditional.

  Java menyediakan komentar dokumentasi yang dibatasi oleh "/ ** ... * /", dan yang bisa diambil ke file HTML. Komentar ini sebagian besar digunakan sebagai prolog untuk kelas dan metode-metode dan bidang, dan dimaksudkan untuk menyediakan dokumentasi untuk pengguna kelas yang mungkin tidak memiliki akses ke kode sumber. Selain prolog untuk modul, standar pengkodean dapat menentukan bagaimana dan di mana komentar harus berada. Beberapa pedoman tersebut adalah:

- Satu baris komentar untuk blok kode harus sejajar dengan kode mereka dimaksudkan untuk.
- Harus ada komentar untuk semua variabel utama menjelaskan apa yang mereka rep-membenci.
- Sebuah blok komentar harus didahului oleh kosong baris komentar hanya dengan "/ *" dan diakhiri dengan baris yang berisi hanya "* /".
- Trailing komentar setelah laporan harus singkat, pada baris yang sama, dan bergeser cukup jauh untuk memisahkan mereka dari laporan.

pedoman tata letak fokus pada bagaimana program harus menjorok, bagaimana harus menggunakan baris kosong, ruang putih, dll, untuk membuatnya lebih mudah dibaca. pedoman lekukan kadang-kadang disediakan untuk setiap jenis pemrograman membangun. Namun, kebanyakan programmer belajar ini dengan melihat kode dari orang lain dan fragmen kode dalam buku-buku dan dokumen, dan banyak dari ini telah menjadi cukup standar selama bertahun-tahun.







7.2 bertahap Mengembangkan Kode

Aktivitas coding dimulai ketika beberapa bentuk desain yang telah dilakukan dan spesifikasi dari modul untuk dikembangkan tersedia. Dengan desain, modul ditugaskan untuk pengembang untuk coding. Ketika modul ditugaskan untuk pengembang, mereka menggunakan beberapa proses untuk mengembangkan kode.

7.2.1 Sebuah Incremental Coding Proses

Proses diikuti oleh banyak pengembang untuk menulis kode untuk modul yang saat ini ditetapkan, dan ketika dilakukan, melakukan unit testing di atasnya dan memperbaiki bug yang ditemukan. Maka kode tersebut akan diperiksa dalam repositori proyek untuk membuatnya tersedia untuk orang lain dalam proyek tersebut. (Kami akan menjelaskan proses memeriksa kemudian.)

Sebuah proses yang lebih baik untuk coding, yang sering diikuti oleh berpengalaman pengembang, adalah untuk mengembangkan kode secara bertahap. Artinya, menulis kode untuk im-plementing hanya bagian dari fungsi modul. Kode ini disusun dan diuji dengan beberapa tes cepat untuk memeriksa kode yang telah ditulis sejauh ini. Ketika kode melewati tes ini, pengembang hasil untuk menambah fungsionalitas lebih lanjut untuk kode, yang kemudian diuji lagi.

7.2.2 Uji-Driven Development

   Test-Driven Development (TDD) [8] adalah proses coding yang berbalik pendekatan umum untuk coding. Alih-alih menulis kode dan kemudian mengembangkan kasus uji untuk memeriksa kode, di TDD itu adalah sebaliknya-programmer pertama menulis skrip tes, dan kemudian menulis kode untuk lulus tes. Seluruh proses dilakukan secara bertahap, dengan tes yang ditulis berdasarkan spesifikasi dan kode yang ditulis untuk lulus tes.
   Beberapa poin yang perlu diperhatikan tentang TDD. Pertama, pendekatan mengatakan bahwa Anda menulis kode hanya cukup untuk lulus tes. Dengan mengikuti ini, kode ini selalu sinkron dengan tes. Hal ini tidak selalu terjadi dengan pendekatan kode-pertama, di mana itu semua terlalu umum untuk menulis sepotong panjang kode, tapi kemudian hanya menulis beberapa tes yang hanya mencakup beberapa bagian kode.



Tulisan ini kasus uji sebelum kode ditulis membuat pengembangan penggunaan-driven. Sejak kasus uji harus tertulis pertama dari spesifikasi, bagaimana kode tersebut akan digunakan mendapat perhatian pertama. Ini akan membantu memastikan bahwa interface dari perspektif pengguna kode dan skenario penggunaan kunci. Hal ini dapat membantu mengurangi kesalahan antarmuka.

Dalam TDD, beberapa jenis prioritas untuk pengembangan kode alami hap-pena. Hal ini kemungkinan besar bahwa beberapa tes pertama cenderung fokus pada menggunakan fungsi utama. Umumnya, kasus uji untuk fitur-prioritas yang lebih rendah atau func-tionality akan dikembangkan kemudian.

7.2.3 Pair Programming

Pair programming juga merupakan proses coding yang telah diusulkan sebagai metodologi kunci tech-nique dalam pemrograman ekstrim (XP) [7]. Dalam pemrograman pasangan, kode tidak ditulis oleh programmer individu tetapi oleh sepasang programmer. Artinya, pekerjaan coding ditugaskan untuk tidak individu tetapi untuk sepasang individu. Pasangan ini bersama-sama menulis kode.

Proses dipertimbangkan adalah bahwa satu orang akan ketik program sementara yang lain akan secara aktif berpartisipasi dan terus-menerus meninjau apa yang sedang diketik. Ketika kesalahan perhatikan, mereka menunjukkan dan diperbaiki.

7.3 Mengelola Berkembang Kode

Selama proses coding, kode yang ditulis oleh programmer (atau sepasang) berevolusi-mulai dari nol untuk akhirnya memiliki modul teruji. Selama proses ini kode mengalami perubahan. Selain perubahan karena proses pembangunan, perubahan kode juga dibutuhkan karena perubahan spesifikasi modul, yang mungkin terjadi karena perubahan persyaratan.

7.3.1 Source Code Control dan Build

Dalam proyek banyak beberapa orang mengembangkan kode sumber. Setiap programmer membuat file sumber, yang akhirnya digabungkan bersama-sama untuk menciptakan executable. Programmer terus berubah file sumber mereka sebagai kode berevolusi, seperti yang kita lihat dalam proses dibahas di atas, dan sering membuat perubahan dalam file sumber lain juga.

Sebuah sistem kontrol sumber kode yang modern berisi repositori, yang essen-tially struktur direktori dikontrol, yang membuat sejarah revisi penuh dari semua file yang dihasilkan oleh programmer didalam tim proyek. Memperbarui salinan lokal. Perubahan yang dilakukan oleh anggota proyek untuk repositori tidak tercermin dalam salinan lokal yang dibuat sebelum perubahan itu dilakukan.

Dengan sistem kontrol kode sumber, programmer tidak perlu mempertahankan semua versi-kapan saja jika beberapa perubahan perlu dibatalkan, versi yang lebih tua dapat dengan mudah ditemukan.

7.3.2 Refactoring

Kita telah melihat bahwa coding sering melibatkan membuat perubahan ke beberapa kode yang ada. Sebagai kode berubah dengan waktu, untuk memastikan bahwa kualitas kode tidak terus menurunkan karena evolusi, refactoring dapat dilakukan. Selama refactoring ada fungsi baru ditambahkan-satunya perbaikan dilakukan agar desai kode membaik dengan penurunan kopling, peningkatan kohesi, dan lebih baik menggunakan hirarki.

Refactoring adalah teknik untuk meningkatkan kode yang ada dan mencegah kerusakan desain ini dengan waktu. Refactoring adalah bagian dari coding di bahwa itu dilakukan selama masa coding, tetapi tidak coding biasa. Refactoring telah dipraktekkan

7.3 Mengelola Berkembang Kode 201

di masa lalu oleh programmer, tetapi baru-baru ini telah mengambil bentuk yang lebih konkrit, dan telah diusulkan sebagai langkah kunci dalam praktek XP [7]. Refactoring juga memainkan peran penting dalam test-driven development-kode perbaikan langkah dalam proses TDD benar-benar melakukan refactoring.

Tujuan dasar dari refactoring adalah untuk memperbaiki desain. Namun, perlu diketahui bahwa ini bukan tentang meningkatkan desain selama tahap desain untuk menciptakan desain yang akan kemudian dilaksanakan (yang merupakan fokus dari desain metode-ologies), tetapi tentang meningkatkan desain kode yang sudah ada.

prinsip-prinsip dasar desain memandu proses refactoring. Akibatnya, refactoring umumnya menghasilkan satu atau lebih hal berikut:

1. Mengurangi kopling

2. kohesi Peningkatan

3. kepatuhan yang lebih baik untuk membuka-menutup prinsip

Refactoring melibatkan perubahan kode untuk meningkatkan salah satu desain yang tepat-ikatan, sambil menjaga perilaku eksternal yang sama. Refactoring sering dipicu oleh beberapa perubahan coding yang harus dilakukan. Risiko utama dari refactoring adalah bahwa ada kode kerja mungkin "istirahat" karena perubahan yang dibuat. Untuk mengurangi risiko ini, dua aturan emas adalah:

1. Refactor dalam langkah-langkah kecil
2. Memiliki tes skrip yang tersedia untuk menguji fungsi yang ada

Jika tes yang baik suite tersedia, maka apakah refactoring mempertahankan fungsi yang ada dapat diperiksa dengan mudah. Dengan refactoring, kode menjadi terus meningkatkan. Artinya, desain, daripada membusuk dengan waktu, berkembang dan membaik dengan waktu.

1. Kode Duplikat. Ini sangat umum. Salah satu alasan untuk ini adalah bahwa beberapa fungsi kecil sedang dijalankan di beberapa tempat (misalnya, usia dari
tanggal lahir dapat dihitung di setiap tempat yang membutuhkan tanggal). Alasan lain yang umum adalah bahwa ketika ada beberapa subclass dari kelas, maka setiap subclass mungkin berakhir melakukan hal yang sama.

2. Metode Long. Jika metode besar, sering menggambarkan situasi di mana ia mencoba untuk melakukan terlalu banyak hal dan karena itu tidak kohesif.

3. Panjang Class. Demikian pula, kelas besar dapat menunjukkan bahwa itu encapsulating beberapa konsep, membuat kelas tidak kohesif.

4. Panjang Parameter Daftar. interface yang kompleks jelas tidak diinginkan-mereka membuat kode lebih sulit untuk mengerti. Seringkali, kompleksitas tidak intrinsik tetapi tanda desain yang tidak tepat.

5. Beralih Laporan. Dalam program berorientasi objek, jika polimorfisme yang tidak digunakan dengan benar, kemungkinan untuk menghasilkan pernyataan switch di mana-mana perilaku adalah untuk menjadi berbeda tergantung pada properti.

6. Generality spekulatif. Beberapa hierarki kelas mungkin ada karena benda-benda di subclass tampaknya berbeda

7. Terlalu Banyak Komunikasi Antara Objek. Jika metode dalam satu kelas membuat banyak panggilan ke metode objek lain untuk mencari tahu tentang keadaan, ini adalah tanda kopling kuat. 

8. Pesan Chaining. Salah satu metode panggilan metode lain, yang hanya melewati panggilan ini ke objek lain, dan sebagainya. . rantai ini berpotensi menyebabkan kopling yang tidak perlu.

Pengujian 7.4 Satuan

Setelah programmer telah menulis kode untuk modul, itu harus diverifikasi sebelum digunakan oleh orang lain. Pengujian tetap metode yang paling umum dari verifikasi ini. Pada tingkat programmer pengujian dilakukan untuk memeriksa kode programmer telah mengembangkan (dibandingkan dengan memeriksa seluruh sistem software) disebut unit testing.
Unit pengujian seperti pengujian rutin di mana program dijalankan dengan beberapa kasus uji kecuali bahwa fokusnya adalah pada pengujian program yang lebih kecil atau modul yang biasanya ditugaskan ke salah satu programmer (atau sepasang) untuk coding.

Unit testing adalah sangat populer dan paling sering digunakan praktek oleh programmer untuk memverifikasi kode yang mereka tulis. Dalam unit testing, programmer menguji / nya kode nya dalam isolasi. Untuk bahasa prosedural ini sering satu set kecil prosedur atau fungsi, dan untuk bahasa berorientasi objek ini umumnya kelas atau satu set kecil kelas. pengujian unit membutuhkan driver dan stub, dan dapat difasilitasi oleh penggunaan kerangka yang memungkinkan tes otomatis eksekusi script. kerangka yang baik seperti Cunit dan Junit ada untuk kedua bahasa prosedural dan bahasa berorientasi objek.

7.4.1 Pengujian Unit Prosedural

Dalam bab sebelumnya kita telah melihat bahwa ketika menggunakan unit prosedural untuk modul, program dapat dilihat sebagai bagan struktur, di mana node fungsi dan tepi mewakili hubungan panggilan. Dalam unit testing, satu, atau koleksi kecil, modul ini adalah untuk diuji dengan serangkaian uji kasus.

Sebagai perilaku modul tergantung pada nilai parameter serta negara secara keseluruhan sistem yang merupakan bagian (misalnya, negara variabel global), kasus uji untuk modul f () akan melibatkan pengaturan baik keadaan sistem yang perilaku f () tergantung serta nilai parameter.

Pengujian modul f () dengan kasus uji maka akan melibatkan langkah-langkah berikut:

1. Mengatur sistem negara yang diperlukan oleh uji kasus ini.
2. Nilai Set parameter sesuai.
3. Panggil prosedur f () dengan parameter.
4. Bandingkan hasil f dengan hasil yang diharapkan.
5. Menyatakan apakah kasus uji telah berhasil atau gagal.


7.4.2 Pengujian Unit Kelas

Dalam program berorientasi objek, unit yang akan diuji biasanya objek kelas. Pengujian benda dapat didefinisikan sebagai proses latihan rutinitas yang disediakan oleh suatu objek dengan tujuan mengungkap kesalahan dalam pelaksanaan rutinitas atau keadaan objek atau keduanya
   Untuk menguji kelas, programmer perlu menciptakan sebuah objek dari kelas itu, mengambil objek untuk negara tertentu, memanggil metode di atasnya, dan kemudian memeriksa apakah keadaan objek tersebut seperti yang diharapkan. Urutan ini harus dijalankan berkali-kali untuk sebuah metode, dan harus dilakukan untuk semua metode , Di sini kita secara singkat menjelaskan bagaimana Junit dapat digunakan untuk menguji kelas dan memberikan contoh.

Untuk pengujian dari CUT kelas (kelas yang diuji) dengan Junit, tester harus menciptakan kelas lain yang mewarisi dari Junit (misalnya, kelas cuttest meluas Junit). Kerangka Junit harus diimpor oleh kelas ini. kelas ini adalah driver untuk pengujian CUT.

Inspeksi kode adalah teknik lain yang sering diterapkan pada tingkat unit. Hal ini dapat dilihat sebagai "pengujian statis" di mana cacat terdeteksi dalam kode tidak dengan mengeksekusi kode tetapi melalui proses manual. inspeksi kode, seperti pengujian, diterapkan hampir seluruhnya di tingkat unit, yaitu, hanya unit program menjadi sasaran pemeriksaan. Oleh karena itu, kami menganggap itu sebagai bentuk lain dari unit testing. Ini harus menunjukkan bahwa pemeriksaan adalah pendekatan verifikasi umum yang dapat diterapkan untuk mendeteksi cacat pada dokumen.
Tujuan dasar dari inspeksi adalah untuk meningkatkan kualitas kode dengan menemukan cacat. Beberapa karakteristik kunci dari inspeksi adalah:

- Inspeksi Kode dilakukan oleh programmer dan programmer
- Ini adalah proses yang terstruktur dengan peran yang ditetapkan untuk peserta.
- Fokusnya adalah pada identifikasi cacat, tidak memperbaiki mereka.
-Inspeksi data yang dicatat dan digunakan untuk memantau efektifitas dari proses pemeriksaan.

7.5.1 Perencanaan

Tujuan dari tahap perencanaan adalah untuk mempersiapkan untuk pemeriksaan. Sebuah tim inspeksi terbentuk, yang harus mencakup programmer yang kode untuk ditinjau. Tim harus terdiri dari setidaknya tiga orang, meskipun kadang-kadang tim empat atau lima anggota juga terbentuk. Sebuah moderator ditunjuk.

Penulis kode memastikan bahwa kode siap untuk diperiksa dan bahwa kriteria entri puas. Umumnya kriteria masuk yang digunakan adalah bahwa kode mengkompilasi dengan benar dan alat analisis statis yang tersedia telah diterapkan. moderator memeriksa bahwa kriteria masuk puas dengan kode.


7.5.2 Self-Ulasan

   Pada fase ini, setiap resensi melakukan self-review kode. Selama self-review, resensi melewati seluruh kode dan log semua cacat potensial ia menemukan di log diri persiapan. Seringkali pengulas akan menandai cacat pada produk pekerjaan itu sendiri, dan dapat memberikan ringkasan dari diri-review dalam log.
 Idealnya, diri-review harus dilakukan dalam satu rentang waktu kontinu. Waktu yang disarankan adalah kurang dari dua jam-yaitu, produk kerja cukup kecil sehingga dapat diperiksa secara penuh dalam waktu kurang dari dua jam.

7.5.3 Group Meeting Ulasan

Tujuan dasar dari pertemuan kajian kelompok adalah untuk datang dengan daftar cacat akhir, berdasarkan daftar awal dari cacat yang dilaporkan oleh pengulas dan yang baru ditemukan selama pembahasan dalam pertemuan tersebut.

Project
Xxxxxxxx
Bekerja Produk
Kelas AuctionItem
Ukuran Produk
250 LOC of Jawa
Ulasan Tim
P1, P2, P3
Eort (Person-Hours)



Persiapan
Total 3 orang-jam
Pertemuan Kelompok Ulasan
4.5 orang-jam
Total Upaya
7.5 orang-jam


Cacat



Jumlah Cacat Major
3
Jumlah Cacat Minor
8
Total Jumlah Cacat
11


Status Ulasan
Diterima
Rekomendasi berikutnya
tahap





Komentar
kualitas kode dapat ditingkatkan

7.6 Metrik

Secara tradisional, bekerja pada metrik telah difokuskan pada produk akhir, yaitu, kode. Dalam arti, semua metrik untuk produk antara persyaratan dan desain pada dasarnya digunakan untuk memastikan bahwa produk akhir memiliki kualitas tinggi dan produktivitas proyek tetap tinggi. Artinya, tujuan dasar dari metrik untuk produk antara adalah untuk memprediksi atau mendapatkan beberapa ide tentang metrik dari produk akhir.


7.6.1 Tindakan Ukuran

Ukuran produk adalah ukuran sederhana, yang dapat mudah untuk menghitung. Alasan utama untuk kepentingan dalam tindakan ukuran adalah bahwa ukuran adalah faktor utama yang ff sebuah proyek-biaya proyek. Ukuran sendiri adalah menggunakan sedikit; itu adalah hubungan ukuran dengan biaya dan kualitas yang membuat ukuran metrik penting. Hal ini juga digunakan untuk mengukur produktivitas selama proyek (misalnya, KLOC per orang-bulan).

 Sejumlah metrik ada untuk kuantitasnya di kualitas kode. Yang paling umum digunakan adalah metrik ukuran, karena mereka digunakan untuk menilai produksi-tivity orang dan sering digunakan dalam estimasi biaya.Untuk ukuran paling umum adalah baris kode (LOC), yang juga digunakan di sebagian besar model biaya. Tujuan dari metrik kompleksitas adalah untuk mengukur kompleksitas perangkat lunak, sebagai com-plexity merupakan faktor penting sebuah produktivitas proyek dan merupakan faktor dalam estimasi biaya. Sejumlah metrik di ff erent ada, yang paling umum adalah kompleksitas cyclomatic, yang didasarkan pada logika internal program dan mendefinisikan kompleksitas sebagai jumlah siklus independen dalam grafik aliran program. Dalam program kita mendefinisikan jumlah terukur berikut:

- N1 adalah jumlah operator yang berbeda
- N2 adalah jumlah operan yang berbeda
- F1, j adalah jumlah kejadian dari j Operator yang paling sering
- F2, j adalah jumlah kemunculan j paling operan sering Kemudian kosakata n dari sebuah program didefinisikan sebagai
n = n1 + n2.

7.6.2 Kompleksitas Metrik

produktivitas, jika diukur hanya dari segi baris kode per satuan waktu, dapat bervariasi banyak tergantung pada kompleksitas sistem yang akan dikembangkan. Jelas, seorang programmer akan menghasilkan jumlah yang lebih rendah dari kode untuk program sistem yang sangat kompleks, dibandingkan dengan program aplikasi sederhana.

Cyclomatic Kompleksitas Berdasarkan kemampuan pikiran manusia dan pengalaman orang, umumnya diakui bahwa kondisi dan pernyataan kontrol menambahkan kompleksitas program. Mengingat dua program dengan ukuran yang sama, program dengan jumlah yang lebih besar dari pernyataan keputusan cenderung lebih kompleks.


218 7. Coding dan Unit Testing

kesederhanaan, seperti pada contoh). Dalam grafik tersebut akan ada jalur dari node masuk ke setiap node dan jalur dari setiap node ke node keluar (dengan asumsi program tidak memiliki anomali seperti kode unreachable). Untuk grafik tersebut, jumlah cyclomatic dapat 0 jika kode adalah urutan linear dari laporan tanpa pernyataan kontrol. Jika kita menarik busur dari node keluar ke node entri, grafik akan sangat terhubung karena ada jalur antara dua node. Jumlah cyclomatic dari grafik untuk program apapun maka akan nol, dan itu diinginkan untuk memiliki kompleksitas nol untuk program yang sederhana tanpa persyaratan apa pun (setelah semua, ada beberapa kompleksitas dalam program seperti itu).
Untuk modul, kompleksitas cyclomatic didefinisikan sebagai jumlah cyclomatic dari grafik tersebut untuk modul.

Ternyata kompleksitas cyclomatic dari modul (atau cyclomatic num-ber grafik nya) adalah sama dengan jumlah maksimum sirkuit bebas linear dalam grafik. Satu set rangkaian linear jika ada sirkuit yang benar-benar terkandung dalam sirkuit lain atau merupakan kombinasi dari sirkuit lainnya.

Jumlah cyclomatic merupakan salah satu ukuran kuantitatif kompleksitas modul. Hal ini dapat diperluas untuk menghitung kompleksitas seluruh program, meskipun itu lebih cocok pada tingkat modul.

Jumlah ini juga dapat digunakan sebagai jumlah jalur yang harus diuji selama pengujian. kompleksitas cyclomatic adalah salah satu kompleksitas mea-langkah-paling banyak digunakan. Percobaan menunjukkan bahwa kompleksitas cyclomatic sangat berkorelasi dengan ukuran modul di LOC (setelah semua, lebih baris kode semakin besar jumlah keputusan).

Komentar

Postingan populer dari blog ini

CARA MERUBAH BAHASA DI FOXIT READER (PDF)

Tugas 1. Pengertian Waterfall, Prototyping, Iterative, RUP, Time boxing, extreme programing & Agile