Download as pdf or txt
Download as pdf or txt
You are on page 1of 23

CS-204: SOFTWARE

ENGINEERING
LECTURE: 1
RECOMMENDED BOOKS

• Software Engineering, Ian Sommerville, 10th Edition, 2015.


• Beginning Software Engineering, Rod Stephens, 2015.
• Software Engineering: A Practitioner's Approach, Roger S Pressman, Bruce R.
Maxim, 8th Edition, 2014.
WHAT IS A SOFTWARE?

• 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?

• Engineering methods put a lot of emphasis on planning


before you build
• Design, Plan and then Construct
• Construction is much bigger in both cost and time than
design and planning
– 80-90% cost on construction
• What is the proportion in Software Engineering?
– 10-20% cost on construction
– Software construction is so cheap as to be free
– All effort is of design
WHAT IS SOFTWARE ENGINEERING?

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?

Software Engineering [IEEE]:


• The application of a systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software; that is, the application
of engineering to software.
CHARACTERISTICS OF SUCCESSFUL SOFTWARE
PROJECT

• Development completed.
• It is usable.
• It is finally used.
• Cost effective and maintable

Talat Ambreen International Islamic University, Islamabad


SOFTWARE CRISIS

• Crisis manifested itself in form of


• Projects running over-budget.
• Projects running over-time.
• Software was very inefficient.
• Software was of low quality.
• Software often did not meet requirements.
• Projects were unmanageable and code difficult to maintain.
• Software was never delivered.
SOFTWARE CRISIS

 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

• Exceeded budget because going for extra work


• Slipped schedule because scope of project is not understood
• Poor quality delivered because Requirements not clear enough
• Not meeting user requirements because of lack of communication between
customer and software developing team
NATURE OF SOFTWARE( F.P BROOKS)

 The essence of a software entity is a construct of interlocking concepts


(conceptual construct)
 I believe that hard part of building software to be the specification, design,
and testing of this conceptual construct, not the labor of representing it and
testing the fidelity of the representation. We still make syntax errors, to be
sure; but they are fuzz compared with the conceptual errors in most systems
SOFTWARE ENGINEERING

 Software engineers use knowledge of computers and computing to solve


problems.
 Often the problems with which they are dealing is related to a computer or
an existing computer system., but sometimes this problem have nothing to
do with the computers.
 Analysis of the problem therefore is essential before going towards solving
the problem.
SOLVING A PROBLEM

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

 To solve a problem, a variety of methods, tools, procedures and paradigms


are applied.
Method/ Technique:
 A method or technique is a formal procedure for producing some result.
 A recipe follow some specific steps in an ordered way to produce it with some
specific ingredients.
Tool:
 Tool is an instrument or automated system for accomplishing something in a
better way.
 For example: we use a typewriter or a keyboard to write letters because
resulting documents are easier to read than our handwriting.
.
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

• So software engineers use tools, techniques, procedures and paradigms to


enhance the quality of their software products.
• Their aim is to use efficient and productive approaches to generate effective
solutions to problems.
RELATIONSHIP BETWEEN COMPUTER SCIENCE AND
SOFTWARE ENGINEERING
Computer science provides
Computer Science theory and practices that
Customer
software engineer follows to
produce a high quality
software.
Computer
Software engineer
Functions considers computer as a
Theories Problem problem solving tool and he
thus uses this tool to solve
various problems and comes
up with efficient solutions.
Software Role of software engineer is
Engineering above than solving theorems
of computer science and
understanding its various
Tools and elements, he just applies this
techniques to knowledge for solving
solve a problem problems.
Q& A

You might also like