- Hands-On Software Engineering with Python
- Brian Allbee
- 451字
- 2021-06-24 18:20:37
Feature-driven development
The primary unit of work in a Feature-Driven Development (FDD) process is a feature. Those features are the end result of a detailed System Modeling effort, focusing on creating one-to-many domain models in significant detail, mapping out where features live in the system's domain, how (or if) they are expected to interact with each other—the sort of information that should come out of use cases, data structures, flow models, and Interprocess Communication models. Once the overall model is established, a feature list is constructed and prioritized, with a specific view to at least trying to keep the implementation time frame of each feature in the list at a reasonable maximum—two weeks seems to be the typical limit. If an individual feature is expected to take more than the longest acceptable time, it is subdivided until it can be accomplished and delivered in that time period.
Once the complete feature list is ready for implementation, iterations around completing those features are planned around a fixed time period. In each iteration, features or sets of features are assigned to developers, singly or in groups. Those developers work out a final implementation design, and review and refine it if needed. Once the design is deemed solid, development and testing of code to implement the design take place, and the resulting new code is promoted to the build- or distribution-ready code base for deployment.
FDD goes hand-in-hand with several development best practices—automated testing, configuration management, and regular builds so that, if they aren't a full, formal Continuous Integration process, they are very close to being one. The feature teams are generally small, dynamically formed, and intended to have at least two individuals, at a minimum, on them, with the intention of promoting collaboration and early feedback, especially on a features' designs and implementation quality.
FDD may be a good option for large and complex systems—by breaking work down into small, manageable features, even development in the context of very large, very complex systems is going to be maintainable with a good success rate. The processes around getting any individual feature up and running are simple and easily understood. Barring occasional check-ins to make sure that development isn't stalling for some reason, FDD is very lightweight and non-intrusive. Feature teams will usually have a lead developer associated with them, who has some responsibility for coordinating the development efforts and refining implementation details when and if needed. That does mean, however, that the lead developer is less likely to contribute to the actual code, particularly if they are spending much of their time executing coordination or design-refinement efforts, or mentoring other members of the team.
- MicroPython Projects
- SharePoint 2010開發(fā)最佳實(shí)踐
- 永磁同步電動(dòng)機(jī)變頻調(diào)速系統(tǒng)及其控制(第2版)
- 系統(tǒng)安裝與重裝
- 嵌入式操作系統(tǒng)
- Splunk Operational Intelligence Cookbook
- 愛犯錯(cuò)的智能體
- 網(wǎng)站前臺(tái)設(shè)計(jì)綜合實(shí)訓(xùn)
- 單片機(jī)C語言程序設(shè)計(jì)完全自學(xué)手冊(cè)
- FPGA/CPLD應(yīng)用技術(shù)(Verilog語言版)
- 精通LabVIEW程序設(shè)計(jì)
- 基于ARM9的小型機(jī)器人制作
- 傳感器原理及實(shí)用技術(shù)
- 智能+:制造業(yè)的智能化轉(zhuǎn)型
- PowerPoint 2010幻燈片制作高手速成