SEC Spring2022 Lecture#1
SEC Spring2022 Lecture#1
1
Software Engineering Concepts (CSC291)
Lecture 01
Introduction
• What is software?
• What is software engineering?
• What is the difference between software engineering
and computer science?
• What is the difference between software engineering
and system engineering?
• What is a software process?
• What is a software process model?
•Generic Products
• Stand-alone systems that are marketed and sold to any customer who
wishes to buy them.
• Examples – PC software such as graphics programs, project
management tools; CAD software;
• Customized Products
• Software that is commissioned by a specific customer to meet their own
needs.
• Examples – embedded control systems, air traffic control software,
traffic monitoring systems.
•Generic products
• The specification of what the software should do is owned by the
software developer and decisions on software change are made by
the developer.
•Customized products
• The specification of what the software should do is owned by the
customer for the software and they make decisions on software
changes that are required.
• Definition:
• “Software engineering is an engineering discipline that is
concerned with all aspects of software production”.
• 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.
Software Engineering Concepts -Spring-2022 Mr. Tehseen Riaz Abbasi
Software Engineering Definition
The seminal definition:
[Software engineering is] the establishment and use of sound engineering
principles in order to obtain economically software that is reliable and works
efficiently on real machines.
The IEEE definition:
Software Engineering: The application of a systematic, disciplined,
quantifiable approach to the development, operation, and maintenance of
software; that is, the application of engineering to software.
Software engineers should adopt a systematic and organised approach to
their work and use appropriate tools and techniques depending on the
problem to be solved, the development constraints and the resources available.
Software Engineering Concepts -Spring-2022 Mr. Tehseen Riaz Abbasi
Computer Science Vs. Software Engineering
A Layered Technology
tools
methods
process model
a “quality” focus
• A quality focus
• Any engineering approach must rest on organizational commitment to
quality which fosters a continuous process improvement culture.
• Process layer
• The foundation for software engineering is the process layer
• Defines a framework that must be established for effective delivery of
software engineering technology
• Establish a context where
• Products (model, data, report, and forms) are produced
• Milestones are established
• Quality is ensured
• Change is managed
Software Engineering Concepts -Spring-2022 Mr. Tehseen Riaz Abbasi
A Software Engineering Framework
• Methods
• Provide the technical how-to for building software
• Methods encompass a broad array of tasks
• Communication , requirements analysis, design modeling,
program construction, testing, and support
• Tools
• Provide automated or semi-automated support for the process
and the methods
• Integrated tools to support software development
• Called computer aided software engineering
• Software Validation - checking that the software is what the customer wants
• where the software is checked to ensure that it is what the customer
requires.
Feasibility and
Planning Requirements
Design
Implementation
Operation and
Maintenance
Software Engineering Concepts -Spring-2022 Mr. Tehseen Riaz Abbasi
What is a Software Process Model?
• Software Process Model: “A simplified representation of a software process,
presented from a specific perspective”.
It erative development
0 25 50 75 1 00
0 25 50 75 1 00
0 25 50 75 100
• When building these systems, you think about how you can assemble them from pre-
existing software components and systems.
What differences has the web made to software The web has led to the availability of software services and the
engineering? possibility of developing highly distributed service-based systems.
Web-based systems development has led to important advances in
programming languages and software reuse.
Maintainability Software should be written in such a way so that it can evolve to meet the changing
needs of customers. This is a critical attribute because software change is an
inevitable requirement of a changing business environment.
Dependability and security Software dependability includes a range of characteristics including reliability,
security and safety. Dependable software should not cause physical or economic
damage in the event of system failure. Malicious users should not be able to access
or damage the system.
Efficiency Software should not make wasteful use of system resources such as memory and
processor cycles. Efficiency therefore includes responsiveness, processing time,
memory utilisation, etc.
Acceptability Software must be acceptable to the type of users for which it is designed. This means
that it must be understandable, usable and compatible with other systems that they
use.