SOFTWARE ENGINEERING
UNIT I
SOFTWARE
Software is defined as
Instructions
-Programs that when executed provide desired function
Data structures
-Enable the programs to adequately manipulate information
Documents
-Describe the operation and use of the programs.
Definition of Engineering
-Application of science, tools and methods to find cost effective solution to problems
Definition of SOFTWARE ENGINEERING
Software engineering is the application of engineering to the development
of software in a systematic method.
-SE is defined as systematic, disciplined and quantifiable approach for the
development, operation and maintenance of software
Software is the set of instructions encompasses programs that execute within a
computer of any size and architecture, documents that encompass hard-copy
and virtual forms, and data that combine numbers and text. It also includes
representations of pictorial, video, and audio information. Software engineers
can build the software and virtually everyone in the industrialized world uses it
either directly or indirectly. It is so important because it affects nearly every
aspect of our lives and has become pervasive in our commerce, our culture,
and our everyday activities. The steps to build the computer software is as the
user would like to build any successful product, by applying a process that
leads to a high-quality result that meets the needs of the people who will use
the product. From the software engineer’s view, the product is may be the
programs, documents, and data that are computer software. But from the
user’s viewpoint, the product is the resultant information that somehow makes
the user’s world better. Software’s impact on the society and culture continues
to be profound. As its importance grows, the software community continually
attempts to develop technologies that will make it easier, faster, and less
expensive to build high-quality computer programs. Some of these technologies
are targeted at a specific application domain like web-site design and
implementation; others focus on a technology domain such as object oriented
systems and still others are broad-based like operating systems such as
LINUX.
,However, a software technology has to develop useful information. The
technology encompasses a process, a set of methods, and an array of tools
called as software engineering.
A GENERIC VIEW OF PROCESS–A LAYERED TECHNOLOGY
Software engineering encompasses a process, the management of activities,
technical methods, and use of tools to develop software products.
Fritz Bauer defined Software engineering as the “establishment and use of
sound engineering principles in order to obtain economically software that is
reliable and works efficiently on real machines. “
IEEE definition of 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).
We need discipline but we also need adaptability and agility.
Software Engineering is a layered technology as shown below. Any
engineering approach must rest on an organizational commitment to quality.
The bedrock that supports software engineering is a quality focus.
The foundation for S/W eng is the process layer. It is the glue that holds the
technology layers together and enables rational and timely development of
computer S/W.
Process defines a framework that must be established for effective delivery of
S/W eng technology.
The software process forms the basis for management control of software
projects and establishes the context in which technical methods are applied,
work products (models, documents, data, reports, etc.) are produced,
milestones are established, quality is ensured, and change is properly
managed.
S/W eng methods provide the technical “how to’s” for building S/W. Methods
encompass a broad array of tasks that include communication, req. analysis,
design, coding, testing and support.
S/W eng tools provide automated or semi-automated support for the process
and the methods.
,When tools are integrated so that info. Created by one tool can be used by
another, a system for the support of S/W development called computer-aided
software engineering is established.
Figure1. Generic View of Process
A PROCESS FRAMEWORK
Software process models can be prescriptive or agile, complex or simple,
all-encompassing or targeted, but in every case, five key activities must occur.
The framework activities are applicable to all projects and all application
domains, and they are a template for every process model.
, Each framework activity is populated by a set of S/W eng actions –a collection
of related tasks that produces a major S/W eng work product (design is a S/W
eng action). Each action is populated with individual work tasks that
accomplish some part of the work implied by the action.
The following generic process framework is applicable to the vast majority of
S/W projects.
Communication: involves heavy communication with the customer (and
other stakeholders) and encompasses requirements gathering.
Planning: Describes the technical tasks to be conducted, the risks that are
likely, resources that will be required, the work products to be produced and a
work schedule.
Modeling: encompasses the creation of models that allow the developer and
customer to better understand S/W req. and the design that will achieve those
req.
Construction: combines code generation and the testing required uncovering
errors in the code.
Deployment: deliver the product to the customer who evaluates the delivered
product and provides feedback.
Each S/W eng action is represented by a number of different task sets –each a
collection of S/W eng work tasks, related work products, quality assurance
points, and project milestones.
The task set that best accommodates the needs of the project and the
characteristics of the team is chosen.
The framework described in the generic view of S/W eng is complemented by a
number of umbrella activities. Typical activities include:
S/W project tracking and control: allows the team to assess progress
against the project plan and take necessary action to maintain schedule.
Risk Management: Assesses the risks that may affect the outcome of the
project or the quality.
Software quality assurance: defines and conducts the activities required to
ensure software quality.
Formal Technical Review: uncover and remove errors before they propagate
to the next action.
Measurement: defines and collects process, project, and product measures
that assist the team in delivering S/W that meets customers’ needs.
Software configuration management: Manages the effect of change
throughout the S/W process
Reusability management: defines criteria for work product reuse.
Work product preparation and production: encompasses the activities
required to create work products such as models, documents, etc.
UNIT I
SOFTWARE
Software is defined as
Instructions
-Programs that when executed provide desired function
Data structures
-Enable the programs to adequately manipulate information
Documents
-Describe the operation and use of the programs.
Definition of Engineering
-Application of science, tools and methods to find cost effective solution to problems
Definition of SOFTWARE ENGINEERING
Software engineering is the application of engineering to the development
of software in a systematic method.
-SE is defined as systematic, disciplined and quantifiable approach for the
development, operation and maintenance of software
Software is the set of instructions encompasses programs that execute within a
computer of any size and architecture, documents that encompass hard-copy
and virtual forms, and data that combine numbers and text. It also includes
representations of pictorial, video, and audio information. Software engineers
can build the software and virtually everyone in the industrialized world uses it
either directly or indirectly. It is so important because it affects nearly every
aspect of our lives and has become pervasive in our commerce, our culture,
and our everyday activities. The steps to build the computer software is as the
user would like to build any successful product, by applying a process that
leads to a high-quality result that meets the needs of the people who will use
the product. From the software engineer’s view, the product is may be the
programs, documents, and data that are computer software. But from the
user’s viewpoint, the product is the resultant information that somehow makes
the user’s world better. Software’s impact on the society and culture continues
to be profound. As its importance grows, the software community continually
attempts to develop technologies that will make it easier, faster, and less
expensive to build high-quality computer programs. Some of these technologies
are targeted at a specific application domain like web-site design and
implementation; others focus on a technology domain such as object oriented
systems and still others are broad-based like operating systems such as
LINUX.
,However, a software technology has to develop useful information. The
technology encompasses a process, a set of methods, and an array of tools
called as software engineering.
A GENERIC VIEW OF PROCESS–A LAYERED TECHNOLOGY
Software engineering encompasses a process, the management of activities,
technical methods, and use of tools to develop software products.
Fritz Bauer defined Software engineering as the “establishment and use of
sound engineering principles in order to obtain economically software that is
reliable and works efficiently on real machines. “
IEEE definition of 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).
We need discipline but we also need adaptability and agility.
Software Engineering is a layered technology as shown below. Any
engineering approach must rest on an organizational commitment to quality.
The bedrock that supports software engineering is a quality focus.
The foundation for S/W eng is the process layer. It is the glue that holds the
technology layers together and enables rational and timely development of
computer S/W.
Process defines a framework that must be established for effective delivery of
S/W eng technology.
The software process forms the basis for management control of software
projects and establishes the context in which technical methods are applied,
work products (models, documents, data, reports, etc.) are produced,
milestones are established, quality is ensured, and change is properly
managed.
S/W eng methods provide the technical “how to’s” for building S/W. Methods
encompass a broad array of tasks that include communication, req. analysis,
design, coding, testing and support.
S/W eng tools provide automated or semi-automated support for the process
and the methods.
,When tools are integrated so that info. Created by one tool can be used by
another, a system for the support of S/W development called computer-aided
software engineering is established.
Figure1. Generic View of Process
A PROCESS FRAMEWORK
Software process models can be prescriptive or agile, complex or simple,
all-encompassing or targeted, but in every case, five key activities must occur.
The framework activities are applicable to all projects and all application
domains, and they are a template for every process model.
, Each framework activity is populated by a set of S/W eng actions –a collection
of related tasks that produces a major S/W eng work product (design is a S/W
eng action). Each action is populated with individual work tasks that
accomplish some part of the work implied by the action.
The following generic process framework is applicable to the vast majority of
S/W projects.
Communication: involves heavy communication with the customer (and
other stakeholders) and encompasses requirements gathering.
Planning: Describes the technical tasks to be conducted, the risks that are
likely, resources that will be required, the work products to be produced and a
work schedule.
Modeling: encompasses the creation of models that allow the developer and
customer to better understand S/W req. and the design that will achieve those
req.
Construction: combines code generation and the testing required uncovering
errors in the code.
Deployment: deliver the product to the customer who evaluates the delivered
product and provides feedback.
Each S/W eng action is represented by a number of different task sets –each a
collection of S/W eng work tasks, related work products, quality assurance
points, and project milestones.
The task set that best accommodates the needs of the project and the
characteristics of the team is chosen.
The framework described in the generic view of S/W eng is complemented by a
number of umbrella activities. Typical activities include:
S/W project tracking and control: allows the team to assess progress
against the project plan and take necessary action to maintain schedule.
Risk Management: Assesses the risks that may affect the outcome of the
project or the quality.
Software quality assurance: defines and conducts the activities required to
ensure software quality.
Formal Technical Review: uncover and remove errors before they propagate
to the next action.
Measurement: defines and collects process, project, and product measures
that assist the team in delivering S/W that meets customers’ needs.
Software configuration management: Manages the effect of change
throughout the S/W process
Reusability management: defines criteria for work product reuse.
Work product preparation and production: encompasses the activities
required to create work products such as models, documents, etc.