0% found this document useful (0 votes)
13 views28 pages

Lesson 1

The document outlines a course on Introduction to Software Engineering, covering fundamental concepts, processes, and methodologies essential for developing quality software products. It includes topics such as the Software Development Life Cycle, requirement analysis, and software design, along with recommended texts for further reading. Additionally, it emphasizes the importance of ethical conduct in the software engineering profession.

Uploaded by

Phial
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views28 pages

Lesson 1

The document outlines a course on Introduction to Software Engineering, covering fundamental concepts, processes, and methodologies essential for developing quality software products. It includes topics such as the Software Development Life Cycle, requirement analysis, and software design, along with recommended texts for further reading. Additionally, it emphasizes the importance of ethical conduct in the software engineering profession.

Uploaded by

Phial
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 28

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

You might also like