Pages

May 26, 2009

World Class Computer Science Courses for FREE!!!

For those of you who do not know, MIT and Stanford both offer free computer science courses. they are comprised from courses in previous semesters and in some cases the current semesters. They cover many topics and provide you to get some world class education at the price of $0.00. Can't beat that... Just try the links below.

MIT Computer Science Courses


Stanford Engineering Everywhere

Stanford on iTunesU

If there is enough feedback, I would be very much open to starting an online study group to go through some of the contents in particular classes.

May 4, 2009

Reviewing Requirement Specs for New SW Devs

One of the most difficult things for new software developers to do is to review a requirements specification for a new feature or module. Too often they simply read through the spec and do not bother to question it. This would be fine if all specs were complete when they reached the developer's hands, but this is usually not the case. In this case, it becomes the developer's job to ensure the spec finds its way to completion by raising any concerns. This is where the Requirements Checklist in Code Complete comes into play.

The Requirements Checklist is not a list of things that must all be present, but they create a nice guide for checking the completeness of specifications. You should apply these questions to any requirements specification you receive and if the answer is no to any of them, you should question the writer as to why.

Here is a snippet of the checklist with some explanations as to why they are important. The rest of the checklist can be found on the Code Complete site (http://www.cc2e.com/0323).

Specific Functional Requirements

  • Are all the inputs to the system specified, including their source, accuracy, range of values, and frequency?
  • Are all the outputs from the system specified, including their destination, accuracy, range of values, frequency, and format?
  • Are all output formats specified for web pages, reports, and so on?
  • Are all the external hardware and software interfaces specified?
  • Are all the external communication interfaces specified, including handshaking, error-checking, and communication protocols?
  • Are all the tasks the user wants to perform specified?
  • Is the data used in each task and the data resulting from each task specified?