Cc105 Module Asc Approved 1
Cc105 Module Asc Approved 1
The world today has witnessed the use of different applications and systems to
transform processes and procedures into a more effective and efficient one. Information
Technology plays a vital role in producing relevant applications for different
organizations, groups and individuals, and communities. This course will cover the
discussion on the relevant fundamental concepts of application development and
software engineering. In this course, basic concepts on emerging technologies will also
be given emphasis in order for students to be able to have an idea on how they can
integrate such technologies in application development. While this course focuses on
application development, integration of recent advancements and technologies will also
be covered to give students essential information and update about them.
Contents of this learning module conforms to the minimum requirements of
CHED Memorandum Order No. 25 Series of 2015 or the Policies, Standards, and
Guidelines of BSCS, BSIS, and BSIT Programs. Author and contributors seek to
continuously refine the contents of this learning module together with a laboratory guide
for application development using JavaFX.
Students are expected to engage in Synchronous and Asynchronous Learning
Modalities to have a better experience in learning the course. Have fun learning on how
to develop your first application project.
3
LESSON 1
OVERVIEW ON SOFTWARE AND HARDWARE APPLICATIONS
Introduction
Today’s modern era has observed significant changes in the way how people
work, communicate, and perform different tasks and activities. Relative to this,
applications and different software plays a vital role in transforming different processes
into a more effective and efficient one. This lesson will cover an overview of software
and hardware applications essential for you to start in this journey of learning more
about applications development and emerging technologies.
Learning Objectives
At the end of the lesson, you must be able to:
1. define what is software and operating systems:
2. discuss the importance of software and operating systems;
3. compare and contrast the different types of operating systems;
4. identify the different software-related problems; and
5. construct insights on the different software applications
Discussion
Software-Related Problems
1. Hardware advances continue to outpace our ability to build software to tap
hardware’s potential
2. Our ability to build new programs cannot keep pace with the demand for new
programs, nor can we build programs rapidly enough to meet business and
market needs
4
3. The widespread use of computers has made society more and more dependent
on the software’s reliable use.
4. We struggle to build high-quality and reliable computer software.
5. Poor design and inadequate resources threaten our ability to support and
enhance existing programs.
Characteristics of Software
1. Software is constructed according to the needs of the client, and it is not
produced in a usual sense that conforms to “one size, fits all” principle. This
means that software is custom engineered.
2. The software does not wear out.
5
The collection of data or computer instructions that tells the computer how to
perform different operations is commonly known as software. In computing disciplines,
software pertains to all the information processed by computer systems, programs, and
data. It includes computer programs, libraries, and related non-executable data like
documentation and digital media. The system software is designed to provide a platform
for other software. Examples of system software include Linux, macOS, Android, and
Microsoft Windows.
6
Figure 2: Batch Operating System
7
execute. After the allotted time for a task, the OS switches over to the next.
Examples of Time-Sharing Operating System include Multics and Unix.
A
dvant
ages
of
Time-
8
Figure 4: Distributed Operating System
9
functions. It enables sharing files, printers, security, applications, and other
essential networking functions over a small private network. This type of
Operating System is also known as a tightly coupled systems. This means that
the network members know the configuration and the other users connected
within the same network. Examples of Network Operating Systems include
Microsoft Windows Server 2003, Microsoft Windows Server 2008, UNIX, Linux,
Mac OS X, Novell Network, and BSD.
10
missile systems are some of the few examples of real-time operating systems.
There are two categories of Real-Time Operating Systems: Hard Real-Time
Systems and Soft Real-Time Systems. Hard Real-Time Systems are those that
require an application to be very strict with time requirements. Meaning, possible
delays in terms of response are not acceptable. This type of system is built to live
life like an automatic parachute or airbags. Also, virtual memory is almost never
found in this type of system. On the other hand, Soft Real-Time Systems are
those that have less strict time-constraints.
11
ACTIVITY 1.1 (Suggested Mode of Submission of Output: Email/Learning
Management System)
12
Software Applications
13
ACTIVITY 1.2 (Suggested Mode of Submission of Output: Uploading of Video
Recording in the Learning Group/Learning Management System)
1. In a group of five (5) members, look on the internet of one example for each
cutting-edge hardware and software technologies. Your team must be able to
present it in a video recording, allowing your classmates to know more about
these technologies. Provide brief description and explanation for each cutting-
edge technologies. Presentation should not be more than 10 minutes.
14
LESSON 2
INTRODUCTION TO SOFTWARE ENGINEERING AND APPLICATION
DEVELOPMENT
Introduction
Learning Objectives
At the end of the lesson, you must be able to:
1. explain what is software engineering and its difference to application
development;
2. identify the layers of software engineering and its similarities to application
development;
3. recognize the different software engineering and application development
paradigms; and
4. construct an understanding and insights about the use of different software and
application development paradigms and models.
Discussion
15
1. Process. It is the glue that holds the technology layers together and enables
rational and timely development of computer software.
2. Methods. These provide technical “how to’s” for building software.
3. Tools. These provide automated or semi-automated support for the process and
the methods.
16
Figure 8: Spiral Model
18
Summary of the current state of 4GT approaches:
a. Over the years, the use of 4GT has made possible the development of
different applications in different areas. It has been a practical approach in
conducting software and application projects.
b. Immense amount of time, effort, and resources has been reduced based from
the data collected from different organizations, entities, or groups that have
employed and utilized 4GT approach.
c. To achieve a better quality of output, for large application projects, 4GT
focused more on the analysis of essential requirements to save substantial
time, effort, and resources while trying to produce a more quality output.
19
ACTIVITY 2.1 (Suggested Mode of Submission of Output: Google Drive/Learning
Management System)
1. Form a team of five (5) members and look for studies that have applied
prototyping, spiral, incremental, agile and waterfall models in international
journals. Your team should be able to make an analysis for each article on how
they have applied each model. The analysis must not be less than 300-words
and not more than 500-words.
20
LESSON 3
REQUIREMENTS ANALYSIS AND MODELLING
Introduction
Requirements play a vital role in the overall success and complete delivery of
software applications. When requirements are not properly identified, analyzed, and
collected, failure of delivery might happen. In this lesson, you will learn more about
requirements analysis, the different steps involved in conducting the process, and the
ways on how to convert these into meaningful models that will be significant and helpful
in developing applications.
LEARNING OBJECTIVES
At the end of the lesson, you must be able to:
1. explain the importance of requirements and the requirements analysis process;
2. differentiate feasibility study, requirements gathering, software requirement
specifications, and software requirements validation;
3. demonstrate understanding on the different types of requirements gathering
techniques; and
4. compare and contrast functional and non-functional requirements
Discussion
21
Figure 11: Requirements Analysis as Bridge between
Systems Engineering and Design
22
Configuration Management is a set of procedures that track the requirements
that define the system, the design modules that are generated from the requirements,
the program code that implements the design, the tests that verify the functionality of
the system, and the documents that describe the system.
Software Requirements
Software Requirements include the description of features and functionalities of
the target system. Requirements are essential for it convey the expectations of the
users from the software product or application. It can be obvious or hidden, known or
unknown, expected or unexpected from the client’s point of view. It covers the process
of requirements engineering. Requirements engineering is the process of gathering the
requirements from the client, analyzing it, and documenting them. Steps in requirements
engineering includes feasibility study, requirements gathering, software requirement
specifications, and software requirements validation.
23
c. Software Requirements Specifications (SRS) – The SRS is a document
created by system analysts after the requirements gathering is conducted and
essential requirements are collected from the different types of stakeholders.
SRS defines how the intended application or system will interact with hardware,
external interfaces, speed of operation, response time of the system, portability
across different platforms, maintainability, and speed of recovery after crashing,
security, quality, limitations, and the likes. Since the requirements collected are
written in the natural language, it is the responsibility of the analyst to translate
them in technical languages to be understood by the members of the
development team. The following are the vital features of the SRS document.
i. User requirements are expressed in natural language
ii. Technical requirements are expressed in structured language,
which is used inside the organization
iii. Design description should be written in pseudo code
iv. Format of Forms and GUI screen prints
v. Conditional and mathematical notations for DFDs, etc.
24
a. Requirements Gathering. The developers discuss with the client and end-users
and know their expectations from the software
b. Organizing Requirements. The developers prioritize and arrange the
requirements in order of importance, urgency, and convenience.
c. Negotiation and Discussion. If the requirements are ambiguous or there are
some conflicts in requirements of various stakeholders, it is then negotiated and
discussed with the stakeholders. Requirements may be then prioritized and
reasonably compromised. The requirements come from various stakeholders. To
remove ambiguity and conflicts, they are discussed for clarity and correctness.
Unrealistic requirements are compromised reasonably.
d. Documentation. All formal and informal, functional and non-functional
requirements are documented and made available for next phase processing.
25
f. Brainstorming. It is an informal debate held among several stakeholders and all
their inputs are recorded for further requirements analysis
g. Prototyping. It is the process of building user interface without adding
functionality for user to interpret the features of intended software product. It
helps giving better idea of requirements.
h. Observation. Development team visits the client’s organization to observe the
actual working of the existing installed system. They also observe the workflow
and how execution problems are dealt. In this process, the team draws
conclusions which aid to form requirements from the software.
26
c. Storage
d. Configuration
e. Performance
f. Cost
g. Interoperability
h. Flexibility
i. Disaster Recovery
j. Accessibility
27
LESSON 4
PROCESS MODELLING
INTRODUCTION
In the previous lesson, you learned about the relevance of requirements and the
ways on how to effectively collect and analyze them. In this lesson, you will learn more
about process modelling. Process modeling in application development helps the team
in deepening their understanding about the project at hand. It is important that you will
be able to construct your own process model like data flow diagram to convert the
requirements into meaningful model representation of the project.
LEARNING OBJECTIVES
At the end of the lesson, you must be able to:
1. determine the importance of modelling in application development;
2. recognize what are process models;
3. identify the different essential components of data flow diagram; and
4. create a data flow diagram based on given specifications and requirements.
DISCUSSION
Process Models
Process models was formalized in the late 1970s. Process models specify the
essential processing requirements, that is, state what must be accomplish without
specifying the technology to accomplish it. It identifies the information needed for each
business event. Process models manage complexity by limiting the amount of detail at
each level. It enforces the business rules defined in the data model. Also, process
models minimize development cost by clearly defining customer processes and provide
necessary input to determine development cost.
28
Process models define the functional behavior of a customer’s business.
Components include customer involvement wherein customer provide the business
knowledge, data, and data associations. Then, analyst capture the information using a
specific development approach to quickly convey important aspects of the customer’s
business to help understand the problems.
Purpose of DFD
1. Defines the scope of the customer’s business processes.
2. Divides each process into less complex activities.
3. Facilitates a more detailed analysis of the processing requirement.
4. Specifies how the data is manipulated within the customer’s business functions.
5. Serves as an input for preparing the system’s behaviour.
Components of DFD
29
data from a data flow or is triggered by a control flow. Process identifiers are
used on DFD to depict the relationship between the parent process and the child
process. It may be either complex or simple. Complex process performs more
than one function while simple process performs only one function.
b. Agent – illustrated as a square or rectangle and acts as a source, a sink or both.
It can be a person, group, organization, or other systems. It can be classified as
external agent and internal agent. Agent acting as a source provides information
to the application while agent acting as a sink receives information from the
application. Internal agents can only act as a source and send a control flow
c. Data flow – Illustrated as a directed continuous arc, comprises a set of
attributes. It describes the movement of information from one part of the
application to another. Data flow enters data stores, processes, and agents
acting as sources. These are used to carry data from an origin object to a
destination object. Also, data flow has descriptive label, usually a noun that
identifies the type and purpose of the information carried.
d. Control flow – Control flow is illustrated as a directed dashed arc which triggers
a process by notifying it that a certain condition has been met. It contains no
data. It is given a descriptive name that helps identify the purpose or the
business policy governing the trigger. Also, control flow triggers a process to take
action.
e. Junction – Junctions are illustrated as a solid dot, representing a process that
provides data to another process. It is depicted as a solid dot on one end of the
flow and must be used whenever both of the following conditions exists
1. A process provides input (data or control) to another process
2. The process that provides input to another process is a parent
process, or the process that receives input from a process in a parent
process
f. Data store – It is illustrated as two parallel lines that represents a group of like
information at rest. Data store represents a logical table from the data model.
The table can represent either an entity or a regular relationship that did not
create an associative entity. Data store cannot interact with a parent process.
30
Process Specification
31
Data Conservation
Every process should receive only the information that the process needs to
perform its function. If data passes through a process without contributing to the
operation of the process, the data should be removed from the data flows. To ensure
that the process adheres to data conservation, you must understand the purpose of the
process. It is important to make the data flow diagram more understandable by limiting
the data carried on its data flows to only the data needed by each process. Also,
provide the necessary information for the analyst to create the process specification.
Context Diagram
A context diagram is a data flow diagram that depicts the highest level of a
process model. It has only one process, and one or more external agents that either
provide information to or receive information from the process as indicated by the data
flows. Context Diagram is at the highest level of abstraction within the process model.
Context Diagram provides only a small understanding of the overall behavior of the
application’s functions.
Context diagram defines the boundary of focus, identify the information needed
to provide the information requested, and identify where the information is coming from
and where it is going to outside the boundary.
32
2. It must have at least one external agent, acting as a source, a sink or both. Also,
it may have more agents acting as a source, a sink or both.
3. It must have a data flow connecting each of the agents to the process. The
directions of the data flow indicate the role of the agent has with the process
(either as a source or as a sink) .
Composite Event
A composite event is composed of two or more interrelated events. It identifies
when an additional process and input attributes are needed to direct which processes to
trigger or one of the incoming data flows is not expected to contain any data on the
initial triggering of the high-level process. When an additional process and input
attributes are needed to direct which tasks (process) to trigger, this attribute is a design
technique.
33
LESSON 5
SOFTWARE DESIGN
INTRODUCTION
In this chapter, you will learn more about software design and the different
techniques and procedures use to perform the activities. Software design is more than
what the eyes can see, but also how the users can use and make it more relevant. It is
expected that in this lesson, you will be able to apply the learned concepts and
techniques to successfully construct the design of your own application.
LEARNING OBJECTIVES
At the end of the lesson, you must be able to:
1. state the importance of software design in application development;
2. identify the different design steps; and
3. recognize the different design concepts and explain their importance.
DISCUSSION
Software design sits at the technical kernel of the software engineering process
and is applied regardless of the software process model that is used. The first of three
technical activities – design, code generation, testing – is required to build and verify the
software. It includes an iterative process through which requirements are translated into
a “blueprint” for constructing the software.
34
ACTIVITY 5.1 (Suggested Model of Submission of Output: Email/Learning
Management System)
1. Thinking about your proposed application as the reference:
a. Construct the proposed entity-relationship diagram
b. Construct the proposed data flow diagram (Context Diagram and Level 1)
c. Construct the state-transition diagram
Design Steps
a. Data Design transforms the information domain model created during analysis
into the data structures that will be required to implement the software.
b. Architectural Design defines the relationship among major structural elements
of the program.
c. Interface Design describes how the software communicates within itself, to
systems that interoperate with it, and with humans who use it.
d. Procedural Design transforms structural elements of the program architecture
into procedural description of software components.
Design Concepts
1. Abstraction
2. Refinement
3. Modularity
4. Software architecture
5. Control hierarchy
6. Structural partitioning
7. Data structure
8. Software procedure
9. Information hiding
Levels of Abstraction
a. Procedural Abstraction is a named sequence of instructions that has a specific
and limited function.
b. Data Abstraction is a named collection of data that describes a data object.
c. Control Abstraction implies a program control mechanism without specifying
internal details.
Refinement
Stepwise refinement is a top-down design strategy originally proposed by Niklaus
Wirth. It is a process of elaboration. It causes the designer to elaborate on the original
statement, providing more and more detail as each successive refinement occurs.
Refinement helps the designer to reveal low-level details as design progress. It helps
the designer to reveal low-level details.
35
Modularity
It includes the division of software into separately named and addressable
components (modules) integrated to satisfy problem requirements. Modularity is the
single attribute of software that allows a program to be intellectually manageable.
Software Architecture
Alludes to “the overall structure of the software and the ways in which that
structure provides conceptual integrity of the system”. The hierarchical structure of
program components (modules), the manner in which these components interact, and
the structure of the data that are used by the components.
Different models in architectural design
1. Structural model
2. Framework model
3. Dynamic model
4. Process model
5. Functional model
Control Hierarchy
36
Structural Partitioning
Horizontal partitioning defines separate branches of the modular hierarchy for
each major program functions while vertical partitioning, often called "factoring",
suggests that control (decision making) and work should be distributed top-down in the
program architectural. Benefits of horizontal partitioning includes: results in software
that is easier to test, leads to software that is easier to maintain, results in propagation
of fewer side effects, and results in software that is easier to extend.
37
Data Structure
Data structure is a representation of the logical relationship among individual
elements of data. It is as important as program structure to the representation of
software architecture. Data structures dictates the organization, methods of access,
degree of associativity, and processing alternatives for information. Its organization and
complexity are limited only be the ingenuity of the designer. A scalar item, the simplest
of all data structures, represents a single element of information that may be addressed
by an identifier. Vectors are the most common of all data structures and open the door
to variable indexing of information. When the sequential vector is extended to two, three
and ultimately, an arbitrary number of dimensions, an n-dimensional space (also called
"array") is created. A linked list is a data structure that organizes non-contiguous scalar
items, vectors or spaces in manner (called nodes) that enables them to be processed
as a list. For example, a hierarchical data structure is implemented using multi-linked
lists that contain scalar items, vectors and possibly n-dimensional spaces. Like program
38
structures, data structures can be represented at different levels of abstraction. For
example, a stack is a conceptual model of a data structure that can be implemented as
a vector or a linked list.
Software Procedure
Software procedure focuses on the processing details of each module
individually. It must provide a precise specification of processing including sequence o
of events, exact decision points, repetitive operations, and even data
organization/structure.
Information Hiding
In information hiding, modules should be specified and designed so that
information (procedure and data) contained within a module is inaccessible to other
modules that have no need for such information. It implies that effective modularity can
be achieved by defining a set of independent modules that communicate with one
another only, and that information is necessary to achieve software function. It defines
and enforces access constraints to both procedural detail within a module and any local
data structure used by the module.
Cohesion
Cohesion is a natural extension of the information hiding concept. A
cohesive module performs a single task within a software procedure, requiring
little interaction with procedures being performed in other parts of a program. It
may be represented as a “spectrum”. A module that performs a set of tasks that
relate to each other loosely, if at all, is termed coincidentally cohesive. A module
that performs tasks that are related logically is logically cohesive. When a module
contains tasks that are related by the fact that all must be executed within the
same span of time, the module exhibits temporal cohesion.
39
Coupling
Coupling is a measure of interconnection among modules in a program
structure. It may also be represented on a spectrum. Coupling depends on the
interface complexity between modules, the points at which entry or reference is
made to a module, and what data pass across the interface. At moderate levels,
coupling is characterized by passage of control between modules.
40
Architectural Design
Architectural Design is the initial design process of identifying these subsystems
and establishing a framework for subsystem control and communication. Its objective is
to develop a modular program structure and represent the control relationships between
modules. It melds program structure and data structure, defining interfaces that enables
data to flow throughout the program. Architectural design maybe based on a particular
architectural model or style.
Interface Design
It focuses on three areas of concern: the design of interfaces between software
modules; the design of interfaces between the software and other nonhuman producers
and consumer’s information; and the design of the interface between a human (the
user) and the computer.
The design of internal program interfaces, sometimes called intermodular
interface design, is driven by the data that must flow between modules and the
characteristics of the programming language in which the software is to be
implemented.
Procedural Design
Occurs after data, architectural and interface designs have been established. It
must specify procedural detail unambiguously. Its foundation was formed in the early
1960s and was solidified with the work of Edsgar Dijktra and his colleagues. They
proposed the use of a set of existing logical constructs from which any program could
be formed. Constructs of procedural design are the following: sequence – implements
processing steps that are essential in the specification of any algorithm; condition –
provides the facility for selected processing based on some logical occurrence; and
repetition – provides for looping.
41
LESSON 6
APPLICATION AND SOFTWARE PROTOTYPING
INTRODUCTION
In this lesson, you will be able to learn about prototyping and its relevance in
software and application development. Prototyping has different forms and types and
these will be discussed in this lesson. After this lesson, you will be making your own
prototype based on the models and requirements you have from the previous lesson of
this learning module.
LEARNING OBJECTIVES
At the end of the lesson, you must be able to:
1. identify what is a prototype, the benefits of prototyping, and the advantages of
prototyping;
2. compare and contrast the different types of prototyping;
3. construct prototype of the proposed application project.
DISCUSSION
42
or manufacturing. The degree of completeness and the techniques used in prototyping
have been in development and debate since its proposal in the early 1970s.
Benefits of Prototyping
1. The software designer and implementer can get valuable feedback from the
users early in the project.
2. The client and the contractor can compare if the software made matches the
software specification according to which the software program is built.
3. It also allows the software or application engineer some insight into the accuracy
of initial project estimates and whether the deadlines and milestones proposed
can be successfully met.
Advantages of Prototyping
1. Collect feedback from users/ stakeholders about the functionality of the product
before the public release.
2. Reveal areas for improvement and help identify faults and usability issues before
the public release. Help reduce unnecessary costs.
3. Improve team efficiency and collaboration.
4. Allow the user to interact with a working model of their product.
5. Help convert an abstract idea into a tangible product in a cost-effective way.
6. Identify if your product idea is a weak one and cost you heavily before actually
moving forward with it.
Types of Prototyping
1. Low Fidelity Prototypes
Wireframes are used to
represent the basic structure of
a website/ web page/ app. It
serves as a blueprint,
highlighting the layout of key
elements on a page and its
functionality.
43
Diagrams are multiple diagram types that can help you visualize different
aspects of a product, which can in turn help you optimize your prototype
such as mind maps, customer journey maps, and flowcharts.
44
Animation can be used to visualize how your product works. For example,
if it is a mobile app, you can animate how a user would navigate from one
screen to the other. This will help the stakeholders or users get an idea
about the functionality of the product.
45
The Prototyping Process
1. Identify Obstacles.
2. Select the Features.
3. Sketch Your Design.
4. Share Your Design.
5. Continue to Develop.
46
LESSON 7
SOFTWARE QUALITY ASSURANCE
INTRODUCTION
Quality is what software development team always look at. Teams must be able
to produce quality output to provide significant impact in an organization, business
entities, and individuals. In this lesson, you will learn more about the importance of
quality, and software quality in particular. Output of this lesson is a continuation of the
output produced from the previous lesson.
LEARNING OBJECTIVES
At the end of the lesson, you must be able to:
1. recognize what is software quality assurance and its importance;
2. differentiate quality control and quality assurance;
3. explain the different factors affecting software quality; and
4. demonstrate understanding on the different software quality metrics
DISCUSSION
47
compliance is noted and fixed.
Software Quality
Conformance to explicitly stated functional and performance requirements,
explicitly documented development standards and implicit characteristics are
expected of all professionally develop software.
Quality Characteristics
These refer to any property or element that can be used to define the nature of a
product. Each characteristic can be physical or chemical properties such as size,
weight, volume, color or composition.
Software Quality
1. It is achieved through a disciplined approach - called software engineering
48
SE.
2. It can be defined, described, and measured.
3. It can be assessed before any code has been written.
4. It cannot be tested into a product.
Designing software is a creative task, and like most such tasks, success is more
likely if the designer follows what might be termed a set of rules of form. The rules of
form also provide some way of assessing the quality of the eventual product, and
possibly of the processes that led to it.
Quality example
In his book Quality Is Free, Philip Crosby suggests an analogy between quality and sex:
1. Everyone is for it, except in certain situations.
2. Everyone believes they understand it, but they don’t want to explain it.
49
3. Most people believe the execution is merely a matter of following natural
inclinations.
4. Everyone believes that problems with it are always someone else’s fault.
REALISING QUALITY
A set of abstract quality factors (‘the ilities’) has been defined. These cannot be
measured directly but do relate to the ultimate goal.
On to Through By
50
The extent to which a program (or part of a program) can be reused in
other applications-related to the packaging and scope of the functions that the
program performs.
Quality Metrics
Provides an indication of how closely software conforms to implicit (essential)
and explicit (specific) requirements.
Auditability refers to the ease with which conformance to standards can be
checked.
Accuracy is the precision of computations and control. A qualitative
assessment of freedom from error. A quantitative measure of the magnitude
of error. The correct data values are recorded.
Communication commonality is the degree to which standards interfaces,
protocols, and bandwidths are used.
Completeness is the degree to which full implementation of required function
has been achieved. All data items are captured and stored for use. Data
items are properly identified with time periods.
Conciseness is the compactness of the program in terms of lines code.
Consistency is the use of uniform design and documentation techniques
throughout the software development project.
51
Data commonality is the use of standard data structures and types throughout
the program.
Error tolerance is the damage that occurs when the programs encounters an
error. Suitable error prevention and detection procedures are in place. There
are procedures for reporting and correcting errors. Various audit procedures
are applied.
Execution efficiency refers to the run-time performance of a program.
Expandability is the degree to which architectural, data, or procedural design
can be extended.
Generality refers to the breadth of potential application of program
components.
Hardware independence is the degree to which the software is decoupled
from the hardware on which it operates.
Instrumentality is the degree to which the program monitors its own operation
and identifies errors that do occur.
Modularity refers to the functional independence of program components.
Operability refers to the ease of operation of a program.
Robustness is the extent to which software can continue to operate correctly
despite the introduction of invalid inputs
Security is the availability of mechanism that control or protect programs and
data. The system and its operations are protected from various environmental
and operation risks. There are provisions for recovery in the event of failure or
destruction of part or all system
Self-documentation is the degree to which the source code provides
meaningful documentation.
Simplicity is the degree to which a program can be understood without
difficulty.
Software system independence refers to the degree to which the program is
independent of nonstandard programming language features, operating
system characteristics, and other environmental constraints.
Traceability refers to the ability to trace a design representation or actual
program component back to requirements.
Training is the degree to which the software in enabling new users to apply
the system.
52
discovered, but also to incorporate enhancements to adapt to new hardware
systems and changing environment.
2. Law of Increasing Entropy (intuitive). The entropy (disarray) of a system
increases with time unless specific work is done to maintain it or to reduce it.
Continuous changes made to a system tend to destroy the integrity of the system
thus increasing entropy.
3. Law of Statistically-Smooth Change (controversial). Measures of a global
system attributes and project attributes may appear quite irregular for a particular
system, but are cynically self-regulating, with statistically identifiable invariance
and well-defined long-range trends. Work input or the effort expended per unit
time, remained constant over the lifetime of the system.
SQA ACTIVITIES
1. Application of technical methods
The use of technical tools and methods helps analyst to achieve high quality
specification and the designer to develop a high-quality design
It is not the task of team to correct faults, but merely to record them
for later correction.
Defect found early in the software life cycle can be repaired at much less
expense than later in the life cycle.
Types of Reviews
1) Walk through is an interactive process to evoke questions and discussions
53
a) Participant - driven
Each participant goes through his or her list of unclear items which
may appear incorrect.
b) document-driven
A person responsible for the document walks the participants
through that document, with the reviewers in everything either with
their prepared comments or comments triggered by the
presentation
Review Guidelines
1. Review the product, not the producer.
2. Set an agenda and maintain it.
3. Limit debate and rebuttal.
4. Enunciate problem areas, but do not attempt to solve every problem noted.
5. Take written notes.
6. Limit the number of participants and insist upon advance preparation.
7. Develop a checklist for each product that is likely to be reviewed.
8. Allocate resources and time schedule for FTRs.
9. Conduct meaningful training for all reviewers.
10. Review your early reviews.
3. Software testing
Software testing is the activity or running software to find errors in the
software. The direct output of testing results in product changes. A study of these
changes may result in process changes, but this is not necessary. Thus, testing
is a quality control activity. It combines a multi-step strategy with a series of test
54
case design methods that help ensure effective error detection. Program testing
can be very effective way to show the presence of bugs but it is hopelessly
inadequate for showing their absence
4. Enforcement of standards
SQA must be established to ensure that standards are being followed. An
assessment of compliance to standards must be conducted
5. Control of change
Every change to software has the potential for introducing error or creating
side effects that propagate errors. Request for change must be formalized-
evaluate the nature of change, and control the impact of change.
6. Measurement
To track software quality and assess impact of changes to software
quality.
B. Adopt the new philosophy of quality and cost-effective software with the
understanding that we can no longer live with delays, mistakes, poor quality and
costly software.
55
D. End the practice of awarding software business on a lowest cost basis,
demanding, instead, that meaningful measures of quality along with price.
Software developers who cannot qualify with statistical evidence of quality must
be eliminated.
H. Drive out fear so that everyone in a software company will work effectively.
J. Create a structure in top management that will direct and control every day
on the above nine points.
56
LESSON 8
SOFTWARE TESTING
INTRODUCTION
In the previous lesson, you learned about software quality assurance and its
fundament concepts. In this lesson, you will learn more about software testing and the
different software testing techniques and activities you may conduct in developing your
application project. At the end of the lesson, you are expected to conduct software
testing activities in your proposed project application.
LEARNING OBJECTIVES
At the end of the lesson, you must be able to:
1. identify what is software testing and its importance in software and application
development;
2. compare and contrast different software testing techniques; and
3. construct understanding on how to evaluate and apply proper and appropriate
testing techniques.
DISCUSSION
Testing Principles
a. All tests should be traceable to customer requirements.
b. Tests should be planned long before testing begins.
c. The Pareto Principle applies to software testing.
d. Testing should begin “in the small” and progress toward testing “in the large”.
e. Exhausting testing is not possible.
f. To be most effective, testing should be conducted by an independent third party.
57
Testability
Testability is simply how easily a computer program can be tested. It is important
to consider that it pays to know what can be done to streamline it. Testability is
sometimes used to mean how adequately a particular set of tests will cover the product.
Testing Techniques
Softwaretestinghelp.com presents the different testing techniques as follows:
1. Functional Testing
b. Unit Testing
Testing of an individual software component or module is referred to as
Unit Testing. Typically, this is done by the programmer and not by the tester,
as it requires detailed knowledge of the internal program design and code. It
may also require test driver modules or test harnesses to be developed.
58
c. Integration Testing
Testing of all integrated modules to verify the combined functionality after
integration is referred to as integration testing. Modules are typically code
modules, individual applications, network client and server applications, etc.
This type of testing is particularly relevant for the client/server and distributed
systems.
d. System Testing
The entire system is tested according to the requirements of the System
Testing technique. It is a Black-Box type of testing that is based on the over-
all requirements and covers all the combined parts of the system.
e. Sanity Testing
Sanity Testing is done to determine whether or not a new software version
is performing well enough to accept it for a major test effort. If the application
crashes for initial use, the system is not stable enough for further testing. As a
result, a build or application is assigned to fix it.
f. Smoke Testing
Whenever a new build is provided by the development team, the Software
Testing team validates the build and ensures that there is no major issue. The
testing team ensures that the design is stable and that further detailed testing
is carried out. Smoke Testing checks that there is no show stopper defect in
the build that prevents the testing team from testing the application in detail.
If testers find that the major critical functionality is broken down at the initial
stage itself, then testing team can reject the build and inform accordingly to
the development team. Smoke Testing is carried out to a detailed level of any
Functional or Regression Testing.
g. Interface Testing
The objective of this GUI Testing is to validate the GUI as per the
business requirement. The expected GUI of the application is mentioned in
the Detailed Design Document and GUI mockup screens. The GUI Testing
includes the size of the buttons and input field present on the screen,
alignment of all text, tables, and content in the tables. It also validates the
menu of the application, after selecting different menu and menu items. It
validates that the page does not fluctuate and the alignment remains same
after hovering the mouse on the menu or sub-menu.
59
h. Regression Testing
Testing an application as a whole for the modification in any module or
functionality is termed as Regression Testing. It is difficult to cover all the
system in Regression Testing, so typically Automation Testing Tools are used
for these types of testing.
i. Beta/Acceptance Testing
Beta Testing is a formal type of Software Testing which is carried out by
the customer. It is performed in the Real Environment before releasing the
product to the market for the actual end-users. Beta Testing is carried out to
ensure that there are no major failures in the software or product and that it
satisfies the business requirements from an end-user perspective. Beta
Testing is successful when the customer accepts the software. Usually, this
testing is typically done by end-users or others. It is the final testing done
before releasing an application for commercial purpose. Usually, the Beta
version of the software or product released is limited to a certain number of
users in a specific area. So, end-user actually uses the software and shares
the feedback to the company. Company then takes necessary action before
releasing the software to the worldwide.
2. Non-Functional Testing
a. Performance Testing
This term is often used interchangeably with ‘stress’ and ‘load’
testing. Performance Testing is done to check whether the system meets the
performance requirements. Different performance and load tools are used to
do this testing.
b. Load Testing
Load Testing is a type of Non-Functional Testing whose objective is to
check how much load or maximum workload a system can handle without any
performance degradation. Load Testing helps to find the maximum capacity
of the system under specific load and any issue that causes software
performance degradation. Load testing is performed using tools like JMeter,
LoadRunner, WebLoad, Silk performer, etc.
c. Stress Testing
This testing is done when a system is stressed beyond its specifications in
order to check how and when it fails. This is performed under heavy load like
putting large number beyond storage capacity, complex database queries,
and continuous input to the system or database load.
60
d. Volume Testing
Volume Testing is a type of Non-Functional Testing performed by the
Performance Testing team. The software or application undergoes a huge
amount of data and Volume Testing checks the system behavior and
response time of the application when the system came across such a high
volume of data. This high volume of data may impact the system’s
performance and speed of the processing time.
e. Security Testing
It is a type of testing performed by a special team of testers. A system can
be penetrated by any hacking way. Security Testing is done to check how the
software or application or website is secured from internal and external
threats. This testing includes how much software is secured from the
malicious program, viruses and how secured and strong the authorization and
authentication processes are. It also checks how software behaves for any
hacker's attack and malicious programs and how software is maintained for
data security after such a hacker attack.
f. Compatibility Testing
It is a testing type in which it validates how software behaves and runs in a
different environment, web servers, hardware, and network environment.
Compatibility testing ensures that software can run on a different
configuration, different database, different browsers, and their versions.
Compatibility testing is performed by the testing team.
g. Install Testing
Installation and Uninstallation Testing is done on full, partial, or upgrade
install/uninstall processes on different operating systems under different
hardware or software environment.
h. Recovery Testing
It is a type of testing which validates how well the application or system
recovers from crashes or disasters. Recovery Testing determines if the
system is able to continue the operation after a disaster. Assume that
application is receiving data through the network cable and suddenly that
network cable has been unplugged. Sometime later, plug the network cable;
then the system should start receiving data from where it lost the connection
due to network cable unplugged.
61
i. Usability Testing
Under Usability Testing, User-friendliness check is done. The application
flow is tested to know if a new user can understand the application easily or
not, Proper help documented if a user gets stuck at any point. Basically,
system navigation is checked in this testing.
62
LESSON 9
SOFTWARE MAINTENANCE
INTRODUCTION
In the delivery of software applications, software maintenance plays an important
role to continuously enhance and improve the implemented and deployed application. In
this lesson, you will learn the important concepts about software maintenance and will
guide you on how to conduct the processes required to maintain an application.
LEARNING OBJECTIVES
At the end of the lesson, you must be able to
1. define what is software maintenance and recognize the different types of
software maintenance activities;
2. identify the different quantities measures of software maintenance; and
3. propose software maintenance activities for a project.
DISCUSSION
63
4. Used of standardized programming language.
5. Used of standardized operating systems.
6. Standardized structure of documentation.
7. Availability of test cases.
8. Built in debugging facilities.
9. Availability of proper computer to conduct maintenance.
Quantitative Measures:
1. Problem recognition time
2. Administrative delay time
3. Maintenance tools collection time
4. Problem analysis time
5. Change specification time
6. Active correction (or modification time)
7. Local testing time
8. Global testing time
9. Maintenance review time
10. Total recovery time
Maintenance Tasks
1. Establish a maintenance organization (de facto or formal).
2. Describe reporting and evaluation procedures.
3. Define sequence of events for each maintenance request.
4. Establish a record-keeping procedure for maintenance activities.
5. Define review and evaluation criteria.
64
Reverse Engineering
Reverse Engineering is the process of analyzing a program in an effort to create
a representation of the program at a higher level of abstraction than source code. It is a
process of design recovery. These are the tools used to extract data, architectural and
procedural design information from an existing program. Reverse engineering can
extract design information from source code, but the abstraction level, the completeness
of the documentation, the degree to which tools and a human analyst work together and
the directionality of the process are highly variable.
Reengineering
Reengineering is also called "renovation" or "reclamation." Reengineering takes
time and it costs significant amounts of money, and absorbs resources that might be
otherwise occupied on immediate concerns. It is an activity that will absorb information
technology resources for many years. Typically, it is considered as a rebuilding activity.
65
This activity not only recovers design information from existing software but uses
this information to alter or reconstitute the existing system in an effort to improve overall
function of the existing system (the software developer also adds new functions and/or
improves overall performance).
66
REFERENCES
Software Testing Help (2020). Types of Software Testing: Different Testing Types with
Details. Retrieved at https://www.softwaretestinghelp.com/types-of-software-
testing/
67