Define major development cycles approach
Agile software development
Agile software development is a group of software development methodologies based on
iterative and incremental development, where requirements and solutions evolve through
collaboration between self-organizing, cross-functional teams. The Agile Manifesto introduced the
term in 2001.
Agile methods in other than its uniqueness, he and other methods also have much in common,
such as iterative development, interactive communication concerns and reduce the unnecessary
consumption of resources intermediation process. Usually measured in terms of the applicability
of agile methods: from the product perspective, agile methods for germinating and fast-changing
needs of the situation, such as the relatively high critical systems, reliability, safety requirements,
it may not entirely suitable; from the perspective of the organizational structure, organizational
structure, culture, personnel, communication and determines the applicability of agile methods.
The most important factor is probably the size of the project. Increase in size, more difficult to
communicate face to face, so agile methods more suitable for smaller teams, 20,40 people or less.
Large-scale Agile software development is still in the area of active research.
Another problem is that early in the project or to quickly collect a large number of assumptions
may lead to project into the needs of errors, especially the needs of our customers have no idea of
their own circumstances. Similarly, the nature of people is very easy to cause a person to become
the leading design and project objectives and the situation into the wrong direction. Developers
often can not appropriate program grants to Customer, and until the last before the problem can be
found in your business. Although theoretically can limit speed the process of interaction of these
errors occur, but only if negative feedback is valid, otherwise an error will rapidly expand.
Specific tools and techniques such as continuous integration, automated or xUnit test, pair
programming, test driven development, design patterns, domain-driven design, code refactoring
and other techniques are often used to improve quality and enhance project agility.
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
(timeboxing), which is intended to improve productivity and introduce checkpoints where new
customer requirements can be adopted.
Other elements of extreme programming include: programming in pairs or doing extensive code
review, unit testing of all code, avoiding programming of features until they are actually needed, a
flat management structure, simplicity and clarity in code, expecting changes in the customer's
requirements as time passes and the problem is better understood, and frequent communication
with the customer and among programmers.[2][3][4] The methodology takes its name from the
idea that the beneficial elements of traditional software engineering practices are taken to
"extreme" levels, on the theory that if some is good, more is better. It is unrelated to "cowboy
coding", which is more free-form and unplanned. It does not advocate "death march" work
schedules, but instead working at a sustainable pace.[5]
Critics have noted several potential drawbacks,[6] including problems with unstable requirements,
no documented compromises of user conflicts, and lack of an overall design specification or
document.
BDD
BDD was originally named in 2003 by Dan North[1] as a response to Test Driven Development,
including Acceptance Test or Customer Test Driven Development practices as found in Extreme
Programming.
BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale,
high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs,
resulting in the delivery of working, tested software that matters.
Behavior-driven developers use their native language in combination with the ubiquitous language
of domain driven design to describe the purpose and benefit of their code. This allows the
developers to focus on why the code should be created, rather than the technical details, and
minimizes translation between the technical language in which the code is written and the domain
language spoken by the business, users, stakeholders, project management, etc.
BDD is driven by business value; that is, the benefit to the business which accrues once the
application is in production. The only way in which this benefit can be realized is through the user
interface(s) to the application, usually (but not always) a GUI.
TDD
Kent Beck, who is credited with having developed or 'rediscovered' the technique, stated in 2003
that TDD encourages simple designs and inspires confidence.Test-driven development is related to
the test-first programming concepts of extreme programming, begun in 1999, but more recently
has created more general interest in its own right.
It can effectively avoid the waste caused by over-design. But some others stressing the need to
develop a complete design before re-implementation of the reconstruction can lead to avoid
waste.It also allows the developer to develop a more comprehensive view, to avoid waste caused
by over-achieving.
Developers may only be completed to meet the test code, while ignoring the real needs of
implementation. With practitioners think that using pair programming approach can effectively
avoid this problem.The actual code will slow down the speed of development, in particular,
requires the development speed for the prototype development adversely. It should consider the
development speed and quality need to include both functional and simple code speed may not be
fully representative of development speed.For the GUI, database and Web applications. Tectonic
unit testing more difficult, if forced to construct unit tests, but to maintain the additional workload.
Have developers that this is due to design, rather than the difficulties caused by the development
method.Makes the development of more use cases and test case concerns, not the design itself.
Currently, there is more to this point controversial.Test-driven development will lead to inadequate
coverage of unit tests, such as the possible lack of boundary testing. In the actual operation, and
non-test driven development, like, when the code is completed or need to add unit tests to improve
test coverage.
RAD
Rapid Application Development refers to a type of software development methodology that uses
minimal planning in favor of rapid prototyping.
The "planning" of software developed using RAD is interleaved with writing the software itself.
The lack of extensive pre-planning generally allows software to be written much faster, and makes
it easier to change requirements
Difference between Structured Analysis and Object Oriented Analysis?
Structured analysis (Structured Method, a structured approach) emphasizes the rationality of
development methods and the rationality of the software that used in development. Structure refers
to the system between the various elements, interaction framework.. Structured development
method is proposed to improve the software structure of a set of reasonable criteria, such as
decomposition and abstraction, module independence, information hiding and so on. Software life
has the various different stages, it has structured analysis (SA), structured design (SD) and
structured programming (SP) and other methods.
Object-oriented analysis methods (Object-Oriented Analysis, OOA), is in the process of
developing a system of business surveys conducted after the system, in accordance with
object-oriented thinking to analyze problems. OOA and the structural analysis have a greater
difference. OOA is emphasized in the system, based on survey data, required for the OO approach
to the classification of materials and finishing, rather than the status quo of management
operations and methods of analysis.
What is UML?
Unified Modeling Language (UML) is a standardized general-purpose modeling language in the field
of software engineering.
UML includes a set of graphic notation techniques to create visual models of software-intensive
systems.
The Unified Modeling Language (UML) is used to specify, visualize, modify, construct and document
the artifacts of an object-oriented software-intensive system under development.
What are CASE Tools?
Computer-aided software engineering is the scientific application of a set of tools and methods to a
software system which is meant to result in high-quality, defect-free, and maintainable software
products.
It also refers to methods for the development of information systems together with automated tools
that can be used in the software development process.