SOFTWARE ENGINEERING
MODULE I
Programs Vs Software Products
Programs Software
Developed by individuals for personal use Developed by a group of engineers
Small in size and limited functionality
Large in size, not only contains programs but also the
associated documents, such as user manuals, design
documents etc.
Author himself uses and maintains his programs ,so
they lack good user interface and proper
documentation
Have multiple users, so they need good user interface,
proper user’s manual and good documentation support.
Does not follow a systematic approach
Systematically designed , carefully implemented and
thoroughly tested
Written by a programmer Developed by a group of software engineers
What is Software?
● The product that software professionals build and
then support over the long term.
● Software encompasses:
○ instructions (computer programs) that when executed provide desired features, function, and performance;
○ data structures that enable the programs to adequately store and manipulate information and
○ documentation that describes the operation and use of the programs.
Software Characteristics
● Software is a logical rather than a physical system
element
● Three characteristics of software that makes it different
from hardware:
1.Software is developed or Engineered, it is not
manufactured in the classical sense.
2.Software doesn’t “wear out”.
3.Although the industry is moving toward component-based
assembly, most software continues to be custom built
1.Software is developed or Engineered, it is not
manufactured in the classical sense.
● Software development and hardware manufacturing are
fundamentally different.
● In both ,high quality is achieved through good design
● For hardware, manufacturing phase can introduce quality
problems that are non-existent (or easily corrected )for
software.
● Both activities require the construction of a product, but
approaches are different.
2.Software doesn’t “wear out”.
• The failure rate of a hardware as a function of time is shown in fig. (usually called “bathtub curve”)
2.Software doesn’t “wear out”.
● Hardware exhibits relatively high failure rate early in its time(design or
manufacturing defects)
● Defects are corrected and failure rate drops to a steady-state level for
some period
● As time passes ,the failure rate rises again as hardware components
suffer from the cumulative effects of dust, vibration, abuse, temperature
extremes and many other environmental maladies.
● Hardware begins to wear out.
● But software is not affected by the environmental maladies.
2.Software doesn’t “wear out”.
● The failure curve for software is shown below
2.Software doesn’t “wear out”.
● It takes the form of an idealized curve.
● Undiscovered defects will cause high failure rates early in the life of a
program.
● These are corrected and the curve flattens
● Software doesn’t wear out ,but it does deteriorate.
● The actual curve is formed.
● During its life, software will undergo change causing the failure rate curve to
spike.
● Before the curve return to original steady-state ,if another change is requested
,then the curve will spike again.
● The minimum failure rate level begins to rise.
3.Although the industry is moving toward component-based
assembly, most software continues to be custom built
○ Building computer-based hardware includes :
■ Design engineer draws a simple schematic of the the digital
circuitry
■ Make a fundamental analysis
■ Select the components from the shelf
○ These components are reusable, and in hardware components reuse is
common.
○ In software world, it is rare.
○ A software component must be designed and implemented so that it can
be reused in many different programs.
● Modern reusable components encapsulate both data and the processing that
is applied to the data
● It enables the software engineer to create new applications from reusable
parts.
● E.g. User interfaces are built with reusable components that enable the
Classification of Computer Software
● Broadly classified into seven categories:
● 1.System software
■ Collection of programs written to service other programs.
■ Characterized by heavy interaction with computer hardware.
■ E.g. compilers, editors, operating system etc.
● 2.Application software
■ Consists of standalone programs that solve a specific business need
■ E.g. Word processors, database, power point
● 3.Engineering/Scientific software
■ Software that are used for scientific calculations
■ E.g. CAD,CAM
● 4.Embedded software
■ Resides within a product or system and is used to implement and control features and functions for the
end-user and for the system itself
■ Can perform limited functions
■ E.g. software in microwave, washing machine etc.
● 5.Product-line software
■ Designed to provide a specific capability for use by many different customers.
■ E.g. Inventory control products
● 6.Web applications
■ Software that are used in accessing a website
■ E.g. Web Browser
● 7.Artificial Intelligence
■ AI software make use of non-numerical algorithms to solve complex problems.
● E.g. robotics, expert system, ANN etc.
Software Engineering
● Definition:
● Software Engineering is the establishment and use of
sound engineering principles in- order to obtain
economically that is reliable and works efficiently on real
machines
or
● Software engineering :1)The application of a systematic
,disciplined ,quantifiable approach to the development,
operation and maintenance of software;2)The study of
approaches as in (1)
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.
● It is usually cheaper, 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
Software Engineering-A Layered
Technology
● Any engineering approach must rest on organizational commitment to quality
which fosters a continuous process improvement culture. The bedrock that
supports software engineering is a quality focus.
● Process
○ acts as the foundation for software engineering
○ defines a framework with activities(Key Process Areas)that must be established for
effective delivery of software engineering technology.
○ The KPAs forms the basis for management control of software projects
● 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.
○ When tools are integrated so that information created by one tool can be used by
another ,a system for the support of software development called Computer -Aided
software Engineering (CASE) is established
A Generic View of Software Engineering
● Engineering is the analysis ,design ,construction
,verification and management of technical or social
entities.
● Some questions to be answered:
○ What is the problem to be solved?
○ What characteristics of the entity are used to solve the
problem?
○ How will the entity and the solution be realized?
○ How will the entity be constructed?
○ What approach will be used to uncover errors that were
made in the design and construction of the entity?
○ How will the entity be supported over the long term ,when
corrections, adaptations and enhancements are requested
by users of the entity?
Phases in Software Development
● Three generic in software development:
■ Definition phase
■ Development phase
■ Maintenance phase
● Definition phase
■ Focuses on “what”
■ i.e. during definition the software developer attempts to identify:
● What information is to be processed
● What function and performance are desired
● What system behavior can be expected
● What design constraints exists
● What validation criteria are required to define a successful system
●
● Three major tasks
○ System or information engineering
○ Software project planning
○ Requirement analysis
●
Phases in Software Development
● Development phase
● Focuses on how
● i.e during this phase the developer attempts to define
○ How data can be structured
○ How functions is to be implemented as a software architecture
○ How procedural details are to be implemented
○ How the interfaces can be characterized
○ How the design will be translated into programming language or non-procedural language
○ How testing will be performed
● Three specific tasks
○ Software design
○ Code generation
○ Software testing
Phases in Software Development
● Maintenance phase
● Focuses on change, that is associated with error correction ,adaptations as the software's environment
evolves and changes due to enhancements brought about by changing requirements
● Reapplies the steps of the definition and development phase, but is done in the context of existing software
● Four types of changes are encountered during the maintenance phase:
■ Correction
■ Adaptation
■ Enhancement
■ Prevention
○ Correction:
● Even with best quality assurance activities ,it is likely that the customer will uncover
defects in the software.
● Corrective maintenance changes the software to correct defects
○ Adaptation:
■ As time passes, the original environment (e.g. CPU, OS, Business rules, external product
characteristics)for which the software was developed is likely to change
■ Adaptive maintenance results in the modification to the software to accommodate changes to its external
environment.
Phases in Software Development
○ Enhancement:
■ As software is used ,the customer /user will recognize
additional functions that will provide benefit.
■ Perfective maintenance extend the software beyond its
original functional requirements
○ Prevention:
■ Computer software deteriorates due to change
■ Because of this , preventive maintenance ,often called
software re-engineering, must be conducted to serve the
needs of its end users
■ Preventive maintenance makes changes to computer
programs so that they can easily corrected, adapted and
enhanced
Umbrella Activities
● The phases and related steps in software engineering are
complimented by a number of umbrella activities:
○ Software project tracking and control: assess progress against
the plan and take actions to maintain the schedule.
○ Risk management: assesses risks that may affect the outcome
and quality.
○ Software quality assurance: defines and conduct activities to
ensure quality.
○ Formal Technical reviews: assesses work products to uncover
and remove errors before going to the next activity.
○ Measurement: define and collects process, project, and product
measures to ensure stakeholder’s needs are met.
○ Software configuration management: manage the effects of
change throughout the software process.
○ Reusability management: defines criteria for work product reuse
and establishes mechanism to achieve reusable components.
○ Work product preparation and production: create work
products such as models, documents, logs, forms and lists.
The Software Process
● Software development includes a series of predictable steps-known as
software process.
● A software process can be characterized as shown in fig.
The Software Process
● A common process framework is established by defining a small number of
framework activities that are applicable to all software projects, regardless
of their size or complexity
● A number of task sets-each a collection of software engineering work tasks,
project milestones, work products and quality assurance points are defined.
● These task sets enable the framework activities to be adapted to the
characteristics of the software project and the requirement of the project
team.
● Umbrella activities –such as software quality assurance ,software
configuration management and measurement-overlay the process model
● Umbrella activities are independent of any one framework activity and
occur throughout the process.
Process Maturity
● There are a number of software process assessment mechanisms that enable
organizations to determine the ‘maturity’ of a software process .
● The Software Engineering Institute (SEI) has developed a comprehensive model
predicted on a set of software engineering capabilities that should be present as
organizations reach different levels of process maturity
● To determine an organization’s current state of process maturity, SEI uses an
assessment that results in a five point grading scheme
● Capability Maturity Model(CMM) defines key activities required at different
levels of process maturity.
○ Level 1:Initial
○ Level2:Repeatable
○ Level3:Defined
○ Level4:Managed
○ Level5:Optimizing
Capability Maturity Model(CMM)
● Level1 :Initial
● Software development organization at this level is characterized by ad hoc activities.
● Very few process are defined.
● Since software production processes are not defined, different engineers follow their own processes and
as a result the result become chaotic.
● The success of projects depends on individual efforts.
● Level2:Repeatable
■ At this level, the basic project management practices such as tracking cost, schedule and functionality are
established
■ Size and cost estimation techniques like function point analysis, COCOMO etc. are used
■ The necessary process discipline is in place to repeat earlier successes on projects with similar applications.
● Level 3:Defined
■ At this level ,the processes for both management and development activities are defined and documented and
integrated into an organization wide software process.
■ All projects use a documented and approved version of the organization’s process for developing and
supporting software
■ This level will include all characteristics defined for Level2
■ Though the processes are defined ,the quality of process and product are not measured
● Level 4:Managed
■ At this level, the quality of the software process and product are measured
■ Both the software process and products are quantitatively understood and controlled using detailed measures.
■ This level includes the characteristics defined for level 3
● Level5:Optimizing
○ At this level, the statistics collected from the process and product measurements are analyzed for continuous
Capability Maturity Model(CMM)
● The SEI has associated key process areas with each of maturity levels:
● The KPAs describe those software engineering functions(e.g. software project planning ,requirements
management)that must be present to satisfy good practice at particular levels.
● Each KPA is described by identifying the following characteristics:
■ Goal-overall objective that the KPA must achieve
■ Commitments-requirements that must be met to achieve the goals or provide proof of intent to comply
with the goals
■ Abilities-those things that must be in place to enable the organization to meet the commitments.
■ Activities-the specific tasks required to achieve the KPA function
■ Methods for monitoring implementation-the manner in which the activities are monitored as they are
put into place
■ Methods for verifying implementation-the manner in which proper practice for the KPA can be
verified
● The following KPAs should be achieved at each process maturity levels:
● Process maturity Level2
■ Software configuration management
■ Software quality assurance
■ Software subcontract management
■ Software project tracking and oversight
■ Software project planning
■ Requirement management
Capability Maturity Model(CMM)
● Process maturity level 3
■ Peer reviews
■ Intergroup co-ordination
■ Software product engineering
■ Integrated software management
■ Training program
■ Organization process definition
■ Organization process focus
● Process maturity level 4
■ Software quality management
■ Quantitative process management
● Process maturity level 5
■ Process change management
■ Technology change and management
■ Defect prevention

Introduction to Software Engineering

  • 1.
  • 2.
    Programs Vs SoftwareProducts Programs Software Developed by individuals for personal use Developed by a group of engineers Small in size and limited functionality Large in size, not only contains programs but also the associated documents, such as user manuals, design documents etc. Author himself uses and maintains his programs ,so they lack good user interface and proper documentation Have multiple users, so they need good user interface, proper user’s manual and good documentation support. Does not follow a systematic approach Systematically designed , carefully implemented and thoroughly tested Written by a programmer Developed by a group of software engineers
  • 3.
    What is Software? ●The product that software professionals build and then support over the long term. ● Software encompasses: ○ instructions (computer programs) that when executed provide desired features, function, and performance; ○ data structures that enable the programs to adequately store and manipulate information and ○ documentation that describes the operation and use of the programs.
  • 4.
    Software Characteristics ● Softwareis a logical rather than a physical system element ● Three characteristics of software that makes it different from hardware: 1.Software is developed or Engineered, it is not manufactured in the classical sense. 2.Software doesn’t “wear out”. 3.Although the industry is moving toward component-based assembly, most software continues to be custom built
  • 5.
    1.Software is developedor Engineered, it is not manufactured in the classical sense. ● Software development and hardware manufacturing are fundamentally different. ● In both ,high quality is achieved through good design ● For hardware, manufacturing phase can introduce quality problems that are non-existent (or easily corrected )for software. ● Both activities require the construction of a product, but approaches are different.
  • 6.
    2.Software doesn’t “wearout”. • The failure rate of a hardware as a function of time is shown in fig. (usually called “bathtub curve”)
  • 7.
    2.Software doesn’t “wearout”. ● Hardware exhibits relatively high failure rate early in its time(design or manufacturing defects) ● Defects are corrected and failure rate drops to a steady-state level for some period ● As time passes ,the failure rate rises again as hardware components suffer from the cumulative effects of dust, vibration, abuse, temperature extremes and many other environmental maladies. ● Hardware begins to wear out. ● But software is not affected by the environmental maladies.
  • 8.
    2.Software doesn’t “wearout”. ● The failure curve for software is shown below
  • 9.
    2.Software doesn’t “wearout”. ● It takes the form of an idealized curve. ● Undiscovered defects will cause high failure rates early in the life of a program. ● These are corrected and the curve flattens ● Software doesn’t wear out ,but it does deteriorate. ● The actual curve is formed. ● During its life, software will undergo change causing the failure rate curve to spike. ● Before the curve return to original steady-state ,if another change is requested ,then the curve will spike again. ● The minimum failure rate level begins to rise.
  • 10.
    3.Although the industryis moving toward component-based assembly, most software continues to be custom built ○ Building computer-based hardware includes : ■ Design engineer draws a simple schematic of the the digital circuitry ■ Make a fundamental analysis ■ Select the components from the shelf ○ These components are reusable, and in hardware components reuse is common. ○ In software world, it is rare. ○ A software component must be designed and implemented so that it can be reused in many different programs. ● Modern reusable components encapsulate both data and the processing that is applied to the data ● It enables the software engineer to create new applications from reusable parts. ● E.g. User interfaces are built with reusable components that enable the
  • 11.
    Classification of ComputerSoftware ● Broadly classified into seven categories: ● 1.System software ■ Collection of programs written to service other programs. ■ Characterized by heavy interaction with computer hardware. ■ E.g. compilers, editors, operating system etc. ● 2.Application software ■ Consists of standalone programs that solve a specific business need ■ E.g. Word processors, database, power point ● 3.Engineering/Scientific software ■ Software that are used for scientific calculations ■ E.g. CAD,CAM ● 4.Embedded software ■ Resides within a product or system and is used to implement and control features and functions for the end-user and for the system itself ■ Can perform limited functions ■ E.g. software in microwave, washing machine etc. ● 5.Product-line software ■ Designed to provide a specific capability for use by many different customers. ■ E.g. Inventory control products ● 6.Web applications ■ Software that are used in accessing a website ■ E.g. Web Browser ● 7.Artificial Intelligence ■ AI software make use of non-numerical algorithms to solve complex problems. ● E.g. robotics, expert system, ANN etc.
  • 12.
    Software Engineering ● Definition: ●Software Engineering is the establishment and use of sound engineering principles in- order to obtain economically that is reliable and works efficiently on real machines or ● Software engineering :1)The application of a systematic ,disciplined ,quantifiable approach to the development, operation and maintenance of software;2)The study of approaches as in (1)
  • 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. ● It is usually cheaper, 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.
  • 15.
    Software Engineering-A Layered Technology ●Any engineering approach must rest on organizational commitment to quality which fosters a continuous process improvement culture. The bedrock that supports software engineering is a quality focus. ● Process ○ acts as the foundation for software engineering ○ defines a framework with activities(Key Process Areas)that must be established for effective delivery of software engineering technology. ○ The KPAs forms the basis for management control of software projects ● 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. ○ When tools are integrated so that information created by one tool can be used by another ,a system for the support of software development called Computer -Aided software Engineering (CASE) is established
  • 16.
    A Generic Viewof Software Engineering ● Engineering is the analysis ,design ,construction ,verification and management of technical or social entities. ● Some questions to be answered: ○ What is the problem to be solved? ○ What characteristics of the entity are used to solve the problem? ○ How will the entity and the solution be realized? ○ How will the entity be constructed? ○ What approach will be used to uncover errors that were made in the design and construction of the entity? ○ How will the entity be supported over the long term ,when corrections, adaptations and enhancements are requested by users of the entity?
  • 17.
    Phases in SoftwareDevelopment ● Three generic in software development: ■ Definition phase ■ Development phase ■ Maintenance phase ● Definition phase ■ Focuses on “what” ■ i.e. during definition the software developer attempts to identify: ● What information is to be processed ● What function and performance are desired ● What system behavior can be expected ● What design constraints exists ● What validation criteria are required to define a successful system ● ● Three major tasks ○ System or information engineering ○ Software project planning ○ Requirement analysis ●
  • 18.
    Phases in SoftwareDevelopment ● Development phase ● Focuses on how ● i.e during this phase the developer attempts to define ○ How data can be structured ○ How functions is to be implemented as a software architecture ○ How procedural details are to be implemented ○ How the interfaces can be characterized ○ How the design will be translated into programming language or non-procedural language ○ How testing will be performed ● Three specific tasks ○ Software design ○ Code generation ○ Software testing
  • 19.
    Phases in SoftwareDevelopment ● Maintenance phase ● Focuses on change, that is associated with error correction ,adaptations as the software's environment evolves and changes due to enhancements brought about by changing requirements ● Reapplies the steps of the definition and development phase, but is done in the context of existing software ● Four types of changes are encountered during the maintenance phase: ■ Correction ■ Adaptation ■ Enhancement ■ Prevention ○ Correction: ● Even with best quality assurance activities ,it is likely that the customer will uncover defects in the software. ● Corrective maintenance changes the software to correct defects ○ Adaptation: ■ As time passes, the original environment (e.g. CPU, OS, Business rules, external product characteristics)for which the software was developed is likely to change ■ Adaptive maintenance results in the modification to the software to accommodate changes to its external environment.
  • 20.
    Phases in SoftwareDevelopment ○ Enhancement: ■ As software is used ,the customer /user will recognize additional functions that will provide benefit. ■ Perfective maintenance extend the software beyond its original functional requirements ○ Prevention: ■ Computer software deteriorates due to change ■ Because of this , preventive maintenance ,often called software re-engineering, must be conducted to serve the needs of its end users ■ Preventive maintenance makes changes to computer programs so that they can easily corrected, adapted and enhanced
  • 21.
    Umbrella Activities ● Thephases and related steps in software engineering are complimented by a number of umbrella activities: ○ Software project tracking and control: assess progress against the plan and take actions to maintain the schedule. ○ Risk management: assesses risks that may affect the outcome and quality. ○ Software quality assurance: defines and conduct activities to ensure quality. ○ Formal Technical reviews: assesses work products to uncover and remove errors before going to the next activity. ○ Measurement: define and collects process, project, and product measures to ensure stakeholder’s needs are met. ○ Software configuration management: manage the effects of change throughout the software process. ○ Reusability management: defines criteria for work product reuse and establishes mechanism to achieve reusable components. ○ Work product preparation and production: create work products such as models, documents, logs, forms and lists.
  • 22.
    The Software Process ●Software development includes a series of predictable steps-known as software process. ● A software process can be characterized as shown in fig.
  • 23.
    The Software Process ●A common process framework is established by defining a small number of framework activities that are applicable to all software projects, regardless of their size or complexity ● A number of task sets-each a collection of software engineering work tasks, project milestones, work products and quality assurance points are defined. ● These task sets enable the framework activities to be adapted to the characteristics of the software project and the requirement of the project team. ● Umbrella activities –such as software quality assurance ,software configuration management and measurement-overlay the process model ● Umbrella activities are independent of any one framework activity and occur throughout the process.
  • 24.
    Process Maturity ● Thereare a number of software process assessment mechanisms that enable organizations to determine the ‘maturity’ of a software process . ● The Software Engineering Institute (SEI) has developed a comprehensive model predicted on a set of software engineering capabilities that should be present as organizations reach different levels of process maturity ● To determine an organization’s current state of process maturity, SEI uses an assessment that results in a five point grading scheme ● Capability Maturity Model(CMM) defines key activities required at different levels of process maturity. ○ Level 1:Initial ○ Level2:Repeatable ○ Level3:Defined ○ Level4:Managed ○ Level5:Optimizing
  • 25.
    Capability Maturity Model(CMM) ●Level1 :Initial ● Software development organization at this level is characterized by ad hoc activities. ● Very few process are defined. ● Since software production processes are not defined, different engineers follow their own processes and as a result the result become chaotic. ● The success of projects depends on individual efforts. ● Level2:Repeatable ■ At this level, the basic project management practices such as tracking cost, schedule and functionality are established ■ Size and cost estimation techniques like function point analysis, COCOMO etc. are used ■ The necessary process discipline is in place to repeat earlier successes on projects with similar applications. ● Level 3:Defined ■ At this level ,the processes for both management and development activities are defined and documented and integrated into an organization wide software process. ■ All projects use a documented and approved version of the organization’s process for developing and supporting software ■ This level will include all characteristics defined for Level2 ■ Though the processes are defined ,the quality of process and product are not measured ● Level 4:Managed ■ At this level, the quality of the software process and product are measured ■ Both the software process and products are quantitatively understood and controlled using detailed measures. ■ This level includes the characteristics defined for level 3 ● Level5:Optimizing ○ At this level, the statistics collected from the process and product measurements are analyzed for continuous
  • 26.
    Capability Maturity Model(CMM) ●The SEI has associated key process areas with each of maturity levels: ● The KPAs describe those software engineering functions(e.g. software project planning ,requirements management)that must be present to satisfy good practice at particular levels. ● Each KPA is described by identifying the following characteristics: ■ Goal-overall objective that the KPA must achieve ■ Commitments-requirements that must be met to achieve the goals or provide proof of intent to comply with the goals ■ Abilities-those things that must be in place to enable the organization to meet the commitments. ■ Activities-the specific tasks required to achieve the KPA function ■ Methods for monitoring implementation-the manner in which the activities are monitored as they are put into place ■ Methods for verifying implementation-the manner in which proper practice for the KPA can be verified ● The following KPAs should be achieved at each process maturity levels: ● Process maturity Level2 ■ Software configuration management ■ Software quality assurance ■ Software subcontract management ■ Software project tracking and oversight ■ Software project planning ■ Requirement management
  • 27.
    Capability Maturity Model(CMM) ●Process maturity level 3 ■ Peer reviews ■ Intergroup co-ordination ■ Software product engineering ■ Integrated software management ■ Training program ■ Organization process definition ■ Organization process focus ● Process maturity level 4 ■ Software quality management ■ Quantitative process management ● Process maturity level 5 ■ Process change management ■ Technology change and management ■ Defect prevention