Develop Computer Program Level 6
Develop Computer Program Level 6
Unit Description: This unit specifies competencies required to develop a computer program. It
involves identifying program and programming concepts, identifying phases of program
development, performing program design and Analysis, developing a Computer program,
performing Program testing and debugging, performing User training and Program Maintenance.
Content:
Waterfall
Agile
Spiral
Rapid Application Development
Crystal
1. Waterfall Model
The Waterfall model is a linear sequential approach where each phase must be completed before
the next one begins. 1 .
o Waterfall model: A linear, sequential approach where each phase must be completed
before the next one begins (Requirements, Design, Implementation, Testing,
Deployment, Maintenance).
2. Agile Methodology
The Agile methodology is a practice that promotes continuous iteration of development and
testing throughout the software development lifecycle of the project. In the Agile model, both
development and testing activities are concurrent, unlike the Waterfall model.
3. Spiral Model
The Rapid Application Development model is based on prototyping and iterative development
with no specific planning involved. It focuses on gathering customer requirements through
workshops or focus groups, early testing of the prototypes by the customer using the iterative
concept, reuse of the existing prototypes (components), continuous integration, and rapid
delivery.
5. Crystal Method
The Crystal family is a collection of agile software development methodologies that can be used
for different software projects depending upon size, complexity, criticality, and the number of
people involved. Crystal methods focus on people and communication among people rather than
a process to frequently deliver working software.
Content:
Phases of program development: The distinct stages involved in creating a software application.
A common set of phases includes:
1. Requirements gathering and analysis: Understanding the needs of the users and
stakeholders, defining the purpose and functionality of the program. This involves:
Identifying stakeholders.
Collecting data through interviews, surveys, observations.
Documenting requirements (functional and non-functional).
Analyzing and prioritizing requirements.
2. Program design: Planning the structure and organization of the program, including
algorithms, data structures, user interface, and system architecture. This involves:
Creating design documents (e.g., flowcharts, data flow diagrams, UML
diagrams).
Choosing appropriate algorithms and data structures.
Designing the user interface (UI) and user experience (UX).
Defining system components and their interactions.
3. Implementation (Coding): Writing the actual program code in a chosen programming
language based on the design specifications. This involves:
Translating design into source code.
Following coding standards and best practices.
Using development tools and environments (IDEs).
4. Testing: Verifying that the program functions correctly and meets the specified
requirements. This involves different types of testing (see Learning Outcome 5).
5. Deployment: Making the program available for use by the intended users. This involves:
Preparing the software for release.
Installing and configuring the software in the target environment.
Migrating data if necessary.
6. Maintenance: Ongoing activities to support and improve the program after deployment.
This includes:
Fixing bugs and errors.
Adding new features and functionalities.
Adapting to changes in the environment or user needs.
Performance optimization.
Documentation: Creating written materials that describe the program, its design, functionality,
and how to use it. Different types of documentation include:
Planning
o This is the initial phase where the need for the program is identified, and the
scope of the project is defined.
o It involves activities such as feasibility studies, resource allocation, and setting
project timelines.
System analysis and design
o In this phase, the requirements for the program are gathered and analyzed in
detail.
o This involves understanding the problem domain, identifying inputs, outputs, and
processes, and creating a blueprint for the solution.
o Techniques like data flow diagrams, pseudocode, and structure charts may be
used.
System development
o This is where the actual coding or programming takes place.
o The design created in the previous phase is translated into a programming
language.
o It also includes activities like database design, user interface development, and
integrating different modules of the program.
Testing
o This phase involves evaluating the program to ensure it meets the specified
requirements and is free from errors.
o Different levels of testing, such as unit testing, integration testing, and system
testing, may be conducted.
Implementation
o This is the process of deploying the program into its intended environment.
o It may involve activities like installation, data migration, user training, and system
handover.
The "develop comp program level 6 (II).pdf" file provides a more detailed breakdown of the
program development life cycle (PDLC), which includes the following seven phases:
Problem Definition
o This is the initial stage where a thorough understanding and identification of the
problem is done.
o The problem is formally defined, and factors like input/output requirements,
processing needs, memory requirements, error handling, and interfacing with
other programs are considered.
Program Design
o In this phase, the software developer uses tools like algorithms and flowcharts to
create the program's design.
Coding
o This involves writing the actual computer program by translating the design into a
programming language.
o Syntax errors are eliminated during this phase.
Debugging
o This is the process of detecting and correcting errors in the program.
Testing
o The program is tested with various test cases to ensure it meets the specifications.
Documentation
o This involves creating essential documentation for users and maintainers of the
software, which is needed for future modifications and maintenance.
Maintenance
o This phase includes updating and correcting the program in response to changed
conditions, new requirements, or errors found during its use.
Content:
1. Definition
Program design and analysis involves understanding the problem and creating a solution.
High-Level Design: This is an initial design stage that focuses on the overall structure of
the system. It outlines the main components, their functions, and how they interact. It
does not go into the specifics of each component but provides a general overview of the
system's architecture.
Detailed Design: This level dives deeper into each component, specifying the internal
logic, data structures, and algorithms. It provides enough detail for programmers to write
the code.
Architectural Design: This involves making fundamental structural choices. Selecting
major structural elements and their interfaces by which the system is composed.
Architectural design is the blueprint for the system, it defines the components or building
blocks and provides the plan for how they will work together.
Program specification: A detailed description of what the program should do, including its
inputs, outputs, and functionalities.
Analysis of the problem: Understanding the problem that the program needs to solve, breaking
it down into smaller, manageable parts. This involves:
o Identifying the core problem.
o Defining the scope of the project.
o Analyzing constraints and limitations.
o Considering potential solutions.
Design tools: Visual and textual tools used to represent the program's design:
o Flow charts: Diagrammatic representation of the sequence of steps in an algorithm.
o Data flow diagram (DFD): Illustrates how data moves through a system.
o Decision table: A tabular method for specifying complex decision logic.
o Data dictionary: A repository of information about data elements used in the program.
o Decision tree: A tree-like structure that represents a series of decisions and their
possible consequences.
Algorithm development: Designing step-by-step procedures to solve a specific problem. Key
aspects include:
o Defining inputs and outputs.
o Specifying the sequence of operations.
o Ensuring the algorithm is correct, efficient, and terminates.
Data structures: Ways of organizing and storing data in a computer so that it can be accessed
and manipulated efficiently. Common data structures include:
o Arrays: Ordered collections of elements of the same data type.
o Linked lists: Linear collections of elements where each element points to the next.
o Stacks: LIFO (Last-In, First-Out) data structures.
o Queues: FIFO (First-In, First-Out) data structures.
o Trees: Hierarchical data structures.
o Graphs: Collections of nodes connected by edges.
User interface (UI) design: Designing the visual elements and interactive components of the
program that users will interact with. Principles of good UI design include:
o Clarity and simplicity: Easy to understand and use.
o Consistency: Maintaining a uniform look and feel.
o Feedback: Providing users with information about their actions.
o Error prevention: Designing the interface to minimize errors.
o Accessibility: Designing for users with disabilities.
Content:
Definition: The structure or organization of the code that makes up a computer program.
Explanation: This involves how the program is arranged, including its different parts
and syntax.
Key Component:
o Source code:
Definition: The set of instructions written by a programmer in a
programming language.
Explanation: This is the human-readable version of the program.
Example (C):
#include <stdio.h>
int main() {
printf("Hello, world!\n");
return 0;
}
/*
* This program calculates the area of a circle.
* Author: John Doe
* Date: 2024-05-15
*/
#include <stdio.h> // Include header file
o Declarations:
Definition: Statements that define variables, constants, and data types.
Explanation: This is where the program specifies the data it will use.
Example (C):
int main() {
double radius;
double area;
const double PI = 3.14159;
}
o Main body:
Definition: The sequence of instructions that the program executes.
Explanation: This is where the program's logic and actions are.
Example (C):
int main() {
// ... declarations ...
printf("Enter the radius: ");
scanf("%lf", &radius);
area = PI * radius * radius;
printf("The area is: %lf\n", area);
return 0;
}
3. Data Structures
o Input/output functions:
Definition: Functions for receiving data (input) and displaying data
(output).
Example:
C
o Loop control:
Definition: Statements that repeat code.
Example:
o C functions:
Definition: Reusable blocks of code.
Example:
o Library functions:
Definition: Pre-written functions.
Example: printf(), scanf(), sqrt().
o User-defined functions:
Definition: Functions created by the programmer.
Example: The add() function above.
o Arguments and parameters:
Definition:
Arguments: Values passed to a function.
Parameters: Variables that receive those values.
Example: In add(5, 3), 5 and 3 are arguments; in int add(int a, int
b), a and b are parameters
2. Java Language
4. Java Libraries
Definition: Collections of pre-written code that programmers can use in their programs.
Explanation: Java provides extensive libraries for various tasks (e.g., input/output,
networking, data structures).
Example: java.lang.Math for mathematical functions, java.util.Scanner for user
input.
5. Program Structure
Java
6. Java Output
Java
System.out.println("Hello, world!");
Definition:
o Variables: Named storage locations for data.
o Expressions: Combinations of variables, operators, and values that produce a
result.
Explanation: Variables hold data that can change, while expressions perform
calculations or operations.
Example:
Java
Definition:
o Class: A blueprint or template for creating objects.
o Object: An instance of a class.
Explanation: Classes define the attributes (data) and behaviors (methods) of objects.
Example:
Java
9. Input in Java
Java
import java.util.Scanner;
Definition:
o Data types: Categories of data (e.g., integer, floating-point, character).
o Operators: Symbols that perform operations on data (e.g., +, -, *, /).
Explanation: Java has primitive data types (e.g., int, double, boolean) and reference
types (objects). Operators manipulate values.
Example:
Java
int x = 10;
double y = 3.14;
int z = x * 2;
11. Boolean Statements
Java
Definition:
o Loops: Control structures that repeat a block of code.
o Program flow: The order in which statements are executed.
Explanation: Java provides for, while, and do-while loops. Conditional statements
(if, else if, else) alter program flow.
Example:
Java
13. Arrays
Definition: Data structures that store collections of elements of the same type.
Explanation: Arrays provide a way to organize and access multiple values using a single
name.
Example:
Java
Definition: A mechanism to deal with errors that occur during program execution.
Explanation: Java uses try-catch blocks to handle exceptions and prevent program
termination.
Example:
Java
try {
int result = 10 / 0; // Potential error
} catch (ArithmeticException e) {
System.out.println("Cannot divide by zero!");
}
Sources and related content
Coding standards and best practices: Guidelines for writing clean, readable, and maintainable
code. This includes:
o Consistent naming conventions for variables, functions, and classes.
o Proper indentation and formatting.
o Writing clear and concise comments.
o Avoiding complex and convoluted logic.
o Using modular design principles.
Programming language constructs: The fundamental building blocks of a programming
language, such as:
o Data types (integers, floats, strings, booleans, etc.).
o Operators (arithmetic, comparison, logical, assignment).
o Control flow statements (if-else, loops).
o Functions (procedures, methods) for code modularity.
o Data structures (arrays, lists, dictionaries, etc.).
Integrated Development Environments (IDEs): Software applications that provide
comprehensive facilities to computer programmers for software development. Features often
include:
o Code editor with syntax highlighting and auto-completion.
o Compiler and/or interpreter.
o Debugger for finding and fixing errors.
o Build automation tools.
o Version control integration (e.g., Git).
Basic structured programming: A programming paradigm that emphasizes the use of structured
control flow statements (sequence, selection, iteration) to create well-organized and easy-to-
understand programs.
Basic internet programming: Fundamentals of developing applications that run on the internet,
including:
o Client-side scripting: Code that runs in the user's web browser (e.g., JavaScript).
o Server-side scripting: Code that runs on the web server (e.g., PHP, Python, Node.js).
o Web programming interfaces: Ways for web browsers and servers to communicate
(e.g., Common Gateway Interface (CGI)).
Content:
Based on the provided curriculum and supplementary document, here's a breakdown of the
differences between testing and debugging:
Testing
Definition: Testing is the process of evaluating a program to ensure it meets the specified
requirements and functions correctly[cite: 1, 2].
Purpose: The primary goal of testing is to identify defects or errors in the software. It
aims to validate the program's functionality and verify that it behaves as expected under
various conditions[cite: 2].
Focus: Testing focuses on the program's behavior as a whole or in parts, often without
necessarily knowing the internal structure of the code (especially in black-box testing)
[cite: 2].
Timing: Testing is typically performed after the coding phase and can occur at various
levels (unit, integration, system, acceptance)[cite: 1, 2, 33]. A test plan is often created
during the program design phase[cite: 2].
Outcome: The outcome of testing is usually a report or documentation that details the
presence of defects, the areas of the program where they were found, and whether the
software meets the specified requirements.
Debugging
A. Debugging
B. Testing
Black Box Testing: Testing the functionality of the program without knowledge of its
internal code structure.
White Box Testing: Testing the internal structure and code of the program.
Gray Box Testing: A combination of black box and white box testing.
Agile Testing: Testing practices within agile development methodologies.
Adhoc Testing: Informal, unplanned testing.
Performance Testing: Evaluating the program's speed, responsiveness, and stability.
Regression Testing: Re-testing previously tested parts after changes to ensure no new
defects are introduced.
Compliance Testing: Verifying that the program adheres to standards or regulations.
The curriculum guide also mentions these aspects of debugging, implying that these are
important concepts to be covered:
Debugging steps: The sequence of actions taken to identify and fix a bug.
Debugging requirements: The tools, information, and skills needed for debugging.
Debugging principles: Guidelines for effective debugging.
Debugging techniques: Specific methods used to locate and correct bugs.
Types of program errors: Mistakes in the code that cause the program to behave incorrectly:
o Syntax errors: Violations of the programming language's rules (e.g., misspelled
keywords, missing semicolons). Detected by the compiler or interpreter.
o Logic errors: Errors in the program's design or algorithm that cause it to produce
incorrect results, even if the syntax is correct.
o Runtime errors: Errors that occur during the execution of the program (e.g., division by
zero, accessing an invalid memory location).
Testing strategies: Different approaches to verifying the correctness and quality of the software:
o Unit testing: Testing individual components or modules of the program in isolation.
o Integration testing: Testing the interaction between different modules or components.
o System testing: Testing the entire integrated system to ensure it meets the overall
requirements.
o Acceptance testing: Testing conducted by the end-users or stakeholders to determine if
the system meets their needs and is ready for deployment.
o Performance testing: Evaluating the program's responsiveness, stability, and resource
usage under various loads.
o Security testing: Identifying vulnerabilities and ensuring the program is protected
against unauthorized access and attacks.
o Regression testing: Re-testing previously tested parts of the software after changes
have been made to ensure that new errors have not been introduced.
o Compliance testing: Verifying that the software adheres to specific standards,
regulations, or requirements.
Levels of testing: The scope and focus of testing at different stages of development:
o Unit testing: Focuses on individual units or components.
o Integration testing: Focuses on the interaction between units.
o System testing: Focuses on the overall system functionality.
o Acceptance testing: Focuses on user satisfaction and requirements.
Methods of testing: Techniques used to perform testing:
o Black box testing: Testing the functionality of the program without knowledge of its
internal structure or code. Focuses on inputs and outputs.
o White box testing: Testing the internal structure and code of the program. Requires
knowledge of the code.
o Gray box testing: A combination of black box and white box testing, where the tester
has partial knowledge of the internal structure.
o Agile testing: An iterative and collaborative approach to testing that is integrated
throughout the agile development lifecycle.
Debugging steps: The systematic process of identifying and removing errors (bugs) from a
program:
1. Identify the bug: Recognize that the program is not behaving as expected.
2. Reproduce the bug: Determine the specific conditions under which the bug occurs.
3. Isolate the bug: Narrow down the location in the code where the bug is likely to be.
4. Understand the cause: Analyze the code and the program's state to determine why the
bug is happening.
5. Fix the bug: Modify the code to correct the error.
6. Test the fix: Verify that the bug has been resolved and that no new bugs have been
introduced (regression testing).
Debugging requirements: The necessary resources and information for effective debugging,
such as:
Content:
The curriculum guide outlines several key areas within user training and program maintenance:
Detailed Notes:
Identification of user training needs: This involves determining the specific knowledge
and skills users require to effectively use the program. It includes analyzing the target
audience's existing skills, understanding their workflows, and identifying the program's
features that require explanation.
Methods of user training: This refers to the various approaches used to teach users how
to operate the program. Examples include in-person workshops, online tutorials, and self-
paced guides.
User training manuals: These are documents that provide instructions and guidance to
users on how to use the program's features. They can be in print or digital format.
Maintenance schedule: This is a plan that outlines when and how program maintenance
activities will be performed. It helps ensure that the program remains stable, secure, and
up-to-date.
System maintenance tools and techniques: These are the software and procedures used
to maintain the program. They can include tools for monitoring system performance,
backing up data, and diagnosing problems.
Monitoring of system performance: This involves tracking the program's performance
to identify any issues or areas for improvement. This can include monitoring response
times, resource usage, and error rates.
Rectification of bugs: This is the process of identifying and fixing errors in the
program's code.
Handling requested changes: This involves managing and implementing modifications
to the program based on user feedback or changing requirements.
Identification of user training needs: Determining what users need to learn to effectively use
the program. This involves:
o Analyzing the target audience and their technical skills.
o Identifying the program's features and functionalities.
o Understanding how users will interact with the program.
o Gathering feedback from potential users.
Methods of user training: Different approaches to delivering training to users:
o Classroom training: In-person instruction with demonstrations and hands-on exercises.
o Online training (e-learning): Using digital platforms to deliver training materials and
interactive sessions.
o One-on-one training: Personalized instruction tailored to individual user needs.
o Self-paced tutorials: Providing users with materials they can learn from at their own
speed.
User training manuals: Written guides and documentation that explain how to use the program.
These should be:
o Clear and concise.
o Well-organized.
o Include step-by-step instructions and visuals