Introduction to software engineering
Software products
Why Software is Important?
Software costs
Features of Software?
Software Applications
Software—New Categories
Software Engineering
Importance of Software Engineering
Essential attributes / Characteristics of good software
Software Components
Software Process
Five Activities of a Generic Process framework
Relative Costs of Fixing Software Faults
Software Qualities
Software crisis
Software Development Stages/SDLC
What is Software Verification
Advantages of Software Verification
Advantages of Validation
2. Contents
1. Introduction to software
engineering
2. Software products
3. Why Software is Important?
4. Software costs
5. Features of Software?
6. Software Applications
7. Software—New Categories
8. Software Engineering
9. Importance of Software
Engineering
10. Essential attributes /
Characteristics of good
software
11. Software Components
12. Software Process
13. Five Activities of a Generic
Process framework
14. Relative Costs of Fixing
Software Faults
15. Software Qualities
16. Software crisis
17. Software Development
Stages/SDLC
18. What is Software
Verification
19. Advantages of Software
Verification
20. Advantages of Validation
3. Introduction to software engineering
• What is Software?
The product that software professionals build and
then support over the long term.
Software encompasses:
(1) instructions (computer programs) that when
executed provide desired features, function, and
performance;
(2) data structures that enable the programs to
adequately store and manipulate information and
(3) documentation that describes the operation and
use of the programs.
4. Software products
• Generic products
– Stand-alone systems that are marketed and sold to
any customer who wishes to buy them.
– Examples – PC software such as editing, graphics
programs, project management tools; CAD software;
software for specific markets such as appointments
systems for dentists.
• Customized products
– Software that is commissioned by a specific customer
to meet their own needs.
– Examples – embedded control systems, air traffic
control software, traffic monitoring systems.
5. Why Software is Important?
• The economies of ALL developed nations are
dependent on software.
• More and more systems are software
controlled ( transportation, medical,
telecommunications, military, industrial,
entertainment,)
• Software engineering is concerned with
theories, methods and tools for professional
software development.
6. Software costs
• Software costs often dominate computer
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.
7. Features of Software?
Features of such logical system:
• Software is developed or engineered, it is not
manufactured in the classical sense which has quality
problem.
• Software doesn't "wear out.” but it deteriorates (due to change).
Hardware has bathtub curve of failure rate ( high failure rate in the
beginning, then drop to steady state, then cumulative effects of dust, vibration, abuse occurs).
• Although the industry is moving toward component-based
construction (e.g. standard screws and off-the-shelf
integrated circuits), most software continues to be custom-
built. Modern reusable components encapsulate data and
processing into software parts to be reused by different
programs. E.g. graphical user interface, window, pull-down
menus in library etc.
8. Software Applications
• 1. System software: such as compilers, editors, file management utilities
• 2. Application software: stand-alone programs for specific needs.
• 3.Engineering/scientific software: Characterized by “ number
crunching”algorithms. such as automotive stress analysis, molecular
biology, orbital dynamics etc
• 4. Embedded software resides within a product or system. (key pad
control of a microwave oven, digital function of dashboard display in a
car)
• 5. Product-line software focus on a limited marketplace to address mass
consumer market. (word processing, graphics, database management)
• 6. WebApps (Web applications) network centric software. As web 2.0
emerges, more sophisticated computing environments is supported
integrated with remote database and business applications.
• 7. AI software uses non-numerical algorithm to solve complex problem.
Robotics, expert system, pattern recognition game playing
9. Software—New Categories
• Open world computing—pervasive, distributed computing due to wireless
networking. How to allow mobile devices, personal computer, enterprise
system to communicate across vast network.
• Netsourcing—the Web as a computing engine. How to architect simple and
sophisticated applications to target end-users worldwide.
• Open source—”free” source code open to the computing community (a
blessing, but also a potential curse!)
• Also …
– Data mining
– Grid computing
– Cognitive machines
– Software for nanotechnologies
10. Engineering
• Engineering is …
– The application of scientific principles and methods to
the construction of useful structures & machines
• Examples
– Mechanical engineering
– Computer engineering
– Civil engineering
– Chemical engineering
– Electrical engineering
– Nuclear engineering
– Aeronautical engineering
11. Software Engineering
[Software engineering is] the establishment and
use of sound engineering principles in order to
obtain economically software that is reliable
and works efficiently on real machines.
The IEEE definition:
– Software Engineering: (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 (1).
12. Software Engineering in a Nutshell
• Development of software systems whose
size/complexity warrants team(s) of engineers
– multi-person construction of multi-version software
• Scope
– study of software process,
development/management principles, techniques,
tools and notations
• Goal
– production of quality software, delivered on time,
within budget, satisfying customers’ requirements
and users’ needs
13. Importance of Software Engineering
• More and more, individuals and society rely on
advanced software systems. We need to be able
to produce reliable and trustworthy systems
economically and quickly.
• In the long run, to use software engineering
methods and techniques for software systems
rather than just write the programs as if it was a
personal programming project. For most types of
system, the majority of costs are the costs of
changing the software after it has gone into use.
14. • Software engineering is about managing
all the sources of complexity to
produce effective software.
15. FAQ’s for SE
Question Answer
What is software? Computer programs, data structures and associated
documentation. Software products may be developed for a
particular customer or may be developed for a general
market.
What are the attributes of good software? Good software should deliver the required functionality and
performance to the user and should be maintainable,
dependable and usable.
What is software engineering? Software engineering is an engineering discipline that is
concerned with all aspects of software production.
What is the difference between software
engineering and computer science?
Computer science focuses on theory and fundamentals;
software engineering is concerned with the practicalities of
developing and delivering useful software.
What is the difference between software
engineering and 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.
16. Essential attributes / Characteristics of
good software
Product characteristic Description
Maintainability Software should be written in such a way so that it can evolve to meet the
changing needs of customers. This is a critical attribute because software
change is an inevitable requirement of a changing business environment.
Dependability and security 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.
Efficiency Software should not make wasteful use of system resources such as
memory and processor cycles. Efficiency therefore includes
responsiveness, processing time, memory utilisation, etc.
Acceptability Software must be acceptable to the type of users for which it is designed.
This means that it must be understandable, usable and compatible with
other systems that they use.
17. A Layered Technology
Software Engineering
a “quality” focus
process model
methods
tools
Any engineering approach must rest on organizational commitment to quality which fosters a
continuous process improvement culture.
Process layer as the foundation defines a framework with activities for effective delivery of
software engineering technology. Establish the context where products (model, data, report, and
forms) are produced, milestone are established, quality is ensured and change is managed.
Method provides technical how-to’s for building software. It encompasses many tasks including
communication, requirement analysis, design modeling, program construction, testing and
support.
Tools provide automated or semi-automated support for the process and methods.
18. – Many aspects have been made systematic
• Methods/methodologies/techniques
• Languages
• Tools
• Processes
• Principles
19. Software Components
• “A software component is a unit of composition
with contractually specified interfaces and
explicit context dependencies only. A software
component can be deployed independently and
is subject to composition by third parties”
• A software component is a software element that
conforms to a component model and can be
independently deployed and composed without
modification according to a composition
standard.
20. Software Process
• A process is a collection of activities, actions and
tasks that are performed when some work product
is to be created. It is not a rigid prescription for
how to build computer software. Rather, it is an
adaptable approach that enables the people doing
the work to pick and choose the appropriate set of
work actions and tasks.
• Purpose of process is to deliver software in a
timely manner and with sufficient quality to satisfy
those who have sponsored its creation and those
who will use it.
21. Five Activities of a Generic Process
framework
• I Communication: communicate with customer to understand objectives and
gather requirements
• II Planning: creates a “map” defines the work by describing the tasks, risks
and resources, work products and work schedule.
• III Modeling: Create a “sketch”, what it looks like architecturally, how the
constituent parts fit together and other characteristics.
• IV Construction: code generation and the testing.
• V Deployment: Delivered to the customer who evaluates the products and
provides feedback based on the evaluation.
• These five framework activities can be used to all software development
regardless of the application domain, size of the project, complexity of the
efforts etc, though the details will be different in each case.
• For many software projects, these framework activities are applied
iteratively as a project progresses. Each iteration produces a software
increment that provides a subset of overall software features and
functionality.
24. Software crisis
• Software crisis is a term used in the early days
of computing science for the difficulty of
writing useful and efficient computer
programs in the required time. The software
crisis was due to the rapid increases in
computer power and the complexity of the
problems that could be tackled.
25. • The causes of the software crisis were linked to
the overall complexity of hardware and the
software development process. The crisis
manifested itself in several ways:
• Projects running over-budget.
• Projects running over-time.
• Software was very inefficient.
• Software was of low quality.
• Software often did not meet requirements.
• Projects were unmanageable and code difficult to
maintain.
• Software was never delivered.
26. Software Development Stages/SDLC
Process
1. Conceptual/Requirements Analysis & Specification
2. System/Architectural Design
3. Detailed/Program Design
4. Implementation/Coding
5. Unit & Integration Testing
6. System Testing/Validation
7. System Delivery/Deployment
8. Maintenance
– Note there are many “variations” on the names. You are
responsible for the main categories above (an on the next
pages)..
27. What is Software Verification
• It makes sure that the product is designed to deliver all functionality
to the customer.
• Verification is done at the starting of the development process.
• It includes reviews and meetings, walkthroughs, inspection, etc. to
evaluate documents, plans, code, requirements and specifications.
• Example: Suppose you are building a table. Here the verification is
about checking all the parts of the table, whether all the four legs are
of correct size or not. If one leg of table is not of the right size it will
imbalance the end product. Similar behavior is also noticed in case of
the software product or application.
• If any feature of software product or application is not up to the mark
or if any defect is found then it will result into the failure of the end
product. Hence, verification is very important. It takes place at the
starting of the development process.
28. Verification Cntd…
• It is a Low level activity.
• Performed during development on key
artifacts, like walkthroughs, reviews and
inspections, mentor feedback, training,
checklists and standards.
• Demonstration of consistency, completeness,
and correctness of the software at each stage
and between each stage of the development
life cycle.
29. Advantages of Software Verification
• Verification helps in lowering down the count of
the defect in the later stages of development.
• Verifying the product at the starting phase of
the development will help in understanding the
product in a better way.
• It reduces the chances of failures in the
software application or product.
• It helps in building the product as per the
customer specifications and needs.
30. What is Software Validation?
• Determining if the system complies with the
requirements and performs functions for which it
is intended and meets the organization’s goals
and user needs.
• Validation is done at the end of the development
process and takes place after verifications are
completed.
• It answers the question like: Am I building the
right product?
• Am I accessing the right data (in terms of the data
required to satisfy the requirement).
• It is a High level activity.
31. Advantages of Validation
• During verification if some defects are missed then
during validation process it can be caught as failures.
• If during verification some specification is
misunderstood and development had happened then
during validation process while executing that
functionality the difference between the actual result
and expected result can be understood.
• Validation is done during testing like feature testing,
integration testing, system testing, load testing,
compatibility testing, stress testing, etc.
• Validation helps in building the right product as per the
customer’s requirement and helps in satisfying their
needs.
32.
33. ThankYou&
KeepLearning!
?Follow us :
You can find me at
https://www.linkedin.com/in/drkamalgulati/
https://mybigdataanalytics.in/
https://www.facebook.com/DrKamalGulatiBig
DATA/