Transcription of Writing a Functional Specification
1 1CA465 How to write a Functional Specification , Rory O Connor1 Writing a Functional SpecificationRory O Con norCA465CA465 How to write a Functional Specification , Rory O Connor2 What is a Functional Sp ec ification? They are the blueprint for how you want a particular software product to look and work It details what the finished product will do, how a user will interact with it, and what it will look li ke By creating a blueprint of the product first, time and productivity are saved during the development stage because the programmers can program instead of also working out the logic of the user-experience It will a lso enable you to manage the expectations of your clients or management, as they will know exactly what to expect. CA465 How to write a Functional Specification , Rory O Connor3 Functional Sp ecification Vs Design A Functional spe cificationstate s whatthe proposed syste m is to do A designis ho wt he syste m is to be constru cted to meet the fun ction al Specification In Writing a Functional Specification , so me consideration of design is sue s m u st take place, to en sure a realistic sy ste m is specifiedCA465 How to write a Functional Specification , Rory O Connor4 Functional Vs technical Spec s A Functional Specification des c ribes how a product will w ork entirely from th e user' s perspective.
2 It doesn't care how the thing is implemented It talks about features It specifies screens, menus, dialogs, and so on. A technical speci fication descr ibes the internal implementation of the pr ogram. It talks about data structures, relational database models, choice of programming languages and tools, algorithms, How to write a Functional Specification , Rory O Connor5 Why write a Functional Spec? A key benefit of Writing up a Fun ctional Spec is in streamlining the de velopmen t proces s The developer working from t he spec has, ideally, all of their questions ans wered about the application and ca n start building it And since this is a spec that was approved by the client ( supervisor in your case ), they are building what the client is expecti ng There sho uld be nothing left to g uess or interpret when the spe c is co mpletedCA465 How to write a Functional Specification , Rory O Connor6 Why won't peo ple write specs?
3 I th ink it 's because so many people don't li ke t o write People claim that it 's because they're saving ti me by skipping the spec- Writing phase They consider spec- Writing a luxury reserved for NASA or people who work for giant, established companies Failing to wri te a spec is the single biggest un n ecessary risk you take in a software project It's as stupid as setting off to cross the Mojave dese rt with just the clothes on your back, hoping to "wing it. Programmers and software engineers who dive into code withou t wri ting a spec tend to thi nk they 're cool gunslingers, shooting from the hip They're not. They are terribly unproductive They write bad code and produce shoddy software, and they threaten their projects by taking giant risks which are completely uncalled for2CA465 How to write a Functional Specification , Rory O Connor7 Functional Spec = Decisions In too many programming organizations, every time t here's a design debate, nobody ever manages to make a decision, usually for political reasons So the programmers only work on uncontroversial stuff.
4 As time goes on, all the hard decisions are pushed to the end These are the most likely projects to fail Writing a spec is a great way to nail down al l t hose irritating design decisions, large and small, that get covered up if you don't have a spec When you force yourself to write a good, complete spec (and I'lltalk a lo t more about that soon), you should notice all t he th ings that need to be i ncluded and you eit her fix the m or at least youmark them wi th a big red flagCA465 How to write a Functional Specification , Rory O Connor8Do all projects need on e? Yes for any non-trivial project non-trivial = more than about 1 week of coding or more than 1 programmer If you don't have a spec, you will alwa ys spend more time and create lower quality code. Here's The most important function of a spec is to design the program Even if you are working on code all by yourself, and you write a spec solely for your own benefit, the act of writi ng the spec -describing how the program works in detail -w ill force you to actually design the programCA465 How to write a Functional Specification , Rory O Connor9 Who writes a Function al Spec?
5 For CA4 YOU The Functional spec should be written by someone who is not involved in any other aspect of the project You will want somebody who is very familiar with the problem to be ad dressed, familiar enough with technology to know its limitations and capabilities, and someone who is a very skilled and detailed writer While Writing a spec, you will spend much of your time imagininghow a user might use a certain feature and how they may navigatetheir way through the information Not only do you need to map this world out visually, but you also have to write out in great detail what this world does; all the while, balancing everything within the current technological limitations and business demands The Functional spec writer's sole concern is marrying the user-experience with the various departmental, business, and technical requirements of the project. CA465 How to write a Functional Specification , Rory O Connor10A suggeste d high-level approach Define the application Develop m odels Define information flow s Write the spec Review and editCA465 How to write a Functional Specification , Rory O Connor11 Define The Application The information gathering process is the critical step of any successful Functional spec.
6 Just as important as t he finished document is t he thin king process you have to force yourself through in order to begin Writing . It makes everyone thi nk about what they are building, w hy they're bui lding i t, who wil l be using it, how th ey'll be usi ng i t, and what i t w ill end up doing. At this early stage, everyone may have various shades of ambiguity about what they 're getting ready to build and i t's unlikel y that an yone is in total agreement about what exactly the finished product wil l do. Here is a checklist of general questions you should be asking Depending on what the project is, you'll probably come up with more specific questionsCA465 How to write a Functional Specification , Rory O Connor12 Define The is the application supposed to be? Make sure y ou have a str ong grasp on wha t the product is before you st art is the application supposed to do?
7 Now that you know what the product is supposed to be, y ou shouldstart dissecting what it is supposed to do. Identify the main objectives of this project ba sed on its crit ical fac tors Typically, there are one or two c ore pieces of functionalit y that ma ke up the bulk of the final product with a bunch of other smaller i tems thrown in. A good w ay to do this is t o simply create a list o f all the fu nctions you want the application to perform and then rank them based on priority. is going to be using this application? Find out who the audience is Create use cases and develop user personas. there a precedent for this application? If what you're developing is similar to other products out t here Perform a c ompetitive analysi get idea of the competition3CA465 How to write a Functional Specification , Rory O Connor13 Develop Models Developing models is a good way to start distilling all of the information you have gathered so far Models, by definition, are a good way to convey an understanding of the components that make up a system Models are an aids to explain complex ideas As the Functional spec writer, you are responsible for creating information models to help convey the concepts of the application you are developing Use Case are often useful at this stageCA465 How to write a Functional Specification , Rory O Connor14 Model types User s Conceptual Model Building this model wi ll be helped greatly b y your development of use cases and user personas.
8 Here, you will bui ld a model of your system based around the user s perceptions of the system not what the system actually is, but how it will be perceived bythe user. Designer s Model The designer s model is really the nu ts and bolt s model for the Functional spec writer This is where the in terface components and relationships to be seen and experienced by the user are defined It details the available objects in t he user s uni verse and how they can use them to accomplish certain t asksCA465 How to write a Functional Specification , Rory O Connor15 Define The Information Flow To start this process, try and make an outline of everything you currently know. A lot of this should be easy after creating your models for the application. Maybe diagram the organization of the information ( , create flowcharts) Creating flowcharts can be very handy when tr ying to work through a lot of information or a very deep navigation set.
9 Anyt hing you develop now w ill change over time, but ultimatel y you'll want a thorough flowchart of the application included wit h your spec. Visio is a good tool for developing technical diagrams and flow charts such as these. CA465 How to write a Functional Specification , Rory O Connor16 Write the Spec General tips that you may find useful in structuring your document: Cover everything Make sure y ou've written about every single interaction point that exists in the application Don't lea ve anything to guess or a ssume. Use lots of screen shots It's usually helpful to slice up yourmoc kups and insert scre enshots / sketches of the individual elements you may be Writing ab out Write concisely, correctly, and consistently An economy of w ords will be appreciated by those who ha ve to read y our document and make sense of it all Try and break things out int o logical c omponents or s teps as much a s possible.
10 Use proper grammar and consistent terms What to ols do you use? What form at ? What st yle should y ou adopt?Etc. How y our documents will be used: will they need to be online, will they frequently be merged with other documents, do they need to be ina particular fo rmat or follow a certain st yle? CA465 How to write a Functional Specification , Rory O Connor17 Edit And Rewrite Rewriting and editing are, literally, half the battle. When setting the timeline for your completion of the spec, always try to more time than you need Something always comes up during the editing process Some basic things to do during the editing process: Check your table of c ontents This is an obvious one, but make sure y our table of cont ents cor rel ates exactly with what's in y our document. Edit from beginning to end at least three times after you th ink it is done 3 times seems to usually do the.