Modernizing Software Development

Filed Under (Software Development) by Fawad on 25-08-2009

Tagged Under : , , ,

Modernizing Software Development

Software development has been defined as the process of analyzing needs, designing solutions, writing programs, testing them, and implementing them to solve problems for individuals and organizations. Over the years different models have been used in software development (software development lifecycles, SDLC). Some of these are Waterfall, Spiral, Iterative or incremental and Agile.

Agile software Development is the model that is increasingly being used by developers these days, Ambler(n.d.) defines it as An iterative and incremental (evolutionary) approach to software development which is performed in a highly collaborative manner by self-organizing teams within an effective governance framework with “just enough” ceremony that produces high quality software in a cost effective and timely manner  which meets the changing needs of its stakeholders.” The values that are embedded in this model are: giving precedence to Individuals and interactions over processes and tools, working software over comprehensive documentation, Customer collaboration over contract negotiation and responding to change over following a plan.

Service oriented architecture (SOA) can improve the agility of business operations. Developers create services in the service layer, which have published interfaces supporting a particular business domain. Using the SOA approach in combination with component based approach to software development; companies can reap a lot of benefits. Some of these benefits might include: Better return on investment, mobility of code, focused developer roles as applications will have multiple layers and each layer would need a specific developer role (e.g. A client developer would need to know technologies such as SWING, JSP or MFC), higher security level, better testing leading to fewer defects, reusability, support for multiple client types, better scalability etc (Stevens,n.d.).

Cloud computing is another technology that has excited the tech world. Experts believe that cloud computing can provide a lot of benefits to testing and development of software. Cloud Computing can be defined as anything that involves delivering hosting services over the internet. This includes many areas of technology like software as a service, hardware as a service etc. One of the main advantages of cloud computing is that the provider hosts the software on the internet and the customer access only that which is needed and pays for that part.  Examples of companies providing software on demand are Salesforce.com (CRM), Google (GOOG), NetSuite (N), Taleo (TLEO), Concur Technologies (CNQR) etc.

Virtualization is being increasingly used by software developers to stream the development process. They use these tools to provide different target environments for development and testing for e.g., using different operating system, operating system versions and browsers. One of the main advantages is that developers can spend time on the actual testing rather than wasting time on creating and setting up test environments. One of the tools being used by Microsoft for this purpose is Microsoft Hyper-V.

The trend of Open Source Software development is also increasing as opposed to proprietary software. With Open Source code the software must be available for free and anyone should be able to download the source code. Being easily available makes it easy to modify the source code and make it adaptable to changing environments; this also makes the software more sustainable. Non-reliance on one entity also makes it feasible for the software to be modified by another party if the original developers abandon it. For open source code, developers are moving towards the usage of dynamic languages like JavaScript and PHP and relying less on static languages like C, C++ and Java. These languages are more flexible and easier to write in. Better software development and unit testing procedures have made the use of dynamic languages easier.

Reference List

Ambler S.W., (n.d.). Disciplined Agile Software Development: Definition. Retrieved August 23, 2009 from http://www.agilemodeling.com/essays/agileSoftwareDevelopment.htm

Ambler S.W., (n.d.). Examining the Agile Manifesto. Retrieved August 23, 2009 from http://www.agilemodeling.com/essays/agileSoftwareDevelopment.htm

SearchCloudComputing.com.(2009).Defintion. Retrieved August 23, 2009 from http://searchcloudcomputing.techtarget.com/sDefinition/0,,sid201_gci1287881,00.html

Stevens,M.,.(n.d.). The Benefits of a Service-Oriented Architecture.Retrieved August 23, 2009 from http://www.developer.com/tech/article.php/1041191

UAE Hosting.(2009).Advantages of cloud computing. Retrieved August 23, 2009 from http://contactdubai.com/webhosting/advantages-of-cloud-computing

Gonzalez-Barahona ,J.M.(2000).Advantages of open source software. Retrieved August 23, 2009 from http://eu.conecta.it/paper/Advantages_open_source_soft.html

Share and Enjoy:
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • Add to favorites
  • LinkedIn
  • MySpace
  • Technorati
  • Twitter
  • Yahoo! Buzz
Share

Post a comment