Software Development

Software Delivery Process

Posted on 12/12/2013. Filed under: Software Development | Tags: , , |

This may seem like a rather strange topic and I guess a large portion of “Information Technology (IT) guru’s” will think they can skip this post since it is beneath their intellect. WRONG!

It amazes me how management, in IT companies, is still unclear how software development and delivery works.

I think the agile theme of late is confusing the uncertain even more.

The sad news is that management is the victim here and consequently the delivery and ultimately revenue.

The first question that raises out of this dilemma is; “Can a person from a different field, say HR or Finance, effectively manage software delivery?”

By definition a manager is; a person who manages or controls a process (at least my definition). So by simple reductive analysis one can derive that an “IT manager” must understand and know the Software Development Life Cycle (SDLC) process and IT project management methodologies to be able to manage effectively. (Please argue or debate with me if you disagree.) The ISO/IEC 12207:2008 standard for SDLC is here.

Below is a sample SDLC for Business Intelligence I did.

Business Intelligence, Software Development Lifecycle

It is based on the Kimball methodology demonstrating which roles are accountable for certain steps in the process. The diagram is a high level illustration of what tasks follow in sequence. This has nothing to do with what project management methodology you follow be it Waterfall, Agile etc. The SDLC cannot change, irrespective of methodology. You can apply any methodology to the SDLC. Water remains water, no matter what you do with it. You can heat it up or cool it down but it remains water. Such is the SDLC.

Note: The SDLC is not a project management methodology.

To successfully deliver any software development project you have to follow the path of the SDLC. The logic is quite simple really, how do expect me to build a house if you haven’t explained to me what you want? Similarly how can I develop a system for you if you haven’t explained to me what you want the system to accomplish? Hence one needs to perform some business analysis before you can design and develop a system. It is the business analysis that informs the technical team what is required. The design informs the (builders) developers how to build the system based on the requirements provided. Then, as with any manufacturing, you need to test your product for conformance to requirements and design. Firstly, did the builders adhere to the design and secondly is the product aligned to the requirements specified.

Read Full Post | Make a Comment ( None so far )

SQL – String comparison

Posted on 29/08/2008. Filed under: Software Development |

Where is all my data!

When applying a filter condition on you select statement using a string comparison, be very aware of the fact that you may not include null values in your result set.
SQL Server 2005 will not include null values in the comparison when you filter on string values.
Below is an example SQL statement:

Select name, surname
from tableA
where name ‘John’;

If the “name” column in “tableA” does contain null values, these rows will not be part of your result set. I guess this is because the SQL Server 2005 engine does not consider null as a string, hence it is not included in the comparison.

If your functional requirement is:
Do not return values which is equal to “John”, you would have to do a null check in addition to the string comparison.
Here is an example:

Select name, surname
from tableA
where isnull(name, ”) ‘John’;

If your source data permits, the best solution would be to make this column not nullable!

Read Full Post | Make a Comment ( None so far )

T-SQL: Calculating MonthEnd

Posted on 22/08/2008. Filed under: Software Development |

A common task many SQL developers face is to return the monthend for a date range. The common question is: “I want to get all the monthend values for the year?” It is a simple business requirement that can easily be satisfied with some simple T-SQL programming in SQL Server 2005.
Here is how:
Firstly you need a numbers table and if you don’t have one already, I have the script below to create one:

CREATE TABLE [dbo].[TableOfNumbers](
[number] [int] NOT NULL,
( [number] ASC

Sticking to good SQL programming we create a clustered index on the table. Since it only has one column and the data type is int with no duplicate or null values, a surrogate key is overkill.

Secondly we need to populate the table with some numbers, so I used the cool new feature of SQL Server 2005 – the While statement. Note, that I only populated the table up to the number 10,000. This can be any value you choose.

DECLARE @i int
SET @i = 0
WHILE @i <= 9999 – (note this is 1 less than the final amount since it increments inside the while) BEGIN SET @i = @i + 1 INSERT INTO dbo.tableofnumbers (number) VALUES (@i) END

Now that the setup work is done we can start with answering the actual business question.
The code below will return all the monthend values for this year(2008), but you could specify any date range.

DECLARE @SDate datetime, @EDate datetime
SELECT @SDate = ‘1/01/2008′, @EDate = ’12/31/2008’
dateadd(month, number – 1, — Months in range
dateadd(day, -1 * datepart(day, @SDate), — Last Day of (prior) month
dateadd(month, 1, — Following month
dateadd(day, datediff(day, 0, @SDate), 0)))) — Zero out time portion of inputs
as MonthEnd
FROM dbo.TableOfNumbers — table with numbers in it
WHERE number <= datediff(month, @SDate, @EDate) + 1– Range set

This post was sparked by an article on and well as personal experience. For a long discussion on this scenario you could find the article on the above website.

Read Full Post | Make a Comment ( None so far )

SSIS – Oracle Connectivity

Posted on 21/07/2008. Filed under: Software Development |

For the selected view that has not had the pleasure of connecting to Oracle with SSIS from a Windows Server; I will give some tips below.

1. Ensure that you follow the Oracle installation guide to the tee.

2. Make sure that you restart the server once the above installation is complete. (This is required to ensure the registry settings take effect on the Windows Server.)

3. To test the connectivity:

a. Find the SQL installation path(usually $:\Program Files\Microsoft SQL Server\90\DTS\Binn)

b. Run the DTSWizard application

c. At the welcome screen click next

d. At the data source choose OLEDB for Oracle (Note: Do not choose Microsoft OLEDB for Oracle. This is not the native Oracle driver.)

e. Enter you connection properties i.e. Server name, Username, Password etc. (Your oracle DBA should provide this to you.)

f. Then import a couple of rows from a known table. The destination format does not matter since we only want to test the connectivity. I usually pick a text file as my destination and then check the file afterward to ensure that I did get the data from the Oracle server.

If you do not find the OLEDB for Oracle driver when you choose your Data Source with the DTSWizard it means that the Oracle driver installation is faulty of incomplete. The server does not recognize the driver. TIP: Ensure you did restart you server after the Oracle installation.

If you still don’t find the driver and as a last resort you need to un-install the Oracle installation – ensure that you follow the Oracle instructions to the tee.

Note: The above method is the only 64bit connectivity test for Oracle from SSIS. Any other method using BIDS will require that you install the Oracle 32bit drivers on the server since the BIDS run 32bit.

Note: The Oracle 32 bit and 64 bit drivers have the same signature. This means if you are developing on a 32bit environment and your production is 64bit there is no code change necessary to your SSIS packages to run 64bit at run time.

That is the whole chi-bang.


Read Full Post | Make a Comment ( None so far )

T-SQL: Dynamic Value Incrementing

Posted on 17/07/2008. Filed under: Software Development |


I have a business requirement to track when a user has reached a certain level.
Since this specification requires two fixed numbers 3 and 20 and the rest multiples of 25; I decided to write a little loop in SQL to perform this.
The code snippet is below and is very simple.

First I create a table to preserve the values I want.
I then insert the first record – number 3 into the table.
Now I will run a loop until a certain ceiling (500) is reached.
The loop will create increments of 25 from 0 until 500 is reached.
With every loop the new number will be inserted into the table.

Code Sample:

CREATE TABLE #t (milestones int PRIMARY KEY)

–insert the first milestone = 3
INSERT INTO #t (milestones)

–insert the sequence increments of 25 milestones

DECLARE @count int, @year int
SET @year = 0
SET @count = 0

WHILE @count < 25*20

SET @count = @count + 25;

INSERT INTO #t (milestones)
VALUES (@count);



At the end the table select will contain the following values.


Note: The Primary Key setting on the table is not required but has a significant performance improvement.

For demonstration purposes 20 is left out due to other requirements that must be validated first and is not relevant to this sample.

Read Full Post | Make a Comment ( None so far )

« Previous Entries
  • Enter your email address to follow this blog and receive notifications of new posts by email.

  • Who’s visiting

  • South Africa

  • Tweets

    Error: Twitter did not respond. Please wait a few minutes and refresh this page.

Liked it here?
Why not try sites on the blogroll...