Example Of Essay On Common Challenges Presented To Software Developers
Type of paper: Essay
Topic: Software, Development, Management, Information, System, Project, Holism, Time
There are numerous issues that arise throughout the system development life cycle (SDLC). There can be difficulties getting the code to work just right or the project may be cancelled prior to completion. Two common challenges that software development teams can face occur during the early stages of the SDLC.
Once the need for new or updated software is established, the discovery process begins. This process determines the actual requirements for the program and requires the active participation of several individuals. All levels of management, the end users, and software developers, among others should all be represented throughout this process (Bourque & Fairley, 2014, 1-6 – 1-7).
Determining the requirements necessitates personal interaction with all parties involved. This includes conducting interviews and surveys, providing scenarios designed to retrieve more detailed information, observing the current procedures, creating prototypes of the system that is being designed, and brainstorming sessions to allow several participants to provide more insight. This process provides the following information:
The goals of the software. The goals define the purpose of the software and detail high level objectives.
Domain knowledge. This defines the relationships that exist among relevant concepts.
Stakeholders. This defines the needs of management and end users, locates commonality among the two and creates an agreement between all parties involved.
Business rules. These rules define the various aspects of operations and will affect the requirements of any software.
Operational environment. An understanding of how the software will be used in a live scenario affects both the feasibility of the project and design decisions.
Organizational environment. The workflow has to be understood in order to avoid unplanned changes to the established business procedures (Bourque, et al., p. 1-5 – 1-6).
The challenge encountered while determining the system requirements is having the ability to obtain pertinent information from a variety of sources to be able to fully understand the workflow which leads to the problem the software is to correct in order to provide solutions to solve that problem while optimizing other correlated processes (Holistic Solutions, 2014). Often, management provides information which does not necessarily include the requirements of the end users. The end users are often not included for a variety of reasons, including the end users are too busy to participate or poor communication exists between the users and the programmers (Smyth, 2012).
Another challenge, closely related to the issues encountered while establishing the software requirements, occurs when end users and management may be unsure of what features are necessary, especially when preparing to transition to a different system. As time passes and development continues, end users and management often recognize features that were inadvertently omitted during the design process. This results in requests for changes to be submitted. When this occurs, Smyth (2012) states that developers are faced with two options and each has inadvertent consequences.
The first option ensures that the project continues while adhering to the established budgetary and time constraints by denying or refusing any change requests. When this occurs, the program often lacks necessary features or does not perform as expected. The second option is to make the requested changes. As changes are introduced, it creates a domino effect by requiring changes in other areas well. This results in projects that run over budget. Smyth also notes that each requested change that is implemented leads to up to fifty correlated changes, causing the software to become increasingly complicated (2012).
Communication is essential to minimizing these issues. Present open-ended questions to elicit the necessary information. Questions should be designed to determine details, such as how many end users need access to certain features, how often particular tasks within the program are performed, and what constraints are presented to the end user under various situations within the program. Develop a clear understanding of the purpose of the software, determine the cause of the primary issue, and investigate other solutions that have been implemented in the past (Hostetler, 2014).
Once an agreement has been reached concerning the requirements of the program, prepare a detailed requirements document. Have the client sign and present the requirements to the development team before the project progresses further (Holistic Solutions, 2014). This document can serve as a reminder of the details of the agreement and provide clarification as other issues arise.
Establish a change request procedure. This needs to include details and justification for any requested change. If possible, have a review committee or approval process to ensure these requests are necessary and will enhance the software. Provide documentation of the requirements of the change request process and how the approval process will progress
In conclusion, these two challenges will present themselves, but there are methods to effectively resolve these issues. Effective communication is necessary to ensure that requirements are met or exceeded and budgetary and time constraints are followed. Develop and enact a stringent change request policy. With some efforts, these challenges become more manageable and reduce the potential impact in all areas.
Bourquem, P. & Fairley, D. (Eds.). (2014). Guide to the software engineering body of knowledge SWEBOK, v.3. Piscataway, NJ.
Holistic Solutions (2014, December 03). 5 Common software development problems. Retrieved from http://holisticsolutions.eu/5-common-software-development-problems/
Hostetler, S. (2014, August 22). Software development practices: What’s the problem? Retrieved from http://oclc.org/developer/news/2014/software-development-practices-whats-the-problem.en.html
Smyth, P. (2014, August 08). 7 Reasons why software development is so hard. Retrieved from http://www.finextra.com/blogs/fullblog.aspx?blogid=6836