Introduction
Chapter 1
Shristi Awale 1
Topic to be covered
► Definition of software
► Types of software
► Characteristics of software
► Attributes of Good Software
► Definition of SE
► System Engineering and Software Engineering
► Key challenges that SE Facing
► Assignment
Shristi Awale 2
What is software?
► Software is a set of instructions, data or programs used
to operate computers and execute specific tasks
► Some characteristics are:
►Software is not developed or engineered, it is not
manufacture in the classical sense
►Software doesn’t “wear out”
►Most software is “custom built” rather than assembled
from existing components
Shristi Awale 3
The software product
► Who creates software?
►Software engineers
► Why is software Important?
►Affects nearly every aspects of life
► How is Software Built?
►By applying a structured process
► 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
Shristi Awale 4
What are the work product?
reports documents
► Program
Source
► Documents codes plans
manuals
► data data
Object
prototypes
codes
Test suites Test
results
Shristi Awale 5
Program Software
► Usually small in size ► Large
► Author himself is sole user ► Large no.of users
► Single developer ► Team of developers
► Lack proper user interface ► Well-designed interface
► Lacks proper documentation ► Well documented and user
► Is not in systematic way manual prepared
► Systematics development
Shristi Awale 6
Nature of Software
► is intangible
► Is easy to reproduce
► Hard to automate
► Easy to modify
Shristi Awale 7
Attributes of Good Software
► Correctness: Correctness is important for good software. There
shouldn’t be faults with specification, design or implementation.
► Usability : Users should be able to learn and use a system
easily.
► Efficiency: The less resource a piece of software uses, the
better. Processor, memory and disk space usage should be
minimized.
► Reliability: A system that can perform the required functions
stably is important. Failures should be as rare as possible.
► Integrity: Security should be taken into account. Our software
should let attackers access unauthorized resources.
Shristi Awale 8
► Adaptability : A system that can be used without modification
for different situations it’s good.
► Accuracy : The accuracy of its outputs is good. This measures
if the software outputs the right results for users.
► Robustness : If a system is still working after getting invalid
inputs and stressful environmental conditions, then it’s good
for our system.
► Maintainability: The ease in which an existing system can be
changed is important. The easier that we can make changes,
the better.
► Portability: A system that operates in different environments
from which it’s originally designed makes it good.
► Reusability : The more reusable parts that a piece of software
has, the better.
Shristi Awale 9
Characteristics of software
► Software doesn’t wear out.
Shristi Awale 10
Characteristics of software
► Software does deteriorate
Shristi Awale 11
What is software engineering?
► Is concerned with software systems developed by teams rather
than individual programmers, uses engineering principles in the
development of these systems, and is made up of both technical
and non-technical aspects. – Summerville
► Is discipline that integrates methods, tolls and procedures for
the development of computer software. – Pressman
► Recognizes technical, managerial and socio-technical issues
► Is concern with improving both product and the process by
which product is produced.
Shristi Awale 12
What is well engineered software?
► If software system does what the user wants it is well
engineered.
► If the software systems does what the user wants, and can
be made to continue to do what the user wants, it is well
engineered.
► A engineered system should
► Be easy to maintain
► Be reliable
► Be efficient
► Provide an appropriate user interface.
Shristi Awale 13
Why is software engineering difficult?
► IT involves teams
► Poor communication skills of some team members.
► No.of communicational paths increases as square of
the team size.
► Varying ability of team members.
Inability of some to work as a part of team
►
► Many activities are independent and must occur in a fixed
order
► Projects are complex
► Requirements changes
Shristi Awale 14
Why study SE?
► To acquire skills to develop large programs
► Ability to solve complex programming problems
► Learn technique of specification, design, interface
development, testing, project management etc.
► To acquire skill to be better programmer
Shristi Awale 15
Difference between software
engineering and computer science
► Computer science is concerned with theory and
fundamentals whereas software engineering is concerned
with the practicalities of developing and delivering useful
software.
► Computer science theories are currently insufficient to
act as a complete underpinning for software engineering.
Shristi Awale 16
Difference between software
engineering and system engineering
► System engineering is concerned with all aspects of
computer based system development including hardware,
software and process engineering. whereas software
engineering is part of this process.
► System engineers are involved in system specification,
architectural design, integration and development.
Shristi Awale 17
Phase of Software engineering
1. Definition phase
2. Development phase
3. support phase
Definition phase:
► It focus on WHAT i.e. to identify what is to be processed
► what function and performance are desired?
► what design constraints exists?
► what validation criteria are required to define a successful system
► Identify the key requirements os the system and the software?
► It performs three major tasks as
► Information engineering
► Software project planning
Shristi Awale ► Requirement analysis 18
Development phase:
► It focus on HOW i.e. to define how data are to be structured.
► How function is to be implemented within a software architecture
► How procedural details are to be implemented?
► How interface are to be characterized?
► How design will be translated into programming language
► how testing will be performed.
► It perform three specific technical tasks as
► Software design
► Code generation
► Software testing
Shristi Awale 19
Support phase:
► It focus on change associated with error
correction, adaptations required as the software
environment evolves, and due to enhancement
bought by the changing customer requirements
► Four types of changes are occurred during
support phase
► Correctness
► Adaptive
► Enhancement
► Prevention
Shristi Awale 20
Key challenges facing SE
► Legacy system
► Heterogeneity
► Delivery
Shristi Awale 21
Assignment
1. Software is both a product and vehicle for delivering a product. Explain.
2. Software is engineered, not manufactured. Explain.
3. “Software does not wear, but it does deteriorate”. Describe this statement.
4. Define software and explain its characteristics and also mention the various
types of software product.
5. Explain some of the Software application you have notices.
6. Compare and contrast programs with Software products.
7. Explain attributes of good software in detail.
8. What are the key challenges facing software engineering?
9. Difference between computer science, software engineering, system
engineering and computer engineering.
Shristi Awale 22