background preloader

Painless Functional Specifications - Part 1: Why Bother?

Painless Functional Specifications - Part 1: Why Bother?
by Joel Spolsky Monday, October 02, 2000 When The Joel Test first appeared, one of the biggest sore points readers reported had to do with writing specs. Why won't people write specs? I believe that on any non-trivial project (more than about 1 week of coding or more than 1 programmer), if you don't have a spec, you will always spend more time and create lower quality code. The most important function of a spec is to design the program. Let's visit two imaginary programmers at two companies. Speedy and Mr. Speedy decides that the best way to provide backwards compatibility is to write a converter which simply converts 1.0 version files into 2.0 version files. Now, Mr. When opening a file created with an older version of the product, the file is converted to the new format. The spec is shown to the customer, who says "wait a minute! When opening a file created with an older version of the product, the file is converted to the new format in memory. Another 20 minutes have elapsed. Mr. Mr. Related:  Test Driven DevelopmentWeb

Painless Functional Specifications - Part 2: What's a Spec? by Joel Spolsky Tuesday, October 03, 2000 (Have you already read part one? If not, that's here .) This series of articles is about functional specifications, not technical specifications. A functional specification describes how a product will work entirely from the user's perspective. When you design a product, inside and out, the most important thing is to nail down the user experience. I've written a short sample spec which should give you an idea for what a good functional specification looks like. Did you read it? No you didn't. (waiting patiently...) Ah, good. Here are some of the things I put in every spec. A disclaimer. An author. Scenarios. Nongoals. An Overview. Details, details, details. Details are the most important thing in a functional spec. Open Issues. Side notes. Specs Need To Stay Alive. This approach is why specs have such a bad reputation. Excuse me. To make people's life easier, I don't rerelease the spec daily. Who should write the specs? Next: Want to know more?

.NET Design Patterns in C# and VB.NET - Gang of Four (GOF) - DoFactory Design patterns are solutions to software design problems you find again and again in real-world application development. Patterns are about reusable designs and interactions of objects. The 23 Gang of Four (GoF) patterns are generally considered the foundation for all other patterns. They are categorized in three groups: Creational, Structural, and Behavioral (for a complete list see below). To give you a head start, the C# source code for each pattern is provided in 2 forms: structural and real-world. A third form, .NET optimized, demonstrates design patterns that fully exploit built-in .NET 4.5 features, such as, generics, attributes, delegates, reflection, and more.

Bookshelf v7.7: Functional Test Cases Functional Test Cases Functional test cases test a common business operation or scenario. Table 3 shows some examples of functional test cases. A functional test case may verify common control navigation paths through a view. Functional test cases typically have two components, test paths and test data. Test Case A test case describes the actions and objects to be tested. Test Data Frequently, a single path can be used to test many scenarios by simply changing the data that is used.

Rosetta Code WhatTimeIsIt This is a sample functional specification, a part of Joel on Software , a site about software management. It is intended for educational purposes, not to refer to a real product, in case you didn't notice by how stupid the whole thing was. Attention VCs, especially dim-witted ones : this product idea can be built for $5m at $20m-pre. WhatTimeIsIt .com Functional Specification Joel Spolsky Last Updated: September 27, 2000 ? WhatTimeIsIt .com is a service that tells people what time it is, over the web. This spec is not, by any stretch of the imagination, complete. This spec does not discuss the algorithms used by the time calculation engine, which will be discussed elsewhere. In designing products, it helps to imagine a few real life stories of how actual (stereotypical) people would use them. Scenario 1: Mike. These visitors are very upset if Mike has previously promised to meet with them at a certain time, but when that time comes around, Mike is nowhere to be found. Scenario 2: Cindy.

Model-View-ViewModel (MVVM) Applications: General Introduction - Ivo Manolov's Blog MVVM is a central concept in WPF, Silverlight, WindowsPhone and Windows 8 development, so I decided to take some time and bubble up some of the content in the WPF MVVM Toolkit, which we created some time ago. Model-View separation is by no means a novel idea in the software engineering industry—the idea has been around for at least 25 years. In the past few years, there has been a lot of interest in model-view architectures, fuelled both by the growing complexity of modern software systems and by the necessity to display UI on various devices, while reusing the same underlying business logic. This post outlines the benefits of model-view separation. It is essentially the same content as the content included in Part 1 of the documentation, which goes with the WPF MVVM Toolkit. A well-designed application is an application that is easy to develop, test, maintain, and evolve. Model-View-Controller (MVC) is the granddaddy of them all, dating back to 1979. 2.1. 2.2. 2.3. 2.4. 2.5.

Step by Step guide to Test Case Development Test case in simple terms refers to a documentation which specifies input, pre-conditions, set of execution steps and expected result. A good test case is the one which is effective at finding defects and also covers most of the scenarios/combinations on the system under test. Here is the step by step guide on how to develop test cases. 1) Detailed study of the System under test Before writing test cases, it is very important to have a detailed knowledge about the system which you are testing. It can be any application or any website or any software. 2) Written in simple language While writing test case, it is highly recommended to write in a simple and understandable language.It is equally important to write your steps to the point and accurate.Exact and consistent names for e.g. of forms, or fields under test must be used to avoid ambiguity. 3) Test case template It looks like: Let us look at each parameters should included good test cases: ii) Test Case Name: This filed can contain

Three Universal methods of reducing complexity Three Universal methods of reducing complexity. 1. Partitioning Reducing the number of factors that have to be dealt with simultaneously. 2. Directs our span of attention and allows for levels of detail Aids in the later construction of systems The shape of the hierarchy is important and should reflect the functionality of the system. 3. The most important idea behind a lot of structured design is "High Module Independence" Objective is not simply partitioning a program into a hierarchy but determining the structure such that each module is as independent of all other modules as possible. Black boxes. This leads to the development of Black Box program modules, derived from the Electronics idea. These are characterised as follows: Such black box systems are: Form a device viewpoint think of HI-FI separates or low-level filters. Coupling and Cohesion of modules Module strength. It is a scale giving the strength of relationships within a single module. The measures were developed by Glenford Myers

writing - how do I write a functional specification quickly and efficiently