Unlike regular outsourcing companies that focus on quick and low cost projects, Enova Technologies mainly prioritizes the quality of its projects. In this perspective, to ensure an impeccable quality in all our projects, we have put in place a set of procedures covering the entire development process. The purpose of these procedures is to structure and clarify the numerous ambiguous areas that could be found in a project. As a result, all the factors are controlled, leaving no room for randomness. Moreover, it serves as a guarantee of quality for our clients as they supervise every stage of the development process.
The first step in a project is to gather important information that will enable us to progress following precise guidelines once the development has started. It is imperative to clarify the following essential points:
Who are the people involved in the project from the client’s side? Who are the people whose authorization is required for the project to progress? Who are the people concerned with the project, needed to be importantly involved in it?
To define together with the client what should and shouldn’t be incorporated in the project.
To define as clearly as possible the objectives to be attained and if possible the quantifiable indicators associated to these objectives. The latter could be associated to a degree of tolerance. At the end of the project, it will be possible to deduce the success of the project by comparing the obtained results with respect to the prior defined objectives.
If this applies, to study the risks involved with the project and the tolerance level of these risks.
To verify if the project is feasible by taking into account the objectives to be attained as well as the constraints involved.
With whom do we communicate? What do we communicate? What is the frequency of communication?
Once the preliminary tasks are concluded, the first essential step in a project is to define the specifications. If the need arises, once your order is placed with E-nova Technologies, we will begin by defining the technical and functional specifications of the project. Technical and functional specifications imply the descriptions of the following elements:
It involves understanding how the user will interact with the system and listing the different use cases in order to synthesize the different scenarios of what the system should do.
This involves the division of the functional logic in as many roles as the website will use. We will prepare a list of the different roles and available interfaces as well as a summary explaining the functions of each role.
The project’s workflow involves describing the manner in which the different pages, functionalities and columns of your project will be linked to each other. The workflow is more than just a site map as it represents the site’s operative logic, the sequence of screens and their functionalities.
This consists of the practical part of the application. Presented in the form of UML schemas / diagrams, this functional analysis regroups interactions between the users and the website, which are unlisted in the workflow.
The choice of technologies are listed in this section. The project’s major technologies as well as eventual plug-ins and add-ons that are necessary for the development of its functionalities are described.
Here, we elaborate on the technical architecture which will be put in place during the development. For example, in case of an application based on a MVC pattern, it could be useful to define the interactions between the different classes that a project is composed of. Furthermore, it could also be beneficial to outline the role of each server hosting a different part of the application etc.
Each application is different and is required to solve different problems. We divide /split these problems through technical cases that will be explored and solved beforehand on paper prior to the commencement of coding.
We create the conceptual model of data corresponding to the schema of your database exactly as it will be implemented during the development. It will respect the standards and different normalizations in force or the ones that are dependent on the used framework.
Once all these specifications are drafted, they will help us to outline the project with solid bases. However, kindly note that the specifications can often be subjected to modifications during the development phase depending upon new needs and constraints that can arise during the development.
Once the specifications are fixed and validated by the client, they must remain relatively stable and must be used as a guide for the entire project. However, the client will have the possibility of suggesting modifications during the project. Each request for modification will have to be studied in order to measure the impact in technical terms, on time and eventual additional costs. It will then be the prerogative of the client to choose which modifications are justified.
After the drafting of specifications, we will already have a clear vision of tasks necessary to complete the project. We then create a Work Breakdown Structure (WBS) presenting the breakup of the project in phases and tasks, along with a planning showing dependency between tasks and tasks that can be realized in parallel.
We then obtain a schedule of tasks and associated resources.
Once the project is planned, we initially integrate the development of quality objectives to be attained as well as the associated quality procedures. It is to be nevertheless noted that the level of quality expected has a direct impact on the cost of the project. In accordance with the client, it is important to find the right balance between Time, Cost and Quality.
Once the specifications are fixed, it is possible to work on the application’s graphic design. The graphic design defines the appearance of the screens which will constitute the software. It is its visual identity.
Defining these screens not only enables us to define the style of the web site, its colour code, its ergonomics, it is also a way to organize the workflow. During this phase, the layout and appearance of elements related to the navigation such as the menu, navigation buttons, feedback messages to the user, contextual help etc. are also decided. More than just the appearance of the website, one must understand that a considerable portion of its ergonomics is determined during this stage.
The design process generally takes place in several iterations. After the submission of the first artwork, we develop the design in iterations (usually 3) depending upon the comments and preferences of the client until the desired result is obtained.
The second step in the realization of the design is to break down the obtained picture files in order to convert them into standard xhtml 1.1 and css2 files and then to test their compatibility with the different navigators of the market.
With several years of experience in web technologies, our team has benefited from its evolution with respect to tools and efficient procedures and is in a position to offer you not only quality designs found in the latest web trends but also ergonomic and accessible layouts.
The specifications and design could be perfected once the development phase begins. For each phase, the specifications will be reviewed with the client in an iterative and incremental manner. As soon as the specifications are validated by the client, they will be considered as definitive. If any modification of these specifications has an impact on the time frame and costs, the client can then decide if the last minute modification is the best option.
The development takes place by milestones. A milestone represents a step defined in advance, during the development of the software, most often it is a module or a set of specific functionalities. On its completion, each milestone is validated by the client and only then we proceed to the next milestone.
The breakup of tasks is done internally by the intermediary of a TRAC server. Each functionality or module is first split into tasks by a project manager, inserted into the TRAC and then assigned to a developer. The developer then takes care of updating the TRAC as and when the task progresses and the project manager verifies its correct functioning.
We offer our clients the possibility of a live follow up of their developments :
the entire project is synchronized by the intermediary of a SVN collaborative work server.
At each modification of the project in the SVN server, an image of the project gets automatically updated on our test server.
Thus, at any given point of time, it is possible for our clients to know the progress status of their project either by accessing the code or through the live version.
We systematically send a regular reporting with regard to the progress of the project to our clients. This reporting includes the progress status with respect to the initial schedule, eventual delays, problems faced and eventual consequent revaluations. In this manner, at any moment, our clients have a clear vision concerning the progress of the project.
Our motto is the respect of standards and normalisation.
We pay careful attention to the code that we produce by respecting the standards of programming and different norms in effect. The coding conventions are defined in the beginning of the project and are respected during the entire process of development thus assuring a global coherence of the project.
We suggest several options to guarantee optimal quality assurance from the beginning to the end of the project. Depending upon the projects, we can put in place the following quality control methods :
-Unit tests : Unit tests are sets of tests that enable us to test one by one the different portions of an application. These tests are programmed in such a manner that when a function changes its initial behaviour or doesn’t reflect the expected result, it is automatically detected. Unit tests are frequently used to find out eventual side effects etc… The tools used to carry out these tests vary depending upon frameworks and languages used. Copix and CakePHP, for example integrate their own framework thus enabling the programming of these unit tests.
-Integration tests : The integration tests verify the good co-operation of different portions of independently developed applications.
-Non regression tests : Non regression tests are carried out to verify that the new functionalities added to the software do not alter the existing functionalities. They thus simulate the behaviour of a user.
Setting up some or all of these tests, results in the validation test which enable us to verify with the client if the software is in accordance with the prior defined specifications.
Control of the changes is carried out via the SVN version of the code. With every progress that is made in the development, we save the history of changes, mark the version in order to be able to come back to it in case of any problem.
To ensure complete transparency of the code on which we work, we maintain records of our projects in the best possible manner. The documentation is executed in several ways :
-Documentation of classes, functions, files in doxygen format in order to automatically generate the documentation of the API related to the project.
-Drafting the documentation in the same time that the progression for the most technical parts of the project. In this technical documentation which is intended for future developers, we document the most technical parts of the project and explain why a particular technical choice has been made or how a particular module having a specific logic functions.
-If required, we can also take charge of writing the user guides.
Once the development and different tests are completed and validated, the delivery is executed and its acknowledgment is drafted.