Hot answers tagged specifications
65
The sound-bite answer is that requirements are what your program should do, the specifications are how you plan to do it.
Another way to look at it is that the requirements represent the application from the perspective of the user, or the business as a whole. The specification represents the application from the perspective of the technical team. ...
52
Specification says UNIQUE
HTML 4.01 specification says ID must be document-wide unique.
HTML 5 specification says the same thing but in other words. It says that ID must be unique in its home subtree which is basically the document if we read the definition of it.
Avoid duplication
But since HTML renderers are very forgiving when it comes to HTML ...
38
I'm the maintainer of Python's runpy module, and one of the maintainers of the current import system. While our import system is impressively flexible, I'd advise against adopting it wholesale without making a few tweaks - due to backwards compatibility concerns, there are bunch of things that are more awkward than they would otherwise need to be.
One thing ...
34
How can you know you're done, if you don't know what it's supposed to look like when it's done?
Feature creep will catch you. You'll be trying to deliver for a client, and, as completion time rolls around, they're going to discover 10,000 little things that they absolutely have to have.
In order to get paid, in order to get your boss off your back when the ...
27
Exception specs are bad because they're weakly enforced, and therefore don't actually accomplish much, and they're also bad because they force the run-time to check for unexpected exceptions so that they can terminate(), instead of invoking UB, this can waste a significant amount of performance.
So in summary, exception specs aren't enforced strongly enough ...
25
First of all, as others have said, there's a difference between software actually working versus software being sold with a legal guarantee that it works.
The disclaimer text you cite means that the original licensor you got the software from does not grant any kind of warranty. You can offer the software yourself with a warranty attached. The original ...
24
if you want to be just a programmer, then you wait until someone else has figured out what the client needs and then code that
if you want to be a developer, and this is your client, then you take your client's hand and gently walk them through the dense scary forest of possibilities until together you find the happy bunny-filled meadow at the intersection ...
21
Next to ncoghlan I'm the other maintainer of Python's import system and the author of its current implementation, importlib (http://docs.python.org/dev/py3k/library/importlib.html). Everything Nick said I agree with, so I just want to add some extra info.
First, don't rely too heavily on PEP 302 directly but instead look at what importlib provides in terms ...
19
As a consultant, I understand one simple rule of consulting:
You can't help people that don't want to be helped.
You can't make anyone do anything they don't want to do except by force of authority, which you don't have.
As a coach, I introduce Agile with three rules:
It is impossible to gather all the requirements at the beginning of the project.
...
19
Some other things you may need are:
Usecases or Workflow descriptions: Just because you know what a screen looks like, do you know how bad input is handled? Do you know how to transition between screens in ALL cases? You could include error handling here as well.
High-level system description: Something the explains what the whole system that these 25 ...
17
I see two good possible approaches to to this problem. However, it's important to realize two things. First, requirements engineering is hard work - turning an idea into a formal specification that is enough to build a system takes a lot of time, effort, and practice. Second, if you have good requirements (in any format, from a formal specification to less ...
16
You asked "how bad". So to flesh out @RobertKoritnik's (entirely accurate) answer a bit...
That code is incorrect. Incorrect doesn't come in shades of grey. This code violates the standard and is therefore incorrect. It would fail validation checking, and it should.
That said, no browser currently on the market would complain about it, or have any problem ...
15
What you suggest is fine from the point of view of the Systems Engineering purists.
(There will be a few Agile devotees who think its all way overt the top... and you should just get out and do stuff with the usual reviews, etc).
However, you need to take into account what you are doing, and who you are doing it for.
Doing a project for yourself is ...
15
Heap pollution simply implies that you have "bad stuff" in your heap. It is an analogy to (for example) water pollution which is where you have "bad stuff" in the water.
Specifically, the bad stuff here is objects of type A where you ought to have objects of type B ... according to the static typing. Some hole in the static typing is allowing the bad ...
14
I use the Cone of Uncertainty Say in a loud booming voice
Basically you do the best estimate you can give the information you have.
But you also point out that given the vagueness in the specifications that there is a high uncertainty on these estimates (Point management at the site so they can read up on the principle).
As you progress towards the target ...
13
Did you read part 2 of the article or his sample specification? They embody a couple important principles when writing a specification.
Don't overdesign. The purpose of writing the spec is to force you to think about important things like what happens when there's an error, and how you expect the user to interact with the system. You don't have to go ...
13
I think the Joel test is up to date - its as up to date as much of the other s/w writing thats "timeless".
Doing product development (which includes s/w development) without a spec is just madness.
How do you know where you want to go?
There's only one point I'll make about writing a spec (I don't actually think Joels specs are very good... better than ...
12
It means that value types are stored directly where you define them, which makes them more efficient when compared with reference types.
What exactly does that mean? If you have a local variable of a value type it will be usually stored directly on the stack (but there are many exceptions). If you have a field of a value type, it will be stored directly in ...
11
You can't "make" a manager understand agile any differently than you can make a developer understand it. You need to present him with the arguments (the books of Kent Beck are a good start) and let him make up his own mind.
Alternatively, you can ask him to let you run an experiment. Take a small project and run it with iterative development and keep close ...
11
A specification nearly always changes during development for any but the most simple of projects.
The reasons are:
Development or more likely integration testing of the project uncovers things not noticed when original spec was done - from edge cases to major facets. E.g. developer notices that out-of-order message confirmations might arrive.
Real world ...
11
Requirements:
Determine the needs or conditions to meet for a new or altered product, taking account of the possibly conflicting requirements of the various stakeholders.
Specifications:
They provide a precise idea of the problem to be solved so that they can efficiently design the system and estimate the cost of design alternatives. They ...
10
If your boss has specifically said not to do X, then don't do X.
I go crazy at work with down time unless I find something constructive to do.
That's an opportunity. Learn something new, but don't disobey a direct order because you don't want to be bored.
10
How to get people to understand that UI mocks aren't enough to create a working program:
I would handle this with an analogy. Since I'm a bit of a car nut, I'm going that route.
"Pretend I know nothing about cars. You hand me a few photos of a Ferrari. A couple from the outside and one from inside the car (taken from the driver seat so I can see the ...
10
Two words: User Stories.
I've learned that the fastest way to help a client Get A Clue® is to have them talk me through a user story for each and every feature or page they want. Several things happen, including:
They have to think about what the hell the page/feature is actually supposed to do.
As you ask for more and more detail ("and then? ... and ...
10
Svick's answer is good but I thought I would add a few extra points.
First off, the paragraph is flawed. Pointer types do not inherit from object. Values that are at compile time known to be interface types or type parameter types will, at runtime, be either invalid references or bona-fide instances of something that inherits from object, but it has always ...
10
Do the easier of implementing the equation specified in the formula or spitting out the previous row's value, incorporating a prominent comment in the code explaining why it is as it is.
At the same time, send your question back up the chain. If they get back to you with a spec change in time to implement it, then implement it. If not, your butt's still ...
9
Short answer: No. Your boss is concerned about visibility of an unfunded project - meaning he doesn't want you poking around about it and raising awareness of what you are working on. In some organizations working on an unfunded side project is the same as not working at all, and advertising that may make things difficult for your boss and still not get you ...
9
With hard disk space at pennies per gigabyte per month, there's no good reason not to put documents in the source control system, and it is likely to be useful. My personal preference is to write documents using inline markup, e.g. Wiki Markup or DocBook. This allows use of powerful tools for document comparison and revision.
9
This interview with Anders Hejlsberg is quite famous. In it, he explains why the C# design team discarded checked exceptions in the first place. In a nutshell, there are two major reasons: versionability and scalability.
I know the OP is focusing on C++ whereas Hejlsberg is discussing C#, but the points that Hejlsberg makes are perfectly applicable to C++ ...
Only top voted, non community-wiki answers of a minimum length are eligible