Software Development Process

Abstract

 Software development process represents an imposed methodical approach on the software development cycle where it allows a collaboration of development team within a project to produce software product. Such approach ensures results with fewer software defects, better value and shorted delivery time. The necessity of choosing a formal process is to implement the application of desired discipline that can deliver a quality product, avoid wastage of time, money and business success. Having the software product engineered under formal selected techniques allows the improvement of the quality of such software, and enhances the software development effort (KR, 2007).

Unified software development process (USDP) was created to implement the usage of the Unified Modeling Language (UML) where it recognizes the need to develop systems’ models that can explore different aspects of the system’s structure, behaviour and implementation. Such model is used to create the software product in iterative and incremental process, and as such; the system’s functionality is progressively built and the development will be tested, reviewed during the process, and the development failing will be assessed at the earliest opportunity. The process advocates the usage of the Use Cases specification where it creates accurate specifications for the software that can be easily understood by the target users (Trosolwg.co, 2004).

Software Development Process

KR (2007) explained that software development faces many challenges during each phase within the development lifecycle; and serious attention is required to these challenges and some of these challenges are:

· Developing a formal methodology that can lead to a construction of radical and innovative alternatives.

· Software tools that can resonate with such methodology, and facilitate supportive and flexible environment.

· The need for standards, and software development processes that can leverage methods that can solve problems of complex software products.

West (2009) explained that choosing the wrong process for the software development lifecycle can attribute to many problems during such development, and can affect the quality of the software end product, and as such; initiatives around improving the process of the software development is undertaken to improve software quality. The problem that we’re facing in the 21st century is the lacking of shared, common and standardized process, and such problems are very common in open source communities. Also, the problem with software development is that business are using the process to create application functionality instead of creating software systems that can be configured to all the business rules, processes and calculations that can derive the business strategy. Today’s business strategy is driven from the business architecture definition that can restrict business’s progress, and lead business to certain direction that might be against the strategy required for certain economy preferences.

Spenser (2010) explained that the software development process experienced drastic changes over many years where initially were requiring developers to write code to build a software for a complex process where it is involving architecting, analysis, programming, testing and user testing to deliver more advanced results. It’s imperative to understand the three common reasons of software development projects failure to avoid such common problems that can occur in any project, and these reasons are:

· The objectives of the project not fully specified where the needs and the expectations of the software development project are unknown.

· Bad estimating and planning for the software development projects where a misunderstanding of software functionality, user needs and failing to determine what features the software will deliver.

· Underestimating the project management methodology that oversee the software development process, anticipate obstacles, and keep the project plan going on the right track through a leadership of the project manager.

Because of the complex nature of the software development process, and the complex technology that usually involved in the most projects; it’s important to have the development process in place that includes the proven guidelines to ensure the delivery of expected results (Spenser, 2010).

SelectBS.com (2011) explained that the software development lifecycle (also called development process) is the structure that requires to be imposed on the software development product where there are several models that can represent such processes where each process describe the variety of activities and tasks that take place during such process. For decades many efforts were dedicated to find predictable, repeatable processes or methodologies that can improve the quality and the productivity of the software development. Some efforts were trying to formalize disorderly and uncontrollable tasks of writing software, and others applied the project management techniques to write such software. Two important approaches that usually used in the software development projects are:

· Waterfall processes – Where developers follow the following steps in order: Requirements Analysis, Specification, Software architecture, Implementation, Testing, Documentation, Training and Support, and Maintenance.

· Iterative processes – It is a preferred method for customers that can not defined their requirements where it allows a potential of reaching the design goals for such customer. The foundation of iterative development is the source of Agile software development process where a feedback is used rather than planning as the essential primary control mechanism of the process, and as such; the feedback is driven by regular releases and tests of the evolving software.

Iterative development approaches critics pointed out that the iterative process may deliver unreasonable expectations upon the recipient of the software product and also that such approach can be very expensive since the end results might be unclear. However, the problem with this criticism is that the main purpose of the iterative process is the fact that there’s no need to build the whole product before receiving the feedback from the recipient, and that can guarantee the delivery of the desired product (SelectBS.com, 2011).

Unified Software Development Process

Osama (2010) explained that the Unified Process Model (also known as Unified Software Development Process) represents an incremental and iterative software development process and it’s also known as one of the heavyweight methodologies (Plan-driven) where each iteration (mini-waterfall) dedicates the efforts to build an incremental and working version of the system. The characteristics of such model can be described as follows:

 · Iterative and Incremental – Where each iteration results a release of the system that may improve system functionality or adding system functionality compared with the previous release.

· Use Case Driven – Where the uses cases are used to capture the proposed system functional requirements that will define the contents of the iterations, and as such; each iteration contains a set of requirement scenarios that goes through implementation, testing and deployment.

· Architecture Centric – Where architecture baseline is delivered through the execution of the process which is created during the Elaboration phase. Such baseline is used to validate the architecture and act as a foundation of the development.

· Risk Focused – The process focus on addressing the critical risks within the project in the early stages in the Elaboration phase where the deliverables are selected in order to ensure that the greatest risks are addressed first.

 Osama (2010) also explained that the project lifecycle that uses such model is divided into main four phases:

· Inception – Defined the business cases, the feasibility of the project, and the scope of the system design. 

· Elaboration – Defined the basic architecture, and the plan of the software construction. In addition, the risk analysis takes place to be considered.  

· Construction – Produces the beta-release of the system where the system in such phase will be working and have the sufficient functionality for preliminary testing under realistic conditions. 

· Transition – Where the stakeholders will have the system introduced to them and the intended users, and can be achieved when the stakeholders and the project team agree on the inception phase and the objectives of the system functionality. 

Both the RUP (Rational Unified Process) and EUP (Enterprise Unified Process) are instantiated by the Unified Process (UP) where it also known as the Unified Software Development Process (USDP) or Unified Method (Nalbone and Vizdos, 2009).

The Unified Process (UP) is a use-case driven model, iterative, architecture-centric and incremental development process that leverage the Object Management Group’s (OMG) implementation where it is applicable to engage with different type of software systems such as large-scale projects, and small-scale project with different technical complexity. The idea behind such model is the execution of the projects within limited details that required to deliver certain functionality of the system for each iteration within such model (Alhir, 2011). 

Why the choice of Unified Process Model (UP)?

Osama (2010) explained that using the Unified Software development process imposes some of the advantages that can benefit any development project, and also such process has some of the disadvantages that required to be known to the development team to be considered. Some of these advantages and disadvantages are:

· Some of the working functionality within the system can be developed and delivered early in the lifecycle.

· Results can be obtained in periodically during the project lifecycle.

· The progress of the project can be measured, since the progress is incremented through the iterations of the process.

· Changing the scope or the requirements during the development can be less costly since the incremental changes happen through few requirements.

· Any risks can be identified in the early stages and can be addressed first in each iteration to manage the milestones of the project.

· Product is delivered with every incremental operation within the model.

· Any challenges, issues, and risks identified in a previous iteration, can be applied or utilized in the next increment.

· More resources may be required in different iteration within the project, which might increase the cost of the project.

· Too many changes can increase the cost.

· No overlaps between iterations since each phase of an iteration is rigid.

· Since all the requirements are not gathered at the beginning of the project, some of the system design issues and the system architecture issues may arise that will impose a delay in the project.

Conclusion

Software development lifecycle, which also recognized as software development process is known as the structure imposed on the developing of the software product during the phases of the software creation.  It’s also known as a term that describes the various tasks or activities that usually happen during the development process. It’s normally implemented by many organizations that fall under the software development category. Improving the organization software development process can significantly improve software quality, reduce costs, and increase the reliability of the organization’s planning (Admin, 2011).   

Finally, we use the unified process model as main model in our software development, since our environment required an incremental build of most of the systems we’re developing in our organization.  The starting point of our development is defining the user requirements through the use cases that capture such requirements and also define the contents of the iterations within the process. Each iteration will be involved in a set of use cases or requirements scenarios that usually go through implementation, testing and deployment. 

References

Admin (2011) Software Development Process [Online]. Available from: http://www.free-computer-tips.info/computer-software/software-development-process.html# (Accessed: 26 March 2011).

Alhir, S. (2011) Understanding the Unified Process (UP) [Online]. Available from: http://www.methodsandtools.com/archive/archive.php?id=32 (Accessed: 26 March 2011).

KR, H. (2007) Software Development Process and Its Importance [Online]. Available from: http://www.articlesbase.com/software-articles/software-development-process-and-its-importance-155037.html (Accessed: 26 March 2011).

Nalbone, J. & Vizdos, M. (2009) Enterprise Unified Process: Extending the Rational Unified Process [Online]. Available from: http://www.ambysoft.com/books/enterpriseUnifiedProcess.html (Accessed: 26 March 2011).

Osama, M. (2010) Unified Process Model [Online]. Available from: http://magieosama.blogspot.com/2010/06/unified-process-model.html (Accessed: 26 March 2011).

OpenLearn (n.d.) Software Development for Enterprise Systems [Online]. Available from: http://openlearn.open.ac.uk/mod/oucontent/view.php?id=397541&section=1.2.3 (Accessed: 26 March 2011).

Spenser, M. (2010) Understanding the Software Development Process [Online]. Available from: http://www.projectsmart.co.uk/understanding-the-software-development-process.html (Accessed: 26 March 2011).

SelectBS.com (2011) What is a software Development Process? [Online]. Available from: http://www.selectbs.com/analysis-and-design/what-is-a-software-development-process (Accessed: 26 March 2011).

Trosolwg.co (2004) Unified Software Development Process [Online]. Available from: http://www.trosolwg.co.uk/unified_development_process.htm (Accessed: 26 March 2011).

West, D. (2009) What does a 21st century software development process look like? [Online]. Available from: http://blogs.forrester.com/dave_west/09-01-21-what_does_21st_century_software_development_process_look (Accessed: 26 March 2011).

 

 

 

 

Advertisements

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: