All posts in Software

Software Engineering needs to be made cool again!

Categories: Software
Comments Off on Software Engineering needs to be made cool again!
Hi all. This is probably the funniest thing I have done in my professional life – trying to make Software Engineering exciting ? Why you make ask… or how you may ask… well, as usual, I’ve got a short answer and a long answer. The short answer is to ensure that  I myself am exciting about this piece of art (yes, not science, day by day I am discovering there software engineering is more art than science, hence making the word engineering more of an oxymoron!) and rediscover the very reason I got into this it – my passion!

The long answer is pretty long… so long that its gonna span few articles – which will be the articles I’lll be writing in the next few weeks or months (I hope). I hope to cover various topics in Software Engineering… but not from the technical point of views… I believe that there are tons and tons of technical papers out there to last a life time of humans (before they kill themselves and this planet!).

The objective of these articles are to discuss the day to say issues, risks, progress, and anything got to do with our dear SDLCs – yes, Software Development Life Cycle. The fact that we are still using waterfall model lifecycle just blows my mind! Did you know that waterfall model was first introduced in 1956 by a guy called Herbert? (http://en.wikipedia.org/wiki/Waterfall_model). I am not saying that waterfall model cant be used, but the fact that many projects still use the 57 year old waterfall or modified waterfall model to develop “cutting edge” 21st centry solution is really mind blowing.

Does the Famous SDLC Waterfall Model work?
Nevertheless waterfall makes Software Engineering more comprehensible to the non-IT people out there.
Or is it otherwise? Well, before you can commet, it is best to understand what is Waterfall model?
I am quoting my friend – Shah Newaz Alam’s excellent article on the pros and cons of the fall (waterfall):

The Waterfall Model

The most important aspect of the waterfall model is that unless a particular stage is complete, the next stage cannot be started off with. Here, in this article, we will try to understand a simple waterfall model, broken into six stages. Let us try to understand each of these stages one by one.

Stage 1: Requirement Phase
Whether you design a small program to add two numbers or you are into developing a software system for the automation of an entire airline company, this is the first stage which can never be overridden. Unless you know what you are going to design, you cannot approach the problem. Here, the specifications of the output or the final product is studied and marked.

Stage 2: Specification Phase
With all the requirements and constraints in hand, a final view of how the product should exactly be, is decided. The exact way in which the software should function is mentioned in this stage.

Stage 3: Design Phase
Here the actual work begins. Every type of resource which will be required for the smooth designing of the software, is mentioned here in this phase. What type of database will be required, what type of data should be supported, etc. are some of the important aspects that are decided in this phase. The algorithm of the process in which the software needs to be designed, is made in this phase. This algorithm forms the backbone for the actual coding process, that takes place in the next phase.

Stage 4: Implementation and Testing Phase
Now starts the coding. Here, the software is coded as per the algorithm. Hence it becomes very important that the algorithm should be properly designed. The software designed, needs to go through constant software testing and error correction processes to find out if there are any flaw or errors.

Stage 5: Integration and Testing Phase
Here the various codes designed by different programmers are integrated and is tested if the software works as per the specifications provided. The setup of the final software which needs to be installed at the clients system, is also designed and tested, so that the client does not face any problem during the installation of the software. The product is then handed over to the client.

Stage 6: Maintenance Phase
The cycle of software development does not end with handing the software to the client. Software designers may have to constantly provide support to the client to resolve any issues which may arise. During the maintenance phase, support and debugging is provided for all such problems.
Advantages and Disadvantages

Advantages
The waterfall model is the oldest and most widely used model in the field of software development. There are certain advantages of this model, which makes it, one of the most widely used models as yet. Some of them are:
  • Being a linear model, it is very simple to implement.
  • The amount of resources required to implement this model are minimal.
  • Documentation is produced at every stage of the software’s development. This makes understanding the product designing procedure, simpler.
  • After every major stage of software coding, testing is done to check the correct running of the code.
Disadvantages
  • The question that must be bothering you now is that with so many advantages at hand, what could be the possible disadvantages of the waterfall model? Here are a few:
  • Ironically, the biggest disadvantage is one of its greatest advantages. You cannot go back a step; if the design phase has gone wrong, things can get very complicated in the implementation phase.
  • Often, the client is not very clear of what he exactly wants from the software. Any changes that he mentions in between, may cause a lot of confusion.
  • Small changes or errors that arise in the completed software may cause a lot of problems.
  • Until the final stage of the development cycle is complete, a working model of the software does not lie in the hands of the client. Thus, he is hardly in a position to inform the developers, if what has been designed is exactly what he had asked for.
  • So this, in short, was all about waterfall model advantages and disadvantages. In spite of the cons, the many pros of this model ensure that it remains one of the most popular models used in the field of software development.

Why Software Engineering Fails!

Categories: Software
Comments Off on Why Software Engineering Fails!

“A Standish Group research report shows a staggering 31.1% of projects will be cancelled before they ever get completed. Further results indicate 52.7% of projects will cost 189% of their original estimates” 

“…such failures occur far more often than they should. What’s more, the failures are universally unprejudiced: they happen in every country; to large companies and small; in commercial, nonprofit, and governmental organizations; and without regard to status or reputation…” 

 

About 10 years ago, I remember reading at the pantry (of Motorola Malaysia GSG – my office then), that if there was any other engineering field, has had as many failures as Software Engineering, that field would have vanished from the face of the earth long time ago! But here we are, in IT/Computer Science/Software Engineering (what ever you call it), an ever expanding universe of techs, and taking over the NYSE like no one ever did before!

 

But why are there still such high rate of project failures in Software? 100 billion dollar question – some will say! Of course, there are many segments, mobile apps, embedded software, enterprise, etc…
Of course, more impact is felt in the enterprise section, because of the sheer size of the budget..

 

Reasons for the failures:

 

1. Software Requirements
If there was one reason why 90% of enterprise level software projects fail, that would be requirements.
Requirements is so important that we can never have spent too much of time in Requirements.
The best way to describe the requirements is in the below image (a picture is worth thousand words! – and this word deserves its own book!)

 

2. Software is not tangible
I have always told people that I envy the civil engineering architects. They are able to create an exact replica of what they envision, make it as a 3D model, which their “users” can open, look inside, upto to the micro level details as to what wood is used for the window frame, door material and color, or if even given time, even create a show room within few weeks, with brick and mortar, and give a taste of the actual invention to their “users”.
With all the technology/techniques available, currently, we are only either provide a proof of concept or wire frame or worse some models (use cases/activity diagram/object model, etc – which almost NO users will ever want to understand).

 

3. Time & Cost
This of course is a classic one. Time and Cost. As cheap as possible, and as fast as possible. Or at least I always hear this from my Asian customers. The western customer seem to pay more attention to the quality part, hence they understand that if they press too much of the time and cost, quality is affected.

 

And not having a solid requirements from the customers and software developers who are unable to model the software well, doesn’t help much. As when time and cost starts running, who cares about quality right? Its all about getting the User Acceptance signed off, and get the payment, right?
Well, that’s where the problem starts!

Software Engineering EXciting

Categories: Software
Comments Off on Software Engineering EXciting
You see, we are crazy about Software Development. Now when I say development, it doesn’t mean only programming or coding, its involves the whole lifecycle – the SDLC! We just love doing it! We love it so much, and we are so passionaite about it, that we just have to find a way to differentiate ourselves with the ocean of companies out there! And the only way we could it is by giving you a taste of us! And what better way than to offer it free for a month?

What’s in it?
What do we include in this one month you ask? Well, what do you need, we ask?
Anything from Project Proposal to Implementation can be included, as below:
  • Requirements specification- You will get an SRS (Software Requirements Specification)
  • Software design – You will get an SDS (Software Design Specification)
  • Development – You will get the code (.Net/Android Development/etc)
  • Testing (or Validation) – You will get a STS (Software Testing Specification)
The above is true if you are willing to follow waterfall model, in case you need something quick – we will jump straight into Agile model.

What’s the catch?
No catch. Absolutely free. Think of it as our viral marketing effort!
No contracts. No papers. No payment. Your satisfaction of our service is more than enough!

Who are we?

Centium Software is a software development & communication system firm located in KL, Malaysia, established in 1998.

We do offer 2 solutions, namely full cycle custom software development services, from product idea, offshore software development to outsourcing support and enhancement (in Customer Service & Healthcare).

Centium Software’s core business is in the set up of IT Services. Incorporated in 1998. Over the years, Centium Software has grown itself to be a full-fledge Software Engineering & Information Technology Solution Integrator with a current staff strength of more than 45 people. Our strength is our people and it is about having the right attitude about life. Integrity, professionalism, and dedication are the key ingredients that our people have. Originally only serving customers in Malaysia, now Centium Software has opened its wings to South East Asia, India and the Middle East.

Centium Software employs a large pool of software engineers coming from different technology backgrounds. We are able to balance product development efforts and project duration to your business needs. Our products are well known for its stability & feature rich experience!