0% found this document useful (0 votes)
6 views16 pages

Software Engineering Unit-1 Introduction

The document provides an introduction to software engineering, detailing definitions, types of software, and the characteristics of good software. It discusses the significance of software engineering in developing reliable software products, the challenges faced in the field, and the need for systematic approaches in software development. Additionally, it highlights the differences between software engineering and computer science, as well as the professional and ethical responsibilities of software engineers.

Uploaded by

pudasainisamip21
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)
6 views16 pages

Software Engineering Unit-1 Introduction

The document provides an introduction to software engineering, detailing definitions, types of software, and the characteristics of good software. It discusses the significance of software engineering in developing reliable software products, the challenges faced in the field, and the need for systematic approaches in software development. Additionally, it highlights the differences between software engineering and computer science, as well as the professional and ethical responsibilities of software engineers.

Uploaded by

pudasainisamip21
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

Software Engineering Unit-1: Introduction

NOTES ON:
SOFTWARE ENGINEERING

1 Er. Sanjay Kumar Sah


Email: kumarsanjay.sah2@[Link]

UNIT-1 INTRODUCTION
 1.1 Definition of Software, Types of
Software, Characteristics of Software,
Attributes of Good Software
 1.2 Definition of Software Engineering,
Software Engineering Costs, Key
Challenges that Software Engineering
Facing
 1.3 System Engineering and Software
Engineering, Professional Practice
2

Er. Sanjay Kumar Sah 1


Software Engineering Unit-1: Introduction

IS THERE AN “OFFICIAL” NAME?


 Software Engineering!
 Information Systems Engineering!

 Systems Engineering!

 Information Systems Development!

Which
one?

SOFTWARE
 Software is the non-touchable parts of the computer.

 Software is more than just a program code.


▪ Software is collection of executable programming
code, associated libraries and documentations.
▪ Software, when made for a specific requirement is
called software product.

 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.
4
 Custom - developed for a single customer according to their
specification.

Er. Sanjay Kumar Sah 2


Software Engineering Unit-1: Introduction

DEFINITION OF SOFTWARE
 Computer Software, or only software, is a kind of program
that enable a user to perform some specific task or used to
operate a computer.
 It directs all the peripheral devices on the computer system –
what to do and how to perform a task.
 PC software plays the role of mediator between the user and
computer hardware.
 Without software, a user can’t perform any task on a digital
computer.
 A computer system can be divided into three components: the
hardware, the software, and the users.

Types of Software
 Software can be further divide into mainly two parts:
1. System Software 5
2. Application Software

1. SYSTEM SOFTWARE
 System software is a collection of programs designed to
operate, control, and extend the processing capabilities of the
computer itself.

 These software products comprise of programs written in low-


level languages, which interact with the hardware at a very
basic level.

 System software serves as the interface between the hardware


and the end users.

 The best-known example of system software is an operating


system.

 Some examples of system software are Operating System, 6


Compilers, Interpreter, Assemblers, etc.

Er. Sanjay Kumar Sah 3


Software Engineering Unit-1: Introduction

2. APPLICATION SOFTWARE
 Application software also called end-user programs or
merely an application used for a specific purpose.

 It programmed for simple as well as complex tasks.

 It either be installed or access online.

 It can be a single program or a group of small programs


that referred to as an application suite.

 Application software can be used by the user to complete


specific tasks, such as creating word processors
documents, spreadsheets, presentations, graphics,
sending the emails, etc. 7

SOFTWARE ENGINEERING
 Engineering on the other hand, is all about developing
products, using well-defined, scientific principles and
methods.

 Software Engineering is an engineering discipline


which 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. 8

Er. Sanjay Kumar Sah 4


Software Engineering Unit-1: Introduction

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.

DEFINITIONS OF SOFTWARE ENGINEERING


 Software engineering is an engineering branch associated
with development of software product using well-defined
scientific principles, methods and procedures.
▪ The outcome of software engineering is an efficient and
reliable software product.

 IEEE defines software engineering as:


1. 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. The study of approaches as in the above statement.

 Fritz Bauer, a German computer scientist, defines software


engineering as:
▪ Software engineering is the establishment and use of sound
engineering principles in order to obtain economically
software that is reliable and work efficiently on real 10
machines.

10

Er. Sanjay Kumar Sah 5


Software Engineering Unit-1: Introduction

SOFTWARE ENGINEERING VS COMPUTER


SCIENCE
 Computer science is concerned with theory and
fundamentals; software engineering is concerned
with the practicalities of developing and delivering
useful software.

 Computer science theories are currently insufficient


to act as a complete form the basis for software
engineering.

 Software engineering is a branch of computer


science, which uses well-defined engineering
concepts required to produce efficient, durable, 11
scalable, in-budget and on-time software products.

11

SOFTWARE EVOLUTION
 The process of developing a software product using software
engineering principles and methods is referred to as software
evolution.

 This includes the initial development of software and its


maintenance and updates, till desired software product is
developed, which satisfies the expected requirements.

12

12

Er. Sanjay Kumar Sah 6


Software Engineering Unit-1: Introduction

SOFTWARE EVOLUTION
 Evolution starts from the requirement gathering process.
 After which developers create a prototype of the intended
software and show it to the users to get their feedback at the
early stage of software product development.
 The users suggest changes, on which several consecutive
updates and maintenance keep on changing too.
 This process changes to the original software, till the desired
software is accomplished.
 Even after the user has desired software in hand, the
advancing technology and the changing requirements force
the software product to change accordingly.
 Re-creating software from scratch and to go one-on-one with
requirement is not feasible.
 The only feasible and economical solution is to update the 13
existing software so that it matches the latest requirements.

13

NEED OF SOFTWARE ENGINEERING


 The need of software engineering arises because of
higher rate of change in user requirements and
environment on which the software is working.

1. Large Software:
▪ It is easier to build a wall than to a house or
building, likewise, as the size of software become
large engineering must step to give it a scientific
process.

2. Scalability:
▪ If the software process were not based on scientific
and engineering concepts, it would be easier to re-
14
create new software than to scale an existing one.

14

Er. Sanjay Kumar Sah 7


Software Engineering Unit-1: Introduction

NEED OF SOFTWARE ENGINEERING


3. Cost:
▪ As hardware industry has shown its skills and huge
manufacturing has lower down the price of computer and
electronic hardware.
▪ But the cost of software remains high if proper process is
not adapted.

4. Dynamic Nature:
▪ The always growing and adapting nature of software hugely
depends upon the environment in which user works.
▪ If the nature of software is always changing, new
enhancements need to be done in the existing one.
▪ This is where software engineering plays a good role.

5. Quality Management:
▪ Better process of software development provides better and
15
quality software product.

15

ATTRIBUTES OF GOOD SOFTWARE


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

 Well-engineered and crafted software is expected to have


the following characteristics:

1. Maintainability:
▪ Software must evolve to meet changing needs

2. Dependability:
▪ Software must be trustworthy
16

16

Er. Sanjay Kumar Sah 8


Software Engineering Unit-1: Introduction

ATTRIBUTES OF GOOD SOFTWARE


3. Efficiency:
▪ Software should not make wasteful use of system
resources

4. Usability:
▪ Software must be usable by the users for which it was
designed

5. Operational:
▪ This tells us how well software works in operations.

6. Transitional:
▪ This aspect is important when the software is moved
17
from one platform to another.

17

SUCCESSFUL SOFTWARE SYSTEM


 Software development projects have not always
been successful.

 When do we consider a software application


successful?
 Development completed.
 It is useful.
 It is usable.
 It is used.

 Cost-effectiveness, maintainability implied. 18

18

Er. Sanjay Kumar Sah 9


Software Engineering Unit-1: Introduction

REASONS FOR FAILURE


 Schedule slippage
 Cost over-runs
 Does not solve user’s problem
 Poor quality of software
 Poor maintainability
 Ad hoc software development results in such
problems:
▪ No planning of development work (e.g., no milestones
defined)
▪ Deliverables to user not identified
▪ Poor understanding of user requirements
▪ No control or review
▪ Technical incompetence of developers
▪ Poor understanding of cost and effort by both developer
and user 19

19

APPLY ENGINEERING APPROACH


 Planning and control even more important in
software development  engineering approach:
▪ Attempt to estimate cost/effort
▪ Plan and schedule work
▪ Involve user in defining requirements
▪ Identify stages in development
▪ Define clear milestones so that progress can
be measured
▪ Schedule reviews both for control and quality
▪ Define deliverables
▪ Plan extensive testing
20

20

Er. Sanjay Kumar Sah 10


Software Engineering Unit-1: Introduction

JOB OF SOFTWARE DEVELOPER IS


DIFFICULT
 Dealing with Users:
▪ Defined requirements
▪ Concern with ease-of-use and response time

 Dealing with Technical People:


▪ Concerned with coding, databases, file structures, etc.

 Dealing with Management:


▪ Concerned with return on their investment
▪ Cost-benefit analysis 21

▪ Schedule

21

SOFTWARE COSTS
 Software costs often dominate 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. 22

22

Er. Sanjay Kumar Sah 11


Software Engineering Unit-1: Introduction

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. 23

23

KEY CHALLENGES FACING SOFTWARE


ENGINEERING
 Coping with legacy systems, coping with increasing
diversity and coping with demands for reduced delivery
times.
1. Legacy systems:
▪ Old, valuable systems must be maintained and
updated.
2. Heterogeneity:
▪ Systems are distributed and include a mix of
hardware and software.
3. Delivery:
▪ There is increasing pressure for faster delivery of
24
software.

24

Er. Sanjay Kumar Sah 12


Software Engineering Unit-1: Introduction

SOFTWARE ENGINEERING AND SYSTEM


ENGINEERING
1. System Engineer:
 A System Engineer is a person who deals with the overall management
of engineering projects during their life cycle (focusing more on physical
aspects).
 They follows an interdisciplinary approach governing the total technical
and managerial effort required to transform requirements into
solutions.
 They are generally focused with all aspects of computer-based system
development not only this but also hardware, software and process
engineering etc. are included.

 Systems Engineering Methods:


▪ Stakeholder Analysis
▪ Interface Specification
▪ Design Tradeoffs
▪ Configuration Management
▪ Systematic Verification and Validation 25
▪ Requirements Engineering

25

SOFTWARE ENGINEERING AND SYSTEM


ENGINEERING
2. Software Engineer:
 A Software Engineer is a person who deals with the designing and
developing good quality of software applications/software products.
 They follows a systematic and disciplined approach for software
design, development, deployment and maintenance of software
applications.
 They are generally concerned with all aspects of software
development, infrastructure, control, applications and databases in
the system.

 Software Engineering Methods:


▪ Process Modeling
▪ Incremental Verification and Validation
▪ Process Improvement
▪ Model-Driven Development
▪ Agile Methods 26
▪ Continuous Integration

26

Er. Sanjay Kumar Sah 13


Software Engineering Unit-1: Introduction

SOFTWARE ENGINEERING VS SYSTEM


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 more general process.

 Software engineering is concerned with all aspect of the


development and evolution of the computer system or other
complex system.
 Whereas software plays major roles in system engineering.
System engineering is there for, concerned with hardware
development process design.

 System Engineers requires a broader education background


like Engineering, Mathematics and Computer science etc.
 While Software Engineers requires Computer Science or
27
Computer Engineering background.

27

PROFESSIONAL & ETHICAL RESPONSIBILITY


 Software engineering involves wider
responsibilities than simply the application of
technical skills.

 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.
28

28

Er. Sanjay Kumar Sah 14


Software Engineering Unit-1: Introduction

ISSUES OF PROFESSIONAL RESPONSIBILITY


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

2. Competence:
▪ Engineers should not misrepresent their level of competence. They
should not knowingly accept work which is outside their competence.

3. Intellectual Property Rights:


▪ 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.

4. Computer Misuse:
▪ Software engineers should not use their technical skills to misuse
29
other people’s computers.

29

SUMMARY
 Software engineering is an engineering discipline which 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.
 Methods are organised ways of producing software. They
include suggestions for the process to be followed, the
notations to be used, rules governing the system descriptions
which are produced and design guidelines.
 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
30
the standards of behaviour expected of their members.

30

Er. Sanjay Kumar Sah 15


Software Engineering Unit-1: Introduction

PRACTICE QUESTIONS
1. Define software and explain the types of software.
2. What are the characteristics of software? Explain.
3. Explain the attributes of a good software.
4. Define the software engineering. Why we need the
software engineering?
5. What are the software engineering costs?
6. Explain the key challenges that software engineering
facing.
7. Differentiate between the system engineering and
software engineering.
8. What is the professional and ethical responsibility of a
software engineer? Describe the issues of professional
responsibility. 31

31

FOR YOUR ATTENTION !

Any Questions?
32

32

Er. Sanjay Kumar Sah 16

You might also like