jump to navigation

Five trends that every software engineer ought to know December 19, 2011

Posted by jeffrey.koch in Software Engineering.
trackback

Software Engineering is the youngest discipline of Engineering and is still in its infancy. The age of the discipline has caused great changes and advances in the past 50 years. To be a successful Software Engineer one must continue to see what is currently considered best practices in Software Engineering and what is trending in the industry. Here are five trends that I believe are helping shape the future of Software Engineering:

Agile Software Programming

Agile software programming works on the premise of decreasing the time between development and release. It is in starch contrast to the waterfall method where every step of software development must be completed before the next phase of development is completed. Agile software development is rapid and can be utilized when software needs to be flexible and change quickly. For the agile method to work the development team will break the problem into small pieces and work to release small incremental changes.

The agile process needs collaboration between all facets of software development: requirement collection, requirement analysis, object design, implementation, and testing. The shorter time between requirement collection and release is thought to help reduce the cost of introducing fixing bugs because they are found at a faster pace than with more traditional software development paradigms.

DevOps

DevOps is the anchor between development, quality assurance, and technology operations. Having a group focused on combining all of these areas into a sole position allows for a company to have a more seamless development cycle. The theory behind the benefits is that the added communication between each group will help see problems between each group’s priorities and manage the releases of new software.

A shop that has a DevOps team utilizes a better transition from development to operations. If a shop utilizes agile it can just hand off the new prototype to operations while still having the “wall of confusion”. If a DevOps department is part of the organization the wall of confusion is not as apparent because the departments have a team that can scale that wall.

A shop that utilizes agile programming will benefit most from a DevOps team because it will be able to hash out the changes coming in releases. The more integrated the DevOps team is with the Operations and Development side the better the team will be able to manage their tasks.

Mobile Computing

The advent of powerful computing devices that are able to connect to the internet almost everywhere the user is has dramatically changed the landscape of software engineering. In the past most software was used as a monolithic program that runs on the person’s computer that utilizes x86 architecture. Mobile computing introduces many different hardware architecture types and changes in how the user interacts with the program. The output in most mobile application is also the input for the program. This change in user input makes the engineer develop the software.

The other leading issue that is needed to be discussed when it comes to Mobile Computing is the security threats that is introduced. Data is being sent over radio waves instead of cable. This makes the data more susceptible to intrusion and used for malice by the unwanted listener.  Securing the data transmitted over the mobile device needs to be at the forefront of design when developing mobile applications.

Real Analytics

There is a developing trend that is built upon the analysis of data, Real Analytics.  This process promotes the use of data mining to answer business questions of not only what happened in the past but what will and can happen in the future. The ability to utilize the data you have on your customers and help provide details on what can happen in the future is very crucial to the business operation. When tools are built to help answer these questions it will benefit the organization, because they will be able to focus time and energy in areas that could promote growth and avoid areas that are pit falls. In the past analytics relied heavily on past actions and not what was going to happen in the future. By building data structures that allow you to assess your data and build rules of it will enhance an organizations value.

The real diamond is to develop real-time analytics that are able to be accessed anytime with a good visualization. This can be used in audits, board meetings, and planning meetings. The engineer must understand what questions he wants to solve with the analytics and what questions are able to be solved with the data given.

Model Driven Software Engineering

Model Driven Engineering (MDE) is adding another level of abstraction in computer programming. This level of abstractions allows for the ability to develop code by modeling. Modeling is a crucial part in Object Oriented Software design, so if executable code can be developed from modeling an entire step will be removed from the process of building software.  The downfall for Model Drive Software Engineering is that there is an added cost to developing software with this level of abstraction. If one wanted to develop code that was the most efficient you would write it directly in machine language. This would give you complete control of how the system runs the code. With every level of abstractions adds overhead that will add unnecessary memory usage and speed slowdowns. Another pitfall is the problem of keeping the model and the source-code in sync, if a developer makes a change in the source the model will no longer represent what the software is accomplishing. Once MDE can make changes from Model to Source and Source to Model the advantage of it will be exponential.

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: