Cs-204: Software Engineering
Cs-204: Software Engineering
Cs-204: Software Engineering
ENGINEERING
LECTURE: 1
RECOMMENDED BOOKS
• It is general term for various kinds of programs used to operate computers and
related devices.
• Software is more than just a program code. A program is an executable code,
which serves some computational purpose. Software is considered to be a
collection of executable programming code, associated libraries and
documentations. Software, when made for a specific requirement is called
software product.
• Two types
• Application software
• System software
ENGINEERING
• Derived from old French engin = skill, which stems from Latin
ingenium = ability to invent, brilliance, genius
• The word was created in the 16th century and originally
described a profession that we would probably call an artistic
inventor ("Encyclopedia" by The Software Toolworks, 1991)
• Engineering is applied science
• Engineering is the application of science for practical
purposes
• Engineering on the other hand, is all about developing
products, using well-defined, scientific principles and
methods.
• Engineers put theory into practice.
ENGINEERING SOFTWARE?
Definition:
Software Engineering is an engineering discipline
Concerns with the development of software by applying Engineering
Principles
Goal is the cost-effective development of software systems
Origin:
1968: The notion of ‘software engineering’ was first proposed at a conference
held to discuss what was called the “software crisis”.
SOFTWARE ENGINEERING?
• Development completed.
• It is usable.
• It is finally used.
• Cost effective and maintable
The software crisis was a term used in the early days of software
development which involved in developing software projects that were liable
to fail because of many unknown factors which are real essence of software.
In essence, it refers to the difficulty of writing correct, understandable, and
verifiable computer programs.
REASONS FOR FAILURE
Analysis of problem
Most problems are large and sometimes tricky to handle, especially if they
represent something new that has not been solved before.
So we must begin by investigating a problem by analyzing it, i.e by breaking it
in to pieces that we can understand and try to deal with.
Thus analysis involves, breaking a bigger problem in to smaller steps so that it
can be understood well.
SOLVING A PROBLEM
Once we have analyzed the problem, we must construct our solution from
components that address various aspects of the problem, this is synthesis
which refers to putting together of a large structure from small building
blocks.
Thus any problem-solving technique must have two parts:
- analyzing the problem to determine its nature
- and then synthesizing a solution based on our analysis.
THE PROCESS OF ANALYSIS
PROBLEM
Sub
Problem
subproblem1 Subproblem 2 s3 4
THE PROCESS OF SYNTHESIS
Solution
Solution 1 4
Solution 2 s3
SOLUTION
SOLVING A PROBLEM
Procedure:
A procedure is like recipe: a combination of tools and techniques that, in
concert, produce a particular project.
For example: test plans describe test procedures; they tell us which tools will
be used on which data sets under which circumstances so we can determine
whether our software meets its requirements
SOLVING A PROBLEM
Paradigm:
• A paradigm is like cooking style; it represents a particular approach or
philosophy for building a software.
• Just as we distinguish French cooking from Chinese cooking, so too we
distinguish paradigms like object-oriented development from procedural ones.
SOLVING A PROBLEM