Posted by Commie B on May 21, 2011 at 6:39 pm
As someone who oversees the development of various browser based applications on a daily basis, I commonly come across the dilemma of using objected oriented or procedural programming with PHP myself. Since the advent of PHP 5, the use of classes and objects has become a privilege that was previously not available to PHP developers. Developers have always argued that no matter what, object oriented programming is the right and only way to go forward.
Yet, there is a plethora of PHP developers who refuse to change their ways and focus on developing under the procedural methodology. I have long been of the opinion the right methodology is driven by the nature, scope and goals of the project. Many will disagree, but saying that using object oriented methodologies for writing all or any scripts is like saying you want the best for nothing. Everything has a cost, and software development is not different.
Robert Peake is an internationally renowned developer who regularly writes for Dev Zine, and he has put together a long, comprehensive article on what the differences are between projects that require procedural programming and projects that can, perhaps, afford the luxury of object oriented programming. I happen to agree with him.
The concept of object oriented program is great. The application is even better. But like all philosophically powerful abstract concepts, object oriented programming will take longer, cost more money, and in many cases, will execute a lot slower than code written in a procedural fashion. That said, I believe, the following is a very brief, and by no means fully comprehensive, list of characteristics to consider when building applications with PHP 5 under either of the methodologies:
| |
Procedural PHP |
Object Oriented PHP |
| Budget |
Tight |
Not so tight |
| Timeline |
Tight |
Not so tight |
| Will need to develop APIs / Web Services for other parties to interact with application |
Not necessarily |
Yes |
| Application Speed is Critical |
Yes, it is of utmost priority |
Speed can be sacrificed for quality of code |
| Time available for good documentation |
If it is well documented, procedural code is not that difficult to follow |
Documentation helps, but independence of objects doesn’t make it as critical as in the case of procedural |
| Independence of data and structure |
Somewhat critical |
Vital |
| Adaptability of code |
Medium |
Highly adaptable |
There are several other factors to consider, but the above should give you a very basic idea of how this works. Most business applications are mission, time and budget driven. Therefore, the chances that the business will spend extra money quality code (which usually doesn’t mean much to a business user) and go with the object oriented methodology are slim to none. This is the reason why most software houses develop code using procedural methodologies with PHP.
Ultimately, it is up to the customer to make the choice between paying more and waiting more for a product that will do the same, but may become useful and less expensive later on. It’s not always the case of a wise investment, so many businesses don’t particularly care. Usually, though, it should be the decision of the project manager, keeping in mind the scope, nature and goals of the application in question.
However, what cannot be overlooked is there are some very powerful and widely used open source applications written using object oriented methodologies. Developers who embark upon such projects do so with the goal of creating good quality code. The reason why such applications become so popular and widely used, however, is that they are based on objects and are highly adaptable and easy to understand. Unfortunately, it’s not always possible to use this approach in business programming, because the end result is usually more important than the journey.
Personally, it is one of those dilemmas which breaks my heart. That said, choosing the right methodology can make or break your software or your business. You should, therefore, always pick your software and technology partner carefully.
This article is reproduced from one of our other websites which is no longer active. It was written a couple of years ago.
Continue Reading
Posted by Asif on July 25, 2009 at 10:43 pm
With cloud computing becoming a common buzzword along with Software as a Service and related discussions, it has becoming a challenge for many IT managers or business owners to understand which is which, how it is relevant and why any business should go for it. As with many things IT, technology professionals don’t always make it easy to understand concepts or explain them. They’re great at using names for new developments, but bad at justifying such names or explaining these concepts.
Essentially, cloud computing and software as a service (SaaS) are older concepts with new names. In a nutshell, from an end user’s standpoint, both would mean deploying a piece of software over the internet. For illustrative purposes, when you log in to your PC at work, rather than clicking on an icon for ‘Project Management Software’ you would simply open Internet Explorer (or Firefox or any other browser) and log in to a website. Here, you would enter a username and password and then log-in to your software. It’s a longer process than just double clicking an icon on your desktop, but then it has its pros.
Basically, this means software deployed and delivered over the internet. It used to be and is still called web 2.0 by some, and different names are applied to the same concept by different users from different perspectives. Yes, it is all about perspective.
Here are some of the simple reasons why you may want to use such hosted web 2.0 software offered to you as a service in the cloud:
• Access from anywhere, anytime
• No maintenance of hardware
• No maintenance of server software
• No room required for equipment
• Less investment require up-front
There are numerous other reasons, but these are the reasons almost all businesses will connect with. So, that’s why you should look into cloud computing and SaaS, but what the hell is the difference? Glad you want to know.
Software as a Service basically means paying to use existing software over the internet as opposed to in a desktop environment. In most instances, SaaS also comes with a user driven license (the equivalent being PC based in the case of desktop software), but it saves you the hassle of applying updates or doing any kind of maintenance. For SaaS, in most cases, you have a software company that has developed a product that they sell to you as a service. Examples are Zoho CRM, Salesforce.com CRM or Microsoft Exchange Hosted Services.
You pay a simple fee per user per month, and you have access to using the software. Your files, data, etc. are all stored on the software provider’s servers and depending on the provider and the software, you may or may not be able to extract your data. My favourite part about SaaS is that it is platform independent. So you in your organization you can have Mac lovers and PC users, and they can all use the software because it is delivered in a browser. It simplifies things, because people can stick to their individual cults and technology preferences without losing too much productivity within the business. Saas will usually come pre-configured and you will need no technical knowledge to start using it. Some user administration, etc. may be required, but you won’t have to do any programming to get things moving.
Now, let’s move on to the cloud.
This is best explained from a CIO or IT manager’s standpoint. So you manage an IT department which has a development team. You have to maintain servers for live and testing environments, make sure they stay up-to-date and free of viruses. You have to setup firewalls and VPNs for security and remote access, and run regular routines for security checks. In essence, you need maintenance and security function to support development and other functions of the business. It’s quite a stressful job to have and in today’s world, in many cases, an unnecessary hassle.
The concept of the cloud here is similar when applied to simpler websites. If you’re building a website, do you really want to hire people and learn how the server software and hardware works, or do you simply want a pre-configured online environment where you can place your files and programming scripts and get the site to work? That’s how web hosts came into being and now virtually the whole world fields away the hassle of hosting to professionals who do just that, hosting. Take this same context and put it into our IT manager’s scenario, and let’s say our service provider here is Force.com. Now, Force.com is the could computing environment on which salesforce.com is built and delivers as SaaS.
So, you can move your entire development team onto the force.com platform. They have their own programming language and predefined functions, you can built applications using this without ever having to worry about maintaining servers for live and testing environments, firewalls, VPN access or anything of the sort. Your development team can log in and develop applications within their environment on the internet. It’s called cloud, well, because it’s all just floating out there, you log-in and do your work and it’s always there, without you ever having to worry about a physical box or server. So, put simply, it saves you a whole lot of maintenance and security expenditure (along with other things), and you simply get to do what your development team needs to do: develop.
Now Salesforce.com may be popular in its own regard, but just to set the record straight, the clould’s early days are marked by innovation from Amazon. Amazon was probably the first company to deploy a commercially available could computing platform.
SaaS companies that also offer cloud platforms make life much simpler for developers, because if you use their SaaS, you can develop other applications on their cloud that can easily integrate with this SaaS, evolving your business and software around it. There are other technical advantages, but cloud computing and SaaS is not free of woes, especially financial ones.
It’s great to pay £50 per user per month when there’s two of you, but when there’s 500 users, it’s almost worth investing in your own equipment and development team; entirely a matter of finance and preference.
As a software development company that specializes in deploying web-based solutions, we at VAFTA essentially develop SaaS for our customers to sell to others. The development may or may not be in a could environment, and that very much depends on the needs and requirements of the business model in question. The idea here is to clarify the difference between SaaS and Cloud and help you start thinking in terms of a cloud or web environment as opposed to the traditional desktop one.
New technology is not always the right technology. Consider your options: the cloud can be cheap today but if not managed well, it can bankrupt businesses in the long run.
Continue Reading