Beruflich Dokumente
Kultur Dokumente
2018
OBJECT ORIENTED
ANALYSIS
AND
DESIGN
Agile software
development
Semester # 5th
Submitted by:
“Agile Development” is an umbrella term for several iterative and incremental software
development methodologies. The most popular agile methodologies include Extreme
Programming (XP), Scrum, Crystal, Dynamic Systems Development Method (DSDM), Lean
Development, and Feature-Driven Development (FDD).
While each of the agile methodologies is unique in its specific approach, they all share a
common vision and core values (see the Agile Manifesto). They all fundamentally incorporate
iteration and the continuous feedback that it provides to successively refine and deliver a
software system. They all involve continuous planning, continuous testing, continuous
integration, and other forms of continuous evolution of both the project and the software.
Many of the individual principles and practices that are promoted by agile development have
been around for years, even decades. As opposed to implementing these best practices
piecemeal, agile methodologies have “packaged” various customer, management, and in
some cases, engineering practices and principles together in a way that helps guide teams
through the process of rapidly planning and delivering working, tested software. Each of the
agile methodologies combines both old and new ideas into refinements that are certainly
greater than the sums of their parts.
While it is true that many of the practices associated with agile development have been
around for quite some time, the average software development team has yet to embrace
many of the principles and practices. Even today, the average software team does not iterate,
does not deliver software incrementally, and does not practice continuous planning nor
automate testing. Now that these practices have been combined in a manner that can more
easily be understood and adopted, the trend appears to be rapidly changing for the better,
especially during the last several years.
ASSIGNMENT NO 2
REQUIREMENT GATHERING:
The software requirements are description of features and functionalities of the
target system. Requirements convey the expectations of users from the software
product. The requirements can be obvious or hidden, known or unknown, expected
or unexpected from client’s point of view.
Requirement Engineering
The process to gather the software requirements from client, analyze and
document them is known as requirement engineering.
Feasibility Study
Requirement Gathering
Software Requirement Specification
Software Requirement Validation
Feasibility study
When the client approaches the organization for getting the desired product
developed, it comes up with rough idea about what all functions the software
must perform and which all features are expected from the software.
The output of this phase should be a feasibility study report that should contain
adequate comments and recommendations for management about whether or
not the project should be undertaken.
Requirement Gathering
If the feasibility report is positive towards undertaking the project, next phase
starts with gathering requirements from the user. Analysts and engineers
communicate with the client and end-users to know their ideas on what the
software should provide and which features they want the software to include.
SRS defines how the intended software will interact with hardware, external
interfaces, speed of operation, response time of system, portability of software
across various platforms, maintainability, speed of recovery after crashing,
Security, Quality, Limitations etc.
ASSIGNMENT NO 2
COHESION:-
To maximize the relationship between elements of same modules. Cohesion is
the concept come in sight. The cohesion of a module represents how tightly
internal element of a module are bound with one another. Greater the cohesion
of each module, lower will be the coupling between the modules.
Types:-
1. Coincidental cohesion
2. Logical cohesion
3. Temporal cohesion
4. Procedural cohesion
5. Communicational cohesion
6. Sequential cohesion
7. Functional cohesion
Coincidental cohesion:-
This occurs when there is no relationship among elements of a module. They
can occur if an existing program modularized by chopping it into pieces and
making differ piece of modules i.e. it performs a set of tasks that are related
to each other very loosely. The modules contain a random collection of
function.
Logical cohesion:-
A module having logical cohesion if there are some logical relationship
between elements of a modules i.e. elements of a module performs the
operation.
Temporal cohesion:-
It is same as logical cohesion except that the element must be executed in
same time. Set of function responsible for initialization, startup, the
shutdown of the same process. It is higher than logical cohesion since all
elements are executed together. This avoids the problem of passing the flag.
Procedural cohesion:-
It contains that belongs to a procedural unit in which a certain sequence of
steps has to be carried out in a certain order for achieving an objective.
Communicational cohesion:-
A module is said to have Communicational cohesion if all function of
module refers to an update the same data structure.
Sequential cohesion:-
Functional cohesion:-
It is the strongest cohesion in a functional bound module, all elements of the
module are related to performing a single function. By function we not mean
simply mathematical function but also these modules which have single goal
function like computing square root and sort array are a clear example of
functionality cohesion modules.
Coupling:
Coupling effectively represents how the subsystems can be connected with other
subsystem or with the outside world.
Coupling is a measure of interconnection among subsystems in a program structure.
Coupling depends on the interface complexity between subsystems.
The goal is to strive for the possible coupling among the subsystems in software
design.
The property of good coupling is that it should reduce or avoid change impact and
ripple effects.it should also reduce the cost in program changes, testing and
maintenance.
Various type of coupling:
Data coupling: The data coupling is possible by parameter passing or data interaction.
Control coupling: The modules share related control data in control coupling.
Common coupling: In common coupling common data or global data is shared among the
modules.
Content coupling: Content coupling occurs when one module makes use of data or control
information maintained in another module.
Assignment
4
Inception
Phases and Iterations
1. Inception Establish the vision, scope, and initial plan for the project
2. Design, implement, and test a sound architecture and
Elaboration complete the project plan
3.Construct Build the first operational system version
ion
4. Deliver the system to its end users
Transition
Inception and elaboration focus more on the creative and engineering
activities of the development life cycle, while construction and
transition focus more on production activities. Within each phase are a
number of iterations. An iteration represents a complete development
cycle, from requirements capture in analysis to implementation and
testing, that results in an executable release.
Iterations