Software
Engineering
Dr. Kamal Gulati
(Part 1) - Introduction to Software Engineering
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
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.
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.
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.
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.
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.
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
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
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
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).
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
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.
• Software engineering is about managing
all the sources of complexity to
produce effective software.
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.
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.
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.
– Many aspects have been made systematic
• Methods/methodologies/techniques
• Languages
• Tools
• Processes
• Principles
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.
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.
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.
Relative Costs of Fixing Software Faults
Requirements Specification Planning Design Implementation Integration Maintenance
1 2 3 4
10
30
200
Software Qualities
• Critical Quality
Attributes
– Correctness
– Maintainability
– Dependability
– Usability
– Reliability
• Other Attributes
– Completeness
– Compatibility
– Portability
– Internationalization
– Understandability
– Scalability
– Robustness
– Testability
– Reusability
– Customizability
– Efficiency
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.
• 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.
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)..
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.
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.
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.
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.
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.
ThankYou&
KeepLearning!
?Follow us :
You can find me at
https://www.linkedin.com/in/drkamalgulati/
https://mybigdataanalytics.in/
https://www.facebook.com/DrKamalGulatiBig
DATA/

Introduction to Software Engineering

  • 1.
    Software Engineering Dr. Kamal Gulati (Part1) - Introduction to Software Engineering
  • 2.
    Contents 1. Introduction tosoftware 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 softwareengineering • 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 • Genericproducts – 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 isImportant? • 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 • Softwarecosts 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? Featuresof 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 • Openworld 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 engineeringis] 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 ina 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 SoftwareEngineering • 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 engineeringis about managing all the sources of complexity to produce effective software.
  • 15.
    FAQ’s for SE QuestionAnswer 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 SoftwareEngineering 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 aspectshave been made systematic • Methods/methodologies/techniques • Languages • Tools • Processes • Principles
  • 19.
    Software Components • “Asoftware 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 • Aprocess 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 ofa 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.
  • 22.
    Relative Costs ofFixing Software Faults Requirements Specification Planning Design Implementation Integration Maintenance 1 2 3 4 10 30 200
  • 23.
    Software Qualities • CriticalQuality Attributes – Correctness – Maintainability – Dependability – Usability – Reliability • Other Attributes – Completeness – Compatibility – Portability – Internationalization – Understandability – Scalability – Robustness – Testability – Reusability – Customizability – Efficiency
  • 24.
    Software crisis • Softwarecrisis 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 causesof 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 SoftwareVerification • 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… • Itis 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 SoftwareVerification • 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 SoftwareValidation? • 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.
  • 33.
    ThankYou& KeepLearning! ?Follow us : Youcan find me at https://www.linkedin.com/in/drkamalgulati/ https://mybigdataanalytics.in/ https://www.facebook.com/DrKamalGulatiBig DATA/