|Author : DAOUDI Samir | Context : MSc Software Engineering – Software Engineering|
The use of computer systems and software in general became so transparent for us and take a significant importance in our lives; for business or personal purposes we constantly are using software solution; either desktop software, a web site or an embedded software we depend and rely closely to these systems.
There is an incredible pressure on software companies to achieve and sustain competitive advantage. To remain competitive in an era of increasing uncertainty and market globalization it is important to focus on the value of different customers and markets when developing products. (R.Thayer & M.Dorfman, 2000)
This is the reason why designing and developing software became an important field in computing and many rules, approaches and methods have been developed to regulate and have a sort of best practices for software development. The science related to software development is know as software engineering and it describe many important rules for this field.
The software life cycle is an important principle that should be clearly understood by software specialists (Architect, designer, developer, debugger …etc.). It describes clearly the different steps that should be followed in software project.
The 1st step is the analyze of requirements, which should be granted the high priority, it consists in trying to answer some questions:
– What are the expectations of customers?
– What is wrong or weak with the current system?
– How end-user expects to use the different functionalities of the system?
– What are the system limitations? …etc.
These questions should be answered or at least clarified before starting the design phase. A study stated that 1 hour spent in requirements analyze can avoid 10 hours of developing wrong way or incorrect functionalities. (I.Sommerville, 2011)
In order to answer these questions many meetings and questionnaires should be done with different stakeholders. The most important thing is to identify the key users who will interact directly and their job responsibilities will have a direct impact on or by the system.
In complex systems different modules are developed and might have for each one many inputs and outputs that can interact and trigger other events in other modules; So it is very important to know who will be working in which part of the system and how? (P.Avgeriou, J.Grundy, P.Lago & I.Mistrík,2011)
I remember when we started deploying web portal in SharePoint which was a new experience in our company, I was in charge of designing the portal for each department and one of the most important task was to identify the key user and work with that person in order to determine exactly what they need and how they want their data presented.
The key user should be:
– A person from the department’s team
– Who knows exactly what are the tasks made by the team members?
– Who have strong knowledge about the business rules
– Who knows how things are performed? And how they should be presented.
Even if these characteristics can be available in the majority of department’s members, sometimes we faced to situations where it was either impossible to determine who can be right key user for certain department, or the requirements are presented in a very unclear and large vision that can be impossible to interpret or translate to technical details.
In such situations, I remember that we made first designs just with the ‘impression’ or the ‘interpretation’ that was not so clear of the needs and when we presented the 1st template of the web portal, we noticed that it was far from what the users were expecting to see. We reviewed it and finally we found that we did the work twice and a lot of efforts were spent in a wrong interpretation.
Finally I think that well understanding of software requirements is the key for the success of a project and can be reached by defining the key actors (users) of the system.
R.Thayer & M.Dorfman, “Software requirements engineering”. IEEE Computer Society Press, 2000. ISBN: 9781118156674.
P.Avgeriou, J.Grundy, P.Lago & I.Mistrík , “Relating Software Requirements and Architectures”, Springer Edition 2011. ISBN: 978-3-642-21000-6.
Ian Sommerville, “Software Engineering, 9th edition”, Pearson edition 2011. ISBN: 978-0-13-703515-1