Essentially software development is the process of writing and maintaining a source code, expanding on this; all the steps involved in the initial ideation and system implementation. The software development process is most simply explained using the framework for defining the tasks performed at every step. The Software Development Life Cycle (SDLC), which defines the six key stages: planning, analysing, design, implementation, testing & integration and maintaining software. “ISO/IEC 12207 is an international standard for software lifecycle processes. It aims to be the standard that defines all the tasks required for developing and maintaining software.”(tutorialspoint, 2016) This supplies a common structure with an extensively well-defined procedure so all involved in the process, can conceive and adapt to the requirements of the end user. This article will be inspecting step by step the SDLC to analyse and identify the considerations and issues involved with each phase, concluding with an understanding of the foremost points related to the software development process.
The first step in the planning stage is requirement gathering; the development team will work with various stakeholders gathering as much information as possible in the field of the desired software. This information can be collected in a number of different approaches; studying the existing software, consulting users and industry developers, market surveys and any other methods that could yield useful results. To gain an understanding of both the system and function requirements. The main issue in this step is the importance of using the appropriate techniques to collect accurate reliable data, as this will be the main basis for what the software will be designed towards.
After this a feasibility study must be carried out A description of the product is created, analysed and tasked to discover if it’s operationally, technically, and financially viable. This will establish if the company has the skills and connections required to launch the product and keep it operational. Estimation of the funding amount or start-up cost, describes the industry, potential market value, sales estimation and any competition. This gives focus to the project, enhances the probability of success, identifies new opportunities, weaknesses, logistical problems and any underutilised potentiality, along with possible solutions to address these issues. This is the point of no return in development when you have to be sceptical, analysing every flaw or potential downfall of the product, then give a go/no-go decision. “A feasibility study should be considered a failure if:
- The capital cost is higher than expected
- The operating cost is higher than expected
- The recovered grade is lower than expected
- Sales revenue is lower than expected
- It takes longer to build and ramp up than expected
- Initial performance cannot be sustained, though it may take several years for the failure to become evident.” (McCarthy, 2016)
The analysis stage involves clearly defining the product requirements, designed and developed during the project. A software requirement specification (SRS) is an ideal tool to collect this information. Margaret Rouse defines SRS as “a comprehensive description of the intended purpose and environment for software under development. The SRS fully describes what the software will do and how it will be expected to perform.” (Rouse, 2007) SRS defines how an application will interact with system hardware, programs, human users and other real world situations. While putting the customer, stakeholders, analysts and programmers all on the same page for understanding what the final product will be designed upon. Helping all involved understand what they are creating and make any changes before development starts as users don’t tend to know what they want until they see it which by that stage is a needless financial and time waste for all involved.
The next step is a system analysis: the detailed evaluation of a particular system to identify areas for improvements and make any enhancements if necessary. This includes: gathering the company requirements and researching the path to be taken to effect these requirements. (Thorpe and Cauchi, 2016) There are many benefits for carrying out a system analysis, such as minimising mistakes when problem-solving, saving money, software flexibility/adaptability, risk assessment and quality insurance. This understanding of product limitations, related problems or possible changes to the existing system(s), addresses the effect the product will have on the entire organisation. The main disadvantage is an excessive amount of analysing is costly and time-consuming which could be very detrimental to the business.
In the design stage, the software requirement specification is used to create the optimal design for the product. The SRS instructs the design approach for the Design Document Specification (DDS). A document defining the purpose, scope, objective, function, constraints, interface, output and architecture of the software being created. Stakeholders review this document and a design is selected based upon various parameters: feedback, risk assessment, market research, budget and time constraints. This will be the manufacturing basis for all the architectural modules, communication and data flow representation with external and third party modules. The internal design must also be very accurately be detailed within the DDS. The big issue with this is that software engineers will be designing the software entirely based on the information provided within the DDS, so if any of the information is even slightly wrong, it will mean a lot of wasted money and time.
The implementation stage involves the actual construction of the product. Programmers start writing program code in the desired pre-defined language from the DDS and developing the error free software and designers start creating the graphic material. This is when a tangible product starts coming to fruition, visible to the stakeholders. The result of this is judged in contrast to the list of requirements from the planning stage and the DDS. For example, if you were developing a web application it could support different Internet browsers (Firefox, Safari, Explorer). The implementation stage is completed once when all the proposed requirements are met and the result conforms to the agreed upon design. A consideration is that it is generally a near impossibility to entirely meet everything in the requirement list or other design documents as defined in the original specification. Unexpected issues compel the development team to deviate, which can cause conflict if the client/stakeholders to be exactly as requested. It is also very important that the development momentum is maintained during this phase, because if one person slows their pace it affects the entire team, sequentially costing the company.
The testing stage is usually a subset of all the stages of the SDLC. This stage has the intention of finding defects in the software. Defects are reported, tracked, fixed and retested at various levels of code such as the module, program, product, in-house and at the user’s end until the product reaches the business and technical quality defined in the SRS and works as expected. There are a number of different tests that can be implemented to discover defects in the software. For instance, static testing “can test and find defects without executing code… This testing includes reviewing of the documents (including source code) and static analysis. This is useful and cost effective way of testing. For example reviewing, walkthrough, inspection”. (Istqbexamcertification.com, 2016) In conjunction with “dynamic testing, the software code is executed to demonstrate the result of running tests… For example unit testing, integration testing, system testing”. (Istqbexamcertification.com, 2016) The important questions to ask when it comes to this stage are:
- Does the new system meet business requirements and objectives?
- Is it reliable?
- Are there any remaining bugs?
- Does it function according to approved functional requirements?
There are many considerations to take into account when it comes to the testing stage of the SDLC. If tests are not introduced early, it proportionally increases the amount defects to be found is an insurance of customer reliability and satisfaction in the finished product. A higher quality product delivered will mean lower maintenance costs. Significant software failure in the future or in later stages of development is a very expensive correction to have to make.
Integration is a smaller but important step; “software may need to be integrated with the libraries, databases and other programs. This stage of SDLC is involved in the integration of software with outer world entities.” (tutorialspoint, 2016) This joining of different subsystems allows the software to act as a coordinated whole entity able to function appropriately when interacted with.
Now the product has been fully tested, it is ready to enter the deployment stage. Dependent on the business strategy this can be done synchronously or in limited segments to be tested in the end-user marketplace. Based on feedback received, the product will be distributed in its entirety or with the suggested enhancements/bug fixes from the targeted market segment. Modifications can be required due to a number of reasons, such as the:
- Market Conditions – Policies, which changes over the time, such as taxation and newly introduced constraints like, how to maintain bookkeeping, may trigger need for modification.
- Client Requirements – Over the time, customer may ask for new features or functions in the software.
- Host Modifications – If any of the hardware and/or platform (such as operating system) of the target host changes, software changes are needed to keep adaptability.
- Organisation Changes – If there is any business level change at client end, such as reduction of organization strength, acquiring another company, organization venturing into new business, need to modify in the original software may arise. (tutorialspoint, 2016)
The goal of this stage is that the product is of high quality and will remain relevant: writing handbooks, providing instruction and training for users will help achieve this.
The final longest stage, maintenance is when the customer starts using the developed software. This is when the value of input into the testing stage is tested to see how successful it was. A help desk should be set up, as inevitably problems will arise, needing to be solved to maintain the quality of the software. A write up evaluative project report will help stakeholders know the exact capabilities and performance expectation of their developed software. The obvious issue with the maintenance stage is the cost, which is affected by real world factors like age (standard being 10-15 years). Technology advances, making it increasingly costly to maintain. Even minor changes to rectify problems and fix bugs can easily hurt the software structure. Software based factors affecting cost are the structure of the software program, the programming language used, dependence on the external environment and staff reliability.
In conclusion the foremost issue involved in the development of software is cost, as the software wont even make it past the planning stage if it is financially unfeasible. Although it also wouldn’t pass if technically or operationally unfeasible, cost has the biggest impact throughout the entirety of the SDLC. The company will have to be in a financial position to maintain the product for years after initial release.The next big issue is dependence, as the entire design stage and a considerable amount of the development stage is based upon the requirement study and the DDS accurately depicting everything needed to be included in and designed for the product. Also if the data collected is in any way unreliable this could have extremely detrimental affects, especially the longer it goes unnoticed. This leads another key issue communication, if the product doesn’t meet the necessary requirements or if there was a misunderstanding of the desired product between the customer, project leader, analyst, programmer or any possible consultants leading to functionality and collaboration faults, as well as an unsatisfied customer meaning having to go back to the drawing board. The final main issue is testing; inadequate testing may lead to a bad quality product therefore complaints from the customer. Testing is an essential part of the process as without it, it is highly likely that errors in the program will not be found until the product is deployed, presumably it wouldn’t even work. The later on in the process that testing is introduced the increased need there will be for tests to take place.
Word Count: 2003
http://www.tutorialspoint.com. (2016). SDLC – Overview. [online] Available at: https://www.tutorialspoint.com/sdlc/sdlc_overview.htm [Accessed 7 Dec. 2016].
Hussung, T. (2016). What is the Software Development Cycle?. [online] Husson University. Available at: http://online.husson.edu/software-development-cycle/ [Accessed 11 Dec. 2016].
Hofstrand, D. and Holz-Clause, M. (2009). What is a Feasibility Study? | Ag Decision Maker. [online] Extension.iastate.edu. Available at: https://www.extension.iastate.edu/agdm/wholefarm/html/c5-65.html [Accessed 11 Dec. 2016].
McCarthy, P. (2016). Why feasibility studies fail. [online] Amcconsultants.com. Available at: http://www.amcconsultants.com/digging%20deeper%20articles/why-feasibility-studies-fail [Accessed 11 Dec. 2016].
Rouse, M. (2007). What is software requirements specification (SRS)? – Definition from WhatIs.com. [online] SearchSoftwareQuality. Available at: http://searchsoftwarequality.techtarget.com/definition/software-requirements-specification [Accessed 11 Dec. 2016].
Thorpe, J. and Cauchi, J. (2016). The Benefits of System Analysis – FTIAS. [online] FTIAS. Available at: http://www.ftias.com/benefits-system-analysis/#.WE2jzKOcZTY [Accessed 11 Dec. 2016].
Makabee, H. (2012). Communication Problems in Software Projects. [online] Effective Software Design. Available at: https://effectivesoftwaredesign.com/2012/04/23/communication-problems-in-software-projects/ [Accessed 12 Dec. 2016].
Istqbexamcertification.com. (2016). What is Software Testing?. [online] Available at: http://istqbexamcertification.com/what-is-a-software-testing/ [Accessed 12 Dec. 2016].