0% found this document useful (0 votes)
46 views33 pages

Se 01

Software engineering is required to manage the development of large, complex software systems in a systematic way. It helps reduce complexity through techniques like abstraction and decomposition that break problems into smaller, more manageable pieces. Software engineering principles are needed to minimize costs, reduce time to develop systems, and produce reliable software. It provides a framework to handle big projects through processes, planning and quality management.
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)
46 views33 pages

Se 01

Software engineering is required to manage the development of large, complex software systems in a systematic way. It helps reduce complexity through techniques like abstraction and decomposition that break problems into smaller, more manageable pieces. Software engineering principles are needed to minimize costs, reduce time to develop systems, and produce reliable software. It provides a framework to handle big projects through processes, planning and quality management.
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/ 33

Software Engineering

Course Code: CS-1251


SE-Week-01

Instructor: Shimza Butt


Introduction to  The Scope and Overview of Software Engineering
Software  Motivation and need for SE

Engineering
What is Software Engineering?
Software Product 
Software products are software systems delivered to a customer
with the documentation which describes how to install and use the
system. The critical characteristics of a software product include:
• Usability: must be useful and usable to improve people’s lives. 
• Software is flexible. A program can be developed to do almost
anything. A program can be developed to do almost anything.
The characteristic may help to accommodate any kind of
change. 
• Maintainability: should be possible to evolve software to meet
the changing needs of customers
• Dependability: includes a range of characteristics; reliability,
security and safety. Dependable software should not cause
physical or economic damage in the event of system failure. 
• Efficiency: should not make wasteful use of system resources
such as memory and processor cycles 
What is Software Engineering?
• The term software engineering is the product of two
words, software, and engineering.
• The software is a collection of integrated programs.
• Software subsists of carefully-organized instructions and code written by
developers on any of various particular computer languages.
• Computer programs and related documentation such as
requirements, design models and user manuals.
• Engineering is the application of scientific and practical knowledge to
invent, design, build, maintain, and improve frameworks, processes,
etc.
What is Software Engineering?
• Software Engineering is an engineering branch related to the evolution
of software product using systematic well-defined scientific principles,
techniques, and procedures.
• The result of software engineering is an effective and reliable
software product.
Software engineering
 Software engineering is an engineering discipline that is concerned with all
aspects of software production from the early stages of system specification
through to maintaining the system after it has gone into use.
 Engineering discipline
 Using appropriate theories and methods to solve problems bearing in mind
organizational and financial constraints.
 All aspects of software production
 Not just technical process of development. Also project management and the
development of tools, methods etc. to support software production.
Why is Software Engineering required?
The necessity of software engineering appears because of a higher rate of progress in
user requirements and the environment on which the program is working.
• Huge Programming: It is simpler to manufacture a wall than to a house or building,
similarly, as the measure of programming become extensive engineering has to step
to give it a scientific process.
• Adaptability: If the software procedure were not based on scientific and engineering
ideas, it would be simpler to re-create new software than to scale an existing one.
• Cost: As the hardware industry has demonstrated its skills and huge manufacturing
has let down the cost of computer and electronic hardware. But the cost of
programming remains high if the proper process is not adapted.
• Dynamic Nature: The continually growing and adapting nature of programming
hugely depends upon the environment in which the client works. If the quality of the
software is continually changing, new upgrades need to be done in the existing one.
• Quality Management: Better procedure of software development provides a better
and quality software product.
Why is Software
Engineering required?

Software Engineering is required due to


the following reasons:
 To manage Large software
 For more Scalability
 Cost Management
 To manage the dynamic nature of
software
 For better quality Management
Importance of Software Engineering
(1) Reduces complexity:
• Large software systems are always complicated and challenging to progress.
• Software engineering divides big problems into various small issues.
And then start solving each small issue one by one.
• All these small problems are solved independently to each other and then
integrated together to produce the software product.
(2) To minimize software cost:
• A lotof resources are required to develop large-scale software systems,
such as: manpower, software licenses, hardware…etc.
• As companies seek to build cutting-edge software to drive growth,
determining the overall budget becomes very tricky.
• Software engineering provides systematic means for having regular interaction
and obtaining a budget estimates.
Importance of Software Engineering
(3) To decrease time:
• One of the main criteria to measuring project success and yet the most
challenging is delivering software projects on time.
• Schedule issues are the main reason for conflicts on projects, especially during
the second half of projects where the actual implementation takes place to
produce the final working product.
• Software engineering involves the processes required to ensure timely
completion of a project.
(4) Handling Big projects:
• Big projects are not done in a couple of days, and they need lots of work,
planning, and management. And to invest six and seven months of any company,
it requires heaps of planning, direction, testing, and maintenance.
• Companies provide many resources to the plan to be completed.
• So to handle a big project without any problem, the company has to
go for software engineering methods.
Importance of Software Engineering
(5) Reliable software:
• Software reliability is the “probability that the software will execute for a
particular period of time without failure”.
• Software engineering provides models for software quality measurements
and evaluations. Examples include models for estimating defects inserted
and removed throughout the software lifecycle.
(6) Effectiveness:
• Effectiveness means getting the desired results/ doing the
right thing!
• From example: achieving missions and goals; generating satisfied
customers; producing work of high quality.
• This includes proper use of: communication, technology, organizational and
individual knowledge, and resources.
Importance of software engineering
 More and more, individuals and society rely on advanced software systems.
We need to be able to produce reliable and trustworthy systems economically
and quickly.
 It is usually cheaper, in the long run, to use software engineering methods
and techniques for software systems rather than just write the programs as if
it was a personal programming project. For most types of system, the
majority of costs are the costs of changing the software after it has gone into
use.
Scope and necessity of software engineering

 Without using software engineering principles it would be


difficult to develop large programs.
 A program of size 1,000 lines of code has some complexity.
But a program with 10,000 LOC is not just 10 times more
difficult to develop, but may as well turn out to be 100 times
more difficult unless software engineering principles are used.
 In such situations software engineering techniques come to
rescue.
 Software engineering helps to reduce the programming
complexity.
 Software engineering principles use two important techniques
to reduce problem complexity.
 Abstraction and Decomposition
Abstraction
 The principle of abstraction implies that a problem can be
simplified by omitting irrelevant details.

 In other words, the main purpose of abstraction is to


consider only those aspects of the problem that are relevant
for certain purpose and suppress other aspects that are not
relevant for the given purpose.

 Once the simpler problem is solved, then the omitted details


can be taken into consideration to solve the next lower level
abstraction, and so on.

 Abstraction is a powerful way of reducing the complexity of


the problem.
Abstraction
Decomposition
 In this technique, a complex problem is divided into several
smaller problems and then the smaller problems are solved
one by one.
Decomposition
 However, in this technique any random decomposition of a
problem into smaller parts will not help.
 The problem has to be decomposed such that each
component of the decomposed problem can be solved
independently and then the solution of the different
components can be combined to get the full solution.
 A good decomposition of a problem should minimize
interactions among various components.
 If the different subcomponents are interrelated, then the
different components cannot be solved separately and the
desired reduction in complexity will not be realized.
Definition of SE

 Software Engineering: Software engineering is the application of a


systematic, disciplined, quantifiable approach to the development,
operation, and maintenance of software, and the study of these approaches.
[IEEE]
Software Engineering: A layered
technology
The Software Process
 Process: Process defines a framework for a set of key process areas that must
be established for effective delivery of software engineering technology
The software process
 A structured set of activities required to develop a
software system.
 Many different software processes but all involve:
 Specification – defining what the system should do;
 Design and implementation – defining the organization of the
system and implementing the system;
 Validation – checking that it does what the customer wants;
 Evolution – changing the system in response to changing customer
needs.
 A software process model is an abstract representation of a process.
It presents a description of a process from some particular
perspective.
Software process descriptions
 When we describe and discuss processes, we usually talk about
the activities in these processes such as specifying a data
model, designing a user interface, etc. and the ordering of
these activities.
 Process descriptions may also include:
 Products, which are the outcomes of a process activity;
 Roles, which reflect the responsibilities of the people
involved in the process;
 Pre- and post-conditions, which are statements that are
true before and after a process activity has been enacted or
a product produced.
Plan-driven and agile processes
 Plan-driven processes are processes where all of the
process activities are planned in advance and progress is
measured against this plan.
 In agile processes, planning is incremental and it is easier
to change the process to reflect changing customer
requirements.
 In practice, most practical processes include elements of
both plan-driven and agile approaches.
 There are no right or wrong software processes.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy