Software Engineering Unit-5
Software Engineering Unit-5
FORMAL SPECIFICATION
• The development of a formal specification provides insights and understanding of the software
requirements and the software design.
• Given a formal system specification and a complete formal programming language definition,
it may be possible to prove that a program conforms to its specifications.
• Formal specification may be automatically processed. Software tools can be built to assist with
their development, understanding, and debugging.
• Depending on the formal specification language being used, it may be possible to animate a
formal system specification to provide a prototype system.
• Formal specifications are mathematical entities and may be studied and analyzed using
mathematical methods.
• Software management is conservative and unwilling to adopt new techniques whose payoff is
not immediately obvious.
• Most software engineers have not been trained in formal specification techniques.
• Some classes of systems are difficult to specify using existing specification techniques.
Interactive and interrupt driven systems might be examples.
1
2
A statement about the function parameters stating what is invariably true before the function is
executed
A statement about the function parameters stating what is invariably true after the function has
executed
The difference between the pre & post conditions is due to the application of the function to its
parameters. Together the pre and post conditions are a function specification
2
3
3
4
Software design
Software design is a mechanism to transform user requirements into some suitable form, which
helps the programmer in software coding and implementation. It deals with representing the
client's requirement, as described in SRS (Software Requirement Specification) document, into a
form, i.e., easily implementable using programming language.
The software design phase is the first step in SDLC (Software Design Life Cycle), which moves
the concentration from the problem domain to the solution domain. In software design, we
consider the system to be a set of components or modules with clearly defined behaviors &
boundaries.
4
5
Concepts are defined as a principal idea or invention that comes into our mind or in thought to
understand something. The software design concept simply means the idea or principle
behind the design. It describes how you plan to solve the problem of designing software, the
logic, or thinking behind how you will design software. It allows the software engineer to
create the model of the system or software or product that is to be developed or built. The
software design concept provides a supporting and essential structure or model for developing
the right software. There are many concepts of software design and some of them are given
below:
5
6
then use these parts in different systems to perform different functions. It is necessary to
divide the software into components known as modules because nowadays there are
different software available like Monolithic software that is hard to grasp for software
engineers. So, modularity in design has now become a trend and is also important. If the
system contains fewer components then it would mean the system is complex which
requires a lot of effort (cost) but if we are able to divide the system into components then
the cost would be small.
3. Architecture- design a structure of something
Architecture simply means a technique to design a structure of something. Architecture in
designing software is a concept that focuses on various elements and the data of the
structure. These components interact with each other and use the data of the structure in
architecture.
4. Refinement- removes impurities
Refinement simply means to refine something to remove any impurities if present and
increase the quality. The refinement concept of software design is actually a process of
developing or presenting the software or system in a detailed manner that means to
elaborate a system or software. Refinement is very necessary to find out any error if present
and then to reduce it.
5. Pattern- a repeated form
The pattern simply means a repeated form or design in which the same shape is repeated
several times to form a pattern. The pattern in the design process means the repetition of a
solution to a common recurring problem within a certain context.
6. Information Hiding- hide the information
Information hiding simply means to hide the information so that it cannot be accessed by an
unwanted party. In software design, information hiding is achieved by designing the
modules in a manner that the information gathered or contained in one module is hidden
and can’t be accessed by any other modules.
7. Refactoring- reconstruct something
Refactoring simply means reconstructing something in such a way that it does not affect the
behavior of any other features. Refactoring in software design means reconstructing the
design to reduce complexity and simplify it without affecting the behavior or its functions.
Fowler has defined refactoring as “the process of changing a software system in a way that
it won’t affect the behavior of the design and improves the internal structure”.
Different levels of Software Design:
There are three different levels of software design. They are:
1. Interface Design
2. Architectural Design
3. Detailed Design
Interface Design: Interface design is the specification of the interaction between a system and its
environment. this phase proceeds at a high level of abstraction with respect to the inner workings
of the system i.e, during interface design, the internal of the systems are completely ignored and
the system is treated as a black box. Attention is focussed on the dialogue between the target
system and the users, devices, and other systems with which it interacts. The design problem
6
7
statement produced during the problem analysis step should identify the people, other systems,
and devices which are collectively called agents.
Interface design should include the following details:
Precise description of events in the environment, or messages from agents to which the system
must respond.
Precise description of the events or messages that the system must produce.
Specification on the data, and the formats of the data coming into and going out of the
system.
Specification of the ordering and timing relationships between incoming events or messages,
and outgoing events or outputs.
The architectural design adds important details ignored during the interface design. Design of the
internals of the major components is ignored until the last phase of the design
Detailed Design: Design is the specification of the internal elements of all major system
components, their properties, relationships, processing, and often their algorithms and the data
structures. The detailed design may include:
7
8
A design is generated using the recognizable architectural styles and compose a good design
characteristic of components and it is implemented in evolutionary manner for testing.
A design of the software must be modular i.e the software must be logically partitioned into
elements.
In design, the representation of data , architecture, interface and components should be distinct.
A design must carry appropriate data structure and recognizable data patterns.
Design components must show the independent functional characteristic.
A design creates an interface that reduce the complexity of connections between the
components.
A design must be derived using the repeatable method.
The notations should be use in design which can effectively communicates its meaning.
Top-down and bottom-up are both strategies of information processing and knowledge
ordering, used in a variety of fields including software, humanistic and scientific theories , and
management and organization. In practice, they can be seen as a style of thinking, teaching, or
leadership.
A top-down approach is essentially the breaking down of a system to gain insight into its
compositional sub-systems in a reverse engineering fashion. In a top-down approach an
overview of the system is formulated, specifying, but not detailing, any first-level subsystems.
Each subsystem is then refined in yet greater detail, sometimes in many additional subsystem
levels, until the entire specification is reduced to base elements. A top-down model is often
specified with the assistance of "black boxes", which makes it easier to manipulate. However,
black boxes may fail to clarify elementary mechanisms or be detailed enough to realistically
validate the model. Top down approach starts with the big picture, then breaks down from there
into smaller segments.[1]
A bottom-up approach is the piecing together of systems to give rise to more complex systems,
thus making the original systems sub-systems of the emergent system.In a bottom-up approach
the individual base elements of the system are first specified in great detail. These elements are
then linked together to form larger subsystems, which then in turn are linked, sometimes in many
levels, until a complete top-level system is formed. This strategy often resembles a "seed" model,
by which the beginnings are small but eventually grow in complexity and completeness.
8
9
However, "organic strategies" may result in a tangle of elements and subsystems, developed in
isolation and subject to local optimization as opposed to meeting a global purpose.
A good system design is to organize the program modules in such a way that are easy to
develop and change. Structured design techniques help developers to deal with the size and
complexity of programs. Analysts create instructions for the developers about how code should
be written and how pieces of code should fit together to form a program.
Software Engineering is the process of designing, building, testing, and maintaining software.
The goal of software engineering is to create software that is reliable, efficient, and easy to
maintain. System design is a critical component of software engineering and involves making
decisions about the architecture, components, modules, interfaces, and data for a software
system.
System Design Strategy refers to the approach that is taken to design a software system.
There are several strategies that can be used to design software systems, including the
following:
1. Top-Down Design: This strategy starts with a high-level view of the system and gradually
breaks it down into smaller, more manageable components.
2. Bottom-Up Design: This strategy starts with individual components and builds the system
up, piece by piece.
3. Iterative Design: This strategy involves designing and implementing the system in stages,
with each stage building on the results of the previous stage.
4. Incremental Design: This strategy involves designing and implementing a small part of the
system at a time, adding more functionality with each iteration.
5. Agile Design: This strategy involves a flexible, iterative approach to design, where
requirements and design evolve through collaboration between self-organizing and cross-
functional teams.
here are many strategies or techniques for performing system design. They are:
Bottom-up approach:
The design starts with the lowest level components and subsystems. By using these
components, the next immediate higher-level components and subsystems are created or
composed. The process is continued till all the components and subsystems are composed
into a single component, which is considered as the complete system. The amount of
abstraction grows high as the design moves to more high levels.
By using the basic information existing system, when a new system needs to be created, the
bottom-up strategy suits the purpose.
9
10
Advantages:
The economics can result when general solutions can be reused.
It can be used to hide the low-level details of implementation and be merged with the top-
down technique.
Disadvantages:
It is not so closely related to the structure of the problem.
High-quality bottom-up solutions are very hard to construct.
It leads to the proliferation of ‘potentially useful’ functions rather than the most appropriate
ones.
Top-down approach: Each system is divided into several subsystems and components. Each
of the subsystems is further divided into a set of subsystems and components. This process of
division facilitates forming a system hierarchy structure. The complete software system is
considered a single entity and in relation to the characteristics, the system is split into sub-
systems and components. The same is done with each of the sub-systems.
This process is continued until the lowest level of the system is reached. The design is started
initially by defining the system as a whole and then keeps on adding definitions of the
subsystems and components. When all the definitions are combined together, it turns out to be
a complete system.
For the solutions of the software that need to be developed from the ground level, a top-down
design best suits the purpose.
10
11
Advantages:
The main advantage of the top-down approach is that its strong focus on requirements helps
to make a design responsive according to its requirements.
Disadvantages:
Project and system boundaries tend to be application specification-oriented. Thus it is more
likely that the advantages of component reuse will be missed.
The system is likely to miss, the benefits of a well-structured, simple architecture.
Hybrid Design:
It is a combination of both top-down and bottom-up design strategies. In this, we can reuse
the modules.
Advantages of using a System Design Strategy:
1. Improved quality: A well-designed system can improve the overall quality of the software,
as it provides a clear and organized structure for the software.
2. Ease of maintenance: A well-designed system can make it easier to maintain and update the
software, as the design provides a clear and organized structure for the software.
3. Improved efficiency: A well-designed system can make the software more efficient, as it
provides a clear and organized structure for the software that reduces the complexity of the
code.
4. Better communication: A well-designed system can improve communication between
stakeholders, as it provides a clear and organized structure for the software that makes it
easier for stakeholders to understand and agree on the design of the software.
5. Faster development: A well-designed system can speed up the development process, as it
provides a clear and organized structure for the software that makes it easier for developers
to understand the requirements and implement the software.
11
12
2. Inflexibility: Once a system has been designed, it can be difficult to make changes to the
design, as the process is often highly structured and documentation-intensive.
User interface is the front-end application view to which user interacts in order to use the
software. The software becomes more popular if its user interface is:
Attractive
Simple to use
Responsive in short time
Clear to understand
Consistent on all interface screens
There are two types of User Interface:
1. Command Line Interface: Command Line Interface provides a command prompt, where
the user types the command and feeds to the system. The user needs to remember the syntax
of the command and its use.
2. Graphical User Interface: Graphical User Interface provides the simple interactive
interface to interact with the system. GUI can be a combination of both hardware and
software. Using GUI, user interprets the software.
The analysis and design process of user interface consists of four framework activities.
1. User, task, environmental analysis, and modeling: Initially, the focus is based on the
profile of users who will interact with the system, i.e. understanding, skill and knowledge,
type of user, etc, based on the user’s profile users are made into categories. From each
category requirements are gathered. Based on the requirements developer understand how
to develop the interface. Once all the requirements are gathered a detailed analysis is
conducted. In the analysis part, the tasks that the user performs to establish the goals of the
system are identified, described and elaborated. The analysis of the user environment
focuses on the physical work environment. Among the questions to be asked are:
Where will the interface be located physically?
Will the user be sitting, standing, or performing other tasks unrelated to the interface?
Does the interface hardware accommodate space, light, or noise constraints?
Are there special human factors considerations driven by environmental factors?
2. Interface Design: The goal of this phase is to define the set of interface objects and actions
i.e. Control mechanisms that enable the user to perform desired tasks. Indicate how these
control mechanisms affect the system. Specify the action sequence of tasks and subtasks,
also called a user scenario. Indicate the state of the system when the user performs a
particular task. Always follow the three golden rules stated by Theo Mandel. Design issues
such as response time, command and action structure, error handling, and help facilities are
considered as the design model is refined. This phase serves as the foundation for the
implementation phase.
3. Interface construction and implementation: The implementation activity begins with the
creation of prototype (model) that enables usage scenarios to be evaluated. As iterative
design process continues a User Interface toolkit that allows the creation of windows,
menus, device interaction, error messages, commands, and many other elements of an
interactive environment can be used for completing the construction of an interface.
12
13
4. Interface Validation: This phase focuses on testing the interface. The interface should be
in such a way that it should be able to perform tasks correctly and it should be able to
handle a variety of tasks. It should achieve all the user’s requirements. It should be easy to
use and easy to learn. Users should accept the interface as a useful one in their work.
2. The Class and Object Layer: This layer contains a hierarchy of classes, which enable the
system to be created using generalizations and increasingly more targeted specializations. This
layer also represents each object.
3. The Message Layer: This layer contains the design details, which enables each object to
communicate with its collaborators. This laver establishes the internal and external interfaces for
the system.
4. The Responsibilities Layer: This layer contains the data structure and algorithmic design for
13
14
The OOD pyramid focuses on the design of a specific system. Note that another layer of design
exists, which forms the foundation on which the pyramid rests.
The foundation layer focuses on the design of domain objects, which play a key role in building
the infrastructure for the object-oriented system by providing support for human/computer
interface activities, task management and data management.
Agile Model
Each iteration is considered as a short time "frame" in the Agile process model, which typically
lasts from one to four weeks. The division of the entire project into smaller parts helps to
minimize the project risk and to reduce the overall project delivery time requirements. Each
iteration involves a team working through a full software development life cycle including
planning, requirements analysis, design, coding, and testing before a working product is
demonstrated to the client.
14
15
1. Requirements gathering
2. Design the requirements
3. Construction/ iteration
4. Testing/ Quality assurance
5. Deployment
6. Feedback
1. Requirements gathering: In this phase, you must define the requirements. You should
explain business opportunities and plan the time and effort needed to build the project. Based on
this information, you can evaluate technical and economic feasibility.
2. Design the requirements: When you have identified the project, work with stakeholders to
define requirements. You can use the user flow diagram or the high-level UML diagram to show
the work of new features and show how it will apply to your existing system.
15
16
3. Construction/ iteration: When the team defines the requirements, the work begins. Designers
and developers start working on their project, which aims to deploy a working product. The
product will undergo various stages of improvement, so it includes simple, minimal
functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's performance and
looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work environment.
6. Feedback: After releasing the product, the last step is feedback. In this, the team receives
feedback about the product and works through the feedback.
1. Frequent Delivery
2. Face-to-Face Communication with clients.
3. Efficient design and fulfils the business requirement.
4. Anytime changes are acceptable.
5. It reduces total development time.
16
17
o Scrum
o Crystal
o Dynamic Software Development Method(DSDM)
o Feature Driven Development(FDD)
o Lean Software Development
o eXtreme Programming(XP)
Scrum
SCRUM is an agile development process focused primarily on ways to manage tasks in team-
based development conditions.
o Scrum Master: The scrum can set up the master team, arrange the meeting and remove
obstacles for the process
o Product owner: The product owner makes the product backlog, prioritizes the delay and
is responsible for the distribution of functionality on each repetition.
o Scrum Team: The team manages its work and organizes the work to complete the sprint
or cycle.
Scrum is the type of Agile framework. It is a framework within which people can address
complex adaptive problem while productivity and creativity of delivering product is at highest
possible values. Scrum uses Iterative process. Silent features of Scrum are:
Scrum is light-weighted framework
Scrum emphasizes self-organization
Scrum is simple to understand
Scrum framework help the team to work together
17
18
Lifecycle of Scrum:
Sprint: A Sprint is a time box of one month or less. A new Sprint starts immediately after the
completion of the previous Sprint. Release: When the product is completed, it goes to the
Release stage. Sprint Review: If the product still has some non-achievable features, it will be
checked in this stage and then passed to the Sprint Retrospective stage.
Sprint Retrospective: In this stage quality or status of the product is checked.
Product Backlog: According to the prioritize features the product is organized.
Sprint Backlog: Sprint Backlog is divided into two parts Product assigned features to sprint
and Sprint planning meeting.
18
19
Scrum framework is not fully described model. If you wanna adopt it you need to fill in the
framework with your own details like Extreme Programming(XP), Kanban, DSDM.
It can be difficult for the Scrum to plan, structure and organize a project that lacks a clear
definition.
The daily Scrum meetings and frequent reviews require substantial resources.
eXtreme Programming(XP)
This type of methodology is used when customers are constantly changing demands or
requirements, or when they are not sure about the system's performance.Extreme programming
(XP) is one of the most important software development frameworks of Agile models. It is
used to improve software quality and responsiveness to customer requirements.Some of the
good practices that have been recognized in the extreme programming model and suggested to
maximize their use are given below:
Code Review: Code review detects and corrects errors efficiently. It suggests pair
programming as coding and reviewing of written code carried out by a pair of programmers
who switch their work between them every hour.
Testing: Testing code helps to remove errors and improves its reliability. XP suggests test-
driven development (TDD) to continually write and execute test cases. In the TDD
approach, test cases are written even before any code is written.
Incremental development: Incremental development is very good because customer
feedback is gained and based on this development team comes up with new increments
every few days after each iteration.
Simplicity: Simplicity makes it easier to develop good-quality code as well as to test and
debug it.
Design: Good quality design is important to develop good quality software. So, everybody
should design daily.
Integration testing: It helps to identify bugs at the interfaces of different functionalities.
Extreme programming suggests that the developers should achieve continuous integration
by building and performing integration testing several times a day.
19
20
be transformed into code, scripting a web-based system, and choosing among several
alternative solutions.
Testing: The XP model gives high importance to testing and considers it to be the primary
factor in developing fault-free software.
Listening: The developers need to carefully listen to the customers if they have to develop
good quality software. Sometimes programmers may not have the depth knowledge of the
system to be developed. So, the programmers should understand properly the functionality
of the system and they have to listen to the customers.
Designing: Without a proper design, a system implementation becomes too complex, and
very difficult to understand the solution, thus making maintenance expensive. A good
design results elimination of complex dependencies within a system. So, effective use of
suitable design is emphasized.
Feedback: One of the most important aspects of the XP model is to gain feedback to
understand the exact customer needs. Frequent contact with the customer makes the
development effective.
Simplicity: The main principle of the XP model is to develop a simple system that will
work efficiently in the present time, rather than trying to build something that would take
time and may never be used. It focuses on some specific features that are immediately
needed, rather than engaging time and effort on speculations of future requirements.
Pair Programming: XP encourages pair programming where two developers work
together at the same workstation. This approach helps in knowledge sharing, reduces
errors, and improves code quality.
Continuous Integration: In XP, developers integrate their code into a shared repository
several times a day. This helps to detect and resolve integration issues early on in the
development process.
Refactoring: XP encourages refactoring, which is the process of restructuring existing
code to make it more efficient and maintainable. Refactoring helps to keep the codebase
clean, organized, and easy to understand.
Collective Code Ownership: In XP, there is no individual ownership of code. Instead, the
entire team is responsible for the codebase. This approach ensures that all team members
have a sense of ownership and responsibility towards the code.
Planning Game: XP follows a planning game, where the customer and the development
team collaborate to prioritize and plan development tasks. This approach helps to ensure
that the team is working on the most important features and delivers value to the customer.
On-site Customer: XP requires an on-site customer who works closely with the
development team throughout the project. This approach helps to ensure that the
customer’s needs are understood and met, and also facilitates communication and feedback.
20
21
Projects involving new technology or Research projects: This type of project faces
changing requirements rapidly and technical problems. So XP model is used to complete
this type of project.
Web development projects: The XP model is well-suited for web development projects as
the development process is iterative and requires frequent testing to ensure the system
meets the requirements.
Collaborative projects: The XP model is useful for collaborative projects that require
close collaboration between the development team and the customer.
Projects with tight deadlines: The XP model can be used in projects that have a tight
deadline, as it emphasizes simplicity and iterative development.
Projects with rapidly changing requirements: The XP model is designed to handle
rapidly changing requirements, making it suitable for projects where requirements may
change frequently.
Projects where quality is a high priority: The XP model places a strong emphasis on
testing and quality assurance, making it a suitable approach for projects where quality is a
high priority.
Extreme Programming (XP) is an Agile software development methodology that focuses on
delivering high-quality software through frequent and continuous feedback, collaboration, and
adaptation. XP emphasizes a close working relationship between the development team, the
customer, and stakeholders, with an emphasis on rapid, iterative development and deployment.
Agile development approaches evolved in the 1990s as a reaction to documentation and
bureaucracy-based processes, particularly the waterfall approach. Agile approaches are based
on some common principles, some of which are:
1. Working software is the key measure of progress in a project.
2. For progress in a project, therefore software should be developed and delivered rapidly in
small increments.
3. Even late changes in the requirements should be entertained.
4. Face-to-face communication is preferred over documentation.
5. Continuous feedback and involvement of customers are necessary for developing good-
quality software.
6. A simple design that involves and improves with time is a better approach than doing an
elaborate design up front for handling all possible scenarios.
7. The delivery dates are decided by empowered teams of talented individuals.
Extreme programming is one of the most popular and well-known approaches in the family of
agile methods. an XP project starts with user stories which are short descriptions of what
scenarios the customers and users would like the system to support. Each story is written on a
separate card, so they can be flexibly grouped.
XP, and other agile methods, are suitable for situations where the volume and space of
requirements change are high and where requirement risks are considerable.
21
22
Crystal:
22
23
23
24
24
25
The Crystal Method is expandable. It may be used by small teams or large teams to work on
simple or complex objects. It places importance on developmental skills and interactions which
in turn encourage the exchange of ideas. It is also beneficial for the clients as it delivers the
most important components of the product first. But on the other hand, the Crystal Method
does not plan based on the requirements of the projects.
1. Chartering: Multi activities are involved in this phase such as making a development
team, performing feasibility analysis, developing plans, etc.
2. Cyclic delivery: under this, two more cycles consist, these are:
DSDM is a rapid application development strategy for software development and gives an agile
project distribution structure. The essential features of DSDM are that users must be actively
connected, and teams have been given the right to make decisions. The techniques used in
DSDM are:
25
26
1. Time Boxing
2. MoSCoW Rules
3. Prototyping
1. Pre-project
2. Feasibility Study
3. Business Study
4. Functional Model Iteration
5. Design and build Iteration
6. Implementation
7. Post-project
The Dynamic Systems Development technique (DSDM) is an associate degree agile code
development approach that provides a framework for building and maintaining systems. The
DSDM philosophy is borrowed from a modified version of the sociologist principle—80 % of
An application is often delivered in twenty percent of the time it’d desire deliver the entire (100
percent) application.
DSDM is An iterative code method within which every iteration follows the 80% rule that
simply enough work is needed for every increment to facilitate movement to the following
increment. The remaining detail is often completed later once a lot of business necessities are
noted or changes are requested and accommodated.
The DSDM tool (www.dsdm.org) could be a worldwide cluster of member companies that put
together tackle the role of “keeper” of the strategy. The pool has outlined AN Agile
Development Model, known as the DSDM life cycle that defines 3 different unvarying cycles,
preceded by 2 further life cycle activities:
1. Feasibility Study:
It establishes the essential business necessities and constraints related to the applying to be
designed then assesses whether or not the application could be a viable candidate for the
DSDM method.
2. Business Study:
It establishes the use and knowledge necessities that may permit the applying to supply
business value; additionally, it is the essential application design and identifies the
maintainability necessities for the applying.
3. Functional Model Iteration:
It produces a collection of progressive prototypes that demonstrate practicality for the
client.
(Note: All DSDM prototypes are supposed to evolve into the deliverable application.)
The intent throughout this unvarying cycle is to collect further necessities by eliciting
feedback from users as they exercise the paradigm.
26
27
27
28
DSDM is often combined with XP to supply a mixed approach that defines a solid method
model (the DSDM life cycle) with the barmy and bolt practices (XP) that are needed to
create code increments. additionally, the ASD ideas of collaboration and self-organizing
groups are often tailored to a combined method model.
FDD stands for Feature-Driven Development. It is an agile iterative and incremental model
that focuses on progressing the features of the developing software. The main motive of
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.
History
FDD was first applied in the year 1997 on a real-world application by Jeff De Luca for large
software development with specific needs of 15-month and 50 persons and published as a
discussion in book Java Modeling in Color with UML in the year 1999.
FDD Lifecycle
Build overall model
Build feature list
Plan by feature
Design by feature
Build by feature
This method focuses on "Designing and Building" features. In contrast to other smart methods,
FDD describes the small steps of the work that should be obtained separately per function.
Characteristics of FDD
Short iterative: FDD lifecycle works in simple and short iterations to efficiently finish the
work on time and gives good pace for large projects.
28
29
Customer focused: This agile practice is totally based on inspection of each feature by
client and then pushed to main build code.
Structured and feature focused: Initial activities in lifecycle builds the domain model and
features list in the beginning of timeline and more than 70% of efforts are given to last 2
activities.
Frequent releases: Feature-driven development provides continuous releases of features in
the software and retaining continuous success of the project.
Advantages of FDD
Reporting at all levels leads to easier progress tracking.
FDD provides continuous success for larger size of teams and projects.
Reduction in risks is observed as whole model and design is build in smaller segments.
FDD provides greater accuracy in cost estimation of the project due to feature
segmentation.
Disadvantages of FDD
This agile practice is not good for smaller projects.
There is high dependency on lead programmers, designers and mentors.
There is lack of documentation which can create an issue afterwards.
29