|
| 06 Apr 2012 07:44:49 pm |
Software Delivery - OMG It Ain't Rocket Surgery! |
|
|
Software delivery is hard. So how do you determine how hard a new project will be? Here is a simple formula.
H = ((C2 * P * M) + R) * U
C2 = Company Size Squared
P = Number people on the project
M = Number of Managers on the project
R = Actual Requirements
U = The unknown, the personalities driving or expected to drive a project to completion.
While the equation is actually meaningless, the point is, the actual requirements are seldom the most costly part of the overall software delivery life cycle. So while there are many cool buzwords (Agile, RAD, DSDM, Waterfall etc.) in the end, there really are no short-cuts and there is no way to avoid the follow steps;
1. Understand the need
2. Document that understanding
3. Reach agreement on that understanding
4. Build the application
5. Test the application
6. Fix your understanding
7. Fix the application
8. loop back to 5 until you are done
9. Deploy the application
10. *Optional - loop back to 6 until you are done
While I love all the theory around SDLC, there is just very little you can do to improve the over all process. The biggest reason for success or failure is seldom the process, but more often the personalities and the environment. So before you pick an SDLC methodolgy, make sure you understand your company. The dynamics of a large company are much different that a small company, and small companies differ from software development companies (small ones at least)
Peronalities: Big companies tend to move people around. You may have Business Analyst who started out as clerks, or Developers who started out in the mail-room. Smal companies (and software companies) tend to target hire, and with few mobility opportunities, folks either become experts or leave.
Environment: The bigger the company the greater the need for cost justifications, Policy adherance, Governance, Project Managment, etc. Small companies - not so much.
History is the best measure: So what is the #1 way to gauge how large or how long your project will take? History, simply look at other projects that have been completed by your company. Try this metric on for size;
Cost per line of code = Total Project Dollars spent / Lines of code
Then estimate the size of your project in lines of code, and do the math. If you know this number, it really makes scope control easy - "Adding that feature will require a 300 to 500 lines of code at $40.00 a line. Are you sure we need that?"
So be warned. There are no magic bullets, but keep in mind that it is much cheaper to fix code before you write it, than after! |
|
| |
Category : Galena Intro
| By : galena | Comments [0] | Trackbacks [0] |
|
|
| 06 Apr 2012 06:19:32 pm |
Redirecting to a blank page |
|
|
This MyBloggie issue is a pain in the arse. Whenever you add a subject, catagory etc. your MyBloggie returns to a non-existant page. This is caused by a problem in the common.php.
Change to following code:
//$_SERVER['SCRIPT_NAME'] = $path;
//$path = preg_replace($html_entities_match, $html_entities_replace, $path);
//$_SERVER['PHP_SELF']=$path;
$path = preg_replace($html_entities_match, $html_entities_replace, $_SERVER['SCRIPT_NAME']);
$_SERVER['SCRIPT_NAME'] = $path;
$_SERVER['PHP_SELF'] = $path; |
|
| |
Category : MyBloggie Issues
| By : galena | Comments [0] | Trackbacks [0] |
|
|
| 20 Mar 2012 09:33:11 pm |
Database Design - Things that annoy the crap out of me.... |
|
|
So I was working to make yet another sample MySQL sample database useful. If you search around for sample databases (with data) to use in your testing, you will find a number of classic examples. For example the Employees database (tons of records) and ClassicModel (good generic db). There are others, but they all suffer the same issues.
Primary Keys - Surrogate Keys, or Natural Keys?
OMG - Are people ever going to learn? Why would you ever make your application data a primary key? Not sure what possesses folks to make a field like "Employee Number" a primary key, or worse yet, "Department Code" (as a 1 character char field) - this last one is a real head scratcher. Talk about limiting your companies growth!!
I have never seen a good reason for creating a primary which contains anything other than a sequence or a GUID. That said, for the vast majority of business needs, a sequence will do nicely. GUIDs are big, ugly and hard to use for adhoc work - they also do not sort in any meaningful way.
So what is wrong with "Natural keys"? Well nothing, as long as it is not your primary key. The reasons for using a sequence or a GUID are simple;
1) Primary keys MUST BE UNIQUE
2) Primary keys should never be modified
3) Primary keys cannot be null
Ok, so you may be thinking - So what? My "Employee Number" column meets those requirements AND I don't need an extra column!!
Now think of a real database for Employees. You might want to link this employee to a Salary table, a Title table, a Department table etc. To do that you would need to create these other tables with an "Employee Number" field. So far so good? No, you have some problems;
1) If the "Employee number" changes, you now have to change every occurance of that "Employee Number" in all those tables!
2) If you need to change the employee number field type from numeric to character, you are changing all the tables.
3) etc.
Surrogate keys:
So in case you don't know, a surrogate key is sequence or GUID or some other system generated unique ID that has no business value. These are the perfect Primary Key. While you can and should index your natural keys, they should never be your primary key. As soon as you decide that your natural key is perfect primary key, something will require you to change it - and your data model goes right into the toilet.
Once you start using surrogates, they will become second nature. I have never heard of anyone going back and removing surrogate keys, but it is very common to find people adding them later  |
|
| |
Category : Jeneral Java
| By : galena | Comments [2] | Trackbacks [0] |
|
|
| 16 Mar 2012 02:59:24 pm |
Galena March 12, 2012 Updates |
|
|
Galena 2.4.1:
Updated UI For GAdmin:
Please let me know your thoughts on the new Look and Feel. There much more to this release, as you will see, but let's start with the easy stuff!
Enhanced Avatars:
The new Quick Start Tutorial demonstrates most of this new functionality as well as the improved 'New Application' setup process.
As you can see in the above example, we now are using expandable Avatars, which present the most commonly used functionality to make quick changes much easier.
Enhanced CSS Support:
Check out some of the new functionality around CSS that we have added to the GAdmin application. There are two core areas which have been enhanced. Galena now supports a 'Theme' concept, and the GAdmin now has UI Interface for editing and maintaining CSS Class styles.
...Check back ofter, this product is evolving FAST! |
|
| |
Category : Galena Intro
| By : galena | Comments [1] | Trackbacks [0] |
|
| |
| 1 |
|
|