Nowadays, Software is present in all human activities. They can solve complicated problems, contributing during decision making and even forecasting the future. Due to this, our welfare, jobs, security and even our decisions are in the hands of software applications. In this article, we present a timeline about software development since 2000 to review the characteristics of these developments.
2000-2001 Communication Era
The public access to the Internet and its emergence had offered decentralization that led to the rapid development and expansion of areas of computing, such as concurrent programming and distributed architectures, which up to then had been limited to a narrower context.
Many client-server applications and distributed system development were developed during this period like below events:
Releasing Mac OS X operating system that provides protected memory architecture and also preemptive multi-tasking. On the other hand, Windows XP is also was released by Microsoft which has a significantly redesigned GUI (2001).
2001-2010 Productivity Era
Most software systems created in this stage are called management information systems. They were designed to be an important part of business management in large companies.
This has led to a need for the methodologies to be adapted by increasing the abstraction levels in software engineering tasks up to the abstraction level in which the problem is described. New tools enabling analysis level programming, such as Model Driven Architecture (MDA), appeared in this stage. The other major significant period in this stage was marked by the emergence of agile methodologies. Agile projects focus on creating the best software to meet customer needs.
This means that the development team focuses only on tasks and processes that provide the customer with added value in the product being created, improved, or implemented. The most popular methodologies are Extreme Programming (e.g. XP) and Scrum.
Below, we will review some notable of these events during this period:
Mozilla Firefox 1.0 had defeated Microsoft’s Internet Explorer and became the dominant Web browser (2004).
Social Networks like Facebook and YouTube have become viral and Google acquires Android to develop it as a Linux based mobile phone operating system (2005).
The iPhone offers most of computer functions to the smartphone (2007) and Microsoft launches Windows 7 that offers handwriting recognition among other features (2009).
2010-upto now Functionality Era
Many platforms were released for integration between different information systems.
The Service Oriented Architecture (SOA) have revolutionized offered services. It provides more functionality at business level for a specific domain problem. The developed services through SOA are synchronizing to perform more complex tasks and becoming composite services. These real time services that was sold as a product, were based on Cloud computing. On the other hand, customers’ demands for using multi applications on smartphones, tablets, or laptops were raised. These applications are small programs that can be downloaded and installed on mobile devices that allow users to perform some tasks at the place that they are in any moment. They are grouped into virtual stores and many of them are free, so usually they are closer to marketing challenges than software development challenges. They tend to be more dynamic than traditional programs and are the ultimate expression of agile methods and MDA.
Since 2000 many modern approaches and methods in software development were released. Under shadow of techniques and methods, deploying software and integrating them are becoming more easily. However, there are many challenges on the way of this evolution that requires to be prepare for them.