0% found this document useful (0 votes)
12 views42 pages

Week 1,2&3

The document provides an introduction to software engineering, highlighting its significance in modern economies and the importance of ethical practices. It outlines key concepts such as the software development lifecycle, the differences between software engineering and computer science, and the attributes of good software. Additionally, it addresses the professional responsibilities of software engineers, emphasizing the need for honesty, skill, and public safety.

Uploaded by

nargisniazzz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views42 pages

Week 1,2&3

The document provides an introduction to software engineering, highlighting its significance in modern economies and the importance of ethical practices. It outlines key concepts such as the software development lifecycle, the differences between software engineering and computer science, and the attributes of good software. Additionally, it addresses the professional responsibilities of software engineers, emphasizing the need for honesty, skill, and public safety.

Uploaded by

nargisniazzz
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 42

An Introduction to Software

Engineering
(CS ----)

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 1


Instructor

Hashim Ali

Assistant Professor CS

Email: hashimali@awkum.edu.pk

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 2


Introduction

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 3


Objectives

To introduce software engineering and to explain
its importance

To set out the answers to key questions about
software engineering

To introduce ethical and professional issues and
to explain why they are of concern to software
engineers

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 4


Topics covered


FAQs about software engineering

Professional and ethical responsibility

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 5


Software engineering

The economies of ALL developed nations are
dependent on software.

More and more systems are software controlled

Software engineering is concerned with theories,
methods and tools for professional software
development.

Expenditure on software represents a
significant fraction of GNP in all developed
countries.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 6


Example: Vehicles(self-driving cars)

Vehicles (self-driving cars) are a prime example of a
system that relies heavily on software. These
vehicles are controlled by complex software systems
that must make real-time decisions to navigate
roads, obey traffic laws, and ensure the safety of
passengers and pedestrians.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 7


Dependence on Software:

Software's Role: The economies of all developed
nations rely on software to drive innovation and
maintain competitiveness. For instance, self driving
vehicles are expected to revolutionize the
transportation industry, significantly contributing to
the economy by creating new jobs, reducing
accidents, and enhancing logistics efficiency.

The software for these vehicles must be reliable,
secure, and efficient, highlighting its importance to
the overall economy.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 8


Software-Controlled Systems

These vehicles are entirely software-controlled, with
systems that manage everything from acceleration and
braking to navigating complex traffic scenarios. The
software must integrate inputs from various sensors
(cameras, radar, lidar) and make split-second decisions
to operate safely and efficiently.

More and more systems, such as medical devices,
financial systems, and even household appliances, are
becoming software-controlled, underscoring the growing
dependence on software in all aspects of modern life.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 9


Theories, Methods, and Tools

Theories: Understanding how to model complex
systems and predict their behavior.

Methods: Agile development, continuous integration,
and testing methodologies that ensure the software
meets safety and performance standards

Tools: Software development environments, testing
frameworks, and version control systems that help
manage the complexity of the codebase and ensure
quality.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 10


Expenditure on Software

Economic Significance : A lot of money is spent on
developing software, especially for things like self-driving
cars. This shows that software development costs make up
a big part of the economy in developed countries. For
example, in the U.S., the software industry is very
important, with companies spending billions on creating
and improving software.

Global Trend : This isn't just happening in one industry.
Other fields like healthcare, finance, and manufacturing
also spend a lot on software. This highlights how important
software engineering is in today's global economy

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 11


Phases of Software Engineering
The software development lifecycle (SDLC) consists of
several phases:
Planning:
Define Project Scope ,Objective , Resources and Deadlines
Requirements Analysis:
Gathering and analyzing the needs and requirements of the
end-users and stakeholders.
System Design:
Creating a blueprint for the software system that defines its
architecture, components, interfaces, and data.
Implementation (Coding):
Writing the actual code based on the design specifications.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 12
Phases of Software Engineering
Testing:
Verifying that the software works as intended through various
levels of testing (unit, integration, system, acceptance).
Deployment:
Releasing the software to the users or the market.
Maintenance:
Updating and improving the software to fix bugs, add
features, and adapt to changing environments.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 13


FAQs about software engineering

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

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 14


FAQs about software engineering

What are the costs of software engineering?

What are the attributes of good software?

What are the key challenges facing software
engineering?

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 15


What is software?

Computer programs and associated documentation such
as requirements, design models and user manuals.

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

Software products may be
• Generic - developed to be sold to a range of different
customers e.g. PC software such as Excel, Word & Zoom.
• Custom - developed for a single customer according to their
specification examples : Airline Reservation System ,
Custom E-commerce Platform for a Specific Business.

New software can be created by developing new
programs, configuring generic software systems or
reusing existing software.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 16


What is software engineering?

Software engineering is an engineering discipline
that is concerned with all aspects of software
production.

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.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 17


What is the difference between software
engineering and computer science?


CS focuses on understanding how computers
work and the basic theories behind computing.
It’s about learning concepts like algorithms, data
structures, and programming languages.

Software Engineering is more about using those
theories and principles to create practical,
working software. It involves designing, building,
and maintaining software that people or
businesses can use.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 18


What is the difference between software
engineering and system engineering?


System Engineering deals with everything
involved in building a computer-based system.
This includes the hardware (the physical parts),
software (the programs), and the processes
needed to make it all work .

Software Engineering is a part of system
engineering that focuses specifically on
developing the software—the programs,
databases, and control systems that run on the
computer.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 19


What is the difference between software
engineering and system engineering?

System Engineers work on things like:



Deciding what the system should do (specification)

Designing how all the parts fit together
(architectural design)

Making sure everything works together (integration)

Setting it up so that people can use it (deployment).

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 20


What is the difference between software
engineering and system engineering?

Specification: The system engineers decide what the app


should do. For example, the app must allow users to book
rides, track drivers, process payments, and provide ratings
for drivers.
Architectural Design: They design how the app’s different
parts will fit together. This includes the user interface (what
customers see), the driver’s app, the payment gateway, and
the database that stores user and ride information. They also
plan how the servers will handle requests from many users
at the same time.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 21


What is the difference between software
engineering and system engineering?

Integration: System engineers ensure that all these parts—


user app, driver app, payment system, and database—work
together seamlessly. For example, when a user requests a
ride, the app should match them with a nearby driver and
process the payment correctly.
Deployment: Finally, the system engineers set up everything
so that users and drivers can start using the app. This
involves deploying the app on app stores, ensuring the
servers are ready to handle traffic, and troubleshooting any
issues.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 22


What is a software process model?

A software process model is like a simple guide that
shows how to create software, focusing on different
aspects of the development process.

Examples of process perspectives are
• Workflow perspective Looks at the order in which tasks are performed,
like following steps in a checklist.
• Data-flow perspective - Focuses on how information moves from one part
of the system to another.
• Role/action perspective - Shows who is responsible for each task, like
assigning roles in a team project.

Generic process models
• Waterfall
• Iterative development;
• Agile
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 23
What are the costs of software engineering?

The costs of software engineering include the expenses


involved in the development, testing, deployment, and
maintenance of software. The key cost areas are:

Development cost: Time and resources spent on designing,
coding, and implementing the software.

Testing cost: Ensuring the software is bug-free and meets
quality standards.

Maintenance cost: Fixing bugs, updating software, and
adding new features after deployment.

Operational cost: Running the software, which includes
hosting, support, and hardware costs.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 24


What are software engineering methods?
In structured approaches to software development, methods and
techniques are organized into several categories to ensure systematic,
efficient, and high-quality software creation. These include system
models, rules, recommendations, and process guidance.Model
descriptions

Create class diagrams their attributes, methods, and relationships.

Use sequence diagrams to show how objects interact in different
processes.
Rules

Constraints applied to system models Like Encapsulation:
Recommendations

Advice on good design practice, se inheritance to avoid code duplication . Use
Design Patterns
Process guidance

What activities to follow. Start by identifying the key objects in the system. Define the
relationships between these objects . Develop interaction diagrams to detail how objects
communicate during system execution.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 25
What are the attributes of good software?

The software should deliver the required functionality and


performance to the user and should be maintainable,
dependable and acceptable.
Maintainability
Software must evolve to meet changing needs; Example: A game where
developers can add new levels without breaking the game
Dependability
The software is trustworthy and works well all the time. It doesn’t crash, and
it keeps your data safe.
\Example: An email app that always sends and receives messages without
problems.
Efficiency: The software is fast and doesn’t use too much battery or slow
down your device.
Example: A game that runs smoothly without making your phone lag or
overheat.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 26
What are the attributes of good software?

Usability: The software should be easy to use and understand.


Example: A shopping app where you can easily find and buy products in
just a few clicks.
Reliability: The software works well without crashing or
having errors.
Example: A video streaming app that runs smoothly even
when lots of people are using it.
Acceptability
Software must accepted by the users for which it was
designed. This means it must be understandable, usable and
compatible with other systems.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 27


What are the key challenges (difficult
problems) facing software engineering?


Heterogeneity, delivery and trust.

Heterogeneity
• Heterogeneity: Making sure software works well on all types of
devices and systems, like phones, computers, and in the cloud.
The challenge is to ensure it runs smoothly everywhere.

Delivery
• Finding ways to make and release software faster so users get
new features or updates quickly.
Trust
• Ensuring people can rely on the software to work correctly and
keep their information safe. The challenge is to make users feel
confident in using it.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 28


Professional and ethical responsibility

In software engineering, being professional and ethical
means doing more than just using technical skills. It’s
about doing the right thing and acting honestly

Honesty: Always tell the truth about what the software
can and cannot do. Don’t hide problems or make false
promises.

Public Safety: Make sure the software you create is safe
and won’t harm users or cause damage. It should also
respect people’s privacy.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 29


Professional and ethical responsibility

Skill: Only work on tasks you know how to do well. Keep
learning and improving your skills to stay good at your
job.

Responsibility: If you make a mistake, admit it and work
to fix it.

Being ethical means doing your best to help people and
not just following the law. This builds trust and respect in
your work.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 30


Issues of professional responsibility

Issues of Professional Responsibility" refer to the key areas
where software engineers must act responsibly and
ethically in their work. These include

Confidentiality
• Engineers should normally respect the confidentiality of
their employers or clients irrespective of whether or not
a formal confidentiality agreement has been signed.

Competence
• Being honest about their skills and not taking on tasks
they are not qualified for

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 31


Issues of professional responsibility
Intellectual property rights

Intellectual Property Rights means the legal protection of someone's
ideas, inventions, or creations. This includes things like

Engineers should be aware of local laws governing the use of
intellectual property such as patents, copyright, etc. They should be
careful to ensure that the intellectual property of employers and clients is
protected.

 Patent
 Copyright
 Trademark

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 32


Issues of professional responsibility
Patent(20 years ,data will be shared publicly,prevent copy):
Example: A company invents a new type of smartphone battery that lasts
twice as long. They file a patent to protect their invention, meaning no
other company can copy or use that battery technology without
permission.
Copyright:Example:
A software developer writes a new code for a mobile app. The code is
automatically protected by copyright, so no one can use, modify, or sell
the app without the developer’s approval.
Trademark:Example: The Nike "swoosh" logo and the phrase "Just Do It"
are trademarks. This means only Nike can use these specific symbols
and words in relation to their products, protecting their brand identity.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 33


Issues of professional responsibility
Computer misuse
Software engineers should not use their 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).

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 34


ACM/IEEE Code of Ethics

The Code of Ethics for software engineers outlines a set
of principles that guide professional conduct, ensuring the
work done is ethical, beneficial, and respected.

The professional societies in the US have cooperated to
produce a code of ethical practice.

Members of these organisations sign up to the code of
practice when they join.

The Code contains eight Principles related to the
behaviour of and decisions made by professional
software engineers, including practitioners, educators,
managers, supervisors and policy makers, as well as
trainees and students of the profession.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 35


Code of ethics - preamble

Preamble(Start of book ,Document)
• In software engineering, the preamble is usually included at the
beginning of a Code of Ethics or Professional Conduct document. It
sets the context for the ethical guidelines that software engineers are
expected to follow.
• For example, if a software engineering organization or association (like
the ACM or IEEE) provides a code of ethics, the preamble would be
the first section, explaining the purpose of the code, the importance of
ethical practices, and the commitment to public welfare, safety, and
professionalism.
In a professional setting, this document might be part of:
• Company policies for software engineers
• Industry standards documents (like the IEEE or ACM Code of
Ethics)
• Engineering handbooks or guidelines for best practices
• These rules help software engineers do their jobs in the right
way.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 36
Code of ethics - principles

PUBLIC
• Software engineers should prioritize the public's welfare, Always do
what’s best for people and society.
• Example: Designing a medical app that ensures patient safety and
protects their data.Software engineers shall act consistently with the
public interest.

CLIENT AND EMPLOYER
• means doing your best for your client or employer while also making
sure that your work is safe and good for everyone.
• Example: If you're developing software and your client wants it done
quickly but there’s a security problem, you should fix the issue
before completing the project. This way, you help your client and
keep the public safe.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 37


Code of ethics - principles

PRODUCT
• Software engineers shall ensure that their products and related
modifications meet the highest professional standards possible.
• Make sure your software is high quality and works well.
• Example: Fixing bugs before launching an app.

JUDGMENT
• Judgment means that software engineers should make decisions
based on what is right and ethical, even if others (like bosses or
clients) try to pressure them into doing something wrong.
• Example: Imagine you're working on a software project with a tight deadline, and your
boss tells you to skip some important security checks to finish faster. Even though
you're being pressured to rush, you should refuse to ignore the security issues because
it could put users at risk. You need to make the honest decision to prioritize safety and
quality, even if it takes more time.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 38


Code of ethics - principles

MANAGEMENT
• Software engineering managers and leaders shall subscribe to
and promote an ethical approach to the management of
software development and maintenance.
• Encourage ethical practices if you're leading a project.
• Example: Telling your team to follow good coding rules and avoid
shortcuts.

PROFESSION
• Keep the software engineering field respected and trustworthy.
• Example: Always acting professionally and sharing knowledge
with others.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 39


Code of ethics - principles

COLLEAGUES
• Software engineers shall be fair to and supportive of
their colleagues.
• Be fair and helpful to your teammates.
• Example: Offering help when a coworker struggles
with a problem

SELF
• Keep learning and improving your skills.
• Example: Taking online courses to learn new
programming languages.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 40


Key points

Software engineering is an engineering discipline that is
concerned with all aspects of software production.

Software products consist of developed programs and
associated documentation. Essential product attributes
are maintainability, dependability, efficiency and usability.

The software process consists of activities that are
involved in developing software products. Basic activities
are software specification, development, validation and
evolution.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 41


Key points


Software engineers have responsibilities to the engineering
profession and society. They should not simply be concerned
with technical issues.

Professional societies publish codes of conduct which set
out the standards of behaviour expected of their members.

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 42

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