Manajemen dan Kualitas Perangkat Lunak
              IKP321

        Version Control System
Subversion

   TortoiseSVN
       GUI
       http://tortoisesvn.tigris.org/
   SlikSVN
       Command line
       http://www.sliksvn.com/en/download
Arithmetic Evaluation Problem

   Diberikan sebuah ekspresi aritmatika
        30 * 9 / 5 + 32
        (30 – 32) * 5 / 9
   Evaluasi nilai akhir masing-masing ekspresi
   Ubah ekspresi Infix ke ekspresi Postfix
   Evaluasi ekspresi Postfix menggunakan Stack
Dari Infix ke Postfix
Dari Infix ke Postfix

   Edsger W Dijkstra
        Shunting Yard
         Algorithm
        Semaphore
        Shortest Path
Shunting Yard Algorithm

   Selama masih ada token dalam string Masukan:
        Baca satu token.
        Jika token tsb operand:
                Tambahkan ke queue Luaran.
        Jika token tsb sebuah operator, o1:
                while there is an operator token, o2, at the top of the
                  stack, and
                either o1 is left-associative and its precedence is less
                  than or equal to that of o2,
                or o1 is right-associative and its precedence is less
                  than that of o2,
                     pop o2 off the stack, onto the output queue;
                push o1 onto the stack.
Shunting Yard Algorithm

   Jika token tsb tanda kurung buka:
           Push ke stack.
   Jika token tsb tanda kurung tutup:
           Lakukan hinggal token pada top of stack adalah tanda
             kurung buka:
                Pop semua operator dari stack ke queue Luaran.
           Pop tanda kurung buka dari stack, tapi tidak
             dimasukkan ke queue Luaran.
           Jika isi stack habis tanpa menemui tanda kurung buka:
                Ada ketidakcocokan tanda kurung.
Shunting Yard Algorithm

   Jika tidak ada lagi token dalam string Masukan:
        Selama masih ada operator dalam stack:
               Jika operator di top of stack adalah tanda kurung:
                    Ada ketidakcocokan tanda kurung.
               Pop semua operator ke queue Luaran.
   Exit.
Presedensi dan Asosiatifitas

Operator      Presedensi   Asosiatifitas
   ^              4          Kanan
   *              3            Kiri
   /              3            Kiri
   +              2            Kiri
   -              2            Kiri
Contoh

   String masukan
        3+4*2/(1-5)^2^3




    Token        Aksi            Luaran   Stack         Keterangan
3           Letakkan di     3
            queue Luaran
+           Push ke stack   3                      +
4           Letakkan di     34                     +
            queue
*           Push ke stack   34                    * + Presedensi *
                                                      lebih tinggi
                                                      daripada +
Contoh

    Token        Aksi         Luaran   Stack           Keterangan
2           Letakkan di     342                 *+
            queue
/           Pop stack ke    342*                  + / dan * memiliki
            queue Luaran                            presedensi
                                                    yang sama
            Push token ke   342*                 / + Presedensi /
            stack                                    lebih tinggi
                                                     daripada +
(           Push ke stack   342*                (/+
1           Letakkan di     342*1               (/+
            queue
-           Push ke stack   342*1              -(/+
5           Letakkan di     342*15             -(/+
            queue
Contoh

    Token        Aksi          Luaran    Stack           Keterangan
)           Pop stack        342*15-             ( / + Pop hingga
                                                       ketemu "("
            Pop stack        342*15-              / + Abaikan
                                                      pasangan tanda
                                                      kurung
^           Push ke stack    342*15-             ^ / + Presedensi ^
                                                       lebih tinggi
                                                       daripada /
2           Letakkan di      342*15-2            ^/+
            queue
^           Push ke stack    342*15-2        ^ ^ / + ^ bersifat
                                                     asosiatif kanan
3           Letakkan di      342*15–23       ^^/+
            queue
$           Pop sisa stack   342*15–23
                             ^^/+
Kelompok

   Praktek menggunakan Subversion
   Setup SVN repository di Google Code
        Try it!
        Submit your team's URL
        Submit your team members
Subversion Repository

   Checkout
   Membuat salinan lokal dari repository
        svn checkout
         https://alawisoft.googlecode.com/svn/trunk/ alawisoft
         --username barliant@gmail.com
        svn co https://alawisoft.googlecode.com/svn/trunk/
         group-a –username barliant@gmail.com
   Username
        Alamat e-mail
   Password
        Auto generated
Subversion
Subversion

   Setelah checkout, kerjakan modul masing-masing
   Menambahkan berkas
        svn add README.txt
   Membuat folder baru
        svn mkdir data
   Setelah melakukan perubahan
        svn commit -m "Keterangan perubahan."
        Edit dan Review perubahan dengan 'svn commit'
        Set environment variabel 'SVN_EDITOR = notepad'
Subversion

   Mendapatkan perubahan yang dilakukan rekan lain
   'svn update'
Tugas Kelompok

   Implementasikan struktur data Queue
   Implementasikan struktur data Stack
   Implementasikan Shunting Yard Algorithm
Evaluasi Postfix

   Infix
        3+4*2/(1-5)
   Postfix
        342*15-/+
   Gunakan Stack
            Token         Stack                 Operasi
3                                    3 Push
4                                  4 3 Push
2                                 2 4 3 Push
*                                    3 Pop 2, Pop 4, Multiply
                                   83
Evaluasi Postfix

    Token         Stack                    Operasi
1                          1 8 3 Push
5                         5 1 8 3 Push
-                            8 3 Pop 5, Pop 1, Substract
                          -4 8 3
/                             3 Pop -4, Pop 8, Divide
                            -2 3
+                                  Pop -2, Pop 3, Add
                              1
Tiada hari tanpa Subversion

   Update
   Make changes
   Examine changes
   Resolve conflicts
   Commit changes
Sehari-hari Bersama SVN

   SVN Update
   Lihat perubahan, svn diff
   Membuat direktori
        Mkdir namaFolder
   Tambahkan ke svn management
        Svn add namaFolder
   Melihat file / folder yang belum di-manage
        Svn status
Update dan Make Changes

   Setelah checkout, kerjakan modul masing-masing
        svn update
   Edit berkas
   Menambahkan berkas
        svn add README.txt
   Membuat folder baru
        svn mkdir data
Examine Changes

   Lihat status perubahan
        svn status
   Lihat perubahan setiap berkas
        svn diff
   Kembalikan ke versi sebelumnya
        svn revert
Commit Changes

   Setelah melakukan perubahan
        svn commit -m "Keterangan perubahan." --username
         barliant@gmail.com
        Edit dan Review perubahan dengan 'svn commit'
        Set environment variabel 'SVN_EDITOR = notepad'
Resolve Conflicts

Top piece of bread

Mayonnaise

Lettuce

Tomato

Provolone

<<<<<<< .mine

Salami

Mortadella

Prosciutto

=======

Sauerkraut

Grilled Chicken

>>>>>>> .r2

Creole Mustard

Bottom piece of bread
Pemeriksaan Progress Tugas

   svn log --verbose
   svn diff
   svn list --verbose
Update Working Copy

   Svn checkout URL namaFolder –username namaUser
   Cd namaFolder
   Svn update
        A ddition
        U pdate
        D elete
        mer G e
        C onflict
Tips Command Prompt

   Pindah folder
        Cd namaFolder
        Cd ..
   Menyalin berkas
        Copy
   Membuat folder
        Mkdir
   Menghapus berkas
        Del
   Menghapus folder
        Rmdir
Tips Command Prompt

   Panah atas, Panah bawah
       Mengulan perintah yang sudah diketikkan
Topik-topik Lanjutan

   Project automation
        Makefile (C, C++)
        Ant (Java)
        Setup (Python)
   Deployment
        Software packaging
        Paket instalasi
Topik-topik Lanjutan

   Dokumentasi
       Bagaimana membuat dokumentasi yang baik?
       Literate programming
       Java doc
       Doxygen
       Docstring
   Code Branching
       Release code to public
       Development still on the go
Topik-topik Lanjutan

   Software Ticketing / Bug Tracking
   Bagaimana menerima laporan bug (incident) dari user?
Topik-topik Menarik

   Social aspect
        Banyak developer (khususnya OSS) tak pernah
         bertemu tatap muka!
        Start-up companies
   Varieties of softwares
        Games (yang berkualitas?)
Pustaka

   http://en.wikipedia.org/wiki/Shunting-yard_algorithm
   http://en.wikipedia.org/wiki/Edsger_W._Dijkstra
   http://code.google.com/
   http://tortoisesvn.tigris.org/
   http://www.sliksvn.com/en/download
   tjerdastangkas.blogspot.com/search/label/ikp321

ikp321-svn

  • 1.
    Manajemen dan KualitasPerangkat Lunak IKP321 Version Control System
  • 2.
    Subversion  TortoiseSVN  GUI  http://tortoisesvn.tigris.org/  SlikSVN  Command line  http://www.sliksvn.com/en/download
  • 3.
    Arithmetic Evaluation Problem  Diberikan sebuah ekspresi aritmatika  30 * 9 / 5 + 32  (30 – 32) * 5 / 9  Evaluasi nilai akhir masing-masing ekspresi  Ubah ekspresi Infix ke ekspresi Postfix  Evaluasi ekspresi Postfix menggunakan Stack
  • 4.
  • 6.
    Dari Infix kePostfix  Edsger W Dijkstra  Shunting Yard Algorithm  Semaphore  Shortest Path
  • 7.
    Shunting Yard Algorithm  Selama masih ada token dalam string Masukan:  Baca satu token.  Jika token tsb operand:  Tambahkan ke queue Luaran.  Jika token tsb sebuah operator, o1:  while there is an operator token, o2, at the top of the stack, and  either o1 is left-associative and its precedence is less than or equal to that of o2,  or o1 is right-associative and its precedence is less than that of o2,  pop o2 off the stack, onto the output queue;  push o1 onto the stack.
  • 8.
    Shunting Yard Algorithm  Jika token tsb tanda kurung buka:  Push ke stack.  Jika token tsb tanda kurung tutup:  Lakukan hinggal token pada top of stack adalah tanda kurung buka:  Pop semua operator dari stack ke queue Luaran.  Pop tanda kurung buka dari stack, tapi tidak dimasukkan ke queue Luaran.  Jika isi stack habis tanpa menemui tanda kurung buka:  Ada ketidakcocokan tanda kurung.
  • 9.
    Shunting Yard Algorithm  Jika tidak ada lagi token dalam string Masukan:  Selama masih ada operator dalam stack:  Jika operator di top of stack adalah tanda kurung:  Ada ketidakcocokan tanda kurung.  Pop semua operator ke queue Luaran.  Exit.
  • 10.
    Presedensi dan Asosiatifitas Operator Presedensi Asosiatifitas ^ 4 Kanan * 3 Kiri / 3 Kiri + 2 Kiri - 2 Kiri
  • 11.
    Contoh  String masukan  3+4*2/(1-5)^2^3 Token Aksi Luaran Stack Keterangan 3 Letakkan di 3 queue Luaran + Push ke stack 3 + 4 Letakkan di 34 + queue * Push ke stack 34 * + Presedensi * lebih tinggi daripada +
  • 12.
    Contoh Token Aksi Luaran Stack Keterangan 2 Letakkan di 342 *+ queue / Pop stack ke 342* + / dan * memiliki queue Luaran presedensi yang sama Push token ke 342* / + Presedensi / stack lebih tinggi daripada + ( Push ke stack 342* (/+ 1 Letakkan di 342*1 (/+ queue - Push ke stack 342*1 -(/+ 5 Letakkan di 342*15 -(/+ queue
  • 13.
    Contoh Token Aksi Luaran Stack Keterangan ) Pop stack 342*15- ( / + Pop hingga ketemu "(" Pop stack 342*15- / + Abaikan pasangan tanda kurung ^ Push ke stack 342*15- ^ / + Presedensi ^ lebih tinggi daripada / 2 Letakkan di 342*15-2 ^/+ queue ^ Push ke stack 342*15-2 ^ ^ / + ^ bersifat asosiatif kanan 3 Letakkan di 342*15–23 ^^/+ queue $ Pop sisa stack 342*15–23 ^^/+
  • 14.
    Kelompok  Praktek menggunakan Subversion  Setup SVN repository di Google Code  Try it!  Submit your team's URL  Submit your team members
  • 15.
    Subversion Repository  Checkout  Membuat salinan lokal dari repository  svn checkout https://alawisoft.googlecode.com/svn/trunk/ alawisoft --username barliant@gmail.com  svn co https://alawisoft.googlecode.com/svn/trunk/ group-a –username barliant@gmail.com  Username  Alamat e-mail  Password  Auto generated
  • 16.
  • 17.
    Subversion  Setelah checkout, kerjakan modul masing-masing  Menambahkan berkas  svn add README.txt  Membuat folder baru  svn mkdir data  Setelah melakukan perubahan  svn commit -m "Keterangan perubahan."  Edit dan Review perubahan dengan 'svn commit'  Set environment variabel 'SVN_EDITOR = notepad'
  • 18.
    Subversion  Mendapatkan perubahan yang dilakukan rekan lain  'svn update'
  • 19.
    Tugas Kelompok  Implementasikan struktur data Queue  Implementasikan struktur data Stack  Implementasikan Shunting Yard Algorithm
  • 20.
    Evaluasi Postfix  Infix  3+4*2/(1-5)  Postfix  342*15-/+  Gunakan Stack Token Stack Operasi 3 3 Push 4 4 3 Push 2 2 4 3 Push * 3 Pop 2, Pop 4, Multiply 83
  • 21.
    Evaluasi Postfix Token Stack Operasi 1 1 8 3 Push 5 5 1 8 3 Push - 8 3 Pop 5, Pop 1, Substract -4 8 3 / 3 Pop -4, Pop 8, Divide -2 3 + Pop -2, Pop 3, Add 1
  • 22.
    Tiada hari tanpaSubversion  Update  Make changes  Examine changes  Resolve conflicts  Commit changes
  • 23.
    Sehari-hari Bersama SVN  SVN Update  Lihat perubahan, svn diff  Membuat direktori  Mkdir namaFolder  Tambahkan ke svn management  Svn add namaFolder  Melihat file / folder yang belum di-manage  Svn status
  • 24.
    Update dan MakeChanges  Setelah checkout, kerjakan modul masing-masing  svn update  Edit berkas  Menambahkan berkas  svn add README.txt  Membuat folder baru  svn mkdir data
  • 25.
    Examine Changes  Lihat status perubahan  svn status  Lihat perubahan setiap berkas  svn diff  Kembalikan ke versi sebelumnya  svn revert
  • 26.
    Commit Changes  Setelah melakukan perubahan  svn commit -m "Keterangan perubahan." --username barliant@gmail.com  Edit dan Review perubahan dengan 'svn commit'  Set environment variabel 'SVN_EDITOR = notepad'
  • 27.
    Resolve Conflicts Top pieceof bread Mayonnaise Lettuce Tomato Provolone <<<<<<< .mine Salami Mortadella Prosciutto ======= Sauerkraut Grilled Chicken >>>>>>> .r2 Creole Mustard Bottom piece of bread
  • 28.
    Pemeriksaan Progress Tugas  svn log --verbose  svn diff  svn list --verbose
  • 29.
    Update Working Copy  Svn checkout URL namaFolder –username namaUser  Cd namaFolder  Svn update  A ddition  U pdate  D elete  mer G e  C onflict
  • 30.
    Tips Command Prompt  Pindah folder  Cd namaFolder  Cd ..  Menyalin berkas  Copy  Membuat folder  Mkdir  Menghapus berkas  Del  Menghapus folder  Rmdir
  • 31.
    Tips Command Prompt  Panah atas, Panah bawah  Mengulan perintah yang sudah diketikkan
  • 32.
    Topik-topik Lanjutan  Project automation  Makefile (C, C++)  Ant (Java)  Setup (Python)  Deployment  Software packaging  Paket instalasi
  • 33.
    Topik-topik Lanjutan  Dokumentasi  Bagaimana membuat dokumentasi yang baik?  Literate programming  Java doc  Doxygen  Docstring  Code Branching  Release code to public  Development still on the go
  • 34.
    Topik-topik Lanjutan  Software Ticketing / Bug Tracking  Bagaimana menerima laporan bug (incident) dari user?
  • 36.
    Topik-topik Menarik  Social aspect  Banyak developer (khususnya OSS) tak pernah bertemu tatap muka!  Start-up companies  Varieties of softwares  Games (yang berkualitas?)
  • 37.
    Pustaka  http://en.wikipedia.org/wiki/Shunting-yard_algorithm  http://en.wikipedia.org/wiki/Edsger_W._Dijkstra  http://code.google.com/  http://tortoisesvn.tigris.org/  http://www.sliksvn.com/en/download  tjerdastangkas.blogspot.com/search/label/ikp321