TAILIEUCHUNG - Software Engineering For Students: A Programming Approach Part 35

Software Engineering For Students: A Programming Approach Part 35. This fully revised version of Doug Bell's Software Engineering: A Programming Approach continues to use the successful formula of the previous editions. The author's approach is to present the main principles, techniques and tools used in software engineering, one by one, chapter by chapter. This book is a unique introduction to software engineering for all students of computer science and its related disciplines. It is also ideal for practitioners wishing to remain current with new developments in the area | 318 Chapter 24 Incremental development Figure Bottom-up implementation there is no visible working system until a very late stage system testing is complete. True there are tested components and subsystems but there is normally nothing that can be demonstrated to the client as even providing a limited vision of what the system will eventually do. not all systems have a bottom. Middle-out implementation Middle-out development starts with an architectural design for the software. It then chooses some central component as the starting point for testing. A driver and stubs are written and the component is tested. Then some adjoining component is added to the system and testing carried out. The system emerges from its centre. This approach could be useful in developing a large software system that involves a number of developers. In such a development the work needs to be divided among a number of people who work concurrently. Hopefully the architecture can be cleanly divided into weakly coupled subsystems which are initially developed independently. These subsystems need to be surrounded by drivers and stubs developing in a middle-out fashion. This approach suffers from all the combined drawbacks of bottom-up and top-down development. SELF-TEST QUESTION Suggest a drawback of middle-out development Discussion 319 Use case driven implementation A use case is a single independent function that a system provides for a user. For example the word processor Appendix A provides tens of functions to carry out the tasks of editing formatting and displaying text. Each of these is a use case. This approach takes one use case at a time and implements it. In the word processor example we might first choose to implement the save file function. This is a good choice because once it is implemented this feature is useful in providing a mechanism for testing the other use cases. Implementing this function means single-mindedly concentrating on it to the exclusion