Skip to content · ⁨Lompat ke konten⁩

Software Development · ⁨Pengembangan Perangkat Lunak⁩

A-Level Computer Science · ⁨Ilmu Komputer A-Level⁩ · Topic 12 · ⁨Topik 12⁩

Video lesson for this topic · ⁨Pelajaran video untuk topik ini⁩ Open the video page · ⁨Buka halaman video⁩
19:27

Siklus Hidup Pengembangan Program

Buggy kecil, jika lolos hingga rilis, bisa menelan biaya besar untuk diperbaiki—jauh lebih mahal daripada mendeteksinya sejak dini. Itulah mengapa kita tidak langsung mulai mengetik kode. Kita mengikuti…

English narration · English + 中文 subtitles burned in · ⁨Narasi bahasa Inggris · Subtitle bahasa Inggris + 中文 disematkan langsung⁩

12.1

Program development life cycle · ⁨Siklus hidup pengembangan program⁩

Syllabus · ⁨Silabus⁩
English
Candidates should be able to: Notes and guidance
Show understanding of the purpose of a development life cycle
Show understanding of the need for different development life cycles depending on the program being developed Including: waterfall, iterative, rapid application development (RAD)
Describe the principles, benefits and drawbacks of each type of life cycle
Show understanding of the analysis, design, coding, testing and maintenance stages in the program development life cycle
Bahasa Indonesia
Kandidat harus mampu: Catatan dan panduan
Tunjukkan pemahaman tentang tujuan siklus pengembangan
Tunjukkan pemahaman tentang kebutuhan berbagai siklus pengembangan tergantung pada program yang dikembangkan Termasuk: waterfall, iteratif, pengembangan aplikasi cepat (RAD)
Deskripsikan prinsip, manfaat, dan kekurangan dari setiap jenis siklus hidup
Tunjukkan pemahaman tentang tahap analisis, desain, pemrograman, pengujian, dan pemeliharaan dalam siklus pengembangan program

Source: Cambridge International syllabus · ⁨Sumber: Silabus Cambridge International⁩

English

A development life cycle 开发生命周期 is the set of stages from idea to finished, maintained software. It exists to plan, manage and control a project — to build the right product, on time, with good quality.

Why a life cycle is needed

The examiner's list for "the purpose of a development life cycle": it breaks a large project into stages that can be planned and managed; it makes sure the requirements are found and agreed before design and coding begin; it builds in testing and documentation rather than leaving them to the end; it lets the team track progress against milestones and manage risk; and it gives the customer defined points at which to review the work. Without one, a team codes first and discovers late that it built the wrong thing.

Why there are different ones

No single life cycle fits every project, so several development life cycles exist. The choice depends on the size and complexity, how clear the requirements 需求 are at the start, how much change is expected, the risk level, the team, and the deadline.

Common models

  • Waterfall 瀑布模型 — a linear sequence (Analysis → Design → Coding → Testing → Maintenance), each stage finished before the next. Clear and well-documented; good for stable requirements, but poor at coping with mid-project change, and the customer sees nothing working until the end.
  • Iterative model 迭代模型 — repeated passes, each producing a partial version that is reviewed and refined. Catches problems earlier; good when requirements are discovered over time, but harder to estimate.
  • Rapid Application Development 快速应用开发 (RAD) — heavy use of a prototype 原型 and user feedback. Very fast first delivery; good for changing requirements, but depends on user availability and suits smaller systems.
  • Agile 敏捷 — short iterations ("sprints"), constant collaboration and testing. Flexible and adaptive, but needs a committed customer and a skilled team.

Principles, benefits and drawbacks — as the mark scheme lists them.

Model Principle Benefits Drawbacks
waterfall the stages run in a fixed order, each completed and signed off before the next starts; going back means restarting the sequence simple to manage; every stage is fully documented; requirements are fixed early, so costs and dates can be estimated inflexible once a stage is finished; no working software until late; a mistake in analysis is expensive to fix later; the customer cannot see progress
iterative a small working version is built first, then repeatedly improved through further versions until complete working software early and often; problems found in early versions; the customer's feedback shapes each version; requirements can change hard to estimate the total time and cost; repeated testing costs effort; needs the customer to be available; can drift if versions are not planned
RAD prototypes of parts of the system are built quickly and refined with the user until accepted, often in parallel by several teams very fast delivery of a first version; the user is involved throughout, so the product fits their needs; changes are easy to absorb needs skilled developers and committed users; documentation is weak; less suited to large or safety-critical systems

Worked example. A company must be the first to launch a website for a new games console, and the design will change as the console's features are announced. Name the most suitable life cycle and justify it.

RAD. A prototype of the site can be built and shown to the users within days, and refined as the requirements change; the site is small enough for a prototype-driven approach, and speed of delivery is the main requirement. Waterfall would fix the requirements before any page was built and deliver nothing until the end.

The standard stages

Each stage has a purpose, an output and typical activities — a "describe the … stage" question wants two or three of these.

  • analysis — find out what the program must do. Activities: interviews, questionnaires and observation of the current system; a feasibility study; agreeing the requirements specification, which every later stage is checked against.
  • design — decide how it will do it. Outputs: the structure chart (modules and parameters), flowcharts or pseudocode for each module, identifier tables and data structures, screen and file layouts, and the test plan written now, from the specification, before any code exists.
  • coding (implementation 实现) — write the program in a high-level language, module by module, following the design; each module is tested as it is written.
  • testing — run the program against the test plan (normal, abnormal, extreme and boundary data) and correct the errors found; integration, alpha, beta and acceptance testing follow.
  • maintenance 维护 — after release, correct faults, adapt the program to new hardware, software or law, and improve it (see below).

Worked example. Complete the waterfall diagram Analysis → ? → ? → ? → Maintenance and describe what happens at the design stage.

The missing stages are Design, Coding, Testing. At the design stage the requirements are turned into a plan for the program: the problem is decomposed into modules (a structure chart), the algorithm for each module is written as pseudocode or a flowchart, the data structures and identifiers are chosen, the screens and files are laid out, and the test plan is written from the specification.

Bahasa Indonesia

Siklus hidup pengembangan adalah serangkaian tahap dari ide hingga perangkat lunak jadi yang terawat. Tujuannya adalah untuk merencanakan, mengelola, dan mengendalikan sebuah proyek — yaitu membangun produk yang tepat, tepat waktu, dengan kualitas baik.

Tim perangkat lunak yang sedang berkolaborasi di sekitar meja
Perangkat lunak dibangun oleh tim yang mengikuti siklus hidup pengembangan agar tetap terkoordinasi

Diagram alir dengan terminator, kotak proses, dan belah ketupat keputusan *Diagram alir merencanakan logika program selama tahap desain dalam siklus tersebut

Mengapa siklus hidup diperlukan

Daftar penguji untuk "tujuan siklus hidup pengembangan": memecah proyek besar menjadi tahap-tahap yang dapat direncanakan dan dikelola; memastikan kebutuhan ditemukan dan disepakati sebelum desain dan pengkodean dimulai; menyertakan pengujian dan dokumentasi daripada meninggalkannya hingga akhir; memungkinkan tim melacak kemajuan terhadap titik penting dan mengelola risiko; serta memberikan pelanggan titik-titik terdefinisi untuk meninjau pekerjaan. Tanpa satu pun itu, tim akan mulai mengode terlebih dahulu dan baru menyadari terlambat bahwa mereka telah membangun sesuatu yang salah.

Mengapa ada berbagai jenisnya

Tidak ada satu siklus hidup pun yang cocok untuk setiap proyek, sehingga terdapat banyak siklus hidup pengembangan. Pilihannya bergantung pada ukuran dan kompleksitas, seberapa jelas kebutuhan di awal, seberapa banyak perubahan yang diharapkan, tingkat risiko, tim, dan tenggat waktu.

Model-model umum

  • Waterfall — urutan linear (Analisis → Desain → Pengkodean → Pengujian → Pemeliharaan), setiap tahap selesai sebelum tahap berikutnya dimulai. Jelas dan terdokumentasi dengan baik; baik untuk kebutuhan yang stabil, tetapi buruk dalam menghadapi perubahan di tengah proyek, dan pelanggan tidak melihat apa pun yang berfungsi hingga akhirnya.
  • Model iteratif — perjalanan berulang, setiap putaran menghasilkan versi parsial yang ditinjau dan disempurnakan. Menangkap masalah lebih awal; baik ketika kebutuhan ditemukan seiring berjalannya waktu, tetapi lebih sulit untuk diestimasi.
  • Pengembangan Aplikasi Cepat (RAD) — penggunaan intensif prototipe dan umpan balik pengguna. Pengiriman pertama sangat cepat; baik untuk kebutuhan yang berubah, tetapi bergantung pada ketersediaan pengguna dan cocok untuk sistem yang lebih kecil.
  • Agile — iterasi pendek ("sprint"), kolaborasi dan pengujian yang konstan. Fleksibel dan adaptif, tetapi membutuhkan pelanggan yang berkomitmen dan tim yang terampil.

Lima kotak (Analisis, Desain, Pengkodean, Pengujian, Pemeliharaan) yang mengalir ke bawah, masing-masing menuju tahap berikutnya *Model waterfall: setiap tahap selesai sebelum tahap berikutnya dimulai

Siklus Desain-Bangun-Uji-Tinjau dengan loop pengulangan kembali ke Desain, dan bilah versi yang semakin tinggi setiap putarannya hingga selesai *Model iteratif: perjalanan berulang menyempurnakan program

Tiga bagian dibangun secara paralel sebagai prototipe yang disempurnakan dengan umpan balik pengguna, lalu digabungkan menjadi sistem akhir *Pengembangan aplikasi cepat: tim bekerja pada bagian-bagian secara paralel

Prinsip, manfaat, dan kekurangan — seperti yang terdaftar dalam skema pemarkahan.

Model Prinsip Manfaat Kekurangan
waterfall tahap-tahap berjalan dalam urutan tetap, masing-masing diselesaikan dan disetujui sebelum tahap berikutnya dimulai; kembali berarti memulai kembali urutan sederhana dikelola; setiap tahap terdokumentasi sepenuhnya; kebutuhan ditetapkan sejak dini, sehingga biaya dan tanggal dapat diestimasi kaku setelah tahap selesai; tidak ada perangkat lunak yang berfungsi hingga terlambat; kesalahan dalam analisis mahal diperbaiki kemudian; pelanggan tidak dapat melihat kemajuan
iterative versi kerja kecil dibangun terlebih dahulu, lalu terus ditingkatkan melalui versi selanjutnya hingga selesai perangkat lunak berfungsi awal dan sering kali; masalah ditemukan dalam versi awal; umpan balik pelanggan membentuk setiap versi; kebutuhan dapat berubah sulit mengestimasi total waktu dan biaya; pengujian berulang memakan usaha; membutuhkan pelanggan tersedia; dapat melenceng jika versi tidak direncanakan
RAD prototipe dari bagian-bagian sistem dibangun dengan cepat dan disempurnakan bersama pengguna hingga diterima, sering kali secara paralel oleh beberapa tim pengiriman versi pertama sangat cepat; pengguna terlibat sepanjang proses, sehingga produk sesuai dengan kebutuhan mereka; perubahan mudah diserap membutuhkan pengembang terampil dan pengguna yang berkomitmen; dokumentasi lemah; kurang cocok untuk sistem besar atau yang kritis terhadap keselamatan

Contoh soal. Sebuah perusahaan harus menjadi yang pertama meluncurkan situs web untuk konsol game baru, dan desainnya akan berubah saat fitur konsol diumumkan. Sebutkan siklus hidup yang paling sesuai dan berikan alasannya.

RAD. Prototipe situs dapat dibangun dan ditampilkan kepada pengguna dalam hitungan hari, dan disempurnakan seiring perubahan kebutuhan; situsnya cukup kecil untuk pendekatan berbasis prototipe, dan kecepatan pengiriman adalah persyaratan utama. Waterfall akan menetapkan kebutuhan sebelum halaman mana pun dibangun dan tidak akan mengirimkan apa pun hingga akhir.

Tahap-tahap standar

Setiap tahap memiliki tujuan, keluaran, dan aktivitas典型 — pertanyaan "deskripsikan tahap …" menginginkan dua atau tiga dari hal-hal ini.

  • analisis — tentukan apa yang harus dilakukan program. Kegiatan: wawancara, kuesioner dan pengamatan sistem saat ini; studi kelayakan; persetujuan spesifikasi kebutuhan, yang menjadi acuan pengecekan pada setiap tahap selanjutnya.
  • desain — tentukan bagaimana hal itu akan dilakukan. Output: diagram struktur (modul dan parameter), flowchart atau pseudocode untuk setiap modul, tabel identifikasi dan struktur data, tata letak layar dan file, serta rencana uji yang ditulis sekarang, berdasarkan spesifikasi, sebelum kode dibuat.
  • pengkodean (implementasi) — tulis program dalam bahasa tingkat tinggi, modul per modul, mengikuti desain; setiap modul diuji saat ditulis.
  • pengujian — jalankan program sesuai rencana uji (data normal, tidak normal, ekstrem dan batas) dan perbaiki kesalahan yang ditemukan; pengujian integrasi, alpha, beta dan penerimaan mengikuti tahap ini.
  • pemeliharaan — setelah rilis, perbaiki cacat, sesuaikan program dengan perangkat keras, perangkat lunak atau undang-undang baru, dan tingkatkan performanya (lihat di bawah).

Contoh pengerjaan. Lengkapi diagram waterfall Analisis → ? → ? → ? → Pemeliharaan dan jelaskan apa yang terjadi pada tahap desain.

Tahap yang hilang adalah Desain, Pengkodean, Pengujian. Pada tahap desain, kebutuhan diubah menjadi rencana program: masalah diuraikan menjadi modul-modul (diagram struktur), algoritma untuk setiap modul ditulis sebagai pseudocode atau flowchart, struktur data dan identifikasi dipilih, layar dan file ditata, dan rencana uji ditulis berdasarkan spesifikasi.

Explore · ⁨Jelajahi⁩

The program development life cycle · ⁨Siklus hidup pengembangan perangkat lunak⁩

Step through the stages every project passes through. Getting the requirements right in analysis matters most — a mistake caught in testing is far costlier to fix than one caught early. · ⁨Melalui tahap-tahap yang dilalui setiap proyek. Mendapatkan persyaratan yang tepat dalam analisis sangat penting — kesalahan yang tertangkap saat pengujian jauh lebih mahal diperbaiki daripada yang tertangkap sejak dini.⁩

Explore · ⁨Jelajahi⁩

Software process lab · ⁨Lab proses perangkat lunak⁩

Classify development examples by the stage or tool they belong to. · ⁨Klasifikasikan contoh pengembangan berdasarkan tahap atau alat yang dimilikinya.⁩

Vocabulary · ⁨Kosa kata⁩ Train · ⁨Latih⁩
English Bahasa Indonesia
development life cycle/dɪˈveləpmənt laɪf ˈsaɪkl/ siklus hidup pengembangan
requirements/rɪˈkwaɪəmənts/ persyaratan
waterfall/ˈwɔːtəfɔːl/ air terjun
iterative model/ˈɪtərətɪv ˈmɒdl/ model iteratif
Rapid Application Development/ˈræpɪd ˌæplɪˈkeɪʃn dɪˈveləpmənt/ Pengembangan Aplikasi Cepat
prototype/ˈprəʊtəʊtaɪp/ prototipe
Agile/ˈædʒaɪl/ Agile
pseudocode/ˈsuːdəʊkəʊd/ pseudocode
test plan/test plæn/ rencana pengujian
implementation/ˌɪmplɪmənˈteɪʃn/ implementasi
boundary data/ˈbaʊndəri ˈdeɪtə/ data batas
acceptance testing/əkˈseptəns ˈtestɪŋ/ ujian penerimaan
hierarchical decomposition/haɪəˈrɑːkɪkl ˌdiːkɒmpəˈzɪʃn/ dekomposisi hierarkis
decomposition/ˌdiːkɒmpəˈzɪʃn/ dekomposisi
subroutines/ˈsʌbruːtiːnz/ subrutin
state-transition diagram/steɪt trænˈsɪʃn ˈdaɪəɡræm/ diagram transisi keadaan
states/steɪts/ menyatakan
syntax error/ˈsɪntæks ˈerə/ kesalahan sintaksis
run-time error/rʌn taɪm ˈerə/ kesalahan masa jalan
logic error/ˈlɒdʒɪk ˈerə/ kesalahan logika
dry run/draɪ rʌn/ jalur kering
trace table/treɪs ˈteɪbl/ tabel jejak
12.2

Program design tools · ⁨Alat desain program⁩

Syllabus · ⁨Silabus⁩
English
Candidates should be able to: Notes and guidance
Use a structure chart to decompose a problem into sub-tasks and express the parameters passed between the various modules/procedures/functions which are part of the algorithm design Describe the purpose of a structure chart Construct a structure chart for a given problem Derive equivalent pseudocode from a structure chart
Show understanding of the purpose of state-transition diagrams to document an algorithm
Bahasa Indonesia
Kandidat harus mampu: Catatan dan panduan
Gunakan bagan struktur untuk menguraikan masalah menjadi sub-tugas dan menyatakan parameter yang dilewatkan antar modul/prosedur/fungsi yang merupakan bagian dari desain algoritma Jelaskan tujuan dari bagan struktur. Bangun bagan struktur untuk masalah yang diberikan. Turunkan pseudocode ekuivalen dari bagan struktur
Tunjukkan pemahaman tentang tujuan diagram transisi keadaan untuk mendokumentasikan algoritma

Source: Cambridge International syllabus · ⁨Sumber: Silabus Cambridge International⁩

English

Structure chart

A structure chart 结构图 shows the hierarchical decomposition 分解 of a program into modules (subroutines 子程序) and the parameters 参数 passed between them. Each module is a rectangle; lines link caller (above) to callee (below); small arrows show data going down and results coming back up. The design can then be turned into equivalent pseudocode 伪代码.

It is a design-stage tool, and you can read the procedure signatures off it.

The symbols the examiner asks about. A box is a module; a line links a caller (above) to the modules it calls (below), read left to right in the order they are called. A small arrow with an open circle at its tail is a data couple — a parameter passed down into a module or a value returned up; an arrow with a filled circle is a control couple, a flag (usually BOOLEAN) that tells the caller what happened. A diamond at a branch means selection: only one of the modules below it is called, depending on a condition. A curved arrow sweeping across the links means iteration: the modules under it are called repeatedly in a loop.

Worked example. Four modules are defined as PROCEDURE Main(), PROCEDURE ReadData(BYREF Count : INTEGER), FUNCTION IsValid(Value : INTEGER) RETURNS BOOLEAN and PROCEDURE Report(Total : INTEGER, Count : INTEGER). Main calls ReadData, then calls IsValid once for each value read, then calls Report. Describe the structure chart.

Main at the top; ReadData, IsValid and Report in a row beneath it, left to right in calling order. On the ReadData link an upward data couple Count (a BYREF parameter comes back). On the IsValid link a downward data couple Value and an upward control couple (the BOOLEAN result), with a curved iteration arrow across that link because it is called for each value. On the Report link two downward data couples, Total and Count. Reading the other way, a function is any module that returns a value — its header needs RETURNS and the returned type.

State-transition diagram

A state-transition diagram 状态转换图 shows the states 状态 a system can be in and the events that move it between them — good for vending machines, traffic lights, user interfaces. State-transition diagrams are used to document the behaviour of an algorithm or system. Each state is a circle; each transition is an arrow labelled with the event.

It makes missing transitions easy to spot ("what if a second coin is inserted while awaiting selection?").

Reading and drawing one. Each transition is labelled input | output (or condition | action): what happened, then what the system does as it changes state. A question gives a table of current state, input, output, next state and asks for the diagram, or the reverse — every row of the table is exactly one arrow. Check that every state has an arrow leaving it for every input that can occur, including the ones that leave the state unchanged (an arrow that loops back to the same state).

Worked example. A pump controller has states pump off and pump on. In pump off, the input low level detected produces the output activate pump and moves to pump on; in pump on, normal level detected produces deactivate pump and moves to pump off. Any other input leaves the state unchanged. Draw the table.

Current state Input Output Next state
pump off low level detected activate pump pump on
pump off normal level detected — pump off
pump on normal level detected deactivate pump pump off
pump on low level detected — pump on

The two "no change" rows become loop arrows on the diagram; leaving them out loses the mark for completeness.

Bahasa Indonesia

Diagram struktur

Sebuah diagram struktur menunjukkan dekomposisi hierarkis dari sebuah program ke dalam modul-modul (subrutin) dan parameter yang dilewatkan di antaranya. Setiap modul berupa persegi panjang; garis menghubungkan pemanggil (atas) ke yang dipanggil (bawah); panah kecil menunjukkan data turun dan hasil naik kembali. Desain kemudian dapat dikonversi menjadi pseudocode yang setara.

                CalculatePay
            /        |         \
       GetEmployee  CalculateBonus  CalculateTax
       Returns:     Takes: sales    Takes: gross
       employeeID   Returns: bonus  Returns: tax

Ini adalah alat pada tahap desain, dan Anda dapat membaca tanda tangan prosedur darinya.

Diagram struktur dengan Convert temperature di atas dan modul INPUT, Convert to Celsius, serta OUTPUT di bawahnya, dengan parameter temperature pada tautannya
Diagram struktur: modul-modul dengan parameter yang dilewatkan di antaranya

Simbol yang ditanyakan penguji. Kotak adalah modul; garis menghubungkan pemanggil (atas) ke modul yang dipanggilnya (bawah), dibaca dari kiri ke kanan sesuai urutan pemanggilan. Panah kecil dengan lingkaran terbuka di pangkalnya adalah pasangan data — parameter yang dikirim turun ke dalam modul atau nilai yang dikembalikan naik; panah dengan lingkaran terisi adalah pasangan kontrol, yaitu flag (biasanya BOOLEAN) yang memberi tahu pemanggil apa yang telah terjadi. Berlian pada percabangan berarti pemilihan: hanya satu dari modul-modul di bawahnya yang dipanggil, tergantung pada suatu kondisi. Panah melengkung yang menyapu tautan-tautan menandakan iterasi: modul-modul di bawahnya dipanggil berulang kali dalam sebuah loop.

Diagram struktur yang menampilkan setiap simbol: kotak modul, garis pemanggil, pasangan data lingkaran terbuka yang membawa ID item ke bawah, pasangan kontrol lingkaran terisi yang mengembalikan flag stok tersedia ke atas, berlian pemilihan antara Print invoice dan Reject order, serta panah melengkung yang menandai modul yang diulang untuk setiap pesanan
Simbol diagram struktur: pasangan data dan kontrol, berlian pemilihan, dan panah iterasi

Contoh pengerjaan. Empat modul didefinisikan sebagai PROCEDURE Main(), PROCEDURE ReadData(BYREF Count : INTEGER), FUNCTION IsValid(Value : INTEGER) RETURNS BOOLEAN dan PROCEDURE Report(Total : INTEGER, Count : INTEGER). Main memanggil ReadData, lalu memanggil IsValid sekali untuk setiap nilai yang dibaca, lalu memanggil Report. Jelaskan diagram strukturnya.

Main di bagian atas; ReadData, IsValid, dan Report berada dalam satu baris di bawahnya, dari kiri ke kanan sesuai urutan pemanggilan. Pada tautan ReadData terdapat pasangan data naik Count (parameter BYREF kembali). Pada tautan IsValid terdapat pasangan data turun Value dan pasangan kontrol naik (hasil BOOLEAN), dengan panah iterasi melengkung melintasi tautan tersebut karena dipanggil untuk setiap nilai. Pada tautan Report terdapat dua pasangan data turun, yaitu Total dan Count. Dibaca dari arah sebaliknya, fungsi adalah modul mana pun yang mengembalikan nilai — header-nya memerlukan RETURNS dan tipe yang dikembalikan.

Diagram transisi-keadaan

Sebuah diagram transisi-keadaan menunjukkan keadaan yang bisa dimiliki sistem dan kejadian yang memindahkannya antar keadaan — cocok untuk mesin penjual otomatis, lampu lalu lintas, antarmuka pengguna. Diagram transisi-keadaan digunakan untuk mendokumentasikan perilaku algoritma atau sistem. Setiap keadaan berupa lingkaran; setiap transisi berupa panah yang diberi label dengan kejadian.

   coin inserted               item selected
[Idle] --------------→ [Awaiting selection] ----------→ [Dispensing]

Hal ini memudahkan penemuan transisi yang hilang ("bagaimana jika koin kedua dimasukkan sementara menunggu pilihan?").

Diagram keadaan: Locked menuju Waiting for second digit menuju Waiting for third digit menuju Unlocked, dengan transisi correct-digit dan wrong-digit
Diagram transisi-keadaan untuk kunci pintu dengan kode 259

Membaca dan menggambar salah satunya. Setiap transisi diberi label input | output (atau condition | action): apa yang terjadi, lalu apa yang dilakukan sistem saat berubah keadaan. Soal memberikan tabel keadaan saat ini, input, output, keadaan berikutnya dan meminta diagram, atau sebaliknya — setiap baris tabel tepat sama dengan satu anak panah. Pastikan setiap keadaan memiliki panah keluar untuk setiap input yang dapat terjadi, termasuk yang membuat keadaan tetap sama (panah yang melingkar kembali ke keadaan yang sama).

Contoh pengerjaan. Pengontrol pompa memiliki keadaan pump off dan pump on. Dalam pump off, input low level detected menghasilkan output activate pump dan berpindah ke pump on; dalam pump on, normal level detected menghasilkan deactivate pump dan berpindah ke pump off. Input lainnya membuat keadaan tetap tidak berubah. Gambarlah tabelnya.

Keadaan saat ini Input Output Keadaan berikutnya
pump off deteksi rendah aktifkan pompa pompa menyala
pompa mati level normal terdeteksi — pompa mati
pompa hidup level normal terdeteksi nonaktifkan pompa pompa mati
pompa hidup level rendah terdeteksi — pompa hidup

Dua baris "tidak ada perubahan" menjadi panah loop pada diagram; melewatinya akan kehilangan nilai karena kelengkapan.

Explore · ⁨Jelajahi⁩

Software process lab · ⁨Lab proses perangkat lunak⁩

Classify development examples by the stage or tool they belong to. · ⁨Klasifikasikan contoh pengembangan berdasarkan tahap atau alat yang dimilikinya.⁩

Vocabulary · ⁨Kosa kata⁩ Train · ⁨Latih⁩
English Bahasa Indonesia
structure chart/ˈstrʌktʃə tʃɑːt/ bagan struktur
parameters/pəˈræmɪtəz/ parameter
12.3

Errors · ⁨Kesalahan⁩

Syllabus · ⁨Silabus⁩
English
Candidates should be able to: Notes and guidance
Show understanding of ways of exposing and avoiding faults in programs
Locate and identify the different types of errors • syntax errors • logic errors • run-time errors
Correct identified errors
Show understanding of the methods of testing available and select appropriate data for a given method Including dry run, walkthrough, white-box, black-box, integration, alpha, beta, acceptance, stub
Show understanding of the need for a test strategy and test plan and their likely contents
Choose appropriate test data for a test plan Including normal, abnormal and extreme/boundary
Show understanding of the need for continuing maintenance of a system and the differences between each type of maintenance Including perfective, adaptive, corrective
Analyse an existing program and make amendments to enhance functionality
Bahasa Indonesia
Kandidat harus mampu: Catatan dan panduan
Tunjukkan pemahaman tentang cara memaparkan dan menghindari kesalahan dalam program
Temukan dan identifikasi berbagai jenis kesalahan • kesalahan sintaks • kesalahan logika • kesalahan saat berjalan
Perbaiki kesalahan yang telah diidentifikasi
Tunjukkan pemahaman tentang metode pengujian yang tersedia dan pilih data yang tepat untuk metode tertentu Termasuk dry run, walkthrough, kotak putih, kotak hitam, integrasi, alpha, beta, penerimaan, stub
Tunjukkan pemahaman tentang kebutuhan strategi pengujian dan rencana pengujian serta kemungkinan isinya
Pilih data pengujian yang tepat untuk rencana pengujian Termasuk normal, abnormal dan ekstrem/batas
Tunjukkan pemahaman tentang kebutuhan pemeliharaan berkelanjutan suatu sistem dan perbedaan antara setiap jenis pemeliharaan Termasuk perfektif, adaptif, korektif
Analisis program yang sudah ada dan lakukan perubahan untuk meningkatkan fungsionalitas

Source: Cambridge International syllabus · ⁨Sumber: Silabus Cambridge International⁩

English
  • syntax error 语法错误 — breaks the language's grammar (missing bracket, misspelled keyword). Caught at translation time; the program won't run until fixed.
  • run-time error 运行时错误 — happens while running (divide by zero, file not found, array index out of range). The program crashes or raises an exception; fix by adding checks.
  • logic error 逻辑错误 — the program runs but gives wrong results (using + for -, an off-by-one loop, conditions in the wrong order). The hardest to find; the only sign is wrong output, so use careful testing and tracing.

Exposing and avoiding faults. Faults are exposed by testing against a test plan, by a dry run or trace table, by a walkthrough with colleagues, and by the IDE's debugger (breakpoints, single stepping, watching variables). They are avoided by designing before coding (structure chart, pseudocode), by modular code with meaningful identifiers and comments, by validation of every input, by handling exceptions rather than letting a run-time error crash the program, and by the IDE's dynamic syntax checks as you type.

Worked example. State the type of error in each case and how it shows itself. (a) Result <- STR_TO_NUM(x) / STR_TO_NUM(y) is run with y = "0". (b) The same line is run with x = "12a". (c) A loop written as FOR i <- 1 TO 9 processes a ten-element array. (d) OUTPUT "Total: " Total is missing a comma.

(a) Run-time error — division by zero; the program crashes when this line is executed with that data. (b) Run-time error — the string cannot be converted to a number. (c) Logic error — the program runs but the tenth element is never processed, so the output is wrong. (d) Syntax error — the statement breaks the language's rules and is reported by the translator before the program runs.

Worked example. Correct the errors in this pseudocode, which should output the average of ten marks.

The division should be by 10, not 9 (a logic error); the output line needs a comma or an & between the string and the value (a syntax error); and Average is never declared as REAL (a syntax or run-time error, depending on the language). Say which line and what the corrected line is: Average <- Total / 10.

Bahasa Indonesia
  • kesalahan sintaks — melanggar tata bahasa bahasa pemrograman (kurung hilang, kata kunci salah eja). Terdeteksi saat penterjemahan; program tidak akan berjalan hingga diperbaiki.
  • kesalahan waktu jalannya — terjadi saat program dieksekusi (pembagian dengan nol, file tidak ditemukan, indeks array di luar jangkauan). Program mengalami crash atau memunculkan pengecualian; perbaiki dengan menambahkan pengecekan.
  • kesalahan logika — program berjalan tetapi menghasilkan hasil yang salah (menggunakan + untuk -, kesalahan satu langkah dalam perulangan, kondisi dalam urutan yang salah). Paling sulit ditemukan; satu-satunya tanda adalah output yang salah, jadi gunakan pengujian dan pelacakan yang teliti.
Alur dari menulis kode, menerjemahkan, menjalankan, hingga menghasilkan output: kesalahan sintaks menghentikannya saat penerjemahan, kesalahan waktu jalannya menyebabkan crash saat eksekusi, dan kesalahan logika berjalan baik namun menghasilkan output yang salah
Kapan setiap kesalahan muncul: sintaks saat penerjemahan, waktu jalannya saat eksekusi, logika pada output

Mendedahkan dan menghindari cacat. Cacat didedahkan melalui pengujian terhadap rencana uji, melalui simulasi kering atau tabel pelacakan, melalui walkthrough dengan rekan sejawat, dan melalui debugger IDE (titik henti, langkah tunggal, pemantauan variabel). Cacat dihindari dengan merancang sebelum coding (diagram struktur, pseudocode), dengan kode modular yang memiliki penanda dan komentar bermakna, dengan validasi setiap input, dengan penanganan pengecualian alih-alih membiarkan kesalahan waktu jalannya membuat program crash, dan dengan pengecekan sintaks dinamis IDE saat mengetik.

Contoh dikerjakan. Sebutkan jenis kesalahan pada setiap kasus dan bagaimana ia bermanifestasi. (a) Result <- STR_TO_NUM(x) / STR_TO_NUM(y) dijalankan dengan y = "0". (b) Baris yang sama dijalankan dengan x = "12a". (c) Perulangan yang ditulis sebagai FOR i <- 1 TO 9 memproses array beranggotakan sepuluh. (d) OUTPUT "Total: " Total koma hilang.

(a) Kesalahan waktu jalannya — pembagian dengan nol; program mengalami crash ketika baris ini dieksekusi dengan data tersebut. (b) Kesalahan waktu jalannya — string tidak dapat dikonversi menjadi angka. (c) Kesalahan logika — program berjalan tetapi elemen kesepuluh tidak pernah diproses, sehingga outputnya salah. (d) Kesalahan sintaks — pernyataan melanggar aturan bahasa dan dilaporkan oleh penterjemah sebelum program dijalankan.

Contoh dikerjakan. Perbaiki kesalahan dalam pseudocode ini, yang seharusnya menghasilkan rata-rata dari sepuluh nilai.

Total <- 0
FOR i <- 1 TO 10
    INPUT Mark
    Total <- Total + Mark
NEXT i
Average <- Total / 9
OUTPUT "Average" Average

Pembagian harus dengan 10, bukan 9 (kesalahan logika); baris output memerlukan koma atau & antara string dan nilai (kesalahan sintaks); dan Average tidak pernah dideklarasikan sebagai REAL (kesalahan sintaks atau waktu jalannya, tergantung bahasanya). Sebutkan nomor baris dan apa baris yang telah diperbaiki: Average <- Total / 10.

Vocabulary · ⁨Kosa kata⁩ Train · ⁨Latih⁩
English Bahasa Indonesia
walkthrough/ˈwɔːkθruː/ walkthrough
white-box testing/waɪt bɒks ˈtestɪŋ/ pengujian kotak putih
black-box testing/blæk bɒks ˈtestɪŋ/ pengujian kotak hitam
integration testing/ˌɪntɪˈɡreɪʃn ˈtestɪŋ/ ujian integrasi
alpha testing/ˈælfə ˈtestɪŋ/ pengujian alpha
beta testing/ˈbiːtə ˈtestɪŋ/ ujian beta
12.3

Testing methods · ⁨Metode pengujian⁩

English
  • dry run 手工跟踪 — trace the code on paper, writing each variable's value in a table.
  • walkthrough 走查 — a team review of the code.
  • white-box testing 白盒测试 — designed from the code's internal structure, covering every statement, branch and loop.
  • black-box testing 黑盒测试 — designed from the specification only: feed inputs, check outputs.
  • integration testing 集成测试 — combine modules and test the interfaces between them.
  • alpha testing α测试 — by the developers/in-house before release; beta testing β测试 — by a limited group of real users in their own environment.
  • acceptance testing 验收测试 — by the customer, to decide if the product is fit for purpose.
  • stub 桩 — a placeholder for a module that does not exist yet, so the structure can be tested top-down.

Which method, when. A dry run and a walkthrough need no computer — the dry run is you, tracing the algorithm with a trace table 跟踪表; the walkthrough is a meeting in which the author explains the code line by line and colleagues look for faults, so it also spreads knowledge of the code through the team and checks it against the design. White-box tests are written by someone who can see the code and aims to exercise every path; black-box tests are written from the specification and check only inputs against expected outputs, so a user or a separate tester can do them. Integration testing follows module testing: modules that pass alone can still fail when the data passed between them is the wrong type or in the wrong order. Alpha testing is in-house; beta testing gives a release candidate to a sample of real users, who report faults from real use; acceptance testing is the customer checking the finished product against the requirements before paying for it. A stub lets top-down testing start before every module exists.

Worked example. After the program passed its in-house tests it was given to a group of users to try before release. Name this type of testing, and state what happens next.

Beta testing — real users in their own environment, reporting faults the developers did not find. The faults are corrected, then the customer carries out acceptance testing against the requirements and the program is released; faults found in live use are then handled by corrective maintenance.

Worked example. Give three benefits of testing a program by walkthrough.

Errors are found by people who did not write the code and so read it without assumptions; the logic is checked against the design and specification, not only against test data; several people learn how the code works, which helps later maintenance; and no test data or working computer is needed, so it can be done early.

Bahasa Indonesia
  • simulasi kering — menelusuri kode di atas kertas, mencatat nilai setiap variabel dalam tabel.
  • walkthrough — tinjauan tim terhadap kode.
  • pengujian kotak putih — dirancang berdasarkan struktur internal kode, mencakup setiap pernyataan, cabang, dan perulangan.
  • pengujian kotak hitam — dirancang hanya berdasarkan spesifikasi: masukkan input, periksa output.
  • pengujian integrasi — gabungkan modul dan uji antarmuka di antaranya.
  • pengujian alpha α — dilakukan oleh pengembang/in-house sebelum rilis; pengujian beta β — dilakukan oleh kelompok terbatas pengguna nyata di lingkungan mereka sendiri.
  • pengujian penerimaan — dilakukan oleh pelanggan, untuk memutuskan apakah produk layak guna.
  • stub — placeholder untuk modul yang belum ada, sehingga struktur dapat diuji secara top-down.
Pengujian kotak hitam bekerja dari spesifikasi; kotak putih menguji jalur internal kode
Kotak hitam menguji spesifikasi; kotak putih menguji jalur kode

Metode mana, kapan. Simulasi kering dan walkthrough tidak memerlukan komputer—simulasi kering dilakukan Anda sendiri, menelusuri algoritma dengan tabel pelacakan; walkthrough adalah pertemuan di mana penulis menjelaskan kode baris demi baris dan rekan sejawat mencari cacat, sehingga juga menyebarkan pengetahuan kode melalui tim dan memverifikasinya terhadap desain. Pengujian kotak putih ditulis oleh seseorang yang dapat melihat kode dan bertujuan untuk melintasi setiap jalur; pengujian kotak hitam ditulis dari spesifikasi dan hanya memeriksa input terhadap output yang diharapkan, sehingga pengguna atau tester terpisah dapat melakukannya. Pengujian integrasi mengikuti pengujian modul: modul yang lolos sendirian bisa gagal jika data yang diteruskan di antaranya bertipe atau berurutan salah. Pengujian alpha dilakukan in-house; pengujian beta memberikan calon rilis kepada sampel pengguna nyata, yang melaporkan cacat dari penggunaan riil; pengujian penerimaan adalah pelanggan yang memeriksa produk jadi terhadap persyaratan sebelum membayarnya. Stub memungkinkan pengujian top-down dimulai sebelum semua modul tersedia.

Pengujian stub: program utama yang diuji memanggil Modul A yang selesai dan sebuah stub yang menggantikan Modul B yang belum ditulis, yang memiliki header asli tetapi hanya mengembalikan nilai tetap
Stub menggantikan modul yang belum ditulis, sehingga modul di atasnya dapat diuji sekarang

Contoh dikerjakan. Setelah program lulus uji in-house, program diberikan kepada sekelompok pengguna untuk dicoba sebelum dirilis. Sebutkan nama jenis pengujian ini, dan jelaskan apa yang terjadi selanjutnya.

Pengujian beta — pengguna nyata di lingkungan mereka sendiri, melaporkan cacat yang tidak ditemukan pengembang. Cacat diperbaiki, kemudian pelanggan melakukan pengujian penerimaan terhadap persyaratan dan program dirilis; cacat yang ditemukan dalam penggunaan langsung kemudian ditangani oleh pemeliharaan korektif.

Contoh dikerjakan. Berikan tiga manfaat pengujian program melalui walkthrough.

Kesalahan ditemukan oleh orang yang tidak menulis kode tersebut, sehingga membacanya tanpa asumsi; logika dicek terhadap desain dan spesifikasi, bukan hanya terhadap data uji; beberapa orang mempelajari cara kerja kode, yang membantu pemeliharaan di masa depan; dan tidak diperlukan data uji atau komputer yang berfungsi, sehingga hal ini dapat dilakukan lebih awal.

Vocabulary · ⁨Kosa kata⁩ Train · ⁨Latih⁩
English Bahasa Indonesia
stub/stʌb/ stubs
corrective maintenance/kəˈrektɪv ˈmeɪntənəns/ pemeliharaan korektif
test strategy/test ˈstrætədʒi/ strategi pengujian
normal data/ˈnɔːml ˈdeɪtə/ data normal
abnormal data/əbˈnɔːml ˈdeɪtə/ data tidak normal
extreme data/ekˈstriːm ˈdeɪtə/ data ekstrem
perfective maintenance/pəˈfektɪv ˈmeɪntənəns/ pemeliharaan perfektif
adaptive maintenance/əˈdæptɪv ˈmeɪntənəns/ pemeliharaan adaptif
regression testing/rɪˈɡreʃn ˈtestɪŋ/ regresi pengujian
12.3

Test strategy and test plan · ⁨Strategi pengujian dan rencana pengujian⁩

English

A test strategy 测试策略 is the high-level approach — which kinds of testing, who does them, when, and the criteria to move on. A test plan 测试计划 is the detailed list of tests — each with input data, expected output, and a column for the actual output.

What each contains. A test strategy states which testing methods will be used at which stage (module testing by the programmer, then integration, alpha, beta, acceptance), who is responsible for each, what test data is required, and the criteria for passing to the next stage. A test plan lists the individual tests: for each, the module or feature under test, the input data, the reason the data was chosen (normal, abnormal, extreme, boundary), the expected result, a space for the actual result, and what to do if they differ. The plan is written at the design stage, from the specification, so that it tests what the program should do rather than what it happens to do.

Choosing test data

For each field or condition, include three kinds:

  • normal data 正常数据 — typical values inside the valid range (for marks 0–100: 50, 75).
  • abnormal data 异常数据 — values that should be rejected (-10, 200, "abc").
  • extreme data 极端数据 — the largest and smallest values still accepted (0 and 100).
  • boundary data 边界数据 — values at the edges, where off-by-one errors hide (each accepted extreme and the rejected value just outside it: 0/-1, 100/101).

Worked example. A field accepts an exam mark from 0 to 100. Give test data of each kind with its expected result. Normal: 50 - accepted, a typical value inside the range. Abnormal: -10, 200, "abc" - all rejected, being out of range or the wrong data type. Extreme: 0 and 100 - the largest and smallest values that are still accepted. Boundary: the pairs straddling each edge - -1 rejected alongside 0 accepted, and 100 accepted alongside 101 rejected. Every value must carry its expected result, or the test plan proves nothing. Extreme and boundary are the pair most often confused: an extreme value sits inside and is accepted, while a boundary test is always a pair either side of the edge - which is exactly where off-by-one errors hide.

Worked example. A component passes if its weight, measured to the nearest gram, is within 3 g of the target of 50 g, i.e. from 47 g to 53 g inclusive. Draw up the test-plan rows for the check.

Test data Type Reason Expected result
50 normal a typical value well inside the range accepted
47, 53 extreme (boundary) the smallest and largest values that must still be accepted accepted
46, 54 boundary the values just outside the range, where an off-by-one error would accept them rejected
20, 90 abnormal values far outside the range rejected
"abc", −5 abnormal the wrong type, a negative weight rejected

Each row must say why the value was chosen and what should happen; a bare list of numbers earns nothing.

Bahasa Indonesia

Strategi pengujian adalah pendekatan tingkat tinggi — jenis pengujian apa saja, siapa yang melakukannya, kapan, dan kriteria untuk melanjutkan. Rencana pengujian adalah daftar detail tes — masing-masing dengan data input, output yang diharapkan, dan kolom untuk output aktual.

Apa yang terkandung di dalamnya. Strategi pengujian menyatakan metode pengujian mana yang akan digunakan pada tahap mana (pengujian modul oleh programmer, kemudian integrasi, alpha, beta, penerimaan), siapa yang bertanggung jawab atas masing-masing, data uji apa yang diperlukan, dan kriteria untuk lanjut ke tahap berikutnya. Rencana pengujian mencantumkan tes individu: untuk setiap tes, modul atau fitur yang sedang diuji, data input, alasan data dipilih (normal, abnormal, ekstrem, batas), hasil yang diharapkan, ruang untuk hasil aktual, dan apa yang harus dilakukan jika berbeda. Rencana ditulis pada tahap desain, dari spesifikasi, sehingga menguji apa yang program seharusnya lakukan daripada apa yang kebetulan dilakukannya.

Memilih data uji

Untuk setiap bidang atau kondisi, sertakan tiga jenis:

  • data normal — nilai tipikal dalam rentang valid (untuk nilai 0–100: 50, 75).
  • data abnormal — nilai yang seharusnya ditolak (-10, 200, "abc").
  • data ekstrem — nilai terbesar dan terkecil yang masih diterima (0 dan 100).
  • data batas — nilai di tepi, di mana kesalahan off-by-one bersembunyi (setiap nilai ekstrem yang diterima dan nilai yang ditolak tepat di luarnya: 0/-1, 100/101).
Garis bilangan untuk bidang nilai 0 hingga 100: nilai normal 50 dan 75 di dalam, nilai ekstrem 0 dan 100 di batas yang diterima, dan nilai abnormal -1, 101, -10 dan 200 ditolak di luar
Data uji untuk bidang 0–100: normal di dalam, ekstrem di batas, abnormal di luar

Contoh dikerjakan. Sebuah bidang menerima nilai ujian dari 0 hingga 100. Berikan data uji dari setiap jenis beserta hasilnya yang diharapkan. Normal: 50 - diterima, nilai tipikal di dalam rentang. Abnormal: -10, 200, "abc" - semua ditolak, karena berada di luar rentang atau tipe data salah. Ekstrem: 0 dan 100 - nilai terbesar dan terkecil yang masih diterima. Batas: pasangan yang melintasi setiap tepi - -1 ditolak bersama 0 diterima, dan 100 diterima bersama 101 ditolak. Setiap nilai harus memiliki hasil yang diharapkan, atau rencana pengujian tidak membuktikan apa-apa. Ekstrem dan batas adalah pasangan yang paling sering bingung: nilai ekstrem berada di dalam dan diterima, sementara pengujian batas selalu berupa pasangan di kedua sisi tepi - yang merupakan tempat persis di mana kesalahan off-by-one bersembunyi.

Contoh dikerjakan. Sebuah komponen lolos jika beratnya, diukur hingga gram terdekat, berada dalam 3 g dari target 50 g, yaitu dari 47 g hingga 53 g termasuk. Susun baris rencana pengujian untuk pengecekan.

Data uji Jenis Alasan Hasil yang diharapkan
50 normal nilai tipikal jauh di dalam rentang diterima
47, 53 ekstrem (batas) nilai terkecil dan terbesar yang harus tetap diterima diterima
46, 54 batas nilai tepat di luar rentang, di mana kesalahan off-by-one akan menerimanya ditolak
20, 90 abnormal nilai jauh di luar rentang ditolak
"abc", −5 abnormal tipe yang salah, berat negatif ditolak

Setiap baris harus menjelaskan mengapa nilai dipilih dan apa yang harus terjadi; daftar angka kosong tidak mendapat nilai.

12.3

Maintenance · ⁨Pemeliharaan⁩

English

Most of a program's lifetime cost is in maintenance. Three kinds:

  • perfective maintenance 完善性维护 — improving performance or features even though it works (a faster query, a new option).
  • adaptive maintenance 适应性维护 — keeping it working in a changing environment (a new OS, a new API, a legal change).
  • corrective maintenance 纠正性维护 — fixing bugs found in use.

A program may need all three throughout its life.

Why each is needed — the reasons the mark scheme lists. Corrective: a fault is reported by a user after release, or an incorrect output is noticed in particular circumstances that testing did not cover. Adaptive: the operating system, hardware or browser is upgraded; a law or company rule changes (tax rates, data-protection requirements); the program must work with a new external system or file format. Perfective: users ask for extra features or a better interface; the program is made faster or made to use less memory; the code is tidied to make future changes easier.

Worked example. (a) A released program outputs a wrong value under certain circumstances. (b) The hardware that runs a program is replaced. (c) Customers ask for the coffee-shop loyalty program to send a message on a customer's birthday. Name the maintenance type in each case.

(a) Corrective — a fault in the delivered program is being fixed. (b) Adaptive — the program is changed to run in its new environment. (c) Perfective — a feature is added to a program that already works.

Bahasa Indonesia

Sebagian besar biaya siklus hidup program ada pada pemeliharaan. Tiga jenis:

Tiga jenis pemeliharaan: perfective, adaptive, dan corrective
Tiga jenis pemeliharaan: perfective, adaptive, dan corrective
  • pemeliharaan perfective — meningkatkan kinerja atau fitur meskipun sudah bekerja (kueri yang lebih cepat, opsi baru).
  • pemeliharaan adaptive — menjaganya tetap berfungsi di lingkungan yang berubah (sistem operasi baru, API baru, perubahan hukum).
  • pemeliharaan corrective — memperbaiki bug yang ditemukan saat penggunaan.

Sebuah program mungkin memerlukan ketiganya sepanjang hidupnya.

Mengapa masing-masing diperlukan — alasan yang disebutkan dalam kunci jawaban. Corrective: kesalahan dilaporkan oleh pengguna setelah rilis, atau output yang salah terlihat dalam kondisi tertentu yang tidak tercakup pengujian. Adaptive: sistem operasi, perangkat keras, atau browser ditingkatkan; undang-undang atau aturan perusahaan berubah (tarif pajak, persyaratan perlindungan data); program harus bekerja dengan sistem eksternal atau format file baru. Perfective: pengguna meminta fitur tambahan atau antarmuka yang lebih baik; program dibuat lebih cepat atau menggunakan lebih sedikit memori; kode dirapikan agar perubahan di masa depan lebih mudah.

Contoh dikerjakan. (a) Program yang dirilis menghasilkan nilai yang salah dalam kondisi tertentu. (b) Perangkat keras yang menjalankan program diganti. (c) Pelanggan meminta program loyalitas kedai kopi untuk mengirim pesan pada hari ulang tahun pelanggan. Sebutkan jenis pemeliharaan dalam setiap kasus.

(a) Corrective — sebuah kesalahan dalam program yang dikirim sedang diperbaiki. (b) Adaptive — program diubah untuk berjalan di lingkungannya yang baru. (c) Perfective — fitur ditambahkan ke program yang sudah bekerja.

Vocabulary · ⁨Kosa kata⁩ Train · ⁨Latih⁩
English Bahasa Indonesia
maintenance/ˈmeɪntənəns/ pemeliharaan
12.3

Amending an existing program · ⁨Memodifikasi program yang sudah ada⁩

English

When asked to add a feature or fix a bug:

  1. read the existing code until you understand the algorithm and data flow.
  2. find where the change goes — which subroutine, which lines.
  3. make the change as small as possible — don't rewrite working code.
  4. update related parts — every caller of a changed parameter list, every routine using a changed data structure.
  5. test the new behaviour and the old (regression testing 回归测试 — check you broke nothing).
  6. document the change.

Clear comments, meaningful names, decomposed subroutines and a structure chart make a program much easier to amend — which is why the design tools matter even after the first release.

Analysing a program you did not write. Start from the identifier table and the module headers: they tell you what each module receives and returns before you read a line of its body. Then trace the algorithm with a trace table for one small input, noting where each output value comes from. Only then decide where the enhancement goes — usually a new module called from the existing one, so the working code is disturbed as little as possible — and write the pseudocode for the change and the test data that proves it.

Bahasa Indonesia

Ketika diminta untuk menambahkan fitur atau memperbaiki bug:

  1. bacalah kode yang ada sampai Anda memahami algoritma dan aliran data.
  2. temukan di mana perubahan masuk — subrutin mana, baris mana.
  3. perubahan sekecil mungkin — jangan menulis ulang kode yang sudah berfungsi.
  4. perbarui bagian terkait — setiap pemanggil dari daftar parameter yang diubah, setiap rutinitas yang menggunakan struktur data yang diubah.
  5. uji perilaku baru dan lama (pengujian regresi — pastikan Anda tidak merusak apa pun).
  6. dokumentasikan perubahan tersebut.

Komentar yang jelas, nama yang bermakna, subrutin terurai, dan bagan struktur membuat program jauh lebih mudah dimodifikasi — itulah sebabnya alat desain tetap penting bahkan setelah rilis pertama.

Menganalisis program yang bukan buatan Anda. Mulai dari tabel pengidentifikasi dan header modul: mereka memberi tahu apa yang diterima dan dikembalikan oleh setiap modul sebelum Anda membaca satu baris tubuh modulenya. Kemudian lacak algoritma dengan tabel jejak untuk satu input kecil, mencatat dari mana setiap nilai output berasal. Baru kemudian tentukan di mana peningkatan akan ditempatkan — biasanya sebuah modul baru yang dipanggil dari modul yang ada, sehingga kode yang berfungsi terganggu semaksimal mungkin — dan tulis pseudokode untuk perubahan serta data uji yang membuktikannya.

12.3

Definitions the examiner accepts · ⁨Definisi yang diterima oleh penguji⁩

English

A definition question is marked against fixed wording. Learn these exactly, and give one answer only.

Term Definition
development life cycle the sequence of stages, from analysis to maintenance, followed to produce and support a program
waterfall model a life cycle in which the stages are carried out in a fixed order, each completed before the next begins
iterative model a life cycle in which a working version is produced and then repeatedly refined until it is complete
rapid application development a life cycle that builds prototypes quickly, refining them with user feedback until they are accepted
structure chart a diagram that shows how a program is decomposed into modules, the order in which they are called and the parameters passed between them
state-transition diagram a diagram that shows the states a system can be in and the inputs that cause it to move between them
syntax error an error in the way a statement is written, so it breaks the rules of the language and cannot be translated
logic error an error in the algorithm, so the program runs but produces the wrong result
run-time error an error that occurs while the program is running, such as division by zero, and stops it
dry run working through the algorithm by hand, recording the values of the variables in a trace table
walkthrough a review in which the author steps through the code with colleagues who look for errors
stub a placeholder module with the correct header that returns a fixed value, used so the modules that call it can be tested
test plan a list of the tests to be carried out, each with its test data, the reason for the data and the expected result
boundary data values at each edge of the valid range, both the last value accepted and the first value rejected
corrective / adaptive / perfective maintenance fixing faults found in use / changing the program to suit a changed environment / improving a program that already works
Bahasa Indonesia

Soal definisi dinilai berdasarkan frasa tetap. Hafalkan ini persis, dan berikan hanya satu jawaban.

Istilah Definisi
siklus hidup pengembangan urutan tahap, mulai dari analisis hingga pemeliharaan, yang diikuti untuk menghasilkan dan mendukung sebuah program
model air terjun siklus hidup di mana tahap-tahap dilakukan dalam urutan tetap, masing-masing diselesaikan sebelum tahap berikutnya dimulai
model iteratif siklus hidup di mana versi yang berfungsi dihasilkan dan kemudian disempurnakan secara berulang-ulang hingga selesai
pengembangan aplikasi cepat siklus hidup yang membangun prototipe dengan cepat, menyempurnakannya dengan umpan balik pengguna hingga diterima
bagan struktur diagram yang menunjukkan bagaimana program diuraikan menjadi modul-modul, urutan pemanggilan mereka, dan parameter yang dilewatkan di antaranya
diagram transisi keadaan diagram yang menunjukkan keadaan-keadaan yang dapat dimiliki sistem dan input yang menyebabkan perpindahan antar keadaan tersebut
kesalahan sintaks kesalahan dalam penulisan pernyataan, sehingga melanggar aturan bahasa dan tidak dapat diterjemahkan
kesalahan logika kesalahan dalam algoritma, sehingga program berjalan tetapi menghasilkan hasil yang salah
kesalahan waktu jalankan kesalahan yang terjadi saat program sedang berjalan, seperti pembagian dengan nol, dan menghentikannya
latihan kering melewati algoritma secara manual, mencatat nilai variabel dalam tabel jejak
tinjauan walk-through tinjauan di mana penulis melangkah melalui kode bersama rekan kerja yang mencari kesalahan
stub modul tempatan dengan header yang benar yang mengembalikan nilai tetap, digunakan agar modul yang memanggilnya dapat diuji
rencana uji daftar tes yang akan dilakukan, masing-masing dengan data uji, alasan penggunaan data, dan hasil yang diharapkan
data batas nilai pada setiap tepi rentang yang valid, baik nilai terakhir yang diterima maupun nilai pertama yang ditolak
pemeliharaan korektif / adaptif / sempurna memperbaiki kesalahan yang ditemukan saat penggunaan / mengubah program agar sesuai dengan lingkungan yang berubah / meningkatkan program yang sudah berfungsi
12.3

Exam tips · ⁨Tips ujian⁩

English
  • Compare development models (waterfall, iterative, RAD) by principle, benefit, drawback, and know the five stages of the program development life cycle and what each produces.
  • Distinguish syntax, logic and run-time errors by when each shows itself: at translation, in the output, during the run.
  • Choose test data of every kind — normal, abnormal, extreme and boundary — and give each value with its reason and expected result.
  • Distinguish the types of maintenance (corrective, adaptive, perfective) by why the change is being made.
  • On a structure chart, name every symbol: box, calling line, data couple, control couple, selection diamond, iteration arrow. Reading module headers off a chart, remember a function has RETURNS.

Common mistakes

  • Describing a life cycle stage by its name only ("in the design stage the program is designed"). Say what is produced: structure chart, pseudocode, test plan.
  • Calling a wrong output a "run-time error". If the program runs to the end, it is a logic error.
  • Giving boundary data as just the extremes. The mark needs the values on both sides of the edge.
  • Treating alpha and beta testing as the same. Alpha is in-house by the developers; beta is by real users outside.
  • Confusing adaptive and perfective maintenance. Adaptive responds to a change outside the program; perfective improves a program nobody had to change.
  • Drawing a structure chart with the modules in any order. They read left to right in the order they are called, and each parameter needs its arrow.
Bahasa Indonesia
  • Bandingkan model pengembangan (air terjun, iteratif, RAD) berdasarkan prinsip, manfaat, kekurangan, dan ketahui lima tahap siklus hidup pengembangan program serta产出 yang dihasilkan masing-masing.
  • Bedakan kesalahan sintaks, logika, dan waktu jalankan berdasarkan kapan masing-masing muncul: saat penterjemahan, dalam output, selama proses jalankan.
  • Pilih data uji dari segala jenis — normal, abnormal, ekstrem, dan batas — dan berikan setiap nilai beserta alasannya dan hasil yang diharapkan.
  • Bedakan jenis pemeliharaan (korektif, adaptif, sempurna) berdasarkan mengapa perubahan dilakukan.
  • Pada bagan struktur, sebutkan setiap simbol: kotak, garis pemanggil, pasangan data, pasangan kontrol, berlian seleksi, panah iterasi. Membaca header modul dari bagan, ingat bahwa fungsi memiliki RETURNS.

Kesalahan umum

  • Menggambarkan tahap siklus hidup hanya dengan namanya (
  • Menyebutkan output yang salah sebagai "kesalahan waktu eksekusi". Jika program berjalan hingga selesai, itu adalah kesalahan logika.
  • Memberikan data batas hanya sebagai nilai ekstrem. Nilai perlu mencakup kedua sisi dari batas tersebut.
  • Memperlakukan pengujian alpha dan beta sama. Alpha dilakukan secara internal oleh pengembang; beta dilakukan oleh pengguna nyata di luar organisasi.
  • Mengacaukan pemeliharaan adaptif dan sempurna. Adaptif merespons perubahan di luar program; sempurna meningkatkan program yang tidak perlu diubah.
  • Menggambar bagan struktur dengan modul dalam urutan sembarang. Mereka dibaca dari kiri ke kanan sesuai urutan pemanggilannya, dan setiap parameter memerlukan panahnya sendiri.

Interactive lessons on this topic · ⁨Pelajaran interaktif untuk topik ini⁩

Work through it step by step, with instant-check exercises. · ⁨Kerjakan langkah demi langkah, dengan latihan pengecekan instan.⁩

Past Papers · ⁨Soal-Soil Masa Lalu⁩

More topics in A-Level Computer Science · ⁨Ilmu Komputer A-Level⁩ · ⁨Topik lain dalam A-Level Computer Science · ⁨Ilmu Komputer A-Level⁩⁩

Log in or create account · ⁨Masuk atau buat akun⁩

IGCSE, A-Level & AP