You are on page 1of 30

CSE291- Introduction to Software

Engineering
(SPRING 2022)

Lecture 1

Introduction
2/16/2022 2

Objectives
• Basic concepts of Software Engineering
• Role of software in our lives
• Attributes of good Software
• Categories of Computer Software
• Understand some ethical and professional issues that are
important for software engineers.
2/16/2022

What is software?

- Usually referred to as the “code”.


2/16/2022

Software –IEEE definition

Software is:

Computer programs, Procedure, and possibly associated


documentation and data pertaining to the operation of a
computer system.
2/16/2022

Software Components
According to IEEE definition of software

• Computer Programs(the “code”)


• desired features
• functions and
• performance.
• They activate the computer to perform the required applications.
• Procedures
• Are required to define
• The Order and schedule in which the programs are performed
• The method employed
2/16/2022

Software Components
• The data
• on which the program operates
• Standard Test Data
• Documents
• The development documentation (the requirements report, design
reports, program descriptions, etc.)
• The user’s documentation (the “user’s manual”, etc.)
• The maintenance documentation(the “programmer’s software
manual”, etc.)
2/16/2022 7

Role of Software
A person might be involved with software more than 100 times,
often without even realizing that.

We might use a computer

• To check email or weather prediction

• Kitchen appliances

• Traffic signals are now computer controlled

• Mostly we use credit cards in a computerized gasoline pumps.


2/16/2022 8

Role of Software
• Our bank system is highly computerized

• Use of telephones, fax, e-mail or internet, all of these requires

Software

• Hotel arrangements will be handled by computers and software

• Airplane & Air traffic control is highly computerized

• Medical Instruments and diagnostic procedures are now


computerized
2/16/2022 9

Essential Attributes of Good Software


• The Software Should deliver the required functionality and
performance to the user.

• Maintainability
Software should be written in such a way that it may evolve to
meet the changing needs of customers. This is a critical attribute
because software change is an inevitable consequence of a
changing business environment.

• Dependability
• Software dependability has a range of characteristics, including
reliability, security and safety. Dependable software should not
cause physical or economic damage in the event of system
failure.
2/16/2022 10

Attributes of Good Software

Efficiency
Software should not make wasteful use of system resources
such as memory and processor cycles. Efficiency therefore
includes responsiveness, processing time, memory utilization,
etc.

Usability
Software must be usable, without undue effort, by the type of user
for whom it is designed. This means that it should have an
appropriate user interface and adequate documentation.
2/16/2022 11

Categories of Computer Software

• System Software
• Application Software
• Engineering/Scientific Software
• Embedded Software
• Web Applications
• Computer Programming tools
• Artificial Intelligence Software
2/16/2022 12

Categories of Computer Software


System Software
• Collection of programs written to service other programs(e.g.
operating system, drivers..)

Application Software
• Stand-alone programs that solve a specific business need. (e.g.
Word Processor, graphic Software's…..)

Engineering/Scientific Software
• Systems for modelling and simulations.

Embedded Software
• Resides within a product or system(e.g., Keypad control for a
microwave oven)
2/16/2022 13

Categories of Computer Software


Web Applications
• Called “Web Apps”, set of linked hypertext files that present
information using text and graphics.

Computer Programming/ software development tool


• A programming tool or software development tool is a computer
program that software developers use to create, debug and
maintain.

• Artificial Intelligence Software


• This area include robotics, pattern recognition(image and voice)
and game playing.
2/16/2022 CSC291 - Software Engineering Concepts 14

Software Products
Generic products
• Stand-alone systems that are marketed and sold to any
customer who wishes to buy them.
• Examples – PC software such as editing, graphics
programs, project management tools, databases and
drawing packages.

Customized products
• Software that is commissioned by a specific customer to
meet their own needs.
• Examples–systems written to support a particular business
process and air traffic control software.
2/16/2022 CSC291 - Software Engineering Concepts 15

Software Products
• The distinction in generic and customized software
products is becoming blurred.
• More and more systems are being built with a generic
product as a base, which is then adapted to suit the
requirements of a customer.

• Example: Enterprise Resource Planning (ERP) systems


such as SAP (System Application and Products).
2/16/2022 CSC291 - Software Engineering Concepts 16

Software Crises

• In the early 60s, software suffered from a problem, which we


call the Software Crisis

• The techniques that were used to develop small software were


not applicable for large software systems.

• In most of the cases the software that was built using the old
tools and techniques was not complete.
2/16/2022 CSC291 - Software Engineering Concepts 17

Software Crises
• Most of the time it was delivered too late.
• Most of the projects were over-budgeted.
• And, in most of the cases, systems built using these techniques
were not reliable.
• A conference was held in 1960 in which the term
“software crisis” was introduced
Conclusion:
• Software engineering is the result of the software crisis when
people realized that it was not possible to construct complex
software using the techniques applicable in 1960s.
• An important result of this was that people realized that just
coding was not enough; we also need to apply engineering
principles.
2/16/2022 CSC291 - Software Engineering Concepts 18

What is Engineering?

• The process of productive use of scientific knowledge is


called Engineering.

• The process of utilizing knowledge and principles to


design, build, and analyze objects.
2/16/2022 CSC291 - Software Engineering Concepts 19

Software Engineering

The science concerned with putting computer science


knowledge to practical use.
2/16/2022 CSC291 - Software Engineering Concepts 20

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.
2/16/2022 CSC291 - Software Engineering Concepts 21

Software Engineering - Sommerville

‘All aspects of software production’ Software


engineering is not just concerned with the technical
processes of software development but also with
activities such as software project management and
with the development of tools, methods and theories
to support software production.
2/16/2022 CSC291 - Software Engineering Concepts 22

Computer Science vs. Software Engineering

Computer science focuses on theory and fundamentals;


software engineering is concerned with the practicalities of
developing and delivering useful software.

System engineering vs. Software Engineering


System engineering is concerned with all aspects of
computer-based systems development including hardware,
software and process engineering. Software engineering is
part of this.
2/16/2022 CSC291 - Software Engineering Concepts 23

Software Costs

• Software costs often dominate computer system costs. The


costs of software on a PC are often greater than the hardware
cost.

• Software costs more to maintain than it does to develop. For


systems with a long life, maintenance costs may be several
times development costs.

• Software engineering is concerned with cost-effective software


development.
2/16/2022 CSC291 - Software Engineering Concepts 24

What are the costs of software engineering?

• Roughly 60% of costs are development costs, 40% are testing


costs. For custom software, evolution costs often exceed
development costs.

• Costs vary depending on the type of system being developed


and the requirements of system attributes such as performance
and system reliability.

• Distribution of costs depends on the development model that is


used.
2/16/2022 CSE291 - Introduction to Software Engineering 25

Software Engineering Ethics


“Software engineers are those who contribute by direct
participation or by teaching, to the analysis, specification,
design, development, certification, maintenance, and
testing of software systems.”
❖ Confidentiality
should normally respect the confidentiality of your employers or
clients irrespective of whether a formal confidentiality
agreement has been signed.
❖ Competence
You should not misrepresent your level of competence. You
should not knowingly accept work that is outside your
competence.
2/16/2022 CSE291 - Introduction to Software Engineering 26

Software Engineering Ethics


❖ Intellectual property rights

You should be aware of local laws governing the use of intellectual


property such as patents and copyright. You should be careful to
ensure that the intellectual property of employers and clients is
protected.

❖ Computer misuse

You should not use your technical skills to misuse other people’s
computers. Computer misuse ranges from relatively trivial (game
playing on an employer’s machine, say) to extremely serious
(dissemination of viruses).
2/16/2022 27

ACM/IEEE - CS Code of Ethics


1. PUBLIC - Software engineers shall act consistently with
the public interest.

2. CLIENT AND EMPLOYER - Software engineers shall


act in a manner that is in the best interests of their client
and employer, consistent with the public interest.

3. PRODUCT - Software engineers shall ensure that their


products and related modifications meet the highest
professional standards possible.

4. JUDGMENT - Software engineers shall maintain


integrity and independence in their professional judgment.
2/16/2022 28

ACM/IEEE - CS Code of Ethics


5. MANAGEMENT - Software engineering managers and
leaders shall subscribe to and promote an ethical approach to
the management of software development and maintenance.

6. PROFESSION - Software engineers shall advance the


integrity and reputation of the profession consistent with the
public interest.

7. COLLEAGUES - Software engineers shall be fair to and


supportive of their colleagues.

8. SELF - Software engineers shall participate in lifelong learning


regarding the practice of their profession and shall promote an
ethical approach to the practice of the profession.
2/16/2022

FAQ about Software Engineering


Question Answer

What is software? Computer programs, data structures and associated


documentation. Software products may be developed for a
particular customer or may be developed for a general market.

What are the attributes of good software? Good software should deliver the required functionality and
performance to the user and should be maintainable,
dependable and usable.

What is software engineering? Software engineering is an engineering discipline that is


concerned with all aspects of software production.

What is the difference between software Computer science focuses on theory and fundamentals;
engineering and computer science? software engineering is concerned with the practicalities of
developing and delivering useful software.

What is the difference between software System engineering is concerned with all aspects of
engineering and system engineering? computer-based systems development including hardware,
software and process engineering. Software engineering is
part of this more general process.
29
2/16/2022 30

Chapter Reading
• Chapter 1: INTRODUCTION
Software Engineering by Ian Sommerville

You might also like