Writing a Functional Specification Functional Vs Technical Spec's Why

Writing a Functional Specification Functional Vs Technical Spec's Why

What is a Functional Specification? • They are the blueprint for how you want a particular software product to look and work Writing a Functional • It details what the finished product will do, how a user will interact with it, and what it will look like Specification • 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 Rory O’Connor • It will also enable you to manage the expectations of your clients or management, as they will know CA465 exactly what to expect. CA465 How to write a Functional Specification, Rory O’Connor 1 CA465 How to write a Functional Specification, Rory O’Connor 2 Functional Specification Vs Design Functional Vs technical Spec’s • A functional specification states what the •A functional specification describes how a proposed system is to do product will work entirely from the user's • A design is how the system is to be perspective. constructed to meet the functional – It doesn't care how the thing is implemented specification – It talks about features • In writing a functional specification, some – It specifies screens, menus, dialogs, and so on. consideration of design issues must take •A technical specification describes the place, to ensure a realistic system is specified internal implementation of the program. – It talks about data structures, relational database models, choice of programming languages and tools, algorithms, etc. CA465 How to write a Functional Specification, Rory O’Connor 3 CA465 How to write a Functional Specification, Rory O’Connor 4 Why write a Functional Spec? Why won't people write specs? • A key benefit of writing up a Functional Spec • I think it's because so many people don't like to write • People claim that it's because they're saving time by skipping is in streamlining the development process the spec-writing phase • The developer working from the spec has, • They consider spec-writing a luxury reserved for NASA or people who work for giant, established companies ideally, all of their questions answered about • Failing to write a spec is the single biggest unnecessary risk you the application and can start building it take in a software project – It's as stupid as setting off to cross the Mojave desert with just the • And since this is a spec that was approved by clothes on your back, hoping to "wing it.“ the client (supervisor in your case), they are • Programmers and software engineers who dive into code without writing a spec tend to think they're cool gunslingers, building what the client is expecting shooting from the hip –They're not. • There should be nothing left to guess or – They are terribly unproductive interpret when the spec is completed – They write bad code and produce shoddy software, and they threaten their projects by taking giant risks which are completely uncalled for CA465 How to write a Functional Specification, Rory O’Connor 5 CA465 How to write a Functional Specification, Rory O’Connor 6 1 Functional Spec = Decisions Do all projects need one? • In too many programming organizations, every time there's a • Yes for any non-trivial project design debate, nobody ever manages to make a decision, – non-trivial = more than about 1 week of coding or more usually for political reasons than 1 programmer • So the programmers only work on uncontroversial stuff. As time goes on, all the hard decisions are pushed to the end • If you don't have a spec, you will always spend more • These are the most likely projects to fail time and create lower quality code. • Writing a spec is a great way to nail down all those irritating • Here's why… design decisions, large and small, that get covered up if you – The most important function of a spec is to design the don't have a spec program • When you force yourself to write a good, complete spec (and I'll – Even if you are working on code all by yourself, and you talk a lot more about that soon), you should notice all the things write a spec solely for your own benefit, the act of writing that need to be included and you either fix them or at least you the spec - describing how the program works in detail - will mark them with a big red flag force you to actually design the program CA465 How to write a Functional Specification, Rory O’Connor 7 CA465 How to write a Functional Specification, Rory O’Connor 8 Who writes a Functional Spec? A suggested high-level approach • For CA4 project… YOU • Define the application • Ideally… – The functional spec should be written by someone who is not • Develop models involved in any other aspect of the project – You will want somebody who is very familiar with the problem to • Define information flows be addressed, familiar enough with technology to know its limitations and capabilities, and someone who is a very skilled and • Write the spec detailed writer – While writing a spec, you will spend much of your time imagining • Review and edit how a user might use a certain feature and how they may navigate their 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’Connor 9 CA465 How to write a Functional Specification, Rory O’Connor 10 Define The Application Define The Application… Steps • The information gathering process is the critical step of any 1. What is the application supposed to be? successful functional spec. – Make sure you have a strong grasp on what the product is before you start • Just as important as the finished document is the thinking anything process you have to force yourself through in order to begin 2. What is the application supposed to do? writing. – Now that you know what the product is supposed to be, you should start dissecting what it is supposed to do. • It makes everyone think about what they are building, why – Identify the main objectives of this project based on its critical factors they're building it, who will be using it, how they'll be using it, – Typically, there are one or two core pieces of functionality that make up and what it will end up doing. the bulk of the final product with a bunch of other smaller items thrown in. • At this early stage, everyone may have various shades of – A good way to do this is to simply create a list of all the functions you ambiguity about what they're getting ready to build and it's want the application to perform and then rank them based on priority. unlikely that anyone is in total agreement about what exactly 3. Who is going to be using this application? the finished product will do. – Find out who the audience is – Create use cases and develop user personas. • Here is a checklist of general questions you should be asking 4. Is there a precedent for this application? – Depending on what the project is, you'll probably come up with – If what you're developing is similar to other products out there more specific questions – Perform a competitive analysis… get idea of the competition CA465 How to write a Functional Specification, Rory O’Connor 11 CA465 How to write a Functional Specification, Rory O’Connor 12 2 Develop Models Model types • Developing models is a good way to start distilling all • User’s Conceptual Model of the information you have gathered so far – Building this model will be helped greatly by your development of use cases and user personas. • Models, by definition, are a good way to convey an – Here, you will build a model of your system based around understanding of the components that make up a the user’s perceptions of the system system • not what the system actually is, but how it will be perceived by the user. • Models are an aids to explain complex ideas • Designer’s Model • As the functional spec writer, you are responsible for – The designer’s model is really the nuts and bolts model for creating information models to help convey the the functional spec writer concepts of the application you are developing – This is where the interface components and relationships to be seen and experienced by the user are defined • Use Case are often useful at this stage – It details the available objects in the user’s universe and how they can use them to accomplish certain tasks CA465 How to write a Functional Specification, Rory O’Connor 13 CA465 How to write a Functional Specification, Rory O’Connor 14 Define The Information Flow Write the Spec • To start this process, try and make an outline of • General tips that you may find useful in structuring your document: everything you currently know. • Cover everything – Make sure you've written about every single interaction point that exists in • A lot of this should be easy after creating your the application – Don't leave anything to guess or assume. models for the application. • Use lots of screen shots • Maybe diagram the organization of the information – It's usually helpful to slice up your mockups and insert screenshots / sketches of the individual elements you may be writing about (i.e., create flowcharts) • Write concisely, correctly, and consistently – Creating flowcharts can be very handy when trying to work – An economy of words will be appreciated by those who have to read your through a lot of information or a very deep navigation set.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    4 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us