Information Technology Reference
In-Depth Information
proposed software product. The development team discusses the functionality and
constructs an appropriate object model for the proposed software product.
In the ''build a features list'' phase, the development team draws up a features
list which would contain ''client-valued'' major features for the proposed software
product. Each of the major features may further be subdivided into features. The
feature list prepared by the development team may be reviewed by the users and
the domain experts to confirm that all required functionality is included.
In the ''plan by feature phase'', an overall plan is prepared in which the features
are prioritized. Then based on the dependencies between the features, sets of
features are assigned to ''chief programmers''. A schedule for developing the
assigned features is also drawn up.
The phases of ''design by feature'' and ''build by feature'' are iterated until
software is developed for all features. In these two phases, a set of features is
selected, then designed and developed. Each iteration is normally limited to
2 weeks or less. These two phases include, design, design verification, coding, unit
testing, integration and code walk through. Upon completion of an iteration suc-
cessfully, the developed code is included in the build of the main product.
This methodology assumes that requirements already exist when the project
begins. These are converted into features list through the collaboration between the
domain expert and the development team. These features drive the design and
development of the proposed software product. As FDD is also an agile method, it
ought to accept changes during the two phases of designing and building the
product.
15.6 Test Driven Development
Test Driven Development (TDD) is based on the premise that testing is crucial to
developing a defect-free product. To be able to write any test case, one should
know the functionality as well as the software design. To write a test case for unit
testing, in addition to knowing about the functionality and the design, even the
knowledge of code is also necessary. Thus, TDD forces one to think through the
project requirements and software design.
The phases in TDD are, write/add an automated test case, run the test (and it
fails), write the production code and run the test again, and when the code passes
the test, refactor the code. Then the next cycle begins by adding another test case.
By test case, I mean it is a test case for conducting a unit test. Adding an
automated test case requires using an automated software testing tool, and we need
to write some code to be able to run the test case. That involves learning the
functionality, and designing the component before we can write some rudimentary
code. But we write an efficient unit test case. As we write test cases, we would
have a set of robust unit tests and it will result in a quality product because the unit
test is the most crucial test in achieving software quality.
 
Search WWH ::




Custom Search