01 - Introduction

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

SE 262

Lecture 1

Introduction
to
Software Engineering

Fall 2024
1
Are you looking for this key?

Source: adapted from Ian Sommerville's lecture notes: SE9 6 2


Paying attention Hard work

Source: adapted from Ian Sommerville's lecture notes: SE9 3


How to do well in this course?
⮚ BEFORE EVERY LECTURE
⮚ Read the relevant portion of the textbook
⮚ https://engineering.futureuniversity.com/BOOKS%20FOR%20IT/Software-Engineering-9th-Edition-by-Ian-Sommerville.pdf

⮚ DURING EVERY LECTURE


⮚ Take notes!
⮚ Ask questions if anything is not clear

⮚ AFTER EVERY LECTURE


⮚ Review the lecture slides.
⮚ IF anything is not clear THEN
⮚ (discuss it with your fellow students) AND
⮚ (ask me about it at the beginning of the next lecture)
Source: adapted from Ian Sommerville's lecture notes: SE9 4
Introduction

Source: adapted from Ian Sommerville's lecture notes: SE9 5


The world we live in..
More and more of our systems are rely on software product.
Software is a computer program with the associated documentation
Example of software:

Embedded Software Mobile Apps PC / Server Software


Software Products
❑ Generic software products
❑ Software that is created for any customer who wishes to buy them.
Examples: Google Chrome, Adobe Photoshop, Microsoft Office (Word, Excel, PowerPoint), and etc.

❑ The specification of what the software should do is owned by the software developer and they make
decisions on software changes that are required.

❑ Customized software products


Home - upm

❑ Software that is tailored for a specific customer to meet their own needs.
Examples: Embedded software for Tesla full self-driving, website of University of Prince Mugrin, and etc.

❑ The specification of what the software should do is owned by the customer and they make decisions
on software changes that are required.

Source: adapted from Ian Sommerville's lecture notes: SE9 7


Software

Software Costs Hardware

❑ Software costs often higher than computer hardware costs.

❑ 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 Maintenance

Software Development

Hardware

8
Source: adapted from Ian Sommerville's lecture notes: SE9
Importance of Software Engineering

❑ Many software projects FAILED.

❑ Failure are because of TWO main factors

1- Increasing demand: Complex system, but to be

delivered fast.

2 - Many companies DO NOT use Software Engineering

methods in their software projects. 9


Importance of Software Engineering

Why software engineering (youtube.com)

Source: adapted from Ian Sommerville's lecture notes: SE9 10


Importance of Software Engineering
❑ More and more, individuals and society rely on complex software. We
need to produce reliable and trustworthy systems economically and
fast.
❑ It is usually cheaper, in the long run, to use software engineering
techniques to create software.
❑ For most types of system, the majority of costs are the costs of
changing the software requirements after it has gone into use.

Software Maintenance

Software Development

Hardware 11
Source: adapted from Ian Sommerville's lecture notes: SE9 11
https://www.selasoftware.com/14-reasons-software-projectszfail/

Solution?

We need a systematic approach – that is, Software engineering 12


What is Software
Engineering?

Source: adapted from Ian Sommerville's lecture notes: SE9 13


Software Engineering
is an engineering discipline that is…..

❑ Concerned with theories, methods and tools for professional and cost-
effective software development.

❑ Concerned with all aspects of software production from the early stages of
software specification through to maintaining the software after users start
using it. i.e. Not just technical process of development. Also project
management and the development of tools, methods etc. to support software
production.

Source: adapted from Ian Sommerville's lecture notes: SE9 14


What is

Software Engineering?
A systematic approach concerned with all aspects of software production.

S/W specification S/W development

S/W validation S/W evolution

Fundamental of Software Engineering Activities

15
Software Process Activities
S/W specification, where customers and engineers define the
software that is to be produced and the constraints on its operation.

S/W development, where the software is designed and programmed.

S/W validation, where the software is checked to ensure that it is what


the customer requires.

S/W evolution, where the software is modified to reflect changing


customer and market requirements.

Source: adapted from Ian Sommerville's lecture notes: SE9 16


What is the purpose of

Software Engineering?
To create good software to solve problems or make tasks easier.

Tell me a software that you think it is good.


Why?
17
Essential Attributes of Good Software
Product characteristic Description

Functionality Good software should deliver the required functionality to solve problems or
make tasks easier.
Performance Software should not make wasteful use of system resources such as
memory and processor cycles. Performance includes responsiveness,
processing time, memory utilisation, etc.
Maintainability Software is evolve to meet the changing needs of customers or business
environment.

Dependability 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.
Acceptability Software must be acceptable to the users. This means that it must be
understandable, usable and compatible with other systems that they use.

Source: adapted from Ian Sommerville's lecture notes: SE9 18


Class Activity: Let’s try to answer these questions together.

Question Answer
What is software? Software is a computer program with the associated documentation.
Software products may be developed for a particular customer or may be
developed for a general market.

What is software engineering?


A systematic approach concerned with all aspects of
software production.

What are the fundamental software engineering 1. Software specification


activities? 2. Software development
3. Software validation
4. Software evolution.

What are the attributes of good Good software should deliver the required functionality, performance,
software? maintainability, dependability and acceptability.

Source: adapted from Ian Sommerville's lecture notes: SE9 19


Take home assignment.

What is the difference between software engineering and system engineering?


(To be discussed in the next lecture session)

20
Software Engineering Vs Computer Science
Computer science focuses on theory and fundamentals.

Computer Science Customer/Organisation

Algorithms and Data


Theory of Computation Programming Languages
Structure Problems

Software engineering is concerned with the


Software Engineering practicalities of developing and delivering various
software types that can support customer/business
needs.
Software Types
❑ Stand-alone applications.
Run on a local computer and include all necessary
functionality. They do not need to be connected to a network.
(e. g. calculator in laptop, notepad application).

❑ Interactive transaction/web-based applications


Execute on a remote computer and are accessed by users
from their own PCs or terminals (e. g. Gmail, Coursera).

Source: adapted from Ian Sommerville's lecture notes: SE9 22


Software Types
❑ Embedded control systems
S/W systems that control and manage hardware devices.

❑ Data collection systems


Systems that collect data from their environment using a
set of sensors and send that data to other systems for processing.

https://www.researchgate.net/figure/Body-sensor-
Source: adapted from Ian Sommerville's lecture notes: SE9 data-collection-and-query-service- 23
scenario_fig1_292673365
Software Types – Cont.
❑ Batch processing systems
These are business systems that are designed to process
data in large batches. They process large numbers of individual inputs to
create corresponding outputs.

❑ Entertainment systems
Primarily for personal use and are intended to entertain the user.

❑ Systems for modeling and simulation


Developed by scientists and engineers to model physical
processes or situations, which include many, separate, interacting objects.

❑ Systems of systems
These are systems that are composed of a number of other software
systems.
Source: adapted from Ian Sommerville's lecture notes: SE9 24
Software Engineering Diversity
There are many different types of software systems and there is no universal set of
software engineering method that is applicable to all of these. The software
engineering methods and tools used depend on:
1) the type of software being developed
For example, real-time software in an aircraft has to be completely specified before development begins. In e-
commerce systems, the specification and the program are usually developed together.

1) the requirements of the customer, and


For example, when customer requires a complex financial software with various legal rules, the project needs a
completely specified rules before development begins

1) the background of the development team.


For example, the development team has a lot of experience and with similar software project, the requirements does not
need to be fully specified before development begins

However, some fundamental principles apply to all types of software systems,


Source: adapted from Ian Sommerville's lecture notes: SE9 25
irrespective of the development techniques used. See next slide!
S/W Engineering Fundamentals
Some fundamental principles apply to all types of software systems, irrespective of the
development techniques used:

1. Systems should be developed using a managed and understood development process.


Of course, different processes are used for different types of software.

1. Dependability and performance are important for all types of systems.

Source: adapted from Ian Sommerville's lecture notes: SE9 26


S/W Engineering Fundamentals
3. Understanding and managing the software requirements specification (SRS) are important.
SRS consist of what the software should do)

Sample of SRS content

4. Where appropriate, you should reuse software that has already been developed rather than
write new software.

Source: adapted from Ian Sommerville's lecture notes: SE9 27


Software Engineering & The Web
❑ The Web is now a platform for running applications, and organizations are
increasingly developing web-based systems rather than local systems.

❑ Web services* allow application functionality to be accessed over the


web.

❑ Cloud computing is an approach to the provision of computer services where


applications run remotely on the ‘cloud’. Users do not buy software, but
rather pay according to their use.

* For more information about Web Services see Chapter 19 in the textbook

Source: adapted from Ian Sommerville's lecture notes: SE9 28


Web-Based S/W Engineering
❑ Software reuse is the dominant approach for constructing web-based
systems.
When building these systems, you think about how you can assemble them from pre-existing
software components and systems.

❑ Web-based systems should be developed and delivered incrementally.


Web-based systems are usually, complex distributed systems and it is now generally
recognized that it is impractical to specify all the requirements for such systems in advance.

❑ User interfaces are constrained


29 by the capabilities of web browsers.
Technologies such as AJAX (Asynchronous JavaScript and XML) allow rich interfaces to be
created within a web browser but are still difficult to use. Web forms with local scripting are
more commonly used.

Source: adapted from Ian Sommerville's lecture notes: SE9


General Issues Affecting Most Software
❑Diversity
Increasingly, systems are required to operate as distributed systems across
networks that include different types of computer and mobile devices.

❑Business and social change


Business and society are changing incredibly quickly as emerging economies
develop and new technologies become available. They need to be able to
change their existing software and to rapidly develop new software.

❑Security and trust


As software is intertwined with all aspects of our lives, it is essential that we can
trust that software. Source: adapted from Ian Sommerville's lecture notes: SE9 30
Software engineering ethics

❑ Software engineers must behave in an honest and ethically


responsible way if they are to be respected as professionals.

❑ Ethical behaviour is more than simply upholding the law but


involves following a set of principles that are morally correct.

Source: adapted from Ian Sommerville's lecture notes: SE9 31


Issues of professional responsibility
Intellectual property rights
Confidentiality
Software engineers should be aware of local laws
Software engineers should normally respect the governing the use of intellectual property such as
confidentiality of their employers or clients patents, copyright, etc. They should be careful to
irrespective of whether or not a formal ensure that the intellectual property of employers
confidentiality agreement has been signed. and clients is protected.

Competence
Computer misuse
Software engineers should not misrepresent their level
of competence. They should not knowingly accept Software engineers should not use their technical
skills to misuse other people’s computers. Computer
work which is out with their competence. misuse ranges from relatively trivial (game playing on
an employer’s machine, say) to extremely serious
(dissemination of viruses).
So far….
We continued with the introduction to software engineering and professional software
development. Particularly:
▪ Attributes of good software

▪ Software engineering fundamentals

▪ Software process activities

▪ Software engineering diversity and software types


▪ Software engineering and the Web
▪ General issues that affect most software
▪ Software engineering ethics
Source: adapted from Ian Sommerville's lecture notes: SE9 33
Key Points…
❑The Software engineering is an engineering discipline that is
concerned with all aspects of software production.

❑Essential software product attributes are functionality, performance,


maintainability, dependability and acceptability.

❑The fundamental principles and ideas of software engineering


are universally applicable to all types of software development.

❑There are many different types of software, and each requires


appropriate software engineering tools and techniques for their
development.
Source: adapted from Ian Sommerville's lecture notes: SE9 34
Next lecture...

We will have a look at the


“Software Processes”.

Source: adapted from Ian Sommerville's lecture notes: SE9 35

You might also like