0% found this document useful (0 votes)
6 views

Chapter 1 Notes

Chapter 1 discusses the software development process, detailing the characteristics and types of software, as well as the importance of software engineering and its layered approach. It outlines various software process models, including Agile methodologies, and emphasizes the need for structured processes to manage software projects effectively. The chapter concludes by introducing a generic framework for software development, highlighting key activities and umbrella activities that ensure quality and control throughout the software lifecycle.
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)
6 views

Chapter 1 Notes

Chapter 1 discusses the software development process, detailing the characteristics and types of software, as well as the importance of software engineering and its layered approach. It outlines various software process models, including Agile methodologies, and emphasizes the need for structured processes to manage software projects effectively. The chapter concludes by introducing a generic framework for software development, highlighting key activities and umbrella activities that ensure quality and control throughout the software lifecycle.
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/ 29

Chapter 1

Software Development Process

CONTENTS:
1.1 Software, software Engineering as layered approach and its Characteristics, Types of
Software
1.2 Software Development Framework
1.3 Software Process Framework, Process models: Perspective Process Models,
Specialized Process Models
1.4 Agile Software Development: Agile Process and its importance, Extreme
Programming, Adaptive software Development, Scrum, Dynamic System Development
Method, Crystal
1.5 Selection criteria for software process model
________________________________________________________________________

Software:
The product that software professionals build and then support over the long term.
Software encompasses
1. Instructions (computer programs) that when executed provide desired function and
performance.
2. Data structures that enable the programs to adequately manipulate information.
3. Documents that describe the operation and use of the programs.

Characteristics of Software:
Software is a logical rather than a physical system element. Software has characteristics
that are considerably different than those of hardware.
1. Software is developed or engineered; it is not manufactured in the classical sense:
● Although some similarities exist between software development and hardware
manufacture, the two activities are fundamentally different.
● In both activities, high quality is achieved through good design, but the
manufacturing phase for hardware can introduce quality problems that are
nonexistent (or easily corrected) for software.
● Both activities are dependent on people, but the relationship between people
applied and work accomplished is entirely different.
● Both activities require the construction of a "product" but the approaches are
different.
● Software costs are concentrated in engineering. This means that software projects
cannot be managed as if they were manufacturing projects.
2. Software doesn't "wear out."

● Above figure explains the failure rate as a function of time for hardware.
● The relationship, called the "bathtub curve," indicates that hardware exhibits
relatively high failure rates early in its life; defects are corrected and the failure
rate drops to a steady-state level, ideally, quite low for some period of time.
● With time the failure rate rises again as hardware components suffer from the
cumulative effects of dust, vibration, abuse, temperature extremes, and many other
environmental maladies.
● Stated simply, the hardware begins to wear out.
● Software is not susceptible to the environmental maladies that cause hardware to
wear out.

● Above figure shows the failure rate curve for software should take the form of the
“idealized curve”, Undiscovered defects will cause high failure rates early in the
life of a program. However, these are corrected and the curve flattens as shown.
● The idealized curve is a gross oversimplification of actual failure models for
software.
● This implies that the software doesn't wear out. But it does deteriorate.
3. Although the industry is moving toward component-based assembly, most
software continues to be custom built.
● Consider the manner in which the control hardware for a computer-based product
is designed and built.
● The design engineer draws a simple schematic of the digital circuitry, does some
fundamental analysis to assure that proper function will be achieved, and then goes
to the shelf where catalogs of digital components exist.
● Each integrated circuit (called an IC or a chip) has a part number, a defined and
validated function, a well-defined interface, and a standard set of integration
guidelines.
● After each component is selected, it can be ordered off the shelf.
● A software component should be designed and implemented so that it can be
reused in many different programs.
● In the 1960s, we built scientific subroutine libraries that were reusable in a broad
array of engineering and scientific applications.
● These subroutine libraries reused well-defined algorithms in an effective manner
but had a limited domain of application.
● Today, we have extended our view of reuse to encompass not only algorithms but
also data structure.
● Modern reusable components encapsulate both data and the processing applied to
the data, enabling the software engineer to create new applications from reusable
parts.
● For example, today's graphical user interfaces are built using reusable components
that enable the creation of graphics windows, pull-down menus, and a wide variety
of interaction mechanisms.
● The data structure and processing detail required to build the interface are
contained with a library of reusable components for interface construction
_____________________________________________________________________________________________

Types of Software:
1. System Software
● System software is a collection of programs written to service other programs.
● Few examples of system software are compilers, editors, and file management
utilities, process complex, but determinate, information structures.
● Other systems applications are operating system components, drivers, and
telecommunications.
2. Application software:
● stand-alone programs for specific needs. - As per User Requirement - directly used
by User
● Application software products are designed to satisfy a particular need of a
particular environment.
● E.g:- Railway reservation software

4. Engineering and Scientific Software:


● Engineering and scientific software have 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.
● However, modern applications within the engineering/scientific area are moving
away from conventional numerical algorithms.
● Computer-aided design, system simulation, and other interactive applications have
begun to take on real-time and even system software characteristics.

5. Embedded Software:
● Intelligent products have become commonplace in nearly every consumer and
industrial market.
● Embedded software resides in read-only memory and is used to control products
and systems for the consumer and industrial markets.
● Embedded software can perform very limited and esoteric functions, for example:
keypad control for a microwave oven.
● To provide significant function and control capability, for example: digital
functions in an automobile such as fuel control, dashboard displays, and braking
systems.

6. Product-line software:
● Designed to provide a specific capability for use by many different customers.
Product-line software can focus on a limited and esoteric marketplace (e.g.,
inventory control products) or address mass consumer markets (e.g., word
processing, spreadsheets, computer graphics, multimedia, entertainment, database
management, and personal and business financial applications).

7. Web applications:
● called “WebApps,” this network-centric software category spans a wide array of
applications.
● The Web pages retrieved by a browser are software that incorporates executable
instructions and data.

8. Real-time Software
● Software that monitors or analyzes or controls real-world events as they occur is
called real time.
● Elements of real-time software include a data gathering component that collects
and formats information from an external environment, an analysis component that
transforms information as required by the application.
● A control/output component that responds to the external environment, and a
monitoring component that coordinates all other components so that real-time
response can be maintained.
9. Artificial intelligence software
● makes use of nonnumerical algorithms to solve complex problems that are not
amenable to computation or straightforward analysis.
● Applications within this area include robotics, expert systems, pattern recognition
(image and voice), artificial neural networks, theorem proving, and game playing.
________________________________________________________________________

Software Engineering
● Software Engineering is the establishment and use of sound engineering principles
in order to obtain economically software that is reliable and works efficiently on
real machines.
● Software Engineering is the study and application of engineering to the design,
development, and maintenance of software.
● Software engineering deals with process, methods, their implementation tools and
finally the quality of the product. This is known as the layered approach of
software engineering

Need of Software Engineering:


The need of software engineering arises because of higher rate of change in user
requirements and environment on which the software is working.
● Large software - It is easier to build a wall than to a house or building, likewise, as
the size of software becomes large engineering has to step in to give it a scientific
process.
● Scalability- If the software process were not based on scientific and engineering
concepts, it would be easier to re-create new software than to scale an existing
one.
● Cost- As the hardware industry has shown its skills and huge manufacturing has
lowered the price of computer and electronic hardware. But the cost of software
remains high if proper process is not adapted.
● Dynamic Nature- The always growing and adapting nature of software hugely
depends upon the environment in which the user works. If the nature of software is
always changing, new enhancements need to be done in the existing one. This is
where software engineering plays a good role.
● Quality Management- Better process of software development provides better and
quality software product.
________________________________________________________________________
Software Engineering – A Layered Approach
Software engineering deals with process, methods their implementation tools and finally
the quality of the product. This is known as the layered approach of software engineering
as shown in Figure

1. A “quality” focus:
● Any engineering approach must rest on an organizational commitment to quality.
● Total quality management and similar philosophies foster a continuous process
improvement culture, and this culture ultimately leads to the development of
increasingly more mature approaches to software engineering.
● The bedrock that supports software engineering is a quality focus.
2. Process Layer:
● The foundation for software engineering is the process layer.
● Software engineering process is the glue that holds the technology layers together
and enables rational and timely development of computer software.
● Process defines a framework for a set of key process areas that must be established
for effective delivery of software engineering 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, forms, etc.) are produced, milestones are
established, quality is ensured, and change is properly managed.
3. Method Layer:
● Software engineering methods provide the technical how-to's for building
software.
● Methods encompass a broad array of tasks that include requirements analysis,
design, program construction, testing, and support.
● Software engineering methods rely on a set of basic principles that govern each
area of the technology and include modeling activities and other descriptive
techniques.
4. Tools Layer:
● Software engineering tools provide automated or semi-automated 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 of software development, called computer-aided
software engineering, is established.
● CASE combines software, hardware, and a software engineering database.
________________________________________________________________________

The Software Development 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) and is applied regardless of the application domain, size of the
project, complexity of the effort, or degree of rigor with which software
engineering is to be applied.
● An action (e.g., architectural design) encompasses a set of tasks that produce a
major work product (e.g., an architectural design model).
● A task focuses on a small, but well-defined objective (e.g., conducting a unit test)
that produces a tangible outcome

Software Development Generic 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, regardless of their size or
complexity.
● In addition, the process framework encompasses a set of umbrella activities
that are applicable across the entire software process.

A generic process framework for software engineering encompasses five


activities:
1. Communication:
● Before any technical work can commence, it is critically important to
communicate and collaborate with the customer (and other stakeholders1)
● The intent is to understand stakeholders’ objectives for the project and to gather
requirements that help define software features and functions.
2. Planning:
● Planning activity creates a “map” that helps guide the team as it makes the
journey.
● The map—called a software project plan—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.
3. Modeling:
● Modeling is about building representations of things in the ‘real world’.
● In modeling activity, a product’s model is created in order to better understanding
and requirements.
4. Construction:
● This activity combines code generation (either manual or automated) and the
testing that is required to uncover errors in the code.
5. 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.

Umbrella Activities:
umbrella activities are applied throughout a software project and help a software team
manage and control progress, quality, change, and risk.
Typical umbrella activities include:
1. Software project tracking and control:
● allows the software team to assess progress against the project plan and take any
necessary action to maintain the schedule.
2. Risk management:
● assesses risks that may affect the outcome of the project or the quality of the
product.
3. Software quality assurance:
● defines and conducts the activities required to ensure software quality.
4. Technical reviews:
● assesses software engineering work products in an effort to uncover and remove
errors before they are propagated to the next activity.
5. Measurement:
● defines and collects process, project, and product measures that assist the team in
delivering software that meets stakeholders’ needs; can be used in conjunction
with all other framework and umbrella activities.
6. Software configuration management:
● manages the effects of change throughout the software process.
7. Reusability management:
● defines criteria for work product reuse (including software components) and
establishes mechanisms to achieve reusable components.
8. Work product preparation and production:
● encompasses the activities required to create work products such as models,
documents, logs, forms, and lists.

● The software process is represented schematically in Above Figure.


● Referring to the figure, each framework activity is populated by a set of software
engineering actions.
● 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
____________________________________________________________________
Perspective Process Models:
● 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 workflow)—that
is, the manner in which the process elements are interrelated to one another
1. The Waterfall Model
2. The Incremental Model
3. RAD Model
4. Prototyping
5. Spiral Model

Waterfall Model:
● The Waterfall Model was the first Process Model to be introduced.
● It is also referred to as a linear-sequential life cycle model.
● It is very simple to understand and use. In a waterfall model, each phase must be
completed before the next phase can begin and there is no overlapping in the
phases.

The sequential phases in Waterfall model are:


● Requirement Gathering and analysis: All possible requirements of the system to
be developed are captured in this phase and documented in a requirement
specification document.
● System Design: The requirement specifications from first phase are studied in this
phase and the system design is prepared. This system design helps in specifying
hardware and system requirements and helps in defining the overall system
architecture.
● Implementation: With inputs from the system design, the system is first
developed in small programs called units, which are integrated in the next phase.
Each unit is developed and tested for its functionality, which is referred to as Unit
Testing.
● Integration and Testing: All the units developed in the implementation phase are
integrated into a system after testing of each unit. Post integration the entire
system is tested for any faults and failures.
● Deployment of system: Once the functional and non-functional testing is done;
the product is deployed in the customer environment or released into the market.
● Maintenance: There are some issues which come up in the client environment. To
fix those issues, patches are released. Also to enhance the product some better
versions are released. Maintenance is done to deliver these changes in the
customer environment.
All these phases are cascaded to each other in which progress is seen as flowing steadily
downwards (like a waterfall) through the phases.
The next phase is started only after the defined set of goals are achieved for previous
phase and it is signed off, so the name "Waterfall Model". In this model, phases do not
overlap.

Application of Waterfall Model:


● Requirements are very well documented, clear and fixed.
● Product definition is stable.
● Technology is understood and is not dynamic.
● There are no ambiguous requirements.
● Ample resources with required expertise are available to support the product.
● The project is short.
Advantages of Waterfall Model:
● Simple and easy to understand and use
● Easy to manage due to the rigidity of the model. Each phase has specific
deliverables and a review process.
● Phases are processed and completed one at a time.
● Works well for smaller projects where requirements are very well understood.
● Clearly defined stages.
● Well understood milestones.
● Easy to arrange tasks.
● Process and results are well documented.
Disadvantages of Waterfall Model:
● No working software is produced until late during the life cycle.
● High amounts of risk and uncertainty.
● Not a good model for complex and object-oriented projects.
● Poor model for long and ongoing projects.
● Not suitable for the projects where requirements are at a moderate to high risk of
changing. So, risk and uncertainty is high with this process model.
● It is difficult to measure progress within stages.
● Cannot accommodate changing requirements.
● Adjusting scope during the life cycle can end a project.
● Integration is done as a "big-bang. at the very end, which doesn't allow identifying
any technological or business bottleneck or challenges early.
When to Waterfall Model?
● Requirements are not changing frequently
● Application is not complicated and big
● Project is short
● Requirement is clear
● Environment is stable
● Technology and tools used are not dynamic and is stable
● Resources are available

Incremental Model:
● Incremental Model is a process of software development where requirements are
divided into multiple standalone modules of the software development cycle.
● In this model, each module goes through the requirements, design, implementation
and testing phases.
● Every subsequent release of the module adds function to the previous release. The
process continues until the complete system is achieved

Or
The various phases of incremental model are as follows:
1. Requirement analysis: In the first phase of the incremental model, the product
analysis expertise identifies the requirements. And the system functional requirements are
understood by the requirement analysis team. To develop the software under the
incremental model, this phase performs a crucial role.
2. Design & Development: In this phase of the Incremental model of SDLC, the design
of the system functionality and the development method are finished with success. When
software develops new practicality, the incremental model uses style and development
phase.
3. Testing: In the incremental model, the testing phase checks the performance of each
existing function as well as additional functionality. In the testing phase, the various
methods are used to test the behavior of each task.
4. Implementation: Implementation phase enables the coding phase of the development
system. It involves the final coding that design in the designing and development phase
and tests the functionality in the testing phase. After completion of this phase, the number
of the product working is enhanced and upgraded up to the final system product.

When to use the Incremental Model?


● When the requirements are superior.
● A project has a lengthy development schedule.
● When Software teams are not very well skilled or trained.
● When the customer demands a quick release of the product.
● You can develop prioritized requirements first.
Advantage of Incremental Model
● Errors are easy to recognize.
● Easier to test and debug
● More flexible.
● Simple to manage risk because it is handled during its iteration.
● The Client gets important functionality early.
Disadvantage of Incremental Model
● Need for good planning
● Total Cost is high.
● Well defined module interfaces are needed.

RAD (Rapid Application Development) Model:


● RAD is a linear sequential software development process model that emphasizes a
concise development cycle using an element based construction approach.
● If the requirements are well understood and described, and the project scope is a
constraint, the RAD process enables a development team to create a fully
functional system within a concise time period.
● RAD (Rapid Application Development) is a concept that products can be
developed faster and of higher quality through:
■ Gathering requirements using workshops or focus groups
■ Prototyping and early, reiterative user testing of designs
■ The re-use of software components
■ A rigidly paced schedule that refers design improvements to the next
product version
■ Less formality in reviews and other team communication
The various phases of RAD are as follows:
1.Business Modelling: The information flow among business functions is defined by
answering questions like what data drives the business process, what data is generated,
who generates it, where does the information go, who process it and so on.
2. Data Modelling: The data collected from business modeling is refined into a set of
data objects (entities) that are needed to support the business. The attributes (character of
each entity) are identified, and the relation between these data objects (entities) is
defined.
3. Process Modelling: The information object defined in the data modeling phase are
transformed to achieve the data flow necessary to implement a business function.
Processing descriptions are created for adding, modifying, deleting, or retrieving a data
object.
4. Application Generation: Automated tools are used to facilitate construction of the
software; even they use the 4th GL techniques.
5. Testing & Turnover: Many of the programming components have already been tested
since RAD emphasis reuse. This reduces the overall testing time. But the new part must
be tested, and all interfaces must be fully exercised.

When to use RAD Model?


● When the system should need to create the project that modularizes in a short span
time (2-3 months).
● When the requirements are well-known.
● When the technical risk is limited.
● When there's a necessity to make a system, which modularized in 2-3 months of
period.
● It should be used only if the budget allows the use of automatic code generating
tools.
Advantage of RAD Model
● This model is flexible for change.
● In this model, changes are adoptable.
● Each phase in RAD brings highest priority functionality to the customer.
● It reduced development time.
● It increases the reusability of features.
Disadvantage of RAD Model
● It required highly skilled designers.
● All applications are not compatible with RAD.
● For smaller projects, we cannot use the RAD model.
● On the high technical risk, it's not suitable.
● Required user involvement.

Prototyping Model:

● The prototyping paradigm begins with requirements gathering.


● Developer and customer meet and define the overall objectives for the software,
identify whatever requirements are known, and outline areas where further
definition is mandatory.
● A "quick design" then occurs. The quick design focuses on a representation of
those aspects of the software that will be visible to the customer/user (e.g., input
approaches and output formats).
● The quick design leads to the construction of a prototype.
● The prototype is evaluated by the customer/user and used to refine requirements
for the software to be developed. Iteration occurs as the prototype is tuned to
satisfy the needs of the customer, while at the same time enabling the developer to
better understand what needs to be done.
Advantages of Prototype model:
● Users are actively involved in the development
● Since in this methodology a working model of the system is provided, the
users get a better understanding of the system being developed.
● Errors can be detected much earlier.
● Quicker user feedback is available leading to better solutions.
● Missing functionality can be identified easily
● Confusing or difficult functions can be identified
Requirements validation, Quick implementation of, incomplete, but
functional, application.
Disadvantages of Prototype model:
● Leads to implementing and then repairing way of building systems.
● Practically, this methodology may increase the complexity of the system
as scope of the system may expand beyond original plans.
● Incomplete application may cause application not to be used as the
full system was designed
Incomplete or inadequate problem analysis.
When to use Prototype model:
● Prototype model should be used when the desired system needs to have a
lot of interaction with the end users.
● Typically, online systems, web interfaces have a very high amount of
interaction with end users, are best suited for Prototype model. It might
take a while for a system to be built that allows ease of use and needs
minimal training for the end user.
● Prototyping ensures that the end users constantly work with the system
and provide a feedback which is incorporated in the prototype to result in
a useable system. They are excellent for designing good human computer
interface systems.

Spiral Model:
● Using the spiral model, the software is developed in a series of incremental
releases. During the early iterations, the additional release may be a paper model
or prototype.
● During later iterations, more and more complete versions of the engineered system
are produced.
● A spiral model is divided into a number of framework activities, also called task
regions. Typically, there are between three and six task regions.
Figure shows a spiral model that contains six task regions:
1. Customer communication:tasks required to establish effective communication
between developer and customer.
2. Planning:tasks required to define resources, timelines, and other project related
information.
3. Risk analysis: tasks required to assess both technical and management risks.
4. Engineering: tasks required to build one or more representations of the application.
5. Construction and release: tasks required to construct, test, install, and provide user
support (e.g., documentation and training).

Advantages of Spiral model:


● High amount of risk analysis hence, avoidance of Risk is enhanced.
● Good for large and mission-critical projects.
● Strong approval and documentation control.
● Additional Functionality can be added at a later date.
● Software is produced early in the software life cycle.
Disadvantages of Spiral model:
● Can be a costly model to use.
● Risk analysis requires highly specific expertise.
● Project’s success is highly dependent on the risk analysis phase.
● Doesn’t work well for smaller projects.
When to use Spiral model:
● When costs and risk evaluation is important
● For medium to high-risk projects
● Long-term project commitment unwise because of potential changes to
economic priorities
● Users are unsure of their needs
● Requirements are complex
● New product line
● Significant changes are expected (research and exploration)

________________________________________________________________________
Specialized Process Model:
● These models tend to be applied when a specialized or narrowly defined software
engineering approach is chosen.
1. Component-Based Development
2. The Formal Methods Model
3. Aspect-Oriented Software Development

1. Component-Based Development:
● Component Based Development Commercial off-the-shelf (COTS) software
components, developed by vendors who offer them as products, provide targeted
functionality with well-defined interfaces that enable the component to be
integrated into the software that is to be built.
● 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. However, the component-based development model constructs
applications from prepackaged software components. Modeling and construction
activities begin with the identification of candidate components.
● Regardless of the technology that is used to create the components, 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.

2. 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 you to specify, develop, and verify a computer-based
system by applying a rigorous, mathematical notation.
● When formal methods are used during development, they provide a mechanism for
eliminating many of the problems that are difficult to overcome using other
software engineering paradigms.
● Ambiguity, incompleteness, and inconsistency can be discovered and corrected
more easily not through adhoc 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 you to discover and correct errors that
might otherwise go undetected.
● The formal methods model offers the promise of defect-free software. Yet, conce
about its applicability in a business environment has been voiced:
• The development of formal models is currently quite time consuming and
expensive.
• Because few software developers have the necessary background to apply
formal methods, extensive training is required.
• It is difficult to use the models as a communication mechanism for
technically unsophisticated customers.

3. Aspect-Oriented Software Development


● It provides a process and methodological approach for defining, specifying, design
and construction aspects.
● It is an approach to software development that addresses limitations inherent in
other approaches, including object-oriented programming.
● AOSD aims to address crosscutting concerns by providing means for systematic
identification, separation, representation and composition.
● Crosscutting 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 software development (AOSD) is a software design solution that
helps address the modularity issues that are not properly resolved by other
software approaches, like procedural, structured and object-oriented programming
(OOP).
● It complements, rather than replaces, these other types of software approaches.
● It is also known as aspect-oriented programming (AOP).
● AOSD features are as follows:
1) Considered a subset of post-object programming technologies.
2) Better software design support through isolating application business logic from
supporting and secondary functions.
3) Provides complementary benefits and may be used with other agile processes
and coding standards.
4) Key focus - Identification, representation and specification of concerns, which
also may be cross-cutting.
5) Provides better modularization support of software designs, reducing software
design, development and maintenance costs.
6) Modularization principle based on involved functionalities and processes.
7) Because concerns are encapsulated into different modules, localization of
crosscutting concerns is better promoted and handled.
8) Provides tools and software coding techniques to ensure modular content
support at the source code level.
9) Promotes reusability of code used for the modularization of cross-cutting
concerns.
10) Smaller code size, due to tackling cross cutting concerns.
11) Reduced efficiency from increased overhead.
________________________________________________________________________

Agile Software Development:

Agile Process and its importance:


● Agile is a methodology or mindset which consists of several iterative and
incremental software development methodologies.
● Agile always has the ability to create and respond to change.
● The Agile methodology involves continuous planning, testing, integration and
feedback from the stakeholders or clients throughout the life cycle of the software.
● The main objective of these models is to increase team involvement, and also
make quick decisions as per the situations.
● Agile methodology is mainly designed and developed to avoid common
development issues during the software development life cycle and increase the
overall efficiency of the development team.
● Agile always offers a lightweight framework which helps the development team in
dealing with a constantly functional and technical landscape and also focuses on
continuous delivery.
● With the help of this process, the company can reduce the overall risk associated
with software development.
● So, in a single sentence, the developments performed using Agile methodologies
are normally developed and built iteratively and incrementally. In this
methodology, a company can produce or deliver a quality product in less time and
improve customer satisfaction at the end.

Agility Principles:
1. Our highest priority is to satisfy the customer through early and continuous delivery of
valuable software.
2. Welcome changing requirements, even late in development. Agile processes harness
change for the customer’s competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of months,
with a preference to the shorter timescale.
4. Business people and developers must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and support
they need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors, developers, and users
should be able to maintain a constant pace indefinitely
9. Continuous attention to technical excellence and good design enhances agility.
10. Simplicity—the art of maximizing the amount of work not done—is essential.
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.

Need of Agile process.


We need agile process for the following reasons:-
i. Lower Cost
ii. Enables clients to be happier with the end product by making improvements and
involving clients with development decisions throughout the process.
iii. Encourages open communication among team members, and clients.
iv. Providing teams with a competitive advantage by catching defects and making
changes throughout the development process, instead of at the end.
v. Speeds up time spent on evaluations since each evaluation is only on a small part of the
whole project.
vi. Ensures changes can be made quicker and throughout the development process by
having consistent evaluations to assess the product with the expected outcomes requested.
vii. It keeps each project transparent by having regular consistent meetings with the
clients and systems that allow everyone involved to access the project data and progress.

Features of the Agile Software Development Approach:


● Customer involvement: Customers should be closely involved throughout the
development process. Their role is to provide and prioritize new system
requirements and to evaluate the iterations of the system.
● Incremental delivery: The software is developed in increments with the customer
specifying the requirements to be included in each increment.
● People not process: The skills of the development team should be recognized and
exploited. Team members should be left to develop their own ways of working
without prescriptive processes.
● Embrace change: Expect the system requirements to change and so design the
system to accommodate these changes.
● Maintain simplicity: Focus on simplicity in both the software being developed
and in the development process. Wherever possible, actively work to eliminate
complexity from the system.

Agile Software Development Models:


1. Extreme Programming
2. Adaptive software Development
3. Scrum
4. Dynamic System Development Method
5. Crystal

Extreme Programming:
Extreme Programming (XP) takes an ‘extreme’ approach to iterative development.
1. New versions may be built several times per day;
2. Increments are delivered to customers every 2 weeks;
3. All tests must be run for every build and the build is only accepted if tests run
successfully.
4. The extreme programming release cycle

The XP Process
Extreme Programming uses an object-oriented approach as its preferred
development paradigm and encompasses a set of rules and practices that occur
within the context of four framework activities: planning, design, coding, and
testing. Figure below
XP - Planning:
1. Begins with the creation of a set of stories (also called user stories)
2. Each story is written by the customer and is placed on an index card
3. The customer assigns a value (i.e. a priority) to the story
4. Agile team assesses each story and assigns a cost
5. Stories are grouped to for a deliverable increment
6. A commitment is made on delivery date
7. After the first increment “project velocity” is used to help define
subsequent delivery dates for other increments
XP - Design:
1. Follows the KIS (keep it simple) principle
2. Encourage the use of CRC (class-responsibility-collaborator) cards
(Chapter 8)
3. For difficult design problems, suggests the creation of “spike solutions”—a
design prototype
4. Encourages “refactoring”—an iterative refinement of the internal program
design
5. Design occurs both before and after coding commences
XP - Coding:
1. Recommends the construction of a series of unit tests for each of the stories
before coding commences
2. Encourages “pair programming”
3. –Mechanism for real-time problem solving and real-time quality assurance
4. –Keeps the developers focused on the problem at hand
5. Needs continuous integration with other portions (stories) of the s/w, which
provides a “smoke testing” environment
XP - Testing:
1. Unit tests should be implemented using a framework to make testing
automated. This encourages a regression testing strategy.
2. Integration and validation testing can occur on a daily basis
3. Acceptance tests, also called customer tests, are specified by the customer
and executed to assess customer visible functionality
4. Acceptance tests are derived from user stories.

Adaptive software Development:


● Adaptive Software Development (ASD) has been proposed by Jim Highsmith as a
technique for building complex software and systems.
● The philosophical underpinnings of ASD focus on human collaboration and team
self-organization.
● Highsmith argues that an agile, adaptive development approach based on
collaboration is “as much a source of order in our complex interactions as
discipline and engineering.”
● He defines an ASD “life cycle” that incorporates three phases, speculation,
collaboration and learning as shown in fig.

Speculation:
● The project is initiated and adaptive cycle planning is conducted.
● Adaptive cycle planning uses project initiation information—the customer’s
mission statement, project constraints (e.g., delivery dates or user descriptions),
and basic requirements—to define the set of release cycles (software increments)
that will be required for the project.
● Based on information obtained at the completion of the first cycle, the plan is
reviewed and adjusted so that planned work better fits the reality in which an ASD
team is working.
Collaboration:
● Motivated people use collaboration in a way that multiplies their talent and
creative output beyond their absolute numbers.
● This approach is a recurring theme in all agile methods.
● But collaboration is not easy. It encompasses communication and teamwork, but it
also emphasizes individualism, because individual creativity plays an important
role in collaborative thinking.
● It is, above all, a matter of trust. People working together must trust one another to
(1) Criticize without hate,
(2) Assist without anger,
(3) work as hard as or harder than they do,
(4) Have the skill set to contribute to the work at hand, and
(5) Communicate problems or concerns in a way that leads to effective action
Learning:
● The emphasis is on learning as much as it is on progress toward a completed cycle.
Learning will help them to improve their level of real understanding.
● ASD teams learn in three ways:
1. Focus groups: - Feedback from end user is obtained about the software
component being developed. Thus direct feedback about the developed
component can be obtained.
2. Technical reviews: - This review for software components is conducted for
better quality.
3. Project postmortems: - The team analyses its own performance and makes
appropriate improvements.

Scrum:
● SCRUM is an agile process model which is used for developing the complex
software system.
● It is a lightweight process framework that can be used to manage and control the
software development using an iterative and incremental approach. Here the term
lightweight means the overhead of the process is kept as small as possible in order
to maximize productive time.
● The overall flow of the Scrum process is illustrated in Figure

● Scrum emphasizes the use of a set of software process patterns that have proven
effective for projects with tight timelines, changing requirements, and business
criticality.
● Each of these process patterns defines a set of development actions:
Backlog- a prioritized list of project requirements or features that provide business
value for the customer. Items can be added to the backlog at any time (this is how
changes are introduced). The product manager assesses the backlog and updates
priorities as required.
Sprints-consist of work units that are required to achieve a requirement defined in
the backlog that must be fit into a predefined time-box (typically 30 days).
Changes (e.g., backlog work items) are not introduced during the sprint. Hence,
the sprint allows team members to work in a short-term, but stable environment.
Scrum meetings- are short (typically 15 minutes) meetings held daily by the
Scrum team.
Three key questions are asked and answered by all team members:
• What did you do since the last team meeting?
• What obstacles are you encountering?
• What do you plan to accomplish by the next team meeting?
A team leader, called a Scrum master, leads the meeting and assesses the
responses from each person. The Scrum meeting helps the team to uncover
potential problems as early as possible. Also, these daily meetings lead to
“knowledge socialization” and thereby promote a self-organizing team structure
that delivers the software increment to the customer so that functionality that has
been implemented.
Demos- deliver the software increment to the customer so that functionality that
has been implemented can be demonstrated and evaluated by the customer. It is
important to note that the demo may not contain all planned functionality, but
rather those functions that can be delivered within the time-box that was
established.
Advantages:
1. Scrum model brings transparency in project development status.
2. It provides flexibility towards the changes.
3. There is improved communication, minimum overhead in development process.
4. The productivity can be improved.
Disadvantage:
1. Some decisions are hard to track in a fixed time span.
2. There are problems to deal with non-functional requirements of the system.

Dynamic System Development Method:


● The Dynamic Systems Development Method is an agile software development
approach that provides a framework for building and maintaining systems which
meet tight time constraints through the use of incremental prototyping in a
controlled project environment.
● The consortium has defined an agile process model, called the DSDM life cycle
that defines three different iterative cycles, preceded by two additional life cycle
activities:
○ Feasibility study: establishes the basic business requirements and
constraints associated with the application to be built and then assesses
whether the application is a viable candidate for the DSDM process.
○ Business study: establishes the functional and information requirements
that will allow the application to provide business value; also, defines the
basic application architecture and identifies the maintainability
requirements for the application.
○ Functional model iteration: produces a set of incremental prototypes that
demonstrate functionality for the customer. The intent during this iterative
cycle is to gather additional requirements by eliciting feedback from users
as they exercise the prototype.
○ Design and build iteration: revisits prototypes built during functional
model iteration to ensure that each has been engineered in a manner that
will enable it to provide operational business value for end users. In some
cases, functional model iteration and design and build iteration occur
concurrently.
○ Implementation: In this phase, the software increment is placed in the
working environment. If changes are suggested or if the end-user feels it
incomplete then the increment is placed in iteration for further
improvement.
Crystal:
● Alistair Cockburn and Jim Highsmith created the Crystal family of agile method in
order to achieve a software development approach that puts a premium on
“maneuverability” during what Cockburn characterizes as “a resource limited,
cooperative game of invention and communication, with a primary goal of
delivering useful, working software and a secondary goal of setting up for the next
game”.
● To achieve maneuverability, Cockburn and Highsmith have defined a set of
methodologies, each with core elements that are common to all, and roles, process
patterns, work products, and practice that are unique to each.
● The Crystal family is actually a set of example agile processes that have been
proven effective for different types of projects.
● The intent is to allow agile teams to select the member of the crystal family that is
most appropriate for their project and environment.
Selection criteria for software process model:

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy