[go: up one dir, main page]

0% found this document useful (0 votes)
4 views27 pages

Unit 1-Software Development Process

The document provides an overview of software engineering, emphasizing its importance in managing large software projects and ensuring quality through a layered technology approach. It outlines various types of software, including system, application, embedded, utility, scientific, and artificial intelligence software, as well as the differences between generic and custom software development. Additionally, it discusses software process frameworks, prescriptive process models like the Waterfall, Incremental, and RAD models, and evolutionary models such as the Prototyping model.

Uploaded by

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

Unit 1-Software Development Process

The document provides an overview of software engineering, emphasizing its importance in managing large software projects and ensuring quality through a layered technology approach. It outlines various types of software, including system, application, embedded, utility, scientific, and artificial intelligence software, as well as the differences between generic and custom software development. Additionally, it discusses software process frameworks, prescriptive process models like the Waterfall, Incremental, and RAD models, and evolutionary models such as the Prototyping model.

Uploaded by

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

Unit 1

Software Development Process

Software Engineering Overview

Software is more than just a program code. A program is an executable code, which serves some
computational purpose. Software is considered to be collection of executable programming code,
associated libraries and documentations. Software, when made for a specific requirement is
called software product.

Engineering on the other hand, is all about developing products, using well-defined, scientific
principles and methods.

Software engineering is an engineering branch associated with development of software


product using well-defined scientific principles, methods and procedures. The outcome of
software engineering is an efficient and reliable software product.

A software engineer applies mathematical analysis and the principles of computer science in
order to design and develop computer software.

Why is Software Engineering required?

• Software Engineering is required due to the following reasons:

• To manage Large software

• For more Scalability

• Cost Management

• To manage the dynamic nature of software

• For better quality Management

Software engineering - Layered technology

 Software engineering is a fully layered technology.


 To develop a software, we need to go from one layer to another.
 All these layers are related to each other and each layer demands the fulfillment of the previous
layer.

The layered technology consists of:

1. Quality focus
The characteristics of good quality software are:

 Correctness of the functions required to be performed by the software.


 Maintainability of the software
 Integrity i.e. providing security so that the unauthorized user cannot access information or data.
 Usability i.e. the efforts required to use or operate the software.
2. Process

 It is the base layer or foundation layer for the software engineering.


 The software process is the key to keep all levels together.
 It defines a framework that includes different activities and tasks.
 In short, it covers all activities, actions and tasks required to be carried out for software
development.
3. Methods

 The method provides the answers of all 'how-to' that are asked during the process.
 It provides the technical way to implement the software.
 It includes collection of tasks starting from communication, requirement analysis, analysis and
design modelling, program construction, testing and support.
4. Tools

 The software engineering tool is an automated support for the software development.
 The tools are integrated i.e the information created by one tool can be used by the other tool.
 For example: The Microsoft publisher can be used as a web designing tool.
* characteristics of software:
1. Software is developed or engineered ,it is not manufacture
2. Software does not wear out
3. Most of the software’s are custom built

1. Software is developed or engineered ,it is not manufacture


Software is not manufactured but is developed. So, it does not require any raw material for its
development.
2.Software does not wear out
•Different things like clothes, shoes, ornaments do wear out after some time. But, software once
created never wears out. It can be used for as long as needed and in case of need for any
updating, required changes can be made in the same software and then it can be used further
with updated features.
•i.e. it does not lose the material.
3.Most of the software’s are custom built
• Custom software development is the designing of software applications for a specific user or
group of users within an organization. Such software is designed to specifically address these
users' needs better than more traditional and widespread off-the-shelf software can. Custom
software is typically created just for these specific users by a third-party or in-house group of
developers and is not packaged for resale.

* Types of Software
 System Software –
• System Software is necessary to manage the computer resources and support the
execution of application programs.
• Software like operating systems, compilers, editors and drivers etc., come under this
category. A computer cannot function without the presence of these
 Applications Software
• Application Software, also known as end-user programs or productivity programs are
software that helps the user in completing tasks such as doing online research, jotting
down notes, setting an alarm, designing graphics, keeping an account log, doing
calculations or even playing games.
• Word Processors, Database Software, Multimedia Software, Graphics Software, Web
Browsers
 Embedded Software –
• This type of software is embedded into the hardware normally in the Read Only
Memory (ROM) as a part of a large system and is used to support certain
functionality under the control conditions.
• Examples are software used in instrumentation and control applications like washing
machines, satellites, microwaves etc.
 Utility:
• Utility software is designed to aid in analyzing, optimizing, configuring and maintain
• This software focuses on how an OS functions and then accordingly it decides its
trajectory to smoothen the functioning of the system. Softwares like antiviruses, disk
cleanup & management tools, compression tools, defragmenters, etc are all utility
tools. Some examples of utility tools are:
 Avast Antivirus
 Directory Opus
 McAfee Antivirus
 Piriform CCleaner
 Razer Cortex
 Windows File Explorer
 WinRAR
 WinZip
 Scientific and engineering software
Scientific and engineering software satisfies the needs of a scientific or
engineering user to perform enterprise specific tasks. Such software is written for
specific applications using principles, techniques and formulae specific to that
field. Examples are software like MATLAB, AUTOCAD, PSPICE, ORCAD, etc
 Artificial Intelligence Software
• Software like expert systems, decision support systems, pattern recognition software,
artificial neural networks, etc. come under this category. They involve complex problems
which are not affected by complex computations using non-numerical algorithms.
• Example-Robotics,Nural Networks,Computer Games

** Difference between Generic Software Development and Custom Software Development

Generic software product


S.No. development Custom software development

Customer software
The generic software development development is done to develop
is done for developing a general a software product as per the
1. purpose software. needs of particular customer.

2. In this development process, the In this development process,


software developers have to depict the the end-user requirements
the end-users specifications. can be aggregated by
Generic software product
S.No. development Custom software development

communicating by them.

This development does not


From designing and marketing require marketing, because it is
perspective, this type of developed for appropriate
3. development is very difficult. group of users.

Large number of users may be This type of software is used by


4. using this kind of software. limited number of users.

Quality is the main criterion in


customer software product.Best
quality of the product is
Quality of the product is not a focused for customer or
5. preference for generic software. company.

Customer determines the


Development team controls the process of software
process of generic software development in this type of
6. development. product.

Generally the software developed


is economical.There may be some Software product is of high cost
hidden costs such as installation as the particular product for
7. and implementation cost. customer is developed.

Example-Inventory control and


Example-Word-editing software, , management system are
Microsoft power point, Microsoft examples of customer software
8. Excel development.
Software Process Framework

Framework is a Standard way to build and deploy applications.

Software Process Framework is a foundation of complete software engineering process.

Any standard software process model would primarily consist of two types of activities:

A set of framework activities, which are always applicable, regardless of the project type, and a
set of umbrella activities, which are the non SDLC activities that span across the entire software
development life cycle.

Umbrella activities

Typical umbrella activities are:

1. Software project tracking and control


 In this activity, the developing team accesses project plan and compares it with the predefined
schedule.
 If these project plans do not match with the predefined schedule, then the required actions are
taken to maintain the schedule.
2. Risk management
 Risk is an event that may or may not occur.
 If the event occurs, then it causes some unwanted outcome. Hence, proper risk management is
required.
3. Software Quality Assurance (SQA)
 SQA is the planned and systematic pattern of activities which are required to give a guarantee of
software quality.
For example, during the software development meetings are conducted at every stage of
development to find out the defects and suggest improvements to produce good quality
software.
4. Formal Technical Reviews (FTR)
 FTR is a meeting conducted by the technical staff.
 The motive of the meeting is to detect quality problems and suggest improvements.
 The technical person focuses on the quality of the software from the customer point of view.
5. Measurement
 Measurement consists of the effort required to measure the software.
 The software cannot be measured directly. It is measured by direct and indirect measures.
 Direct measures like cost, lines of code, size of software etc.
 Indirect measures such as quality of software which is measured by some other factor. Hence, it
is an indirect measure of software.

6. Software Configuration Management (SCM)


 It manages the effect of change throughout the software process.

7. Reusability management
 It defines the criteria for reuse the product.
 The quality of software is good when the components of the software are developed for certain
application and are useful for developing other applications.

8. Work product preparation and production


 It consists of the activities that are needed to create the documents, forms, lists, logs and user
manuals for developing a software.

A software process is a collection of various activities.

There are five generic process framework activities:

1. Communication:

The software development starts with the communication between customer and developer.

2. Planning:

It consists of complete estimation, scheduling for project development and tracking.

3. Modeling:
 Modeling consists of complete requirement analysis and the design of the project like algorithm,
flowchart etc.
 The algorithm is the step-by-step solution of the problem and the flow chart shows a complete
flow diagram of a program.

4. Construction:
 Construction consists of code generation and the testing part.
 Coding part implements the design details using an appropriate programming language.
 Testing is to check whether the flow of coding is correct or not.
 Testing also check that the program provides desired output.

5. Deployment:
 Deployment step consists of delivering the product to the customer and take feedback from
them.
 If the customer wants some corrections or demands for the additional capabilities, then the
change is required for improvement in the quality of the software.
* Prescriptive Process Models
The following framework activities are carried out irrespective of the process model chosen by
the organization.

1. Communication
2. Planning
3. Modeling
4. Construction
5. Deployment

The name 'prescriptive' is given because the model prescribes a set of activities, actions, tasks,
quality assurance and change the mechanism for every project.

There are three types of prescriptive process models. They are:

1. The Waterfall Model


2. Incremental Process model
3. RAD model

1. The Waterfall Model

 The waterfall model is also called as 'Linear sequential model' or 'Classic life cycle model'.
 In this model, each phase is fully completed before the beginning of the next phase.
 This model is used for the small projects.
 In this model, feedback is taken after each phase to ensure that the project is on the right path.
 Testing part starts only after the development is complete.

NOTE: The description of the phases of the waterfall model is same as that of the process model.

An alternative design for 'linear sequential model' is as follows:


Advantages of waterfall model

 The waterfall model is simple and easy to understand, implement, and use.
 All the requirements are known at the beginning of the project, hence it is easy to manage.
 It avoids overlapping of phases because each phase is completed at once.
 This model works for small projects because the requirements are understood very well.
 This model is preferred for those projects where the quality is more important as compared to
the cost of the project.
Disadvantages of the waterfall model

 This model is not good for complex and object oriented projects.
 It is a poor model for long projects.
 The problems with this model are uncovered, until the software testing.
 The amount of risk is high.

2. Incremental Process model

 The incremental model combines the elements of waterfall model and they are applied in an
iterative fashion.
 The first increment in this model is generally a core product.
 Each increment builds the product and submits it to the customer for any suggested
modifications.
 The next increment implements on the customer's suggestions and add additional requirements
in the previous increment.
 This process is repeated until the product is finished.
For example, the word-processing software is developed using the incremental model.
Advantages of incremental model

 This model is flexible because the cost of development is low and initial product delivery is
faster.
 It is easier to test and debug during the smaller iteration.
 The working software generates quickly and early during the software life cycle.
 The customers can respond to its functionalities after every increment.
Disadvantages of the incremental model

 The cost of the final product may cross the cost estimated initially.
 This model requires a very clear and complete planning.
 The planning of design is required before the whole system is broken into small increments.
 The demands of customer for the additional functionalities after every increment causes
problem during the system architecture.

3. RAD model

 RAD is a Rapid Application Development model.


 Using the RAD model, software product is developed in a short period of time.
 The initial activity starts with the communication between customer and developer.
 Planning depends upon the initial requirements and then the requirements are divided into
groups.
 Planning is more important to work together on different modules.
The RAD model consist of following phases:

1. Business Modeling

 Business modeling consist of the flow of information between various functions in the project.
 For example what type of information is produced by every function and which are the
functions to handle that information.
 A complete business analysis should be performed to get the essential business information.
2. Data modeling

 The information in the business modeling phase is refined into the set of objects and it is
essential for the business.
 The attributes of each object are identified and define the relationship between objects.
3. Process modeling

 The data objects defined in the data modeling phase are changed to fulfil the information flow
to implement the business model.
 The process description is created for adding, modifying, deleting or retrieving a data object.
4. Application generation

 In the application generation phase, the actual system is built.


 To construct the software the automated tools are used.
5. Testing and turnover

 The prototypes are independently tested after each iteration so that the overall testing time is
reduced.
 The data flow and the interfaces between all the components are are fully tested. Hence, most of
the programming components are already tested.

* Evolutionary Process Models in Software Engineering

Evolutionary Process Models

 Evolutionary models are iterative type models.


 They allow to develop more complete versions of the software.
Following are the evolutionary process models.
1. The prototyping model
2. The spiral model
3. Concurrent development model

1. The Prototyping model

 Prototype is defined as first or preliminary form using which other forms are copied or derived.
 Prototype model is a set of general objectives for software.
 It does not identify the requirements like detailed input, output.
 It is software working model of limited functionality.
 In this model, working programs are quickly produced.

The different phases of Prototyping model are:

1. Communication
In this phase, developer and customer meet and discuss the overall objectives of the software.

2. Quick design

 Quick design is implemented when requirements are known.


 It includes only the important aspects like input and output format of the software.
 It focuses on those aspects which are visible to the user rather than the detailed plan.
 It helps to construct a prototype.
3. Modeling quick design

 This phase gives the clear idea about the development of software because the software is now
built.
 It allows the developer to better understand the exact requirements.
4. Construction of prototype
The prototype is evaluated by the customer itself.
5. Deployment, delivery, feedback

 If the user is not satisfied with current prototype then it refines according to the requirements of
the user.
 The process of refining the prototype is repeated until all the requirements of users are met.
 When the users are satisfied with the developed prototype then the system is developed on the
basis of final prototype.
Advantages of Prototyping Model

 Prototype model need not know the detailed input, output, processes, adaptability of operating
system and full machine interaction.
 In the development process of this model users are actively involved.
 The development process is the best platform to understand the system by the user.
 Errors are detected much earlier.
 Gives quick user feedback for better solutions.
 It identifies the missing functionality easily. It also identifies the confusing or difficult
functions.
Disadvantages of Prototyping Model:

 The client involvement is more and it is not always considered by the developer.
 It is a slow process because it takes more time for development.
 Many changes can disturb the rhythm of the development team.
 It is a thrown away prototype when the users are confused with it.

2. The Spiral model

 Spiral model is a risk driven process model.


 It is used for generating the software projects.
 In spiral model, an alternate solution is provided if the risk is found in the risk analysis, then
alternate solutions are suggested and implemented.
 It is a combination of prototype and sequential model or waterfall model.
 In one iteration all activities are done, for large project's the output is small.
The framework activities of the spiral model are as shown in the following figure.
NOTE: The description of the phases of the spiral model is same as that of the process model.

Advantages of Spiral Model

 It reduces high amount of risk.


 It is good for large and critical projects.
 It gives strong approval and documentation control.
 In spiral model, the software is produced early in the life cycle process.
Disadvantages of Spiral Model

 It can be costly to develop a software model.


 It is not used for small projects.

3. The concurrent development model

 The concurrent development model is called as concurrent model.


 The communication activity has completed in the first iteration and exits in the awaiting
changes state.
 The modeling activity completed its initial communication and then go to the underdevelopment
state.
 If the customer specifies the change in the requirement, then the modeling activity moves from
the under development state into the awaiting change state.
 The concurrent process model activities moving from one state to another state.
Advantages of the concurrent development model

 This model is applicable to all types of software development processes.


 It is easy for understanding and use.
 It gives immediate feedback from testing.
 It provides an accurate picture of the current state of a project.
Disadvantages of the concurrent development model

 It needs better communication between the team members. This may not be achieved all the
time.
 It requires to remember the status of the different activities.
Agile Software Development

Agile software development refers to a group of software development


methodologies based on iterative development, where requirements and solutions evolve through
collaboration between self-organizing cross-functional teams.

Agile principles

 The highest priority of this process is to satisfy the customer.


 Acceptance of changing requirement even late in development.
 Frequently deliver a working software in small time span.
 Throughout the project business people and developers work together on daily basis.
 Projects are created around motivated people if they are given the proper environment and
support.
 Face to face interaction is the most efficient method of moving information in the development
team.
 Primary measure of progress is a working software.
 Agile process helps in sustainable development.
 Continuous attention to technical excellence and good design increases agility.
 From self organizing teams the best architecture, design and requirements are emerged.
 Simplicity is necessary in development.
Advantage of Agile Methodology
1. Customer satisfaction is rapid, continuous development and delivery of useful software.
2. Customer, Developer, and Product Owner interact regularly to emphasize rather than processes and to
3. Product is developed fast and frequently delivered (weeks rather than months.)
4. A face-to-face conversation is the best form of communication.
5. It continuously gave attention to technical excellence and good design.
6. Daily and close cooperation between business people and developers.
7. Regular adaptation to changing circumstances.
8. Even late changes in requirements are welcomed.

Disadvantages of Agile methodology:

1. It is not useful for small development projects.


2. There is a lack of intensity on necessary designing and documentation.
3. It requires an expert project member to take crucial decisions in the meeting.
4. Cost of Agile development methodology is slightly more as compared to other development methodol
5. The project can quickly go out off track if the project manager is not clear about requirements and wha

Compression between the Agile methodology and Waterfall model:

Agile methodology Waterfall model

It follows the incremental approach. It is a sequential design process.

It divides the project development lifecycle The software development process is


into a sprint. divided into distinct phases.

Agile methodology is a flexible methodology. The Waterfall is a structured software


development methodology.

Agile is the collection of many different It is completed as one single project.


projects.

The test plan is reviewed after each sprint Test plan is reviewed after complete
development.

Testing team can take part in the requirements It is difficult for the test to initiate any
change phase without problems. change in needs

Other Leading Agile Methods

gile is a mindset and it’s a set of values and principles. Agile is a way of thinking and acting.
Agile is all about short cycles, iterative and incremental delivery, failing fast, getting feedback,
delivering business value to customers early and about people, collaboration and interaction.
Agile is a mindset which is all about transparency, inspection and adaptation. Agile however
doesn’t consist of any roles, events or artifacts. It’s a mindset. For example, Scrum is one of the
widely used frameworks under the Agile umbrella, which may help you in becoming more Agile,
there are however many more frameworks within the Agile movement, like Kanban, XP, Crystal
and many more as shown in the Figure below:
Scrum
Scrum is a framework that helps agile teams to work together. Using it, the team members can
deliver and sustain the complex product. It encourages the team to learn through practice, self-
organize while working on the problem. Scum is a work done through the framework and
continuously shipping values to customers.

Its focus is on an adaptive product development strategy where a cross-functional team works as
a unit to reach a common goal within 2-4 weeks (Sprint).

What are sprints?

With scrum, a product is built in a series of repetition called sprints. It breaks down big complex
projects into bite-size pieces. It makes projects more manageable, allows teams to ship high
quality, work faster, and more frequently. The sprints give them more flexibility to adapt to the
changes.

product backlog

A product backlog is a registered list of work for the development team.

Dynamic Systems Development Method (DSDM)

DSDM is an agile software development methodology. It is an iterative, incremental approach


that is largely based on the Rapid Application Development (RAD) methodology. The method
provides a four-phase framework consisting of:
 Feasibility and business study
 Functional model / prototype iteration
 Design and build iteration
 Implementation

DSDM is structured around eight key principles:

1. Focus on the business need: DSDM teams must establish a valid business case and ensure
organizational support throughout the project
2. Deliver on time: Work should be time-boxed and predictable, to build confidence in the
development team.
3. Collaborate: DSDM teams must involve stakeholders throughout the project and empower all
members of the team to make decisions.
4. Quality: To ensure high quality, the level of quality should be agreed with the business at the
start of the project. This is enforced through continuous testing, review, and documentation.
5. Build incrementally from firm foundations: Teams must do enough design work up front
(EDUF) to ensure they know exactly what to build, but not too much to slow development.
6. Developer Iteratively: Take feedback from the business and use this to continually improve
with each development iteration. Teams must also recognize that details emerge as the project or
product develops and they must respond to this.
7. Communicate continuously and clearly: Holding daily stand-up sessions, encouraging
informal communication, running workshops and building prototypes are all key DSDM tools.
Communicating through documents is discouraged - instead, documentation must be lean and
timely.
8. Demonstrate control: The project manager and team leader should make their plans and
progress visible to all and focus on successful delivery.

Project lifecycle phase:


The project lifecycle phase as can be observed from the above diagram comprises of 4 main
stages.
 The first one (Study) comprises of two key stages of study – the feasibility study and the
business study. These happen sequentially and they complement each other. In these two phase –
o Feasibility Study: As the name suggests, in this phase the possibility (or feasibility) of building
the application is studied and decisions are made accordingly. It looks into the team available,
the budget available the expected functionalities and the possibility of building the functionalities
in the resources available. The output as a part of this study comprises of a model (or a
prototype) and reports that enlists how all the feasibility criteria are met.

o Business Study: In this part of the study, business experts and the technical experts are all called
upon and discussions happen where in all the essential business problems are listed and studied.
It is then overlooked into if the technical capabilities available are sufficient to meet the business
requirements. A prioritization is then made upon the requirements and application &
infrastructure diagrams are finalized.

 Functional model iteration: The requirements are finalized and prioritized in the earlier two
studies are then built in a functional prototype wherein a model of one requirement after another
is built in incrementally. The prototypes are then studied for its quality and improvement
possibility by functional experts (and also some times by end users) so that it can be further
improved upon. This stage can be further sub divided into smaller sub-stages:
o Identify functional prototype: Based on the prioritized requirements, identify the key
functionalities to be built in the prototype
o Accept plan and schedule: Form a plan and schedule to build the functionalities are finalized.
Identify team members, allocate tasks and finalize deadlines in this sub stage.
o Create a functional prototype: The developers then loop in and create the prototype based on the
functional requirements. They also further test the functionalities themselves (unit testing) and
further improve the product in this sub stage
o Review the functional prototype: End users are then brought into the picture. These then have a
look at the functionalities and then test those. The comments are then taken into consideration
and further improvement areas are identified

 Design and build integration: This phase first begins with ensuring that the functionalities as
built meet the user’s expectations and can function well in the practical and operational
environment. Most important focus inn this phase, the individual units (or functionalities) as
built in the earlier stage are integrated into one system. Since in DSDM, there is no clear
distinction between design & build, both of these phases are clubbed together and these two
phases simultaneously continue together. This stage also comprises of four sub-stages:
o Identify design prototype: Once the requirements are modeled into the prototype, the ones that
need to be in the final system are identified and prioritized.
o Accept plan and schedule: The prioritized ones are then planned and scheduled to be built. Team
mates are identified and the tasks are allocated.
o Create a design prototype: A design prototype is created by the developers and then it is provided
to the testers and end users for testing. The end users then look into the app and provide
comments on how it could be improved further.
o Review the design prototype: Further testing is done on the system and its correctness and
closeness to the planned one is identified.

 Implementation: As a part of this stage the tested application is put up in live environment and
is made available to the end users. Training to end users is also provided. Also timely review and
feedback is collated from the end user to ensure that the business demands are met and right
solution is provided to the end users and their needs are all catered too. Implementation is further
broken down into 4 sub-parts:
o User approval & guidelines
o Train users
o Implement

Feature-Driven Development
It is an agile iterative and incremental model that focuses on progressing the features of the
developing software. The main motive os feature-driven development is to provide timely
updated and working software to the client. In FDD, reporting and progress tracking is
necessary at all levels.

FDD Lifecycle
 Build overall model
 Build feature list
 Plan by feature
 Design by feature
 Build by feature

Step 1: Develop the overall model

This step is where you write your outline to define your domain model—the business problem
you want your software development project to solve. The team works closely with the chief
architect to define the scope and context of the system. Multiple domain models should be
merged into one overall model as an outline for your system.

Step 2: Build a features list

The features list is similar to the scrum product backlog. Identify the features that are important
to the client. Features are expressed as action, result, and object (for example, “validate the
account number of the user”).

It should not take longer than two weeks to develop any given feature. If a feature will take
longer than two weeks to build, it should be broken up into smaller features.
3: Plan by feature

Determine the order in which the features from your features list will be developed and
implemented. Consider potential risks, dependencies, team and individual workload, and any
other obstacle that could hinder feature development.

Then assign feature sets to the programmers who are most capable and have the bandwidth to
develop them within the specified timeframe.

4: Design by feature

The chief programmer determines which features will be designed and built in a two-week
iteration. This person also defines the feature priorities and determines who will be involved on
the feature team. A design review needs to be completed by the whole team before moving
forward.

5: Build by feature

In this step, all of the items necessary to support the feature design are implemented. The user
interface is designed, and a feature prototype is built and tested. If the feature passes the test and
is approved, the completed version can be added to the main build and made available to
customers.

Adaptive Software Development (ASD)


Adaptive software development (ASD) has been proposed by Jim Highsmith as a technique for
building complex software and systems. It’s focused on rapid creation and evolution of software
systems. There is no pre planned steps in this process. The structure of adaptive software
development and rapid application development are similar. It grew out of rapid application
development. ASD‘s overall emphasis on the dynamics of self-organizing teams, interpersonal
collaboration, and individual and team learning yield software project teams.
Adaptive Software Development is a method to build complex software and system. ASD
focuses on human collaboration and self-organisation. ASD “life cycle” incorporates three
phases namely:
1. Speculation
2. Collaboration
3. Learning

1. Speculation
During this phase project is initiated and planning is conducted. The project plan uses project
initiation information like project requirements, user needs, customer mission statement etc, to
define set of release cycles that the project wants.
Speculation consists of Project initiation and Risk driven Adaptive cycle planning. During this
phase, coders attempt to understand the exact nature of the software and the requirements of the
users.

2. Collaboration

This phase consists of Concurrent component engineering. Effective collaboration with


customer is very important. Communication, teamwork, individual creativity is part of effective
collaboration. Joint application development is preferred requirements gathering approach. More
concern about collaboration and dealing with concurrency than about the details of designing,
testing, and coding.

3. Learning

The workers may have a overestimate of their own understanding of the technology which may
not lead to the desired result. Learning helps the workers to increase their level of
understanding over the project.
Learning process is of 3 ways:
1. Focus groups
2. Technical reviews
3. Project postmortem

Extreme Programming

Extreme programming (XP) is a software development methodology which is intended to


improve software quality and responsiveness to changing customer requirements. As a type
of agile software development,[1][2][3] it advocates frequent "releases" in short development cycles,
which is intended to improve productivity and introduce checkpoints at which new customer
requirements can be adopted.
Extreme programming is one of the commonly used agile methodologies in software
development. It is very responsive to changing requirements even in the late phases of the
project. However, quality activities in extreme programming phases are implemented
sequentially along with the activities that work on the functional requirements. This reduces the
agility to deliver increments continuously and makes an inverse relationship between quality and
agility. Due to this relationship, extreme programming does not consume enough time on making
extensive documentation and robust design. To overcome these issues, an enhanced extreme
programming model is proposed. Enhanced extreme programming introduces parallelism in the
activities' execution through putting quality activities into a separate execution line. In this way,
the focus on delivering increments quickly is achieved without affecting the quality of the final
output. In enhanced extreme programming, the quality concept is extended to include refinement
of all phases of classical extreme programming and creating architectural design based on the
refined design documents.
Planning

 The project is divided into iterations


 Make frequent small releases
 Iteration planning starts each iteration
 Release planning creates the release schedule
 User stories are written

Designing

 Use class responsibility collaborator (CRC) cards for design sessions


 Create spike solutions to reduce risk
 No functionality is added early
 Refactor whenever and where ever possible
 Simplicity

Coding

 Code must be written to agreed standards


 Code the unit test first
 The customer is always available
 All production code is pair programmed
 Integrate often
 Use collective ownership
 Set up dedicated integration computer

Testing

 When a bug is found tests are created


 Acceptance tests are run often and the score is published
 All code must have unit tests
 All code must pass all unit tests before it can be released

Crystal
Crystal method is an agile software development approach that focuses primarily on people and
their interactions when working on a project rather than on processes and tools. Alistair believed
that people’s skills and talents as well as the way they communicate has the biggest impact on
the outcome of the project.

Which approach will be most suitable for your projects depends on three dimensions:

 Team size
 Criticality
 Project priority

You might also like