ITE183 Final Exam Notes
ITE183 Final Exam Notes
Getting Started
Software is capable of performing many tasks, as opposed to hardware which can only perform
mechanical tasks that they are designed for. Software provides the means for accomplishing many
different tasks with the same basic hardware
Classes of Software
System Software: Helps run the computer hardware and computer system itself. System software
includes operating systems, device drivers, diagnostic tools and more. System software is almost
always pre-installed on your computer.
Application Software: Allows users to accomplish one or more tasks. It includes word processing,
web browsing and almost any other task for which you might install software. (Some application
software is preinstalled on most computer systems.)
Programming Software: is a set of tools to aid developers in writing programs. The various tools
available are compilers, linkers, debuggers, interpreters and text editors.
Basic Principles
Software, commonly known as programs or apps, consists of all the instructions that tell the hardware
how to perform a task.
These instructions come from a software developer in the form that will be accepted by the platform
(operating system + CPU) that they are based on.
For example, a program that is designed for the Windows operating system will only work for that
specific operating system. Compatibility of software will vary as the design of the software and the
operating system differ.
Software, in its most general sense, is a set of instructions or programs instructing a computer to do
specific tasks.
Software Evolution
The process of developing a software product using software engineering principles and methods is referred
to as software evolution. This includes the initial development of software and its maintenance and updates,
till desired software product is developed, which satisfies the expected requirements.
Laws of Software Evolution
Continuing Change: A software system must continue to adapt to the real world changes, else it
becomes progressively less useful.
Increasing Complexity: A software system evolves, its complexity tends to increase unless work is
done to maintain or reduce it.
Conservation of Familiarity: The familiarity with the software or the knowledge about how it was
developed, why was it developed in that particular manner etc. must be retained at any cost, to
implement the changes in the system.
Continuing Growth: In order for a system intended to resolve some business problem, its size of
implementing the changes grows according to the lifestyle changes of the business.
Reducing Quality: A software system declines in quality unless rigorously maintained and adapted
to a changing operational environment.
Feedback Systems: The software systems constitute multi-loop, multi-level feedback systems and
must be treated as such to be successfully modified or improved.
Self-regulations: A system evolution processes are self-regulating with the distribution of product
and process measures close to normal.
Organizational Stability: The average effective global activity rate in an evolving a system is
invariant over the lifetime of the product.
3. System testing: In system testing, instead of integrating modules into programs for testing, the
programs are integrated into systems. Not only do individual modules and programs are tested several
times in system testing, but also interfaces between modules and programs.
Acceptance Testing
This is testing the system in the environment where it will eventually be used. Acceptance means that users
normally sign off on the system and “accept” it once they are satisfied with it.
There are two types of acceptance testing and these are:
1. Alpha testing – simulated data
2. Beta testing – real data in the real, user environment
There are several types of tests done during alpha testing and these are as follows:
Recovery testing – forces the software (or environment) to fail in order to verify that recovery is
properly performed
Security testing – verifies that protection mechanisms built into the system will protect it from
improper penetration
Stress testing – tries to break the system
Performance testing – determines how the system performs in the range of possible environments
in which it may be used.
Installation is the process of moving from the current information system to the new one. There are many
constraints when installing a new system and making it operational.
Incurring costs operating both systems in parallel
Detecting and correcting errors in the new system
Potentially disrupting the company and its IS operations
Training personnel and familiarizing customers with new procedures
Approaches to Installation
1. Direct installation: In direct installation, the old system is turned off and the new system is turned
on. In direct installation, the users use the new system. Whatever errors found from the new system
will have a direct impact on the users and how they do their jobs. If the new system fails,
considerable delay may occur until the old system can operate again and business transactions are
re-entered to make the database updated.
Advantage:
Simple
Disadvantage:
Risk
2. Parallel installation: In parallel installation, the old system continues to operate along with the
new system until the users and management are satisfied with the performance of the new system
and has been thoroughly tested and determined to be error-free and ready to operate independently.
Advantage:
Low risk of system failure
Disadvantage:
Not Feasible
3. Phased installation: In Phased Installation, the new system is installed and brought into operation
in a series of steps or phases. Components or functions are added to the operational system on each
phase. The system is tested in each phase to make sure that it is ready for the next phase.
Advantage:
Reduced risk
Disadvantage:
Increased complexity
Requirements Gathering
Requirements Gathering is a fundamental part of any software development project. It is the process of
generating a list of requirements (functional, system, technical, etc.) from all the stakeholders (customers,
users, vendors, IT staff) that will be used as the basis for the formal definition of what the project is.
The Importance of Requirements Gathering
The problem with the business customers is that the latter tends to expect software teams
to deliver a solution based on unspoken, incomplete or unknown requirements.
The problem with software teams is that they tend to assume that business customers will
communicate exactly what they want as succinctly as possible.
The requirements need to be formally captured in one document that can be used as a
reference during software development.
Good gathering, processing and management of requirements is important as it sets clear
targets for everyone to aim for. It can be a lot of hard work, but it need not be a daunting
task if you can keep some key points in mind.
Consider always the user inputs. Find out how actual users complete their tasks and
exactly how they get things done – and how they want to get things done.
The Users Comes First
The requirements should detail how a user would accomplish what they want using the software being
developed. Awareness of any technological preferences and existing system integration is also
fundamental, as it can have a huge impact on the development path and subsequently impact on
performance and user task efficiency.
What are requirements and its specifications?
A requirement is a statement about an intended product that specifies what it should do or
how it should perform.
Goal:
o To make as specific, unambiguous, and clear as possible.
Functional Specifications:
Requirements Analysis
Requirements Analysis is the process of defining the expectations of the users for an application that is to be
built or modified. Requirements analysis involves all the tasks that are conducted to identify the needs of
different stakeholders.
Business process modeling notation (BPMN)
Flowchart technique
Data flow diagram
Role Activity Diagrams (RAD)
Gantt Charts
Gap Analysis
Business Process Modeling Notation (BPMN)
Business process modeling and notation is used to create graphs for the business process. These graphs
simplify understanding the business process. BPMN is widely popular as a process improvement
methodology.
The Basics of Business Process Modeling and Notation (BPMN) | IBM
Flowchart technique
A flowchart depicts the sequential flow and control logic of a set of activities that are related. Flowcharts are
in different formats such as linear, cross-functional, and top-down. The flowchart can represent system
interactions, data flows, etc.
Flowchart: Room Reservation
Gantt Chart
Gap Analysis
Gap analysis is a technique which helps to analyze the gaps in performance of a software application to
determine whether the business requirements are met or not. It also involves the steps that are to be taken to
ensure that all the business requirements are met successfully.
Gap Analysis