Nyanza campus
Module: Introduction to Software Engineering
Lecturer: Dr. Taiwo Adigun Email:
[email protected]Lecture 1: Fundamentals of Software Engineering
Course Description:
ISE400110: Introduction to Software Engineering.
The course covers the basics of the Software Engineering global
practice. It is aimed at helping students appreciate Software
Engineering concepts and terminologies for large and complex
systems.
As a result we will cover topics associated with appropriate processes
involved in the production of quality software products.
Content:
Fundamentals of Software Engineering
Software Development Life Cycle & Process Models
Requirement Analysis & Specification
Software design
Modelling Requirements – UML Tools Practical
Recommended Text:
Fundamentals of Software Engineering (2nd Edition) by Carlo Ghezzi, Mehdi
Jazayeri and Dino Mandrioli, 2002.
Object-Oriented Software Engineering: Practical Software Development using
UML and Java by by Robert Laganière and Timothy C. Lethbridge, 2001
Software Engineering: Theory and Practice (4th Edition) by Shari Lawrence
Pfleeger & Joanne M. Atlee, Pearson Education, 2010
Software Engineering (7th edition) by Ian Sommerville, Addison Wesley,
2004.
Applying UML and Patterns – An Introduction to Object-Oriented Analysis and
Design and Iterative Development, Third Edition by Craig Larman
Fundamentals of Software
Engineering
Fundamentals of Software Engineering
Outline:
Software
Definition of Software
Characteristics of a good Software
Categories of Software
Roles of Software
Software Engineering
Definition of Software Engineering
Why Software Engineering
Demand for Software Engineers
Ethics that guides the Software Engineering
Profession
Fundamentals of Software Engineering
Specific Objectives:
By the end of this lesson, you should be able:
Describe software system
Describe software engineering
Software
Definition of Software
Software can be difficult to describe because it is not
tangible!
The term Software, is a generic term for an organized
collection of computer data and programming instructions.
Software is created using a programming language and
related utilities. These utilities may be script interpreters,
compilers, IDEs (Integrated Development Environments),
etc.
Software is a collection of executable programming code, associated libraries
and documentations.
Software, when made for a specific requirement is called software product.
A program is an executable code, which serves some computational purpose.
So, Software is more than just a program code.
Software
Characteristics of a good Software
A good software product will be judged by what it offers and how well it delivers the task.
The characteristics of a good software is grouped into 3 categories:
Operational
Transitional
Maintenance
Operational: This describes how well a software is able to deliver in terms of its operations. It
can be measured on:
Budget
Usability
Efficiency
Correctness
Functionality
Dependability
Security
Safety
Software
Characteristics of a good
Software
Maintenance: This aspect briefs
Transitional: This aspect is important
about how well a software has the
when the software is moved from one
capabilities to maintain itself in the
platform to another:
ever-changing environment:
Portability
Modularity
Interoperability
Maintainability
Reusability
Adaptability
Software
The Unique Nature of Software
No “wear
Easy to Unskilled
and tear”-
modify people
Unlike
can create
hardware
one
Difficult to see Easy to
development reproduce or
effort
replicate
Software
Categories of Software
The various categories of software are
1. System software: System software is a collection of programs written to service
other programs
2. Application software
3. Engineering and scientific software: Engineering and scientific software have been
characterized by "number crunching" algorithms.
4. Embedded software: resides in read-only memory and is used to control products
and systems for the consumer and industrial markets.
5. Product-line software
6. Web-applications
7. Artificial intelligence software: Artificial intelligence (AI) software makes use of
nonnumeric algorithms to solve complex problems that are not amenable to
computation or straightforward analysis
Software
Legacy Software
Legacy software are older programs that are developed decades
ago.
The quality of legacy software is poor because it has inextensible
design, convoluted code, poor and nonexistent documentation, test
cases and results that are not achieved.
As time passes legacy systems evolve due to following reasons:
The software must be adapted to meet the needs of new computing
environment or technology.
The software must be enhanced to implement new business
requirements.
The software must be extended to make it interoperable with more
modern systems or database.
The software must be rearchitected to make it viable within a network
environment.
Software
Roles of Software
The dual role of Software is as follows:
1. As a Product- It transforms information producing, managing
and displaying information.
2. As a Vehicle for delivering a product- Control of computer
(operating system), the communication of information
(networks) and the creation of other programs.
Software Engineering - Definition of Software
Engineering
The term is made of two words, software and engineering:
Engineering is the branch of science and technology concerned
with the design, building, and use of engines, machines, and
structures.
It is the application of science, tools and methods to find cost
effective solution to simple and complex problems.
So, engineering on the other hand, is all about developing
products, using well-defined, scientific principles and methods.
Software Engineering - Definition of Software
Engineering
What is Software Engineering?
Software engineering is an engineering branch
associated with development of software product using
well-defined scientific principles, methods and
procedures. The outcome of software engineering is an
efficient and reliable software product.
Software Engineering - Definition of Software
Engineering
What is Software Engineering?
The process of solving customers’ problems by the
systematic development and evolution of large, high-
quality software systems within cost, time and other
constraints
Software Engineering - Definition of Software
Engineering
What is Software Engineering?
Software Engineering is defined as a systematic,
disciplined and quantifiable approach for the
development, operation and maintenance of software.
Software Engineering - Definition of Software
Engineering
What is Software Engineering?
IEEE:
(1) The application of a systematic, disciplined,
quantifiable approach to the development,
operation, maintenance of software; that is, the
application of engineering to software.
(2) The study of approaches as in (1).
The Canadian Standards Association:
The systematic activities involved in the
design, implementation and testing of software
to optimize its production and support.
Software Engineering - Definition of Software
Engineering
Needs used to explain Software Engineering
The following constraints explain software engineering better:
1. Solving customers’ problem
2. Systematic Development and Evolution
3. Large, High Quality Software System
4. Cost, Time and Other Constraints
Software Engineering - Definition of Software
Engineering
Solving customers’ problem
This is the main goal of
software engineering
Sometimes the solution is to
buy, not build
Adding unnecessary features does not help
solve the problem
Software engineers must
communicate effectively to
identify and understand the
Software Engineering - Definition of Software
Engineering
Systematic Development and Evolution:
An engineering process involves applying well
understood techniques in an organized and disciplined way
Most development work are mainly an evolution from a
previous scheme of work
Software Engineering - Definition of Software
Engineering
Large, High Quality Software System:
We are dealing with large systems – they cannot be
completely understood by one person
How do
We need End product
we
Teamwork MUST be
divide
and Satisfactory
the
co-
work and
ordination
still
Software Engineering - Definition of Software
Engineering
Cost, Time and Other Constraints:
Resources are limited – Money, Time, etc.
Therefore,
1. The benefit must
outweigh the cost
2. An accurate estimate of cost
and time must be made
3. Remember that others are part
of the process
Software Engineering - Why Software Engineering?
The need of software engineering arises because of higher rate of change in user requirements and
environment on which the software is working.
Large software - It is easier to build a wall than to a house or building, likewise, as the size of software
become large engineering has to step to give it a scientific process.
Scalability- If the software process were not based on scientific and engineering concepts, it would be
easier to re-create new software than to scale an existing one.
Cost- As hardware industry has shown its skills and huge manufacturing has lower down the price of
computer and electronic hardware. But the cost of software remains high if proper process is not adapted.
Dynamic Nature- The always growing and adapting nature of software hugely depends upon the
environment in which the user works. If the nature of software is always changing, new enhancements
need to be done in the existing one. This is where software engineering plays a good role.
Quality Management- Better process of software development provides better and quality software
product.
Software Engineering - Demand for Software
Engineers How attractive is the Software
Is there a demand for Engineering Profession?
Software Engineers?
Software Engineering - Ethics that guides the Software Engineering
Profession
Software engineering ethical conduct
requires software engineers to
always:
1. Act consistently with public
interest
2. Act in the best interests of their
clients
3. Develop and maintain with the
highest standards
possible
4. Maintain integrity in
professional judgment
5. Encourage an ethical approach
in management
Thank
you