jump to navigation

Five trends every software engineer should pay attention to! December 17, 2011

Posted by 8237mcraew in Software Engineering.
trackback

Mobile Computing

In today’s global community the level of technical acumen has increased drastically over the last few years.  Even in some of the most impoverished places, people and even children are connecting to the internet and mobile devices.  A number of articles we read this semester addressed the whirlwind that is mobile computing.  I believe mobile computing to be the single most drastic impact on software engineering.  The explosion of mobile computing has impacts across so many aspects of Software Engineering.  Of course that aspects most affected are:

  1. User Interaction
  2. Analysis of Technical Requirements
  3. Software Verification and Validation
  4. Security and Information Management

Mobile devices operate across a wide variety of OS and chipsets, from IPhone to Android.  Yet, because of the nature of our mobile devices the expectation is instant and pain free integration across multiple adjacent platforms.  Not only does the business user expect to be able work from home, but the expectation is also to access “Big Data” from her or his mobile device.  In a survey conducted recently by Dresner Advisory services, illustrated how over 68% of people surveyed felt that mobile computing is critical or at least very important[3].  This is over a 16% increase from the previous year.

The gauntlet has been thrown down for mobile software designers to not only adequately identify what needs to be developed, but to ensure it works (the first time).  Due to, in some cases, hefty pricing and stiff competition, here is very little consumer patience for “buggy” mobile devices.  This places a heavy premium on high quality software verification, validation, and requirement analysis.

Additionally, Security and Information Management is becoming a greater concern.  As more and more consumers are connected and access sensitive information across mobile broadband networks, they expose themselves to greater threats of identity and financial theft .  Mobile security is a professional market that will provide great opportunities for years to come.  Lookout’s web based security services estimated that over one million dollars were stolen from Android phone users in 2011

Cloud Computing

With its “Almost-Enterprise Applications” cloud computing offers it’s consumers Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service” (IaaS).  The flexibility and scope of the cloud allows consumers to leverage high powered services while minimizing the cost of maintaining servers and/or  backup servers reducing the cost of software transition.  This could have an immediate and widespread impact with regard to database management, systems integration, security, ethical, and in some cases legal concerns.

Due to the vast nature of the cloud, it offers the reality of a tailor made platform for “Big Data”.   Real analytics is discussed in detail by Deloitte [5].  Business owners are eager to utilize the vast data processing and warehousing capability of the cloud to shift Business Intelligence from being feeders for hindsight or at best near current business planning to predictive model building.  With the increase database capabilities, comes an even greater need for management of that data so that analysts do not become overwhelmed.

With all the capabilities that the cloud offers, there is a price.  Successful system integration is key for all cloud users, and so will need to become a priority for cloud application developers. Although it is improving, a lack of cloud wide standard protocols and an abundance of vendors have made it necessary for consumers to choose carefully in order to ensure products they purchase will be compatible with their legacy systems as well as their business partner’s.  Software designers and programmers must keep this in mind as they develop cloud friendly applications.

Security is also a concern for the cloud, as it is only as secure as its network.  Anything on a public cloud is at risk for data intrusion, although that risk maybe small. Because of this exposure certain industries are directly impacted ethically and legally, with little current legal guidance at this time. HIPPA constraints can make cloud functionality difficult for medical professionals, as well as other industries that deal with sensitive information.  The thought of your SSN floating around the cloud cannot be a pleasant thought for too many people. Again security in the cloud environment will be a critical piece for software engineers.

With it’s ever expanding growth and increased functionality across its capabilities the cloud is easily one of their greater impacts on software engineering and will continue to be for the foreseeable future.

Cyber Intelligence

One of the more significant trends impacting software engineering is the necessity for cyber intelligence.  With increased utilization of mobile and cloud applications, both personally and professionally, more and more sensitive information is being transmitted over networks.  Breach detection and active network security is a must going forward.

Security threats have continued to evolve with technology, and cyber intelligence must do the same.  Effective security requires a dedicated and holistic approach to information management. As discussed by Deloitte cyber security must focus on the following:

  1. Cyber intelligence: more sophisticated and full set of threat management tactics.
  2.  Cyber analytics: pattern detection across systems and networks and external threat analysis.
  3. Cyber forensics: tracking attacks back to their point of origin is moving beyond root cause.
  4. Cyber logistics: protecting against compromises in the value chain.

DevOps/Agile/ITIL Methodologies

The surge of the competing DevOps/ITIL/Agile methodologies is another significant difference maker in the software engineering community.  These three processes have taken the IT field by storm.  All three share similar characteristics, and all three have left a big impact .

DevOps can be characterized by the following methodologies:

  1. Use of agile and other development processes and methodologies
  2. Demand for an increased rate of production releases from application and business unit stakeholders
  3. Wide availability of virtualized and cloud infrastructure from internal and external providers
  4. Increased usage of data center automation and configuration management tools [6]

In comparison Agile holds to the following tenets:

  1. Small group. When no more than ten to fifteen people are on the project team, it is possible to maintain high-bandwidth, one-to-one communication. But this starts to become difficult when the team size exceeds twenty people. With smaller teams, no specialization of roles (analyst, designer, coder, tester), with handover of artifacts, is necessary.
  2. Co-location. Again, this allows high-bandwidth communication and synchronous communication between people.
  3. Customer availability. When the project team has direct access to the customer, it becomes easier for course corrections to be made periodically, thus rendering a better product at the end of the project. Better yet, your team has direct and continuous access to a good customer representative empowered to make decisions about the needs to be satisfied by the software under development.
  4. Business application. Agile development works better for business software projects in which interactive types of applications are being built. It works less well for other kinds of projects: for example, an embedded real-time system.
  5. New development. New software projects, often called “green field” projects, are better suited to agile methods than maintenance projects.
  6. RAD programming environment. Agility requires a rapid application development environment that allows fast turnaround from construction of code to testing and collective code ownership; ideally, development teams do daily builds and monthly delivery.
  7. Short lifecycle. Projects should not exceed a few months and ideally have a rapid internal loop (one day).
  8. Common culture. Vocabulary and an implicit process are shared, and individual developer practices rapidly align with each other.[7]

Finally, ITIL is a process driven function of the service lifecycle of information technology.

1. ITIL Service Strategy

2. ITIL Service Design

3. ITIL Service Transition

4. ITIL Service Operation

5. ITIL Continual Service Improvement

Together the triumvirate of DevOps, Agile, and ITIL has engaged the software engineering company in a positive way.  They all recognize good software development require involvement from all invested parties throughout the lifecycle of the product development.

System Ecosystem

The Software Ecosystem approach will impact programming fundamentals with its push for smaller teams working independently.  The Software Ecosystem advertises small teams, simple (“The three API rule”[1]), all with an eye towards quick turnaround on product development. Designs will emphasize and customer desirability and ease.  Instead of devoting all their time on just their own projects, workloads will often be spread across different teams, leading to more scrutiny and influence from other ”invested parties.”  I think the emphasis on simplicity and integrated workloads is a plus for the software design community as a whole.

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: