Article:
The Three Laws of Test-Driven Development
The Three Laws of TDD
Why TDD
Introduction to Test Driven Development
Pragmatic TDD
Why code review beats testing
Disciplined Agile Delivery
Basili testing
Improving Development Flow
NASA- SOFTWARE ASSURANCE STANDARD
Randal and Aaron talk with Scott Maxwell and Paolo Bellutta about driving the Mars rovers
Business Critical Application
Programming is Gardening
Episode 149: Difference between Software Engineering and Computer Science with Chuck Connell
The term agorithm
The term software
Iteration Zero: clarifying intentions and requirements
Pre Development stages
TDD
Top Reasons why Projects Fail
initial questions
Requirements
REQUIREMENTS Ambiguity
Software projects
PREREQUISITES
Preventing contractual dispute
Construx
high-risks on road map
Requirements checklist
Thoughts on Coding Methodologies
Software projects
THE SOFTWARE MASTER PEACE
Black Spots
TESTING WHILE CODING
The Fundamental Rules of Software Engineering
changes and progress in software engineering
Product Backlog
CMM - What is the Capability Maturity Model?
Real Time Vs Mission Critical
Disaster Recovery Journal
Contingency Planning Vs. Crisis Management
The Rules of Software Engineering
Computer Programming Quotes
Flops
Deadly Sins of Project Planning
 
TDD
In everything we do, whether writing tests, writing production code, or refactoring, we keep the system executing at all times.


TDD
Test-driven development (TDD) (Beck 2003; Astels 2003), is an evolutionary approach to development which combines test-first development where you write a test before you write just enough production code to fulfill that test and refactoring. What is the primary goal of TDD? One view is the goal of TDD is specification and not validation (Martin, Newkirk, and Kess 2003). In other words, it’s one way to think through your requirements or design before your write your functional code (implying that TDD is both an important agile requirements and agile design technique). Another view is that TDD is a programming technique. As Ron Jeffries likes to say, the goal of TDD is to write clean code that works. I think that there is merit in both arguments, although I lean towards the specification view, but I leave it for you to decide. -
See more at: http://www.agiledata.org/essays/tdd.html#sthash.pBl2wdQN.dpuf

The Three Laws of Test Driven Development (TDD)
===============================================
By now everyone knows that TDD asks us to write unit tests first,before we write production code. But that rule is just the tip of the iceberg. Consider the following three laws:
First Law: You may not write production code until
you have written a *failing* unit test.
Second Law: You may not write more of a unit test than is
sufficient to fail, and not compiling is failing.
Third Law: You may not write more production code than
is sufficient to pass the current failing test.


-----------------------------------------------------------------------------------------
Well, what I meant by "mission critical" is that a bug in the software would result in the loss of primary mission functionality. We used several daemons written in Perl, running onboard the instrument in flight, to control data acquisition and instrument configuration.
by Dr. Zowie on Aug 26, 2010 at 15:31 UTC
http://www.perlmonks.org/?node_id=857358
--------------------------------------------------------------------------------------
Why code review beats testing: evidence from decades of programming research
“If you want to ship high quality code, you should invest in more than one of formal code review, design inspection, testing, and quality assurance. Testing catches fewer bugs per hour than human inspection of code, but it might be catching different types of bugs.”

No one approach to bug detection is adequate. Capers Jones – the researcher behind two of the papers McConnell cites – divides bug detection into four categories: formal design inspection, formal code inspection, formal quality assurance, and formal testing. The best bug detection rate, if you are only using one of the above four categories, is 68%. The average detection rate if you are using all four is 99%.

------------------------------------------------------------------------------------------------
Disciplined Agile Delivery - DAD
------------------------------------------------------------------------------------------------
The DAD process framework adopts strategies from the following methods:

1. Scrum:
The focus of Scrum is on project leadership and some aspects of requirements management. DAD adopts and tailors many ideas from Scrum, such as working from a stack of work items in priority order, having a product owner responsible for representing stakeholders, and producing a potentially consumable solution from each iteration. However, DAD abandoned most of Scrum’s terminology—nobody sprints
through a race, people get hurt in rugby scrums, and don’t get us going on the term “master”—with the exception of the term product owner.

2. Extreme programming (XP):
XP is an important source of development practices for DAD, including but not limited
to continuous integration (CI), refactoring, test-driven development (TDD), collective ownership, and many more.

3. Agile Modeling (AM):
As the name implies, AM is the source for DAD’s modeling and documentation practices.
This includes requirements envisioning, architecture envisioning, iteration modeling, continuous documentation, and just-in-time (JIT) model storming.

4. Unified Process (UP):
DAD adopts many of its governance strategies from agile instantiations of the UP, including OpenUP and Agile Unified Process (AUP). In particular, this includes strategies such as having light-weight milestones and explicit phases. We also draw from the Unified Process’ focus on the importance of proving out the architecture in the early
iterations and reducing all types of risk early in the life cycle.

5. Agile Data (AD):
As the name implies AD is a source of agile database practices, such as database refactoring, database testing, and agile data modeling. It is also an important source of
agile enterprise strategies, such as how agile teams can work effectively with enterprise architects and enterprise data administrators.

6. Kanban:
DAD adopts two critical concepts—limiting work in progress and visualizing work—from Kanban, which is a lean framework. These concepts are in addition to the seven prin-
ciples of lean software development (eliminate waste, build in quality, create knowledge, defer commitment, deliver quickly, respect people, and optimize the whole).

------------------------------------------------------------------------------------------
Data First
------------------------------------------------------------------------------------------
Quality data sources. Your production data sources, including files, databases, and data feeds, should be high quality assets that are easy to work with. When it comes to data sources of record it is particularly important for them to be of high quality so that they are easy to work with and evolve. Unfortunately this is often little more than fanciful thinking in many organizations. With a Disciplined DevOps mindset teams realize that they should be very careful about increasing the technical debt within their data sources, and more importantly invest in the effort to pay down any technical debt that they find.

----------------------------------------
Data related 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 logs, Web pages, reports, and so on?
Are all data 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?
Are all constrained data properties well specified?
Are all system and subsystem dependencies well specified?

-----------------------------
DATA AT THE BEGINNING
-----------------------------
At the beginning it is good to be focused on DATA, all files in the system: structured and non structured data, input data, output data, error logs, configuration files, etc. A database as a collection of related information and their data records structure.
And what must be done in order to process input files into desired output behaviour and data. What are the test scenarios, and if the customer has provided production-quality test data together with requirements? Is it possible to provide realistic production data sets upfront for the future system?
---------------------------------------
• Create the user manual upfront
---------------------------------------
Some organizations have had good success creating their user manuals as a substitute for or supplement to a traditional requirements specification. End users and customers, seem to be better able to understand the contents of a user manual than a traditional requirements specification, and requirements elicitation goes then more smoothly.