Monday, January 16, 2017

Week 10 - Week 13 -- Exceptions, Date and Time API, Lambda Expressions

Week11
Rationale and Types of Exceptions
- Exception digunakan di Java untuk meng-handle events yang memengaruhi flow normal dari eksekusi app.
- Keuntungan exceptions:
1. memisahkan error-handling code dari main code program
2. menghandle error sampai call stack
3. dapat mengelompokkan exceptions yang mirip"
- Exceptions di java didefine oleh instance dr class Throwable. Class Exceptions menginclude class Throwable serta subclassnya.
- Checked Exceptions: dicek oleh compiler pada saat compile time. cth ClassNotFoundException
- Unchecked Exceptions: dicek pada saat runtime, merupakan subclass dari RuntimeException, termasuk RuntimeException sendiri. kebanyakan terjadi karena programming errors. cth: NullPointerException
- Error: uncheckes exceptions yang menandakan kondisi ekstrim yang mampu membuat app kita fail. contoh: OutOfMemoryError
- Defining Exceptions: exceptions harus memiliki 2 constructor, yang satunya tidak memiliki parameter apapun dan satunya memiliki 1 param String.
- gunakan keyword throw untuk melempar exceptions di Java.
- propagating exceptions: exceptions dapat diberikan sampai pada class main. gunakan keyword throws.
- Alter the program flow:
1. try-catch: basic, kalo ada exceptions statement setelah throw gadilakukan
2. try-finally: finally slalu dilakukan kecuali kalau program di-terminate sebelum sampe ke finally
3. try-catch-finally
4. try-with-resource-statement: didalam kurung try ada statement/code, setelah itu baru throw ...
5. multi-catch clause: dlm 1 try ada banyak catch.

Common Checked Exceptions:
- ClassNotFoundException
- NoSuchMethodException
- FileNotFoundException
- IOException
- SQLException
- InterruptedIOException

Common Unchecked Exceptions:
- IllegalArgumentException
- NumberFormatException
- ArrayIndexOutOfBoundsException
- IndexOutOfBoundsException
- NullPointerException
- IllegalStateException
- ClassCastException
- ArithmeticException

Common Errors:
- AssertionError
- ExceptionInInitializeError
- VirtualMachineError
- OutOfMemoryError
- NoClassDefFoundError

Assertions: statement pada program yang memungkinkan programmer untuk menguji asumsi dari program mereka.
- boolean value
- cth: assert stock>qty;
     : assert stock>qty : "stock is less than qty";

LAB SESSION
- using assertions
- create custom exception class
- try-with-resource stat
- multi-catch clause

Week12
Programming with Date & Time API
- 3 calendar data creation classes:
1. LocalTime Class: terdapat bbrp method declarations untuk mendukung pembuatan time (tanpa date / time zone).
cth: Localtime a = LocalTime.now(); LocalTime b = LocalTime.parse("12:00", DateTimeFormatter.ISO_TIME); LocalTime c = LocalTime.of(12,30,38);

2. LocalDate Class
cth: LocalDate d = LocalDate.now(); LocalDate e = LocalDate.parse("2016-10-01"); LocalDate f = LocalDate.of(2015,12,5);

3. LocalDateTime Class

Calendar Data Manipulation
- plus/minus methods:
LocalDateTime a = LocalDateTime.now();
a = a.plusYears(1).plusMonths(2).plusWeeks(3).plusDays(4).plusHours(5).plusMinutes(6).plusSeconds(7).plusNanos(8) //kalo minus tinggal ganti plus sama minus aja

Calendar Periods:
- Period: date-based amount terdiri dari tahun, bulan, hari
- Duration: time-based amount terdiri dari hari, jam, menit, detik, nanoseconds
- method dari class Period yang sering digunakan:
1. of[interval]
2. Parse
3. get[interval]
4. with[interval]
5. plus[interval]
6. minus[interval]
7. is[state]
8. between

Week13
Lambda Expression: closure-like construct (closure: kemampuan sebuah function yang dapat disimpan sebagai variabel).
- Lambda Expression support Functional Programming in Java & memiliki bbrp benefit antara lain:
1. Code Reduction -> to a single line
2. Improvement to the collection Library (easier iteration, filtering, sorting, counting, etc)
3. Improvement to the concurrency library
4. Lazy evaluation support through streams.

- Lambda Expression harus memiliki sebuah Functional Interface yang disebut juga sebagai SAM (Single Abstract Method)
- Functional Interface harus punya exacly 1 abstract method. Dapat memiliki satu atau lebih method default ataupun static methods.
- basic syntax dari lambda expression:
  (parameter list) -> { statements; }

- Untuk mengimplementasikan lambda expression dengan functional interface, kita dapat melakukan refactoring sebuah anonymous inner class kedalam lambda expression menggunakan Comparator FI.
- Comparator interface implemented from a class
- Comparator interface used with an anonymous inner class
- Comparator functional interface used with a lambda expression

cth ketika sorting sbh ArrayList dengan lambda expression, kita dapat menentukan desired ordering menggunakan Comparator.

- Predicate Functional Interface: utk tes boolean value

Sunday, January 15, 2017

Java - Inheritance, Interface, Encapsulation, Polymorphism, Casting (PBO 2 Week 9 & 10)

Week 9
Inheritance: konsep fundamental dlm bhs pemrograman Java yang memungkinkan class-class tertentu untuk inherit methods & instance dari sebuah general class.
- class yang meng-inherit abstract class dapat meng-override methods yang ada.
- sebuah class hanya bisa meng-extend satu class lainnya.

Abstract Class: class yang tdk bisa di instantiate dan harus di extend.
- abstract class dpt memiliki abstract methods dan dapat meng-extend abstract class lain tanpa mengimplementasikan method yang ada.

Interfaces: digunakan untuk mendefinisikan fungsionalitas untuk class-class yang meng-implement interface tersebut.
- sebuah class dapat meng-implement > 1 interface.

Encapsulation: konsep menyimpan data bersamaan dengan methods untuk mengolah data tersebut dalam satu discrete class.
- memungkinkan data & method hiding (disebut juga information hiding).

Access Modifier: keyword yang menandakan apa saja yang dapat mengakses methods & instance variables.
- public, protected, private

Information Hiding: konsep untuk menyembunyikan detil implementasi dari sebuah class dengan menggunakan restrictive access modifiers.  

Setter & Getter: final concept dari information hiding. Sebaiknya instance variable dibuat private. Dengan demikian, tdk ada class external yang mampu mengakses variables secara langsung. Jika dibutuhkan, dapat mengakses setter & getternya saja.

LAB SESSION
- JavaDB
- Java Data Object
- Java Database Connectivity
- PreparedStatement
- Transactions

Week10
Polymorphism: sebuah object dapat berperan sebagai object lain dengan tipe yang berbeda dari original type-nya.
- dapat terjadi jika sebuah class meng-inherit class lain.
- Polymorphism juga dapat terjadi ketika sebuah class meng-implements interface, karena class tersebut harus memiliki methods yang sama seperti interface-nya, sehingga class tersebut dapat dianggap sebagai instance dari interface.

Casting: memungkinkan sebuah object untuk di-convert kembali menjadi original runtime type atau  type dari superclass nya.
- untuk melakukan casting, type diletakkan didalam tanda kurung ().
   double avg = 3.79;
   float gpa = (float) avg;

A. Casting Primitives: harus secara eksplisit agar tidak kehilangan precision saat konversi.
- Precision dapat hilang ketika: larger primitive di cast ke smaller primitives; floating point decimal di cast ke whole number primitive types.

B. Casting between primitives & Objects: dengan auto boxing & auto unboxing.
- Auto Boxing: wrap primitive value kedalam wrapper class yang bersangkutan.
- Auto Unboxing: unwrap value dari wrapper class kedalam primitive value.

C. Casting Objects
- sebuah object dapat berperan menjadi object superclass nya.
- untuk dapat mengakses fitur spesifik dari specific class, sebuah general class harus di cast kembali dengan specific class tersebut.
- contoh:
class Bank(){
  public bankMethod(){ return "Bank";};
}
class Account extends Bank{
  public bankMethod(){ return "Account";};
  public accountMethod(){ return "AccMethod";};
}

public class TestCast{
  public static void main (String args[]){
    Bank a = new Bank();
    Bank b = new Account();
    Account c = new Account();

    sout(a.bankMethod()); //Bank
    sout(b.bankMethod()); //Account
    sout(c.bankMethod()); //Account

    sout(b.accountMethod()); //invalid
    sout((Account)b.accountMethod()); //Account
  }
}

LAB SESSION
- Polymorphism via Interface & Inheritance
- Casting between primitives & objects

Sunday, January 08, 2017

Rekayasa Piranti Lunak - Risk Management

INTRODUCTION
- Risk: masalah potensial
- Karakteristik: ketidakpastian (may/may not happen); Loss (risk benar-benar terjadi dan menyebabkan loss / konsekuensi yang tdk diinginkan)

Macam-macam Risk:
1. Project Risks -> mengancam project plan; jika terjadi, kemungkinan project schedule dapat mengalami kemunduran dan meningkatkan costs

2. Technical Risk -> mengancam kualitas dan aktualitas (timeliness) software yg ingin diproduksil jika terjadi, implementation dapat menjadi sulit atau bahkan tdk mungkin

3. Business Risk -> mengancam viability (kelangsungan hidup) software yg sedang dibangun; jika terjadi, dapat membahayakan project atau product tsb
   Sub kategori Business Risks:
   1. Market Risk - membangun software yang tidak diinginkan orang
   2. Strategic Risk - membangun software yang tidak sesuai dengan keseluruhan strategi bisnis perusahaan
   3. Sales Risk - membangun software dimana tim sales tidak tahu cara memasarkannya
   4. Management Risk - kehilangan support dari senior management karena change in focus / change in people
   5. Budget Risk - kehilangan anggaran atau komitmen staf (pegawai)

4. Known Risk -> Risk yang mungkin belum ter-cover setelah dilakukan evaluasi terhadap project plan, business & technical environment tempat pengembangan software, ataupun sumber informasi terpercaya lainnya. (cth: unrealistic delivery date)

5. Predictable Risk -> risk yang dapat diramalkan berdasarkan past experience

6. Unpredictable Risk -> risk yang dapat dan sedang terjadi, namun sangat sulit untuk diidentifikasi terlebih dahulu

RISK STRATEGIES
1. Reactive: nothing is done about the risks until something goes wrong
2. Proactive: mengikuti langkah-langkah dari risk management; bertujuan untuk menghindari risk & memiliki contingency plan untuk menangani unavoidable risks secara terkontrol dan efektif

Langkah-langkah Risk Management:
1. Identifikasikan possible risks
2. Analisa tiap risk utk menentukan probabilitas terjadinya & impact yang akan diterima jika terjadi
3. Rank semua risk berdasarkan probability & impact
4. Develop sebuah contingency plan untuk menangani risk yang memiliki high probability & high impact

RISK IDENTIFICATION
-> systematic attempt to specify threats to the project plan
-> slh satu cara: Risk Item Checklist -> focused on known & predictable risk in specific subcategories

Known and Predictable Risk Categories:
1. Product Size - berkaitan dgn ukuran keseluruhan software yg ingin dibangun
2. Business Impact - berkaitan dgn constraint yang dikenakan oleh management atau marketplace
3. Customer Characteristics - berkaitan dgn kemampuan customer serta kemampuan developer untuk mengkomunikasikan kepada customer pada waktu yang tepat
4. Process Definition - berkaitan dgn ukuran software process mana yg sudah diikuti
5. Development Environment - berkaitan dgn availability & quality dr tools yg dipakai utk develop project
6. Technology to be built - berkaitan dgn kompleksitas software
7. Staff Size & Experience - berkaitan dgn pengalaman technical & project dr staff engineer yang akan membangun software

Risk Projection / Estimation Steps
1. Membuat skala persepsi kemungkinan dr sebuah risk (cth: 0-low, 10-high)
2. Menggambarkan konsekuensi dari risk
3. Estimasi impact dari risk terhadap project & product
4. Catat overall accuracy dari risk projection sehingga tidak ada kesalahpahaman

Risk Table
terdiri dari 5 kolom, yaitu:
1. Risk Summary - deskripsi singkat dari risk
2. Risk Category - slh 1 dari 7 known & predictable risk categories
3. Probability
4. Impact - (1) catastrophic (2) critical (3) marginal (4) neglectible
5. RMMM - Pointer to a paragraph in Risk Mitigation, Monitoring, & Management Plan

RMMM
Strategi efektif untuk menangani risk harus mencakup 3 hal:
1. Risk Mitigation
2. Risk Monitoring
3. Risk management & continency planning

- Risk mitigation (avoidance) is the primary strategy and is achieved through a plan
- During risk monitoring, the project manager monitors factors that may provide an indication of whether a risk is becoming more or less likely
- Risk monitoring has three objectives
  1. To assess whether predicted risks do, in fact, occur
  2. To ensure that risk aversion steps defined for the risk are being properly applied
  3. To collect information that can be used for future risk analysis

- Risk management and contingency planning assume that mitigation efforts have failed and that the risk has become a reality
- 7 Principles of Risk Management:
  1. Maintain a global perspective
     = View software risks within the context of a system and the business problem that is is intended to solve
  2. Take a forward-looking view
     = Think about risks that may arise in the future; establish contingency plans
  3. Encourage open communication
     = Encourage all stakeholders and users to point out risks at any time
  4. Integrate risk management
     = Integrate the consideration of risk into the software process
  5. Emphasize a continuous process of risk management
     = Modify identified risks as more becomes known and add new risks as better insight is achieved
  6. Develop a shared product vision
     = A shared vision by all stakeholders facilitates better risk identification and assessment
  7. Encourage teamwork when managing risk
     = Pool the skills and experience of all stakeholders when conducting risk management activities

Friday, January 06, 2017

RPL - Penjadwalan

Peningkatkan kualitas perencanaan dan pengendalian dalam menghadapi sejumlah kegiatan dan kompleksitas pekerjaan proyek, maka diperlukan metode dan teknik yang tepat, yakni:
1. Metode Bagan Balok (Bar Chart)
2. Analisis Jaringan Kerja (Network Analysis): Berupa penyajian perencanaan dan pengendalian, khususnya jadwal kegiatan proyek secara sistematis dan analitis untuk mendapatkan efisiensi dan efektivitas pekerjaan

1. Bar Chart (Gantt chart)

Tujuan:
Identifikasi terhadap unsur waktu dan urutan rencana kegiatan (pekerjaan) yang meliputi waktu mulai (starting time), waktu penyelesaian (Solution Time) dan saat pelaporan (Reporting)

Definisi:
Bagan batang horisontal menggambarkan pekerjaan proyek berdasarkan kalender, tiap batang mewakili satu pekerjaan proyek, dimana pekerjaan didaftar secara vertikal pada kolom kiri, dan pusat horisontal adalah garis waktu kalender.



2. Network Analysis
Hal penting yang diperlukan untuk setiap pekerjaan proyek,yaitu: 
1. Urutan rangkaian aktivitas untuk setiap pekerjaan 
    Urutan pekerjaan menunjukkan pekerjaan mana yang harus dikerjakan terlebih dahulu sebelum mengerjakan pekerjaan berikutnya Urutan pekerjaan digambarkan dalam diagram jaringan (network diagram) atau arrow diagram, dimana diagram jaringan ini menggunakan simbol: 
    1. Simpul (node) menggambarkan suatu kejadian (event) 
    2. Panah (arrow) menggambarkan suatu kegiatan (activity)

2. Waktu yang dibutuhkan dalam menyelesaikan setiap pekerjaan 

Contoh diagran jaringan:
keterangan:
1. 1,2,3,4,5 disebut sebagai event (kejadian) 
2. A,B,C,D,E disebut sebagai aktivitas (activity) 
3. Head event, kejadian yang mengakhiri suatu aktivitas 
4. Tail event, kejadian yang mengawali suatu aktivitas


Konsep diagram jaringan:
1. setiap aktivitas hanya diwakili oleh satu panah di jaringan, tidak ada sebuah aktivitas yang diwakili dua kali di jaringan (tidak ada kegiatan yang kembar)

2.  Tidak ada 2 aktivitas yang ditunjukkan oleh 1 tail event dan head event yang sama. Situasi seperti ini dapat terjadi pada 2 atau lebih aktivitas yang dapat dilakukan secara bersama, untuk itu digunakana aktivitas dummy (dummy activity)



Jalur Kritis
1. Jalur aktivitas kritis dari awal sampai akhir aktivitas didalam diagram jaringan, artinya jalur kritis menunjukan aktivitas-aktivitas kritis didalam proyek 
2. Disebut aktivitas kritis bila penundaan waktu aktivitas akan mempengaruhi waktu penyelesaian keseluruhan proyek 
3. Sedang aktivitas tidak kritis adalah jika kegiatan memilik waktu yang dapat ditunda 
4. Waktu yang dapat ditunda didalam aktivitas tidak kritis disebut dengan slack atau float. 
5. Jalur kritis ditunjukan oleh waktu paling lama dalam penyelesaian proyek, artinya jika ada satu saja aktivitas dijalur kritis yang tertunda, maka waktu penyelesaian proyek secara keseluruhan akan tertunda
6. Jalur kritis mempunyai 2 alasan: 
    a.Waktu penyelesaian proyek tidak dapat dikurangi kecuali satu atau lebih aktivitas dijalur kritis dapat dipercepat penyelesaiannya 
    b.Penundaan aktivitas dijalur kritis akan menyebabkan penundaan waktu penyelesaian dari proyek 
7. Penundaan di jalur tidak kritis tidak akan menunda waktu penyelesaian proyek, sejauh penundaan tidak melebihi waktu slack untuk setiap aktivitas tidak kritis 
8. Penentuan jalur kritis, ada dua cara: a. waktu terpanjang (terlama) dari setiap jalur b. nilai 0 (null) pada perhitungan slack



Teknik perhitungan dibagi atas 2 tahap pekerjaan, yaitu: 
1. Tahap Forward Pass, untuk menghitung ES 
2. Tahap Backward Pass, untuk menghitung LF

1. Tahap Forward Pass:

2. Tahap Backward Pass:


CONTOH KASUS!






Sumber: Slide (PDF) Penjadwalan by Muhammad Taufiq
 

RPL - Rencana Anggaran Biaya

Contoh penyusunan rencana anggaran biaya:

bab-bab di item pekerjaan sesuai langkah-langkah model prosesnya, dalam contoh diatas menggunakan model proses evolusioner yaitu communication - quick plan - quick design - construction of prototype - delivery and feedback.

jangan lupa harga satuan sudah termasuk keuntungan ya :)

ls itu intinya pengeluaran yang cuma dilakukan sekali bukan perbulan, misalnya beli komputer buat di kantor

Rekayasa Perangkat Lunak - Web Testing

1. Content Testing
   1.Menemukan syntatic error (typo,grammar mistake)
   2.Menemukan semantic error (kurang lengkapnya informasi
   3.Menemukan error di struktur organisasi yang ditampilkan ke user

2. Database Testing
    Beberapa Error yang terjadi
    1.Permintaan informasi client-side jarang dipresentasikan dalam bentuk form yang bisa di input menjadi database management system
    2.Database mungkin jauh dari server WebApp
    3.Data mentah dari database harus di transmisikan ke WebApp server
    4.Konten dinamik harus ditransmisikan ke client yang akhirnya menampilkannya ke user

3. User Interface Testing
    1.Interface Testing Strategy
    Strategi keseluruhan untuk interface testing strategy ,yaitu :

    (1) mengungkap kesalahan terkait dengan mekanisme interface tertentu.
    (2) mengungkap kesalahan dalam cara antarmuka mengimplementasikan semantik navigasi, fungsi webapp, atau konten display.

    Langkah –langkah untuk mencapai interface strategy testing :
• Fitur interface diuji untuk memastikan bahwa aturan desain, estetika, dan terkait konten visual yang tersedia untuk pengguna tanpa kesalahan.
• Mekanisme interface individu diuji dengan cara yang analog dengan Unit pengujian.
• Setiap mekanisme antarmuka diuji dalam konteks kasus penggunaan untuk kategori pengguna tertentu.
• Complete Interface  diuji terhadap use case yang sudah dipilih.
• Interface diuji dalam berbagai lingkungan (misalnya, browser) untuk memastikan bahwa hal itu akan kompatibel.

    2. Interface Testing Mechanism
        Ketika pengguna berinteraksi dengan web , interaksi terjadi melalui satu atau lebih mekanisme interface. Ada sebuah gambaran singkat dari pertimbangan testing  untuk setiap interface. Seperti :
        - Link
        - Form
        - Client-side scripting
        - Dynamic HTML
        - Pop-Up Windows
        - Streaming Content
        - Cookies

    3. Testing Interface Semantics

Testing Interface Semantics bertujuan untuk mengevaluasi seberapa baik desain melayani user, menawarkan arah yang jelas, memberikan feedback, dan mempertahankan konsistensi bahasa dan pendekatan.

    4. Usability Test
kegunaan usability mirip dengan Testing Interface Semantic yang juga mengevaluasi sejauh mana user dapat berinteraksi secara efektif dengan webapp dan sejauh mana webapp memberikan feedback yang berarti,

        Langkah pertama dalam Useability Testing adalah untuk mengidentifikasi satu set kategori useability dan menetapkan tujuan testing untuk setiap kategori, seperti :
        1. Interactivity - Apakah mekanisme interaksi (misalnya, menu pull-down, tombol,pointer) mudah dimengerti dan digunakan?
        2.     Layout - Apakah mekanisme navigasi, konten, dan fungsi ditempatkan dengan cara yang memungkinkan pengguna untuk menemukan mereka dengan cepat?
        3. Readability - Apakah teks ditulis dengan baik dan dapat dimengerti? Apakah representasi grafis mudah dimengerti?
        4. Aesthetics - Apakah tata letak, warna, jenis huruf, dan karakteristik terkait menyebabkan kemudahan menggunakan? Apakah pengguna "merasa nyaman" dengan tampilan dan nuansa dari webapp?
        5. Display characteristics - Apakah tampilan WebApp membuat penggunaan optimal dari ukuran layar dan resolusi?
        6. Time sensitivity – Apakah yang penting antara fitur, fungsi, dan konten akan  digunakan atau diperoleh pada waktu yang tepat?
        7. Personalization - Apakah penjahit WebApp sendiri untuk kebutuhan spesifik yang berbeda pengguna kategori atau pengguna individu?
        8. Accessibility - Apakah webapp yang dapat diakses oleh orang-orang yang memiliki  kekurangan fisik?

    5. Compability Test
Masalah kompatibilitas yang serius dapat ditemui.Misalnya :
- kecepatan download bisa menjadi tidak dapat diterima
- kurangnya diperlukan plug-in dapat membuat konten tidak tersedia
- Perbedaan Browser dapat mengubah tata letak halaman secara dramatis
- Gaya font dapat diubah dan menjadi tidak terbaca, atau bentuk dapat diatur secara tidak benar.

    6. Component-level Testing
Componen level testing juga disebut function testing, berfokus pada satu set tes yang mencoba untuk mengungkap kesalahan dalam fungsi webapp.
Componen level testing setelah bentuk data didefinisikan, pengguna memilih tombol atau mekanisme kontrol lainnya untuk memulai eksekusi. Metode desain uji kasus berikut termasuk :

        - Equivalence partitioning— Form input dinilai untuk menentukan apa kelas data yang relevan untuk fungsi kasus uji untuk setiap kelas dari masukan yang berasal dan dieksekusi, sementara lainnya kelas input tetap konstan.

        - Boundary value analysis—Misalnya, fungsi perhitungan pengiriman sebelumnya dicatat meminta jumlah maksimum hari yang diperlukan untuk pengiriman produk.

        - Path testing—Tujuannya adalah untuk mengungkap kesalahan yang terjadi selama penanganan kesalahan(Misalnya, pesan kesalahan yang tidak benar atau tidak ada, WebApp kegagalan sebagai konsekuensi dari kesalahan, keluaran salah didorong oleh masukan yang salah, efek samping yang terkait dengan pengolahan komponen).

    7. Navigation Testing
        Tugas dari navigation testing adalah :

        1. Untuk memastikan bahwa mekanisme yang memungkinkan
pengguna webapp untuk melakukan perjalanan melalui WebApp adalah semua fungsional.
        2. Untuk memvalidasi bahwa setiap navigasi Unit semantik (NSU) dapat dicapai dengan tepat  kategori pengguna.


    8. Configuration Testing
        Testing ini untuk menguji kemungkinan konfigurasi cient-side dan server-side untuk memastikan bahwa pengalaman user semuanya akan sama dan untuk memisahkan kesalahan yang mungkinkan kesalahan kesalahan khusus pada konfigurasi tertentu.

    9. Security Testing
        Suatu hal kompleks yang harus sepenuhnya dipahami sebelum pengujian keamanan yang efektif dapat tercapai.
        WebApps, Client-Side dan Server-Side merupakan target yang menarik bagi hacker untuk mencapai apa yang mereka inginkan.
        Tugas Tester Keamanan yaitu mengungkapkan atau mencari kelemahan yang dapat dimanfaatkan oleh orang – orang dengan maksud tertentu.


    10. Performance Testing
        Tujuan:
        1. Untuk mengetahui bagaimana sistem merespon loading (jumlah pengguna, jumlah transaksi, volume keseluruhan data)
        2. Untuk mengumpulkan matriks yang dapat menyebabkan modifikasi desain untuk meningkatkan kinerja

    11. Load Testing
        Testing ini digunakan untuk menentukan bagaimana WebApp dan lingkungan Server-Side akan merespon berbagai kondisi pembebanan.

    12. Stress Testing
        Kelanjutan dari load testing, namun diberikan beban yang melebihi batas operasional.

Credits PPT dari Team Cena (RPL Adhi A)

Rekayasa Perangkat Lunak - Mengukur Kepuasan Konsumen

Ada 2 jenis kepuasan:
1. Kepuasan fungsional: kepuasan yang diperoleh dari pemakaian/fungsi suatu produk. contohnya karena makan jadi kenyang
2. Kepuasan psikologikal: kepuasan yang diperoleh dari atribut tak berwujud, contohnya kemewahan, pelayanan yang baik

Menurut Philip Kotler ada 4 metode untuk mengetahui kepuasan:
1. Sistem keluhan dan saran -> untuk mengumpulkan informasi langsung dari konsumen.
2. Survei kepuasan konsumen -> menunjukkan komunikasi 2 arah kepada konsumen dan menunjukkan perhatiannya pada konsumen.
3. Ghost Shopping: mengetahui kekuatan dan kelemahan pesaing dan membandingkannya dengan perusahaan itu sendiri.
4. Analisis kehilangan konsumen -> tingkat kehilangan konsumen dapat menunjukkan kegagalan perusahaan dalam memuaskan konsumennya.

Populasi dan sampel
- Populasi adalah wilayah generalisasi, yang terdiri atas objek/subjek yang mempunyai kualitas dan karakteristik tertentu yang diterapkan oleh peneliti untuk dipelajari dan kemudian ditarik kesimpulannya (Sugiyono, 2006: 117).

- Sampel adalah bagian dari jumlah dan karakteristik yang dimiliki oleh populasi tersebut (Sugiyono, 2006: 118).

- 2 jenis pengambilan sampel: random sampling & nonrandom sampling

- Dikaitkan dengan besarnya sampel, selain tingkat kesalahan, ada lagi beberapa faktor lain yang perlu memperoleh pertimbangan yaitu:
(1) derajat keseragaman
(2) rencana analisis
(3) biaya
(4) waktu dan tenaga yang tersedia .
(Singarimbun dan Effendy, 1989).

- jika ukuran populasinya di atas 1000, sampel sekitar 10 % sudah cukup, tetapi jika ukuran populasinya sekitar 100, sampelnya paling sedikit 30%, dan kalau ukuran populasinya 30, maka sampelnya harus 100%.

- Krejcie dan Morgan (1970) dalam Uma Sekaran (1992) membuat daftar yang bisa dipakai untuk menentukan jumlah sampel:
(iya gw tau banyak, gausah dihafal juga ya :v)

Populasi (N)
Sampel (n)
Populasi (N)
Sampel (n)
Populasi (N)
Sampel (n)
10
10
220
140
1200
291
15
14
230
144
1300
297
20
19
240
148
1400
302
25
24
250
152
1500
306
30
28
260
155
1600
310
35
32
270
159
1700
313
40
36
280
162
1800
317
45
40
290
165
1900
320
50
44
300
169
2000
322
55
48
320
175
2200
327
60
52
340
181
2400
331
65
56
360
186
2600
335
70
59
380
191
2800
338
75
63
400
196
3000
341
80
66
420
201
3500
346
85
70
440
205
4000
351
90
73
460
210
4500
354
95
76
480
214
5000
357
100
80
500
217
6000
361
110
86
550
226
7000
364
120
92
600
234
8000
367
130
97
650
242
9000
368
140
103
700
248
10000
370
150
108
750
254
15000
375
160
113
800
260
20000
377
170
118
850
265
30000
379
180
123
900
269
40000
380
190
127
950
274
50000
381
200
132
1000
278
75000
382
210
136
1100
285
1000000
384

- untuk menghitung besar sampel minimal sebuah penelitian, rumus yang paling sering dipergunakan oleh para peneliti adalah:
a. Rumus Sampel Penelitian Cross-sectional
    ---> bisa dipelajari di: http://dienanalis.blogspot.co.id/2015/09/menghitung-besar-sampel-penelitian-uji.html

b. Rumus Sampel Penelitian Case Control dan Kohort
    ---> bisa dipelajari di: http://ranumra.blogspot.co.id/2013/04/rumus-case-control-penelitian-kasus.html

c. Penelitian Eksperimental
    ---> dalam penelitian eksperimental dilakukan manipulasi paling sedikit 1 variabel, mengontrol variabel lain yang relevan dan mengobservasi efek dan pengaruhnya terhadap satu atau lebih variabel terikat. sumber: eurekapendidikan.com 

Dimensi kepuasan (udh ada bahasan menurut Garvin di post sebelumnya)
-> menurut Irawan: 
    1. berwujud (tangible), 
    2. kehandalan (reliability), 
    3. cepat tanggap (responsiveness), 
    4. kepastian (assurance)
    5. empati (emphaty)

DeLone & McLean menyampaikan enam faktor yang menjadi dasar pengukuran keberhasilan sistem informasi:
1. kualitas informasi
2. kualitas sistem informasi
3. intensitas penggunaan sistem informasi (system use)
4. kepuasan pengguna akhir sistem informasi (end user satisfaction)
5. dampak individual (individual impact) dr sistem informasi
6. dampak organisasional (organizational impact) dr sistem informasi

Doll & Torkzadeh (1988) - 5 komponen user satisfaction:
1. Content
2. Accuracy
3. Format
4. Ease of use
5. Timeliness

lengkapnya bisa dilihat d tabel ini (sumber: slide)



MENGHITUNG NILAI AKHIR - SKALA LIKERT
A. PERTANYAAN POSITIF (+)
Skor 1. Sangat (tidak setuju/buruk/kurang sekali)
Skor 2. Tidak (setuju/baik/) atau kurang
Skor 3. Netral / Cukup
Skor 4. (Setuju/Baik/suka)
Skor 5. Sangat (setuju/Baik/Suka)

B. PERTANYAAN NEGATIF (-)
Skor 1. Sangat (setuju/Baik/Suka)
Skor 2. (Setuju/Baik/suka)
Skor 3. Netral / Cukup
Skor 4. Tidak (setuju/baik/) atau kurang
Skor 5. Sangat (tidak setuju/buruk/kurang sekali)


CRONBACH - ALFA
= untuk menghitung survei
---> bisa didownload & dipelajari di: https://www.dropbox.com/s/8xg3dwqifz3urox/cronbachalpha%28manual%29.pdf?dl=0