jump to navigation

Five trends every software engineer ought to know December 18, 2011

Posted by pvidosa in Software Engineering.
trackback

The readings this semester have allowed me to learn more about areas of software engineering that I knew little about or didn’t even know existed.  Below are five trends that I think will have a great impact on software engineering in the next few years.

Model-Driven Engineering

Model-driven engineering is a tool that could be extremely powerful for software development.  It would allow for development at a higher level.  It would eliminate writing code line-by-line by allowing the user to build it graphically instead.  This would still require someone with specific knowledge in the field, but they wouldn’t need to professional software developers.  There are legal implications when using model-driven engineering.  The software developed would be more difficult to test and there could be major quality issues that don’t end up being found before release.  This would be a huge liability for the software developer because depending on the application, it could be a risk to someone’s life.  However, the benefits are too great to ignore.  Applications could be built much quicker since you would be using pre-existing components.

Agile Development

A much more commonly used technique for software development is agile development.  Agile is an iterative cycle that looks to produce small pieces of functionality at the end of each iteration.  The result is that at the end of each cycle, there is a functioning application that could be released.  During each iteration, all the necessary work is done to make sure this bit of functionality is release ready.  This includes test, development and documentation.  It has become popular because of the back-and-forth communication that needs to exist between the developer and the customer.  The customer’s feedback drives development and their needs steer the direction the application takes.  Customers do not have to wait years before using the application and the business doesn’t have to wait that long to receive feedback.

Applied Mobility

The mobile application market has just started to take off and it is easy to see that it will be huge.  The competition in the marketplace is so great that tech giants such as Microsoft are having difficulties staying in it.  ProAce saw Android exploding in 2011 and they were right.  Sales of Android phones are greatly outpacing iPhone sales and Windows Phone 7 is nowhere in sight.  Android will likely continue to grow faster than the others, but Microsoft may be able to steal some of RIM’s market share.  I see more and more businesses putting more of a focus on their mobile applications to appeal to the younger crowd that uses smart phones more than their laptop or desktop.

Cloud Computing

Cloud computing is still in its infancy, but the possibilities for it are constantly growing.    I think the private cloud concept is interesting because of the goal for more data to be accessible anywhere.  Companies are pushing the cloud and giving users free access to it which will only cause it to grow even quicker.  Users want to be able to access their data from anywhere and this is a great solution.  The SideKick was an example of a mobile phone being completely dependent on the cloud.  As SideKick users saw, there could be some terrible consequences if it isn’t managed properly.  On the other end, businesses are looking at cloud computing to ease burdens on their IT department.  Microsoft seems to be making a huge push with Windows Azure and SkyDrive.  These tools could make it much cheaper for businesses to host and run their applications with high performance and reliability.

End User Programming

End user programming is something that is likely to become even more common.  Currently, most people that use computers don’t know anything about computer programming.  Most users simply browse the web at home and use a computer at work for various tasks.  As more individuals start doing more with computers, they will want to automate mundane and repetitive tasks that are quite time consuming.  This is where end user programming comes in.  It will allow the average user to automate complex tasks so that more focus can be put on the results and the quality of the results.  This can also benefit a business by helping improve productivity of the each employee.  The technology for this already exists, but the problem is making it easy to use and reliable.

Advertisements

Comments»

No comments yet — be the first.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: