Vallana Hill, Contributor
The Science of Software Development Engineering is a systematic and disciplined approach to developing software. It applies both computer science and engineering principles and practices to the creation, operation, and maintenance of software systems.
One major problem with software development today is that we do not know how to do it properly. Software projects tend to have a high rate of failure, where the product does not meet the client's needs or when completed most times is late and over budget. The question is how can we do it better?
The Current Market
In Jamaica there are a few recognised software houses for complete software development. In the past we have aimed to change this, one example being Jamaica's Intec Project, a public-private initiative funded and designed to help the country make up lost ground in the technology stakes. Among the goals was the creation of 40,000 jobs by 2003 by developing the use of information and communications technologies (ICT) in business. To achieve this there was the creation of new training centres and the alliance with HEART Trust/NTA to boost output of more software programmers; however, it is important that it matches the quality and volume of global players such as India, China and Bangladesh.
According to consulting firm AT Kearney, US financial services firms plan to relocate more than 500,000 jobs overseas over the next five years - more than eight per cent of their workforce. Deloitte and Touche has estimated this market will be worth US$365b. Can we get a piece of the pie?
What It Takes
There are several models that define how software should be developed; called the software development life cycle - the most basic being the Waterfall Model where each stage of development is clearly defined and is completed incrementally.
Requirements define needed information, function, behaviour, performance and interfaces, while design is how the software is designed which includes: data structures, software architecture, interface representations and algorithmic details. The implementation is the actual programming and documentation of the software packages- source code, database, user documentation, testing. But are we really developing software properly?
The Proposed Triplet
Dr. Mugisa of the Computer Science Department at UWI believes that it takes what he calls a triplet of training, research and development. He has noticed that in cases where one is lacking there tends to be failure. In order for there to be success all three have to be present, they all interact equally and are all necessary for proper development of the software development process.
Training is needed for training people in software development. Many persons call themselves developers and are never trained as software developers, they are trained in programming but there is no knowledge of the tools, process techniques and methodologies for actual software development. Research is needed to discover new knowledge, broadening the frontiers in the field. Development is the actual tools and techniques used in the development of the software, the first two areas essentially feeding the latter. If we are able to bring all three under one umbrella then there can be success.
Current Work and Research
Dr Mugisa has been able to put his theory to the test where he brings all three together at the university with his students. By combining training, research and practical development he has been researching the techniques of more efficient software development which has led to the MORRESA project. MORRESA stands for Mona Repository of reusable Software Assets. The project seeks to build a repository of reusable software assets to support the paradigm of component-based software engineering.
Where most repositories store pieces of code at the implementation level of the SDLC for developers to use, this one will look at a lower level of abstraction for reuse, more the design and specification documents. It has been determined the lower the level of the software development layer, the more reusable it is. The design has already been completed and the implementation is currently being worked on. Will this help?
Software development - a little boost may go a long way
Efficient development
While this may be a small project and may not affect the entire industry, it serves as a model for faster more efficient development of software. Component-based software development has had its challenges, with finding homogeneous code and implemented components. However, where the fundamental basics of the design and documentations are already done, implementation is an easier step.
Jamaica has been viewed as an ideal location for near-shore development for companies looking to outsource. If we are able to standardise the industry and bring some structure and cohesiveness in our approach to technical projects and software development, then maybe in the near future it will be possible for Jamaica to be a player in the global software industry.