Oose Unit 1 Notes
Oose Unit 1 Notes
1.1.2 Characteristics
1. Software is developed or engineered and not manufactured.
2. Software doesn't wear out.
3. Although the industry is moving toward component-based construction, most
software continues to be custom built.
Page 1 of 31
1.1.4 Software Myths
Management Myth:
Myth: Is the existing standards and procedures are enough for building software?
Reality: It is not used, not up to date, not complete, not focused on quality, time, and
money Myth: If we are behind the schedule, more programmers can be added to meet
the deadline
Reality: Adding people to a late software project makes it later. Training time,
increased communication lines
Myth: By outsourcing the project to a third party, I can just relax
Reality: Software projects need to be controlled and managed. Outsourced project need
proper support for development
Customer Myth:
Myth: A general objective is enough to begin the code and the details can be filled later
Reality: Ambiguous statement of objectives spells disaster
Myth: Project requirements continuously change, but change can be easily
accommodated because software is flexible
Reality: Impact of change depends on where and when it occurs in the software life
cycle
Practitioner's Myth :
Myth: Once the program is executed then the job is done
Reality: 60% to 80% of all effort expended on software occurs after it is delivered
Myth: The only deliverable work product for a successful project is the working
program
Reality: A working program is only one part of a software configuration that includes
many elements.
Page 2 of 31
1.1.5 Layered Technology
Tools
Methods
Process
A Quality Focus
Process
Methods
Software engineering methods provide the technical how-to’s for building software.
Methods include tasks like communication, requirements analysis, design modeling,
program construction, testing, and support.
Tools
Software engineering tools provide automated support for the process and the methods.
When tools are integrated, the information created by one tool can be used by another
1.2 SOFTWARE PROCESS
A software process is a collection of activities, actions, and tasks that are required to
build high-quality software.
A process defines who is doing what when and how to reach a certain goal.
Page 3 of 31
The aim of software process is effective on-time delivery of software with quality.
1.2.1 Elements of a software Process
Activity:
An activity helps to achieve a broad objective (e.g., communication with stakeholders)
and is applied regardless of the application domain, size, complexity and degree of rigor
with which software engineering is to be applied.
Action
Actions consist of the set of tasks that is used to produce the product.
Task
A task focuses on a small, but well-defined objective that produces a tangible outcome.
Page 4 of 31
Deployment
The software is delivered to the customer, who evaluates the product and provides
feedback based on the evaluation.
Generally, the framework activities are applied iteratively as a project progresses.
Each project iteration produces a software increment that provides stakeholders with a
subset of overall software features and functionality.
As each increment is produced, the software becomes more and more complete.
The Process framework activities are complemented by a number of umbrella activities
which helps to manage and control progress, quality, change, and risk.
Umbrella activities:
Software project tracking and control helps to assess progress against the
project plan and take any necessary action to maintain the schedule.
Risk management assesses risks that may affect the outcome and quality of the
project.
Software quality assurance defines the activities required to ensure software
quality.
Technical reviews assess the products to uncover and remove errors before they
are propagated to the next activity.
Measurement defines and collects process, project, and product measures that
assist the team in delivering software that meets stakeholders’ needs.
Software configuration management manages the effects of change throughout
the software process.
Reusability management defines criteria for work product reuse and establishes
mechanisms to achieve reusable components.
Work product preparation and production encompasses the activities required
to create work products such as models, documents, and lists.
So a process adopted for one project might be significantly different than a process
adopted for another project.
Page 5 of 31
1.3 PROCESS MODEL
SOFTWARE PROCESS
PROCESS FRAMEWORK
UMBRELLA ACTIVITIES
Framework activity #1
Software Engineering action #1.1
Work tasks
Task sets
Work Products
Quality Assurance Points
Project milestones
.
.
Framework activity #n
Software Engineering action #n.1
Work tasks
Work Products
Task sets Quality Assurance Points
Project milestones
Work tasks
Work Products
Quality Assurance Points
Task sets Project milestones
Page 6 of 31
An evolutionary process flow executes the activities in a circular manner.
Each evolution leads to a more complete version of the software.
A parallel process flow executes one or more activities in parallel with other
activities.
Page 7 of 31
For a small software project, the communication activity includes contacting the
stakeholder, discuss the requirements, generate a brief statement of the requirement and
get the review and approval of it from the stakeholder.
For complex Projects, the communication activity might have six distinct actions:
inception, elicitation, elaboration, negotiation, specification, and validation.
1.3.2 Identifying a Task Set
A task set defines the actual work to be done to accomplish the objectives of a software
engineering action.
A list of the task to be accomplished
A list of the work products to be produced
A list of the quality assurance filters to be applied
Eg: For a small project, the task set may include:
Make a list of stakeholders for the project.
Informal meeting with stake holders to identify the functions required
Discuss requirements and build a final list.
Prioritize requirements.
Choose the task sets that achieve the goal and still maintain quality and agility.
Page 8 of 31
3. Phase patterns define the sequence of framework activities that occur with the
process. Eg: Sprial Model or Prototyping
o Initial context - This describes the conditions under which the pattern applies.
o Problem - The specific problem to be solved by the pattern.
o Solution - Describes how to implement the pattern successfully and how the initial
state of the process is modified as a consequence of the initiation of the pattern.
o Resulting Context - Describes the conditions that will result once the pattern has
been successfully implemented.
o Related Patterns - Provide a list of all process patterns that are directly related to
this one. Eg: the stage pattern Communication encompasses the task patterns: Project
Team, Collaborative Guidelines, Scope Isolation, Requirements Gathering, Constraint
Description, and Scenario Creation.
o Known Uses and Examples - Indicate the specific instances in which the pattern is
applicable.
Process patterns provide an effective mechanism for addressing problems associated with
any software process.
After developed the process patterns can be reused for the definition of process variants.
1.4 PRESCRIPTIVE PROCESS MODELS
Prescriptive process models stress detailed definition, identification, and application of
process activities and tasks.
Their intent is to improve system quality, make projects more manageable, make delivery
dates and costs more predictable, and guide teams of software engineers as they perform
the work required to build a system.
Prescriptive Process model
Page 9 of 31
1.4.1 Waterfall Model
This is also referred as classic life cycle or linear - sequential model
It is the oldest paradigm for SE.
This model is used for developing projects where the requirements are well defined and
reasonably stable, it leads to a linear fashion.
Waterfall model suggests a systematic, sequential approach to software development.
Phases:
o Communication: Customer specification of requirements
o Planning - identifying the work task, analysing the risk involved, scheduling the
project and estimating the effort and time needed to complete the project etc
o Modelling which involves translating the requirements gathered into a design
o Construction – converting the design into the executable code and testing to
uncover the errors.
o Deployment includes delivery of the product and evaluation of the software.
Page 10 of 31
tasks. The time spent waiting can exceed the time spent on productive work. The
blocking states tend to be more prevalent at the beginning and end of a linear sequential
process.
It can serve as a useful process model in situations where requirements are fixed and
work is to proceed to completion in a linear manner.
1.4.2 V-Model
A variation of waterfall model is referred as V model which includes the quality
assurance actions associated with communication, modeling and early code construction
activities.
Team first moves down the left side of the V to refine the problem requirements.
Once code is generated, the team moves up the right side of the V, performing a series of
tests that validate each of the models created.
The V-model provides a way of visualizing how verification and validation actions are
applied at the different stages of development.
Fig: V - Model
1.4.3 Incremental Process Models
Incremental models construct a partial implementation of a total system and then slowly
add increased functionality
The incremental model prioritizes requirements of the system and then implements them
in groups.
Page 11 of 31
Each subsequent release of the system adds function to the previous release, until all
designed functionality has been implemented.
It combines elements of both linear and parallel process flows.
Each linear sequence produces deliverable increments of the software.
The first increment is the core product with many supplementary features.
After implementation and 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 includes additional features and functionality.
This process is repeated following the delivery of each increment, until the complete
product is produced.
Page 12 of 31
core product is well received, then additional staff if required can be added to implement
the next increment.
Increments can be planned to manage technical risks.
RAD model is based on prototyping and iterative development with no specific planning
involved.
Different phases of RAD model include
1. Business Modeling
On basis of the flow of information and distribution between various business
channels, the product is designed.
2. Data Modeling
The information collected from business modeling is refined into a set of data
objects that are significant for the business
3. Process Modeling
The data object that is declared in the data modeling phase is transformed to
achieve the information flow necessary to implement a business function
4. Application Generation
Automated tools are used for the construction of the software, to convert process
and data models into prototypes
5. Testing and Turnover
As prototypes are individually tested during every iteration, the overall testing
time is reduced in RAD.
Page 13 of 31
Advantages
Use of reusable components helps to reduce the cycle time of the project.
Encourages user involvement
Reduced cost.
Flexible and adaptable to changes
Disadvantages
For large scalable projects, RAD requires sufficient human resources to create the right
number of RAD teams.
If developers and customers are not committed to the rapid-fire activities, then project
will fail.
Page 14 of 31
If a system cannot properly be modularized, building the components necessary for RAD
will be problematic.
The use of powerful and efficient tools requires highly skilled professionals.
Customer involvement is required throughout the life cycle.
Page 15 of 31
Fig: Prototype model
Phases:
Begins with communication by meeting with stakeholders to define the objective,
identify whatever requirements are known, outline areas where further definition is
necessary.
A quick plan for prototyping and modeling is determined.
Quick design focuses on a representation of those aspects the software that will be
visible to end users.
Design leads to the construction of a prototype which will be deployed and evaluated.
Stakeholder’s comments will be used to refine requirements.
Advantages and Disadvantages of Prototyping:
Prototyping is most useful when there is some uncertainty about requirements or design
solutions.
Because prototyping encourages end-user involvement throughout the systems
development life cycle, it is more likely to produce systems that fulfill user requirements.
If the completed prototype works reasonably well, there is no need for reprogramming
and redesign.
Page 16 of 31
Spiral Model
Spiral model couples the iterative nature of prototyping with the systematic aspects of the
waterfall model
It is a risk-driven process model generator that is used to guide multi-stakeholder
concurrent engineering of software intensive systems.
Two main distinguishing features:
- Cyclic approach for incrementally growing a system’s degree of definition and
implementation while decreasing its degree of risk.
- Set of anchor point milestones for ensuring stakeholder commitment to feasible
and mutually satisfactory system solutions.
A series of evolutionary releases are delivered.
During the early iterations, the release might be a model or prototype. During later
iterations, increasingly more complete version of the engineered system are produced.
The first circuit in the clockwise direction might result in the product specification;
subsequent passes around the spiral might be used to develop a prototype and then
progressively more sophisticated versions of the software.
After each iteration, the project plan has to be refined. Cost and schedule are adjusted
based on feedback. Also, the number of iterations will be adjusted by project manager.
Page 17 of 31
It is difficult to convince customers that it is controllable as it demands considerable risk
assessment expertise.
Three Concerns on Evolutionary Processes
First concern is that prototyping poses a problem to project planning because of the
uncertain number of cycles required to construct the product.
Second, it does not establish the maximum speed of the evolution. If the evolution occurs
too fast, without a period of relaxation, it is certain that the process will fall into chaos.
On the other hand, if the speed is too slow then productivity could be affected.
Third, software processes should be focused on flexibility and extensibility rather than on
high quality. The speed of the development should be prioritized over zero defects.
Extending the development in order to reach high quality could result in a late delivery of
the product when the opportunity niche has disappeared.
For example, communication activity has completed its first iteration and in the awaiting
changes state. The modeling activity was in inactive state, now makes a transition into the
Page 18 of 31
under development state. If customer indicates changes in requirements, the modeling
activity moves from the under development state into the awaiting changes state.
Concurrent modeling is applicable to all types of software development
This provides an accurate picture of the current state of a project.
Rather than confining software engineering activities, actions and tasks to a sequence of
events, it defines a process network.
Each activity, action or task on the network exists simultaneously with other activities,
actions or tasks.
Events generated at one-point trigger transitions among the states.
1.5 SPECIALIZED PROCESS MODEL
These models tend to be applied when a specialized or narrowly defined software
engineering approach is chosen.
1.5.1 Component-Based Development
The component-based development model incorporates many of the characteristics of the
spiral model.
It is evolutionary in nature, uses 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 to develop the
software:
Page 19 of 31
The component-based development model leads to software reuse, and reusability
provides software engineers with a number of measurable benefits.
This model helps to reduce the development cycle time as well as the project cost
Page 20 of 31
1.5.3 Aspect-Oriented Software Development
Page 21 of 31
Systemic aspects include user interfaces, collaborative work, distribution, persistency,
memory management, transaction processing, security, integrity and so on.
Components may provide aspect details relating to a 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.
Page 22 of 31
DOWNLOADED FROM STUCOR APP
A well-designed agile process may “flatten” the cost of change curve by coupling the
incremental delivery with agile practices such as continuous unit testing and pair
programming. Thus team can accommodate changes late in the software project without
dramatic cost and time impact.
Page 23 of 31
11. The best architectures, requirements, and designs emerge from self–organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes and
adjusts its behavior accordingly.
1.6.4 Human Factors
“Agile development focuses on the talents and skills of individuals, molding the
process to specific people and teams.” i.e. The process molds to the needs of the
people and team, not the other way around.
The key traits that must exist among the people on an agile team are:
Competence.
Common focus.
Collaboration.
Decision-making ability.
Fuzzy problem-solving ability.
Mutual trust and respect.
Self-organization.
1.6.5 Agile Process
Agile software process addresses a number of key assumptions say:
1. It is difficult to predict in advance which software requirements will persist and which
will change. It is equally difficult to predict how customer priorities will change as the
project proceeds.
2. For many types of software, design and construction are interleaved. It is difficult to
predict how much design is necessary before construction is used to prove the design.
3. Analysis, design, construction, and testing are not as predictable (from a planning point
of view) as we might like.
An agile process must be adaptable in order to manage the unpredictability.
An agile software process must adapt incrementally.
Agile SDLC model is a combination of iterative and incremental process models with
focus on process adaptability and customer satisfaction by rapid delivery of working
software product.
Agile Methods break the product into small incremental builds.
Page 24 of 31
Each build is incremental in terms of features and the final build holds all the features
required by the customer.
Every iteration involves cross functional teams working simultaneously on various areas
like −
Planning
Requirements Analysis
Design
Coding
Testing
In Agile methodology, there is no detailed planning and there is clarity only in respect of
what features need to be developed. The team adapts to the changing product requirements
dynamically.
The product is tested very frequently, through the release iterations, minimizing the risk of
any major failures in future.
Page 25 of 31
Advantages:
Rapid Functionality development
Promotes team work
Adaptable to changing requirements
Delivers early partial working solutions.
Flexible and Easy to manage.
Disadvantages
Not suitable for complex projects/dependencies.
Depends heavily on customer interaction, so if customer is not clear, team can be driven
in the wrong direction.
Prioritizing changes can be difficult where there are multiple stakeholders.
Note:
Agile methods include Rational Unified Process, Scrum, Extreme Programming, Adaptive
Software Development, Crystal clear, Feature Driven Development, and Dynamic Systems
Development Method. These are now collectively referred to as Agile Methodologies.
Page 26 of 31
Each of these values is used as a driver for specific XP activities, actions, and tasks.
Communication
To achieve effective communication, XP emphasizes close, informal (verbal)
collaboration between customers and developers.
Simplicity
To achieve simplicity, XP restricts developers to design only for immediate needs, rather
than consider future needs. The design can be refactored later if necessary.
Feedback
Feedback is derived from three sources: the implemented software itself, the customer,
and other software team members.
Courage
Team should be prepared to make hard decisions that support the other principles and
practices.
Respect
By following each of these values, the agile team inculcates respect among its members,
between other stakeholders and team members, and indirectly, for the software itself.
1.7.2 XP Process
Extreme Programming uses an object-oriented approach that encompasses a set of rules
and practices that occur within the context of four framework activities:
Planning
Design
Coding
Testing
Page 27 of 31
XP Planning
The planning activity is also called as planning game.
Planning begins with a requirements gathering where customers and developers negotiate
requirements in the form of User stories captured on index cards.
User stories describe the required output, features, and functionality for software to be
built. Each story is written by the customer and is placed on an index card.
The customer assigns a value (i.e., a priority) to the story based on the overall business
value of the function.
Agile team assesses each story and assigns a cost measured in development weeks.
If the story is estimated to require more than three development weeks, the customer is
asked to split the story into smaller stories and the assignment of value and cost occurs
again.
Stories are grouped to for a deliverable increment and a commitment is made on delivery
date.
Stories are developed in one of three ways:
1.All stories will be implemented immediately
2.The stories with highest value will be moved up in the schedule and implemented first
3.The riskiest stories will be moved up in the schedule and implemented first.
Fig: Sample Index card with User stories
#5
Customer can change his/her personal information in
the system
Priority: 2 (high/low/medium)
Estimate: 4 (development weeks)
After the first increment, the XP team computes project velocity.
Project velocity is the number of customer stories implemented during the first release.
Project velocity can be used to
1. help estimate delivery dates and schedule for subsequent releases.
2. determine whether an over commitment has been made for all stories across the
entire development project.
Page 28 of 31
During development, the customer can add new stories, change the value of an existing
story, split stories, or eliminate them. The XP team then reconsiders all and modifies its
plans accordingly.
XP Design
XP design follows the KIS (keep it simple) principle.
A simple design is preferred than complex representation.
Design provides implementation guidance for the story.
XP encourages the use of CRC cards. CRC (class-responsibility collaborator) cards
identify and organize the object-oriented classes that are relevant to the current software
increment.
Eg: sample CRC for ATM system
Class : User Menu
Responsibility Collaborators
Display Main menu Bank System
Ask PIN
Validate PIN .
Select transaction type
Debit amount Printer
Print balance etc
The CRC cards are the only design work product produced as part of the XP process.
For difficult design problems, XP recommends creation of an intermediate operational
prototype called a spike solution.
XP encourages “refactoring”—an iterative refinement of the internal program design
XP Coding
XP recommends the construction of a unit test for a store before coding commences.
A key concept during the coding activity is “pair programming”
This provides a mechanism for real-time problem solving and real-time quality assurance.
As pair programmers complete their work, the code they develop is integrated with the
work of others.
This “continuous integration” strategy helps to avoid compatibility and interfacing
problems and provides a “smoke testing” environment that helps to uncover errors early.
Page 29 of 31
XP Testing
XP uses Unit and Acceptance Testing.
All unit tests are executed daily
o “Acceptance tests” are defined by the customer and executed to assess customer
visible functionality
The unit tests that are created should be implemented using a framework that enables
them to be automated.
This encourages a regression testing strategy whenever code is modified.
The individual unit tests are organized into a “universal testing suite”, integration and
validation testing of the system can occur on a daily basis.
This provides the XP team with a continual indication of progress and also can raise
warning flags early if things go awry.
XP acceptance tests (customer tests), are specified by the customer and focus on overall
system features and functionality. Acceptance tests are derived from user stories.
1.7.3 Industrial XP
IXP incorporates six new practices that are designed to help ensure that an XP project
works successfully for significant projects within a large organization.
1. Readiness assessment:
The assessment ascertains whether (1) an appropriate development environment
exists to support IXP, (2) the team will be populated by the proper set of stakeholders, (3)
the organization has a distinct quality program and supports continuous improvement, (4)
the organizational culture will support the new values of an agile team, and (5) the
broader project community will be populated appropriately.
2. Project community:
Classic XP suggests that the right people be used to populate the agile team to
ensure success. The people on the team must be well-trained, adaptable and skilled, and
have the proper temperament to contribute to a self-organizing team.
3. Project chartering:
Chartering also examines the context of the project to determine how it
complements, extends, or replaces existing systems or processes.
Page 30 of 31
4. Test-driven management:
Test-driven management establishes a series of measurable “destinations “and
then defines mechanisms for determining whether or not these destinations have been
reached.
5. Retrospectives:
An IXP team conducts a specialized technical review after a software increment is
delivered. Called a retrospective, the review examines “issues, events, and lessons-
learned” across a software increment and/or the entire software release.
6. Continuous learning:
Because learning is a vital part of continuous process improvement, members of
the XP team are encouraged to learn new methods and techniques that can lead to a
higher quality product.
Page 31 of 31