|Author : DAOUDI Samir | Context : MSc Software Engineering – Software Engineering|
During the last decent we’ve seen a wide use of computers for different purposes. At earlier ages, access to computers resources was seen as a privilege and computers were very expensive and available only for universities, military and laboratories researches.
The microprocessor innovation allowed the design of cheap, small and smart computers able to perform more calculation than the big old computers that occupied whole rooms.
When we discuss the evolution of computers, we shall consider both aspects:
1. The evolution of the hardware, which added a great, power and lets computer professionals imagine new solutions.
2. Software evolution, which opens doors for new applications and uses of computer in different areas.
Focusing in the software-side of the evolution, we have noticed an important jump in both the quality and quantity of software solutions produced.
“Software engineering technology achieved a fast development in recent decade, every all of life put large amount funds into the information construction nowadays, the control system of industry’s automation, the ERP system in enterprises, the digitizing school yard system and the software like these engineering projects spring up and have leap-forward development” (D. Feng, Z. Qiu-xia & L. Hua, 2010).
As our dependence on software-solutions increases (business, personal, entertainment, security …etc.) the need of a well structured and though code of ethic that all software professionals should follow became a necessity.
The code of ethic for software engineering contains a sort of golden rules that must be followed by professionals; this can be seen as a moral contract as there are no (or few) ways to control the appliance and respect of theses rules.
The software engineers have to make the analysis, specification, design, development, testing and maintenance of software a respected profession by following certain principles (Public, Client and employer, Product, Judgment, Management, Profession, Colleagues and Self)
(G. Don, M. Keith & R. Simon, 99)
The science that governs the software development life-cycle and known as software engineering include different approaches and technics that can summarized in:
Figure 1: Software life cycle (R.Selby ,2007)
1. Collecting the system requirements
2. Collecting the software requirements
3. Making the 1st designs and reviewing them
4. Coding and debugging the solution
5. Testing and final reviews
6. Deploying to production environment
Considering these different steps, we can easily notice the importance of the 1st steps that consist in analyzing the limits, needs and requirements of the system (host) and the software
The figure shows different arrows from each step to the next/previous one. Logically we can review and return back to the previous step if in the next one we see that we have misestimated or ignored any part of the solution, but in reality things are not so simple.
Depending on the situation and the complexity of the software, returning back to a previous step in the software life-cycle and review it can be very difficult including additional fees and extra time if not impossible.
Software developers should take this fact in consideration and even if the changes do not occur during the software development phases, they will certainly appear after its deployment and use and this is the inevitable when considering maintaining software-solutions.
For this reason the design phase should be considered seriously and thinking not just in providing software that does what it is expected to do but also that can be easily maintained is important. Using certain best practices and approaches as the modularity, the code-reuse, the approach of different layers (ex: ASP.net MVC) should be followed.
In addition, even if the solution is stable and the engineers followed the majority of best practices to provide a good product, complex systems are also updated with additional needs and extra-features.
I personally think that the three first steps are very important (system requirements, software requirements and design) and should be granted the high priority and importance when scheduling the different project tasks and weight.
Richard W. Selby, ”Software Engineering”, Wiley-IEEE Press, 2007. ISBN: 9780470187562.
G. Don, M. Keith, R. Simon. “Software engineering code of ethics is approved”, Communications of the ACM; Vol. 42 Issue 10, p102-107, Oct99.
Dong Feng, Zhang Qiu-xia & Li Hua,“Evaluation and development of software Engineering Supervision”, Jiaozuo, P. R. China, 14-15,August 2010, pp. 349-352. ISBN 978-952-5726-10-7