SOFTWARE AND
SOFTWARE
ENGINEERING
TERMINOLOGY
• Software - is a collection of computer programs and related
data that provide the instructions for telling a computer what to
do and how to do it.
• Engineer - is a professional practitioner of engineering,
concerned with applying scientific knowledge, mathematical and
ingenuity to develop solutions for technical problems.
Engineers design materials, structures, machines and
systems while considering the limitation imposed by practicality,
safety and cost.
The word engineer is derived from the latin roots ingeniare (“to
contrive devise”) and ingenium (“cleverness”).
• Engineering - is the discipline, art, skill and profession
of acquiring and applying scientific, mathematical,
economic, social and practical knowledge, in order to
design and built structures, machines, devices, system,
m a t e r i a l s a n d p ro c e s s e s t h a t s a f e l y re a l i z e
improvements to the lives of peoples.
• Software Engineering (SE) - is the application of a
systematic, disciplined, quantifiable approach to the
developments operation, and maintenance of software.
๏ SE GOAL - to deal with the software complexities,
increase the reliability and enhance the quality of the
produced software.
TYPES OF SOFTWARE
1. SYSTEM SOFTWARE
A. Operating system
B. Language compiler
C. Assembler
D. Device driver
E. Debugger
F. Networking tools and software
2. APPLICATION SOFTWARE
A. Word Processor
B. Spreadsheet
C. Presentation Software
D. Database Management Software
E. Desktop Publisher
F. Graphic Editor
G. Games and Entertainment
H. Web Browser
I. Educational
J. Multimedia
SYSTEM SOFTWARE
• System software is computer software designed to
operate the hardware to provide basic functionality
and to provide a platform for running application
software.
• Refers to the operating system and all utility programs
that manage compouter resources at a low level.
• System software also includes system utilities, such as
the BIOS, disk defragmenter, disk cleanup, disk
partition tool and system restore.
APPLICATION SOFTWARE
• A program or group of programs designed for
end users.
• Allows end users to accomplish one or more
specific (non-computer related) task
TYPES OF LICENSE
SOFTWARE
• Registerware
• Shareware
• Freeware
• Open Source
• Demoware
• Abandonware
Registerware
• Refers to computer software which requires the
user to give personal information through
registration in order to download or use the
program.
Shareware/Demoware
• Refers to copyrighted commercial software that
is distributed without payment on a trial basis
and is limited by any combination of
functionality, availability, or convenience.
Freeware
• Computer software that is available for use with
no cost or for an optional fee.
• Freeware is different from shareware, where the
user is obliged to pay.
Open Source Software(OSS)
• OSS is also a free software
• Oss can be defined as computer software for
which the human - readable source code is made
available under a copyright license (or
arrangement such as the public domain) that
meets the open source definition.
• This permits users to use, change and improve
the software and to redistribute it in modified or
unmodified form.
Abondonware
• It refers to software that is no longer available for
purchase or that is at least a certain amount of
years old.
GENERIC STAGES IN
SOFTWARE DEVELOPMENT
Definition Stage Implementation Stage Maintenance Stage
Requirements Design Adaptation
Specification Coding Enhancement
Testing Correction
SOFTWARE ERRORS
Software errors are known because they have been discovered by:
• The software developers
• Reported by the users
• During testing
• After the software deployed
Taxonomy of Software Errors reported by Beizer in 1990:
• Requirements and specification eror 25%
• Design 25%
• Implementation 10%
• Integration 10%
• Data related 10%
• Testing 3%
• Others 2%
100%
SOFTWARE BEHAVIOR,
STRUCTURE AND ARCHITECTURE:
BEHAVIOR
SOFTWARE
STRUCTURE ARCHITECTURE
1. SOFTWARE DEVELOPERS
2. SOFTWARE MAINTAINERS
3. TECHNICAL WRITERS
4. SOFTWARE VENDORS
5. SOFTWARE USERS
6. GOVERNMENT BODIES
7. PROFESSIONAL ORGANIZATIONS AND SOCIETIES (CODE OF
ETHICS FOR THE PROFESSIONAL)
8. STANDARD BODIES
9. TOOL DEVELOPERS AND VENDORS
10.CLIENTS
SOFTWARE ENGINEERING EDUCATION,
TRAINING AND CERTIFICATION:
1. Graduate certificate or graduate degree in software engineering
2. Attending conferences
3. workshops
4. Tutorials
5. Short courses
6. Studying vendor-specific software engineering productivity tools
7. Securing certification as a software engineering professional
• C e r t i fi e d s o f t w a re e n g i n e e r i n g d e v e l o p m e n t
professional (CSDP) - is a professional certification for
software engineers manage by IEEE computer society.
• International Conference on Software Engineering
(ICSE) - the largest and most established conference
with all the parallel workshops and tutorials.
• International Computer Software and Application
Conference (COMSAC) - this held annually in Chicago
since 1977.
• Regional software engineering conferences in Europe
and Austrasia.
CODE OF ETHICS AND
PROFESSIONAL PRACTICE:
Developed and recommended by IEEE-CS/ACM joint task force - the committee
consisted of memberss from academia, industry and government.
• Public
1. Software engineer shall act consistently with the public interest.
2. Software engieer shall act in a manner that is in the best interest of their client
and employer, consistent with the public interest.
• Product
3. Software engineers shall ensure that their products and related modification
meet the highest professional standards possible.
• Profession
4.Software engineers shall advance the integrity and reputation of the
professional consistent with the public interest.
• Peers and Self
5. Software engineers shall maintain integrity and
independence in their professional judgement.
6. Software engineering managers and leaders shall
subscribe to and promote an ethical approach to the
management of software development and maintenance.
7. Software engineers shall be fair to and supportive of their
collleagues.
8. Software engineers shall participate in lifelong learning
regarding the practice of their profession and shall
promote an ethical approach to the practice of the
profession.
3 P’s OF SOFTWARE ENGINEERING
(PROJECT, PROCESS, and PEOPLE)
Process - these are the part of a software life
cycle model or software methodology.
Project - the tasks are developed based on the
adopted process model or methodology.
People - are assigned to specific tasks of the
project and are adequately managed to
successfully complete the assigned on time and
within budget.
DESIRABLE SOFTWARE
CAPABILITIES:
• Software capabilities determine the overall quality of the software
product.
THE FEATURES THAT ARE MORE RELEVANT TO THE USERS ARE
THE FOLLOWING:
1. Availability - is the degree to which the software system is
available when its services are required.
2. Correctness - is the degree to which the software meets its
requirements specification.
3. Efficiency - is the degree to which the software system prevents
performs its functions using the least amount of computational and
memory resources.
4. Integrity - is the degree to which the software
system prevents unauthorized access to
information or program.
5. Reliability - is the ablitity of a software system to
perform its function under stated condition and for
a specified period of time.
6. Scalability - is the ability of the software system to
handle a growing numbre of user request up to a
certain specified limit.
7. Usability - is the degree of ease with which the
software system can be used.
DEVELOPER-CENTERED SOFTWARE CAPABIITIES
8. Flexibility - is the measure of how easily the software system can be
extended or expanded.
9. Interoperability - is the ability of the software system to exchange information
with other external systems.
10.Maintainability- is the measure of how easily the software system can be
modified to fix error, to improve its function or to adapt it to different
environments.
11.Portability - is the ease with which the software system can be moved to a
different software or hardware environment or platform.
12. Reusability - is the measure of how easily a software component can be
reused in the same software system or utilized to build new systems.
13.Testability - is the measure of how easily the test cases can be selected and
executed to test the software.