0% found this document useful (0 votes)
14 views24 pages

Software Engineering Fundamentals Overview

Chapter 1 of Ian Sommerville's Software Engineering introduces the fundamentals of software, defining it as a combination of programs, procedures, and documentation. It distinguishes between software engineering and computer science, emphasizing the importance of communication and layered technology in software development. The chapter also outlines key software engineering principles and practices aimed at delivering value to users and ensuring maintainability and usability.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views24 pages

Software Engineering Fundamentals Overview

Chapter 1 of Ian Sommerville's Software Engineering introduces the fundamentals of software, defining it as a combination of programs, procedures, and documentation. It distinguishes between software engineering and computer science, emphasizing the importance of communication and layered technology in software development. The chapter also outlines key software engineering principles and practices aimed at delivering value to users and ensuring maintainability and usability.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Chapter 1

Fundamentals of
Session 1
Software Engineering

Ian Sommerville (10th edition)


Welcome to the World of Software
Welcom
U nleas
h You Engineering!
S tart Yo
ur
e to the r Digital
B ig , Creativ Jo
Future! Dr e a m ity urney
t S m a ll !
S t a r

You Be
long H t o o v a t e a n d
e re l c o m e In n
We t y Transform
s s i b i l i
Po
Brainstorming

1. What problem in the world do you want to solve?


2. If you could create any app or software today, what would it be?
Introduction: Nature of Software
Characteristics of Software
Contents

Software Categories
Software + Engineering
Software Eng. Vs. Computer Science
Software Engineering Practices
Software Engineering Principles
Introduction
Software consists of computer programs,
procedures, rules, relevant documentation
Computer programs and associated documentation and data pertaining to the operation of the
software.
IEEE defines software as the collection of
computer programs, procedures, rules and
associated documentation and data.
Software is a combination effect of:
1. Instructions (computer programs) that when executed provide desired features, function, and performance;
2. Data structures that enable the programs to adequately manipulate information, and
3. Document that describes the operation and use of the programs.
Cont. . . .

Software products may be developed for a particular customer or may be developed for a general
market. So, software products may be:
§ Generic - developed to be sold to a range of different customers

§ Bespoke (custom) - developed for a single customer according to their specification


Characteristics of Software

Software is developed or engineered, it is not manufactured in the classical sense

Software does not wear out. However, it deteriorates due to change

Software is custom built rather than assembling existing components


§ Although the industry is moving towards component-based construction, most software continues
to be custom built
Cont.…

Hardware vs.

Software Failures
Cont.…

The software should deliver the required functionality and performance to the user
and should be maintainable, dependable and usable.

 Maintainability: Software must evolve to meet changing needs


Attributes of Good
 Dependability: Software must be trustworthy
Software  Efficiency: Software should not make wasteful use of system resources
 Usability: Software must be usable by the users for which it was designed
Software Categories

Two Main Categories


System software: is a collection of programs written to service other programs
System software: such as compilers, OS, editors, file management utilities.

Application software: stand-alone programs for specific needs. This software are
used to control business needs. Ex: Transaction processing.

Further Categorized as:


Artificial intelligence software: Application within this area include robotics,
pattern recognition. E.g., Google Assistant

Gaming Software
Cont..

Engineering and scientific software. E.g., MATLAB, AutoCAD

Embedded software: e.g., Arduino, Washing Machine Control Software

Product-line software (e.g., word processing, graphics, database management)

WebApps (Web applications): Microsoft Office Suite, Adobe Creative Cloud


Software + Engineering

Engineering: The science concerned with putting scientific


Engineering
knowledge to practical use: [Webster’s Dictionary]
Software

Software Engineering: an engineering discipline which is concerned


with all aspects of software production
OR
The IEEE definition: 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 Eng. Vs. Computer Science

What is the difference between software engineering and computer science?

Computer Science Software Engineering


is concerned with
Ø theory Ø the practicalities of
Ø fundamentals developing
Ø delivering useful software

Computer science theories are currently insufficient to act as a complete underpinning for
software engineering, But, it is a foundation for practical aspects of software engineering
Software engineering Vs. System engineering?

|| Software engineering is part of System engineering ||

][
System engineering is concerned with all aspects
of computer-based systems development including
§ Hardware,
§ Software and
§ Process engineering System engineers are involved in
§ System specification,

§ Architectural design,
§ Integration and deployment
Brainstorming – 10 minutes

Do you think communication has a vital role in software engineering?

Who are the key individuals or groups involved?


SE is a labor-intensive activity where high
degree of communication is required among

§Customers
§Managers
§Software Engineers
§Hardware Engineers
§Other related technologists
Software Engineering – Layered Technology

Software engineering is a fully layered technology.

To develop a software, we need to go from one layer to another.

All these layers are related to each other and each layer demands the fulfillment of the previous layer.
Cont.

Quality Focus
Correctness (functions required to be performed by the software)

Integrity (unauthorized user cannot access information or data)

Usability (the efforts required to use or operate the software)


Process
All activities, actions and tasks required to be carried out for software development.
Methods
The technical way to implement the software (collection of tasks starting from communication,
requirement analysis, analysis and design modelling, program construction, testing and support)
Tools
An automated support for the software development
Software Engineering
Practices

The Essence of Practice


1. Understand the problem
2. Plan a solution
3. Carry out the plan
4. Examine the result for accuracy
Software Engineering Principles

Principle 1: The Reason It All Exists


A software system exists for one reason: to provide value to its users. All decisions should be
made with this in mind. Before specifying a system requirement, before noting a piece of system
functionality, before determining the hardware platforms or development processes, ask yourself
questions such as: “Does this add real value to the user?” If the answer is “no,” don’t do it. All
other principles support this one.
Principle 2: KISS (Keep It Simple, Stupid!)
All design should be as simple as possible, but no simpler. This is not to say that features, even
internal features, should be discarded in the name of simplicity.
Principle 3: Maintain the Vision
A clear vision is essential to the success of a software Project.
Cont.

Principle 4: What You Produce, Others Will Consume


Always specify, design, and implement knowing someone else will have to understand what you
are doing.
Principle 5: Be Open to the Future
A system with a long lifetime has more value. These systems must be ready to adapt to these and
other changes.
Principle 6: Plan Ahead for Reuse
Reuse saves time and effort. The reuse of code and designs has been major benefit of using
object-oriented methodologies.
Principle 7: Think!
Placing clear, complete thought before action almost always produces better results. When you
think about something, you are more likely to do it right. You also gain knowledge about how to
do it right again. If you do think about something and still do it wrong, it becomes a valuable
experience
Tips

You do have a laptop, or dedicated lab desktop computer.


From now on, your laptop/desktop is your mother ��
Have a LeetCode account
For You!

Have a GitHub account


Have an Email account
Have a Coursera/Udemy account
Have a LinkedIn Account: build your portfolio there. But Always
Have a telegram group Free
Currently, you do have a basic foundation in
-- Programming (C++ (I & II))
-- Database systems
-- Data structures and algorithms
-- Requirements analysis
Be business oriented
Be artistic, critical thinker and challenge lover
Session Ends!

Be a master of
--
of your time

You might also like