Software Development Process
UniSoft is following a structured software development process which has been applied successfully to several software development projects.
Given the variety of software development projects UniSoft has been engaged with, the process is highly customizable with customization guidelines so that the process can accommodate for different project types including outsourcing, product development, research and pilot projects.
According to these guidelines the Software Development Process (in application) can range between a Scrum or XP like flexible process and a rigged RUP like process according to the project type.
Yet, software development outsourcing mandates flexibility with the customer, accepting changes in requirements and puts emphasis on customer relation rather than fixed contracts and requirements, therefore, UniSoft is striving for keeping its software development process as much dynamic as possible without compromising the quality of documentation and system maintainability.
UniSoft is flexible to adapt to the customer's work environment and process. UniSoft's staff would be happy to use the same customer's tools and even get engaged with the customer's process as any of the customer's in-house development team members.
In general, the process advocates the following practices:
- Adherence to the basic tenets of project management discipline.
- Customer involvement and continuous customer feedback should be the theme throughout the process whenever possible.
- Iterative / incremental development with interim deliverables is promoted for reasons of validation and near business value.
- Model Driven Architecture (MDA) in the sense that a full design model should be available and validated prior to coding; as we believe true and long term agility come from good software design.
- Test Driven Development in the sense that test cases and code unit tests should start before the actual implementation begins and should continue to elaborate along the development activities.
- Collaboration for peer review; team collaboration for peer review activities is promoted whenever possible. The target form this collaboration is not only identifying defects for removal, but also considering better alternatives. This is beside knowledge sharing and risk mitigation benefits.
- Pair programming is promoted as much as possible for reasons like knowledge transfer and turn over risk mitigation.
- Automation that is UniSoft is continuously investing in tools that support, speed up and measure the development process.
This software development process is a major asset to UniSoft, therefore, its improvement is a continues effort as we are continuously looking for better measures and tools, and good part of that is listening to our customer's experiences, which has been always beneficial for both sides.
UniSoft has been also engaged with Software Engineering Competence Centre (SECC) (a government supported agency in Egypt) in an effort that aims to standardize and enhance UniSoft's software development process.
