We begin by making a list of all the stories (features) that we think we might want to put in the product. Each one is given an estimate of how long it will take to do. In this example, Ive estimated in days, but you might prefer to estimate in arbitrary numbers . Just keep them proportional. (Well come back to the estimating question, and to what I mean by days, in the next section of this chapter.) Here are the stories, estimates, and descriptions:
File Operations: 2 days. File save, load, save as.
File Operations, Recent Files: 1 day. Recent Files feature, the usual numbered file names in the File menu.
WYSIWYG Display: 2 days. Display the XProgramming.com Web page in a separate Microsoft Internet Explorer window, as editing proceeds. Might require Validity Indicator.
Validity Indicator: 1 day. Put an indicator on the Notepad page showing whether the XML contained is currently valid. Might be needed to decide when to push to the Internet Explorer window, or we might just let it be invalid.
Ordered List: 1 or 2 days. Ability to insert an Ordered List tag and the list items it contains. When the user hits Enter in a list item, give him another one, similarly to how the paragraph tag now works. Will require some work on Enter to make it smarter . Whichever of ordered list and unordered list is done first will require 2 days; the other will require 1 day.
Unordered List: 1 or 2 days. Unordered list. See Ordered List.
Proper Menus and Shortcuts: 2 days. Menus are presently all just spread across the window. They will need to be put under top- level menu headings and such.
Copy Cut Paste: 2 days. Standard Edit menu features.
Section Handling: 3 days. System now handles one level of sections, in a rudimentary fashion. Needs extension to three levels, including proper nesting.
Change Enclosing Tag: 2 days. Put the selection cursor somewhere. Pop up a window to change the enclosing tag to a new tag (for example, change a P tag to H2). Automatically figures out which tag is interesting, and does both ends.
Insert Tag Around Selection: 2 days. Select some text. Pop up a window to enclose the selected text into a user-provided tag.
User-Defined Tags: 3 days. Provide a way for users to define new tag insertions, together with their logic, if any. Sort of like macros. Shouldnt be a big deal, but its not very defined right now.
Insert Starting XML: 1 day. Start the window with valid XML in it.
Insert User-Defined Starting XML: 2 days. Allow user to select the starting XML patch from a list of scraps stored somewhere.
Tabbing: 2 days: When user presses Tab, cursor goes somewhere reasonable: end of current tag, beginning of next tag, etc.
Unit Testing Page: 4 days. The XProgramming.com unit testing page is a table of unit testing applications made available by various programmers. We need an effective way to keep it up to date. One possibility is to use an XML file. It might even be desirable to use a simple ASP.NET or ADO.NET app to update it, perhaps even allowing contributors to update directly.
Book Reviews: 6 days. The site includes book reviews. These are presently included in articles, one or more reviews per article. Would be nice if they were in some kind of table or other acessible format. They are fully-formatted articles, however, so this might be tricky. The feature needs to include an index of all book reviews and ideally some way of searching for them and viewing a sorted table of contents. Possible XML, or perhaps ADO.NET?
XSLT to HTML: 3 days. Might be desirable to let the user specify an XSL file and then transform the XML to whatever kind of output the XSL specifies. The XProgramming site now runs on HTML, not XML converted on the fly, for compatibility with more browsers. Or, we might convert the whole system to run in ASP.NET, converting the XML behind the scenes. Seems like it would make it slow for no good reason, however.
Wiki/Weblog: 4 days.Might be desirable to implement a wiki and weblog capability by using ASP.NET. This would allow users to set up discussions on the site and allow the owner to publish short articles more quickly. Could get to be a fairly big app if we pushed it all the way. This estimate is for the simplest initial cases. (Paul Friedman and I actually did this experiment in a few hours, but the report isnt included in this book. The results will appear on my Web site in the future.)