0% found this document useful (0 votes)
9 views21 pages

Oose Unit I

The document provides an overview of Object Oriented Software Engineering, focusing on software processes and agile development methodologies. It discusses various software types, the layered technology of software engineering, and outlines a structured software process framework that includes activities such as communication, planning, modeling, construction, and deployment. Additionally, it covers different process models, including prescriptive, incremental, and evolutionary models, highlighting their characteristics and applications in software development.

Uploaded by

thangs_74
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views21 pages

Oose Unit I

The document provides an overview of Object Oriented Software Engineering, focusing on software processes and agile development methodologies. It discusses various software types, the layered technology of software engineering, and outlines a structured software process framework that includes activities such as communication, planning, modeling, construction, and deployment. Additionally, it covers different process models, including prescriptive, incremental, and evolutionary models, highlighting their characteristics and applications in software development.

Uploaded by

thangs_74
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 21

lOMoARcPSD|35378714

OOSE - unit I

Object oriented software Engineering (Anna University)

Scan to open on Studocu

Studocu is not sponsored or endorsed by any college or university


Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)
lOMoARcPSD|35378714

UNIT I SOFTWARE PROCESS AND AGILE DEVELOPMENT

Introduction to Software Engineering, Software Process, Perspective and Specialized Process Models
–Introduction to Agility-Agile process-Extreme programming-XP Process.

INTRODUCTION TO SOFTWARE ENGINEERING

Software is: (1) instructions (computer programs) that when executed provide desired
features, function, and performance; (2) data structures that enable the programs to adequately
manipulate information and (3) documentation that describes the operation and use of the programs.

 Software is developed or engineered; it is not manufactured in the classical sense.

 Software doesn't "wear out."

Although the industry is moving toward component-based construction, most software


continues to be custom-built.

Software Applications

System Software

A collection of programs written to service other programs. Some system software


(e.g., compilers, editors, and file management utilities)

Application Software

Stand-alone programs that solve a specific business need.

Engineering/Scientific Software

It has been characterized by ―number crunching algorithms. Applications range


from astronomy to volcanology,from automotive stress analysis to space shuttle orbital
dynamics, and from molecular biology to automated manufacturing.

1
CS8494 SOFTWARE ENGINEERING

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)


lOMoARcPSD|35378714

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.

Product-Line Software

Designed to provide a specific capability for use by many different customers.

WebApps (Web applications)

called ―WebApps,this network-centric software category spans a wide array of


-
applications. WebApps are evolving into sophisticated computing environments that not
only provide stand-alone features, computing functions, and content to the end user, but
also are integrated with corporate databases and business applications.

Artificial Intelligence (AI) software


makes use of non-numerical algorithms to solve complex problems that are not
-
amenable to computation or straight forward analysis. Applications within this area
include robotics, expert systems, pattern recognition (image and voice), artificial neural
networks, theorem proving, and game playing.

Software—New Categories

Open world computing—pervasive, distributed computing

Ubiquitous computing—wireless networks

Net sourcing—the web as a computing engine

Open source—―freeǁ source code open to the computing community (a blessing, but also a
potential curse!)

Also …

o Data mining

o Grid computing

2
CS8494 SOFTWARE ENGINEERING
Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)
lOMoARcPSD|35378714

o Cognitive machines

o Software for nanotechnologies

SOFTWARE ENGINEERING

Software engineering encompasses a process, a collection of methods and an array of tools


that allow professionals to build high quality computer software.

The seminal definition:

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).

A Layered Technology

The software engineering is a layered technology.

Any engineering approach must rest on an organizational commitment to quality. The


bedrock that supports software engineering is a quality focus.
The foundation for software engineering is the process layer. The software engineering
process defines the framework that must be established for effective delivery of software
engineering technology.

3
CS8494 SOFTWARE ENGINEERING

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)


lOMoARcPSD|35378714

 Software engineering methods provide the technical how-to’s for building software.
Methods encompass a broad array of tasks that include communication, requirement
analysis, design modeling, program construction, testing and other descriptive techniques.
 Software engineering tools provide automated or semi automated support for the process
and the methods. When tools are integrated so that information created by one tool can be
used by another, a system for the support or software development called computer aided
software engineering is established.

THE SOFTWARE PROCESS

A process is a collection of activities, actions and tasks that are performed when some work
product is to be created. An activity strives to achieve a broad objective (e.g. communication
with stakeholders). An action (e.g. architectural design) encompasses a set of tasks that produce
a major work product (e.g. architectural design model). A task focuses on a small but well
defined objective (e.g., conducting a unit test) that produces a tangible outcome.

Process Framework

A process framework establishes the foundation for a complete software engineering


process by identifying a small number of framework activities that are applicable to all software
projects.

Framework Activities

 Communication-Before starting any technical work, it is important to communicate and


collaborate with the customer (and other stakeholders). The intent is to understand
stakeholder’s objectives for the project and to gather requirements that help to define
software features and functions.

 Planning - A software project plan also called map (guide the journey) —defines the
software engineering work by describing the technical tasks to be conducted, the risks that
are likely, the resources that will be required, the work products to be produced, and a work
schedule.

4
CS8464 SOFTWARE ENGINEERING

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)


lOMoARcPSD|35378714

 Modeling - creating a ―sketchǁ of the thing so that it can be understood—what it will look
like architecturally, how the constituent parts fit together, and many other characteristics.
This can be done by the following:

o Analysis of requirements

o Design

 Construction -This activity combines code generation (either manual or automated) and the
testing that is required to uncover errors in the code.

 Deployment-The software (as a complete entity or as a partially completed increment) is


delivered to the customer who evaluates the delivered product and provides feedback based
on the evaluation.

In addition, the process framework encompasses a set of umbrella activities that are
applicable across the entire software process.

Umbrella Activities

 Software project management -allows the software team to assess progress against the
project plan and take any necessary action to maintain the schedule.

 Formal technical reviews -assesses software engineering work products in an effort to


uncover and remove errors before they are propagated to the next activity

 Software quality assurance - defines and conducts the activities required to ensure
software quality.

 Software configuration management- manages the effects of change throughout the


software process.

 Work product preparation and production - encompasses the activities required to create
work products such as models, documents, logs, forms, and lists.

 Reusability management -defines criteria for work product reuse (including software
components) and establishes mechanisms to achieve reusable components.

5
CS8494 SOFTWARE ENGINEERING

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)


lOMoARcPSD|35378714

 Measurement - defines and collects process, project, and product measures that assist the
team in delivering software that meets stakeholder’s needs.

 Risk management -assesses risks that may affect the outcome of the project or the quality
of the product.

PERSPECTIVE AND SPECIALIZED PROCESS MODELS

A Process Model

A process was defined as a collection of work activities, actions, and tasks that are
performed when some work product is to be created. Each of these activities, actions, and tasks
reside within a framework or model that defines their relationship with the process and with one
another.
Each software engineering action is defined by a task set that identifies the work tasks that are
to be completed, the work products that will be produced, the quality assurance points that will be
required, and the milestones that will be used to indicate progress.
A generic process framework for software engineering defines five framework activities—
communication, planning, modeling, construction, and deployment. In addition, a set of
umbrella activities—project tracking and control, risk management, quality assurance,
configuration management, technical reviews, and others—are applied throughout the process.

A process flow

A process flow describes how the framework activities and the actions and tasks that occur
within each framework activity are organized with respect to sequence and time.

A linear process flow executes each of the five framework activities in sequence, beginning with
communication and culminating with deployment (Figure a).
An iterative process flow repeats one or more of the activities before proceeding to the next
(Figure .b)
An evolutionary process flow executes the activities in a ―circularmanner. Each circuit through
the five activities leads to a more complete version of the software (Figure c).

6
CS8494 SOFTWARE ENGINEERING

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)


lOMoARcPSD|35378714

A parallel process flow (Figure d) executes one or more activities in parallel with other activities
(e.g., modeling for one aspect of thesoftware might be executed in parallel with construction of
another aspect of the software).

7
CS8494 SOFTWARE ENGINEERING

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)


lOMoARcPSD|35378714

Task Set

A task set defines the actual work to be done to accomplish the objectives of software
engineering action. For example, elicitation (more commonly called ―requirements gatheringǁ) is an
important software engineering action that occurs during the communication activity. The goal of
a requirement gathering is to understand what various stakeholders want from the software that is to
be built.

The software process is represented schematically in the following figure.

8
CS8494 SOFTWARE ENGINEERING

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)


lOMoARcPSD|35378714

PRESCRIPTIVE PROCESS MODELS

Prescriptive process models were originally proposed to bring order to the chaos of software
development. History has indicated that these traditional models have brought a certain amount of
useful structure to software engineering work and have provided a reasonably effective road map
for software teams. The term ―prescriptiveǁ is used because they prescribe a set of process
elements—framework activities, software engineering actions, tasks, work products, quality
assurance, and change control mechanisms for each project. Each process model also prescribes a
process flow (also called a work flow)—that is, the manner in which the process elements are
interrelated to one another.

The Waterfall Model

The waterfall model, sometimes called the classic life cycle, suggests a systematic,
sequential approach to software development that begins with customer specification of
requirements and progresses through planning, modeling, construction, and deployment,
culminating in ongoing support of the completed software

A variation in the representation of the waterfall model is called the V-model and it is represented
in the following figure. The V-model depicts the relationship of quality assurance actions to the
actions associated with communication, modeling, and early construction activities. As software
team moves down the left side of the V, basic problem requirements are refined into progressively
more detailed and technical representations of the problem and its solution. Once code has been
generated, the team moves up the right side of the V, essentially performing a series of tests
(Quality assurance actions) that validate each of the models created as the team moved down the
left side.

9
CS8494 SOFTWARE ENGINEERING

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)


lOMoARcPSD|35378714

The waterfall model is the oldest paradigm for software engineering. The problems that are
sometimes encountered when the waterfall model is applied are:
1. Real projects rarely follow the sequential flow that the model proposes. Although the linear
model can accommodate iteration, it does so indirectly. As a result, changes can cause
confusion as the project team proceeds.
2. It is often difficult for the customer to state all requirements explicitly. The waterfall model
requires this and it cause great difficulty at the beginning of many projects.
3. The customer must have patience. A working version of the program(s) will not be available
until late in the project time span. A major blunder, if undetected until the working program is
reviewed, can be unsuccessful.
The linear nature of the classic life cycle leads to ―blocking statesǁ in which some project
team members must wait for other members of the team to complete dependent tasks.

Incremental Process Models


The incremental model combines elements of linear and parallel process. The incremental
model applies linear sequences in a spread out fashion as calendar time progresses. Each linear
sequence produces deliverable ―incrementsǁ of the software in a manner that is similar to the
increments produced by an evolutionary process flow.

10
CS8494 SOFTWARE ENGINEERING

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)


lOMoARcPSD|35378714

When an incremental model is used, the first increment is often a core product. That is,
basic requirements are addressed but many supplementary features remain undelivered. The core
product is used by the customer. As a result of use and/or evaluation, a plan is developed for the
next increment. The plan addresses the modification of the core product to better meet the needs of
the customer and the delivery of additional features and functionality. This process is repeated
following the delivery of each increment, until the complete product is produced.
Incremental development is particularly useful when staffing is unavailable for a complete
implementation by the business deadline that has been established for the project. Early increments
can be implemented with fewer people. If the core product is well received, then additional staff can
be added to implement the next increment.

Evolutionary Process Models


Evolutionary models are iterative. They enable the development of more complete versions
of the software. Two common evolutionary process models are as follows
1. Prototyping.
2. The Spiral Model
Prototyping
The prototyping paradigm helps the stakeholders to better understand what is to be built
when requirements are fuzzy. The prototyping paradigm begins with communication. A prototyping

11
CS8494 SOFTWARE ENGINEERING

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)


lOMoARcPSD|35378714

iteration is planned quickly based on the requirements, and modeling (in the form of a ―quick
designǁ) occurs. A quick design focuses on a representation of those aspects of the software
that will be visible to end users (e.g., human interface layout or output display formats). The quick
design leads to the construction of a prototype. The prototype is deployed and evaluated by
stakeholders, who provide feedback that is used to further refine requirements. Iteration occurs as
the prototype is tuned to satisfy the needs of various stakeholders. Ideally, the prototype serves as a
mechanism for identifying software requirements.

Both stakeholders and software engineers like the prototyping paradigm. Users get a feel for the
actual system, and developers get to build something immediately.

Advantages of Prototyping Model:


When prototype is shown to the user, he gets a proper clarity and 'feel' of the functionality
 of the software and he can suggest changes and modifications.
When client is not confident about the developer's capabilities, he asks for a small prototype
 to be built. Based on this model, he judges capabilities of developer.
Sometimes it helps to demonstrate the concept to prospective investors to get funding for
 project.
It reduces risk of failure, as potential risks can be identified early and mitigation steps can

be taken.
12
CS8494 SOFTWARE ENGINEERING
Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)
lOMoARcPSD|35378714

Iteration between development team and client provides a very good and conductive

environment during project.

Prototyping can be problematic for the following reasons:

Prototyping is usually done at the cost of the developer. So it should be done using minimal

resources.
Once we get proper requirements from client after showing prototype model, it may be of no

use. That is why; sometimes it is referred as "Throw-away" prototype.
It is a slow process.

Too much involvement of client is not always preferred by the developer.

Too many changes can disturb the rhythm of the development team.

The Spiral Model


It is originally proposed by Barry Boehm. In this evolutionary software process model the
iterative nature of prototyping and the waterfall model concepts are coupled together in systematic
way. It provides the potential for rapid development of increasingly more complete versions of the
software.
Using the spiral model, software is developed in a series of evolutionary releases. During
early iterations, the release might be a model or prototype. During later iterations, increasingly more
complete versions of the engineered system are produced.

13
CS8494 SOFTWARE ENGINEERING
Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)
lOMoARcPSD|35378714

A spiral model is divided into a set of framework activities defined by the software
engineering team. Each of the framework activities represents one segment of the spiral path. As
this evolutionary process begins, the software team performs activities that are implied by a circuit
around the spiral in a clockwise direction, beginning at the center. Risk is considered as each
revolution is made. Anchor point milestones which is a combination of work products and
conditions that are attained along the path of the spiral are noted for each evolutionary pass.
The first circuit around the spiral might result in the development of a product specification;
subsequent passes around the spiral might be used to develop a prototype and then progressively
more sophisticated versions of the software. Each pass through the planning region results in
adjustments to the project plan. Cost and schedule are adjusted based on feedback derived from the
customer after delivery. In addition, the project manager adjusts the planned number of iterations
required to complete the software. Unlike other process models that end when software is delivered,
the spiral model can be adapted to apply throughout the life of the computer software.

Advantages of Spiral Model


Spiral Life Cycle Model is one of the most flexible SDLC models in place.
 Risk management is one of the in-built features of the model, which makes it extra attractive
 compared to other models.
Changes can be introduced later in the life cycle as well.
 Project estimates in terms of schedule, cost etc become more and more realistic as the

project moves forward and loops in spiral get completed.

Disadvantages of Spiral Model

Cost involved in this model is usually high.



Skills required, evaluating and reviewing project from time to time, need expertise.

It is not suitable for low risk projects.

Meeting budgetary and scheduling requirements is tough if this development process is
 followed.
Amount of documentation required in intermediate stages makes management of project

very complex affair.

14
CS8494 SOFTWARE ENGINEERING
Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)
lOMoARcPSD|35378714

Concurrent Models
The concurrent development model, sometimes called concurrent engineering, allows a
software team to represent iterative and concurrent elements of any of the process models. For
example, the modeling activity defined for the spiral model is accomplished by invoking one or
more of the following software engineering actions: prototyping, analysis, and design.

The above figure shows a schematic representation of one software engineering activity
within the modeling activity using a concurrent modeling approach. The activity—modeling—may
be in any one of the states at any given time. Similarly, other activities, actions, or tasks (e.g.,
communication or construction) can be represented in an analogous manner. All software
engineering activities exist concurrently but reside in different states.

15
CS8494 SOFTWARE ENGINEERING

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)


lOMoARcPSD|35378714

Concurrent modeling defines a series of events that will trigger transitions from state to state
for each of the software engineering activities, actions, or tasks. For example, during early stages of
design, an inconsistency in the requirements model is uncovered. This generates the event analysis
model correction, which will trigger the requirements analysis action from the done state into the
awaiting changes state. Concurrent modeling is applicable to all types of software development
and provides an accurate picture of the current state of a project.
The intent of evolutionary models is to develop high-quality software in an iterative or
incremental manner.

SPECIALIZED PROCESS MODELS

Specialized process models takes many of the characteristics of one or more of the
traditional models. These models tend to be applied when a specialized or narrowly defined
software engineering approach is chosen.

 Component-Based Development
The component-based development model incorporates many of the characteristics of the
spiral model. It is evolutionary in nature, demanding an iterative approach to the creation of
software. The component-based development model constructs applications from prepackaged
software components. Modeling and construction activities begin with the identification of
candidate components. These components can be designed as either conventional software modules
or object-oriented classes or packages of classes. The component-based development model
incorporates the following steps (implemented using an evolutionary approach):
1. Available component-based products are researched and evaluated for the application domain in
question.
2. Component integration issues are considered.
3. A software architecture is designed to accommodate the components.
4. Components are integrated into the architecture.
5. Comprehensive testing is conducted to ensure proper functionality.
The component-based development model leads to software reuse, and reusability provides
software engineers with a number of measurable benefits.

16
CS8494 SOFTWARE ENGINEERING

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)


lOMoARcPSD|35378714

The Formal Methods Model

The formal methods model encompasses a set of activities that leads to formal mathematical
specification of computer software. Formal methods enable to specify, develop, and verify a
computer-based system by applying a rigorous, mathematical notation. A variation on this
approach, called clean room software engineering is currently applied by some software
development organizations.
Ambiguity, incompleteness, and inconsistency can be discovered and corrected more
easily—not through ad hoc review, but through the application of mathematical analysis. When
formal methods are used during design, they serve as a basis for program verification and therefore
enable to discover and correct errors that might otherwise go undetected. The formal methods
model offers defect-free software.
o The development of formal models is currently quite time consuming and expensive.
o Because few software developers have the necessary background to apply formal
methods, extensive training is required.
o It is difficult to use the models as a communication mechanism for technically
unsophisticated customers.

 Aspect-Oriented Software Development

Aspect-oriented software development (AOSD) is a new approach to software development


that addresses limitations inherent in other approaches, including object-oriented programming.
AOSD aims to address cross cutting concerns by providing means for systematic identification,
separation, representation and composition. Cross cutting concerns are encapsulated in separate
modules, known as aspects, so that localization can be promoted. This results in better support for
modularization hence reducing development, maintenance and evolution costs.

Aspect-Oriented Component Engineering (AOCE):

AOCE uses a concept of horizontal slices through vertically-decomposed software


components, called ―aspects,ǁ to characterize cross-cutting functional and non-functional properties
of components. Components may provide or require one or more ―aspect detailsǁ relating to a
17
CS8494 SOFTWARE ENGINEERING

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)


lOMoARcPSD|35378714

particular aspect, such as a viewing mechanism, extensible affordance and interface kind (user
interface aspects); event generation, transport and receiving (distribution aspects); data
store/retrieve and indexing (persistency aspects); authentication, encoding and access rights
(security aspects); transaction atomicity, concurrency control and logging strategy (transaction
aspects); and so on.

Aspect-Oriented Programming (AOP):

AOP provides a solution for abstracting cross-cutting code that spans object hierarchies
without functional relevance to the code it spans. Instead of embedding cross-cutting code in
classes, AOP allows to abstract the cross-cutting code into a separate module (known as an aspect)
and then apply the code dynamically where it is needed. Dynamic application of the cross-cutting
code can be achieved by defining specific places (known as point cuts) in object model where
cross-cutting code should be applied. At runtime or compile time, depending on AOP framework,
cross-cutting code is injected at the specified point cuts. Essentially, AOP allows introducing new
functionality into objects without the objects' needing to have any knowledge of that introduction.

What is agility?

 Response to change, effective communication, Drawing customer into the team, incremental delivery of
intermediate products.
 Only essential work products are produced.
 Agility is the ability to both create and respond to change in order to profit in a turbulent business environment
 Companies need to determine the amount of agility they need to be competitive
• Agility is dynamic, content specific, aggressively change embracing, and growth oriented.
When Agile Process needed?
1. Difficult to predict in advance which software requirements will persist and which will change.
2. Difficult to predict how much design is necessary before construction is used to prove the design.
3. Analysis, design, construction, testing are not predictable.

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)


lOMoARcPSD|35378714

Agile Software Development:


• Agile software development is a conceptual framework for software engineering that promotes development
iterations throughout the life-cycle of the project.
• Software developed during one unit of time is referred to as an iteration, which may last from one to four
weeks.
• Agile methods also emphasize working software as the primary measure of progress.
• Characteristics of Agile Software Development
• -- Light Weighted methodology
• -- Small to medium sized teams
• -- vague and/or changing requirements
• -- vague and/or changing techniques
• -- Simple design
• -- Minimal system into production
Advantages:
• Deployment of software is quicker and thus helps in increasing the trust of the customer.
• Can better adapt to rapidly changing requirements and respond faster.
• Helps in getting immediate feedback which can be used to improve the software in the next increment.
• People – Not Process. People and interactions are given a higher priority rather than process and tools.
• Continuous attention to technical excellence and good design.
Disadvantages:
• In case of large software projects, it is difficult to assess the effort required at the initial stages of the
software development life cycle.
• The Agile Development is more code focused and produces less documentation.
• Agile development is heavily depended on the inputs of the customer. If the customer has ambiguity in his
vision of the final outcome, it is highly likely for the project to get off track.

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)


lOMoARcPSD|35378714

Agile Methods:
• Extreme Programming (“XP”)
• Agile Unified Process
• Scrum
Extreme Programming Model:

• Most prominent Agile Software development method


• Prescribes a set of daily stakeholder practices
• “Extreme” levels of practicing leads to more responsive software.
• Changes are more realistic, natural, inescapable.

Downloaded by Dr. Thangavel P (thangsirtt@gmail.com)

You might also like