Monday, October 14, 2013

OPEN SOURCE: A proper replacement for proprietary software?


The Open Source model is a different one, standing for different values than its commercial counterparts. Open source is a great idea because it allows for the source code to be available to the general public for any reason, including copying, modifying, and redistributing it. It has increased transparency of code for many purposes including research. Open Source software has brought us some great names in software, including 7-zip, Firefox, Chrome, and OpenOffice.org. It has also brought us some great Operating Systems, such as GNU/Linux and Android.

There are many advantages to Open Source software model. The first is that there are a very low amount of licensing fees. It is easy to manage. It allows for continuous improvement. It allows companies to be independent. It allows people to view and analyze and learn from the source code.

However, whatever goes up must come down. There are a few notable downsides to the open source software model that deserve to be talked about. One is that it usually always involves unanticipated implementation and support costs. It has a large learning curve. You can’t just sit down tone day and analyze OpenOffice.org source code and fully understand it, it takes a long time to get your staff up to speed. Version control – lack of potential documentation may lead to version control issues which will inevitably later lead to compatibility issues on proprietary platforms. Many project leaders up and leave leaving nobody left to complete or maintain the software. There is also nobody to answer your technical questions if you have any because no open source software has a good tech support program.

So, as you can see, it’s not all a walk in the park for open source software, but it is definitely a step in the right direction.

Img courtesy: voipfreak.net

Tuesday, October 8, 2013

AGILE: One of the most efficient software development schemes


Agile is a system of software development practices which promises low overhead, high flexibility, and satisfied customers. Although it may sound too good to be true, Agile development practices have led to many benefits for leading organizations for years. According to Wikipedia, “Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams.” One of its major benefits is that it uses a time-boxed iterative approach, and allows for rapid response to changes made to the requirements of the software.

In the mid-1990’s, Agile software development evolved from the earlier and much heavier weight waterfall approach which used to be commonplace among software developers.  Waterfall is a sequential design process, where progress is seen as flowing steadily downwards throughout the stages of the software processes. The waterfall moves from one stage to another starting with the requirements then moving on to the design, implementation, verification, and maintenance. At any one given time, the group is only working on one of these items at a time.


This is where the benefit of Agile can be seen. Working software can be published sooner because the developers are more self-motivated and self-driven. The developers assign portions of the job to themselves so they can first sense where their skillset will be of the most use.  Agile allows incomplete but working software to be turned out sooner, giving the development team something to show the customer to keep them interested and funding the team. From the initial skeleton of the program forward, Agile makes it easier to deal with inevitable changes to the software that will happen. Agile is more prepared to deal with these issues because it allows a version system of the software to be released, each time building off the previous version. By the time the customer is satisfied with the product, there may have been more or less versions of it. That in itself is another benefit of the Agile development process because it allows more or less work or specialization to be done by request. Also, if one developer leaves the team, the team will be less devastated than with the Waterfall development model, making the company less dependent on each individual software developer. Is that a good thing for the developers? No. However, it is one of the most efficient software development models out there, so we should all become familiar with it.