|Author : DAOUDI Samir | Context : MSc Software Engineering – Software Engineering|
The software life cycle describes the different phases of a software development project. The main important phases can be summarized in
1. Requirements definition
2. Software & system design
3. Implementing & unit testing.
4. Integration & system testing.
5.Operation & maintenance. (I.Sommerville, 2011)
This is a general overview of the software life cycle; I personally think that the 1st step, which consists in determining the requirements and limitations of the software and the system, is the most important and it can include different sub tasks as:
1. Trying to sort out what is exactly expected by the users?
2. Why they want to change the actual software?
3. What are the limitations of the system that will host the software?
4. Determining the feasibility of a software product.
5. Determining the key users to conduct meetings, tests and signing the UAT for the software …etc. (R.Thayer & M.Dorfman, 2000)
These are some of the most important milestones for the requirements definition step.
If consider the determination of the feasibility of software product, this can be considered as vague and can be interpreted differently, so what is exactly ‘determining the feasibility of a software project’?
An initial study should be taken in the environment where the software will be deployed in order to determine what are the constraints and limits of the system and what can or cannot be performed in the actual environment? The feasibility report tries also to sort out what are the possible issues which results from the system that can be faced in the development of the software. Some of the critical elements that should be analyzed when conducting the feasibility study are :
– Hardware: The hardware should be analyzed to determine whether it can support the software being developed and all its implications or should be upgraded?
– Software: The different OS, DBMS and other software applications should be analyzed to check if any compatibility issue can be faced or if any specification should be taken in consideration during the design, development and deployment phases.
– People: Considered as the end users of the software, persons who will be in continual interaction with the system known also as stakeholders are important to be in touch during the development and maintenance phase for the simple reason that they will dictate business rules for the software.
Depending on the software being developed, the elements that should be taken into consideration in the feasibility study might vary. In fact, other factors can be determining for the success of the project as:
– Network connectivity: Especially if the solution will be deployed for different locations and resources (databases, files, exchange server, active directory servers) will be accessed throw network.
The network connectivity can has a significant impact on the software performances and it will directly determine the user satisfaction about the software. I personally have seen many complaints and tickets about slow systems where users were very angry against the performances and where the reason was a poor link connection between two locations.
Finally, I think that the critical actors that should be directly affected by the system or affect themselves the system should be identified at the requirements analyze phase which should be considered seriously as it will determine the success/failure of whole project.
Ian Sommerville, “Software Engineering, 9th edition”, Pearson edition 2011. ISBN: 978-0-13-703515-1
R.Thayer & M.Dorfman, “Software requirements engineering”. IEEE Computer Society Press, 2000. ISBN: 9781118156674