Sasha Kopriva CS383 hw 4 Feature Driven Development Of the five major agile development methods, Feature Driven Development would be the most effective and productive method to use for gus development. Many of its chief aspects are characteristics of gus that could be easily manipulated to fit the Feature Driven Development model. Though other agile development models could be used with perhaps some minor adjustments, Feature Driven Development is a very well suited model to how gus should be implemented effectively. Feature Driven Development is a software development process in which development is influenced by the features of the software incrementally. This method is effective when the customer does not need to be directly or frequently involved. Using this method, a model of the software is created, and from that, a list of features is produced. Using the list of features, programmers are assigned different features that will be treated as classes. Then, design and building is done on a class by class basis. Because Feature Driven Development (FDD) is focused on the client-valued functions of the software, it is well suited to the gus software model. Gus would be very easy to split into feature classes, and would also allow classes (and their associations) to be developed correctly and easily. Pair Programming is a way of software development that involves pairs of programmers working together on the same piece of code. This is usually done with one work station. This method allows for shorter programs and better solutions, as compared to a single programmer. However, for gus, this would require that the two people that were “paired” to be able to work well together, have similar free time, and have evenly matched programming skills. It would also require that the class be split into pairs, with each pair working on a specific part of gus, which would slow development time. Although pair programming can be a very effective way of producing software, it would be too difficult to implement in a small class size for gus. Extreme Programming is a software development strategy that is best suited to frequent customer interaction and feedback. It is especially useful when the customer is unsure of what their software requirements are, or if their software requirements are subject to change. Extreme Programming (XP) allows for continuous feedback and planning, which gives the customer the ability to see progress and develop the software alongside the programmer. However, because gus doesn’t have a single customer or customer “entity”, but instead has a collection of users, it would be more difficult to obtain frequent feedback in a timely manner with every code, test, and design iteration. Also, because gus was not created by our users, but instead the programmers themselves, many of the software requirements have already been decided on, with only minor changes or tweaks to be expected through the design and implementation process. The Scrum model is similar to extreme programming in that it is useful for software development that requires feedback from the customer. The Scrum method consists of frequent meetings with programmers, customers, the product owner, and the project team. Also, work to be done for the project is constantly being reviewed and prioritized to meet customer’s needs and deadlines. Although it would be helpful for the gus teams to meet and discuss priorities, it would not be practical or realistic for the gus teams to meet as frequently has the scrum model suggests. Also, because gus does not have a “customer” to get frequent feedback from, meeting with customers would prove to be rather difficult, and would provide little in the way of assessing backlogs, as in the scrum model. The Test Driven Development model is not necessarily a software development model (as compared to Scrum or XP), but a way of effectively producing code. Using this model, the software is developed through a series of tests written for the software, before it is fully developed. An initial test is created in which the software will inevitably fail, and then code is written. Subsequent tests are created and the software is re-tested with the tests until it passes all of them. Once it does, the code is perfected and the process starts over again. This method is very useful because it builds upon working code, assuring progress in the development process. This model would be easy to implement for gus development and would be useful, but feature driven development is better suited to the gus software model. However, the Test Driven Development model could be used in addition or conjunction with feature driven development as a means of testing and producing usable code. From five agile concepts discussed, the Feature Driven Development method is well suited to our software and our situation. FDD involves developing an overall model, building a feature list, planning by feature, designing by feature, and building by feature. These five basic “activities” of the FDD fit very well with the software we are developing. Gus is made up of many “features. In fact, we have already mostly completed two of the five FDD activities: We have developed a preliminary overall model for gus (through class diagrams) and we have build a feature list (through use cases and class diagrams). Because many of the main features of gus functioned as classes (as shown in our class diagrams) it would be very easy to refine our model and our feature list. According to the FDD, planning by feature involves assigning and ordering features as classes to programmers. By designing gus a feature at a time, it will be easier to test functionality because it will be by a per feature basis. Because features are small, testing will take place more frequently, therefore ensuring that features are functioning properly before moving on to a new feature, or set of features. After the design is complete, building the features will involve actually coding the features. During this phase, TDD could be implemented to ensure full functionality of the features. Once a feature passes the TDD “code inspection”, the feature will be finished and set aside for the final product. Because FDD is done in a very modular manner, it will be very easy to implement the software, test it, and make changes, without the possibility of a complete re-write of the software. The other agile software development methods are not as well suited to the gus software project as Feature Driven Development is. Although some methods could be tweaked to work with gus, FDD relies on many of characteristics that are already built into the gus model, making it very simple model to follow for development.