In order to build secure, reliable, stable software that meets our Customers’ needs, we apply a multi-step process when developing software, which not only consists of writing code, but is made up of a series of steps before and after development.
This is one of the most important steps in software development; if we don’t provide a final product that does what our client requires, then we have failed in our task. The mistake many companies make is assuming that they understand what is needed and desired without going through a full “requirements gathering”.
By determining exactly what is needed and how it needs to work with as much detail as possible, we can ensure that the final result will be exactly what the Customer wants.
We at Elapsus don't believe that there is a universal technology which solves all problems. Each problem can be solved using different technologies, tools and methods.
We carefully select and choose the technologies which best fit with, solve, and implement the project. This approach truly sets us apart from the pack.
We create an Architectural Definition to define the structure of the project in order to break the entire development down into separate, smaller modules which can be analyzed and developed separately.
The Analysis is a description of each module from an external point-of-view. It is used to identify the interaction of each module with the other modules and with the external world; hence, it's used to define interfaces, protocols, data schemes, and more generally how each module is accessed from the outside.
The user interface is a classic example of the Analysis portion of our process; another example is the way a client application communicates with a server application, the database scheme, and so on.
The Design is a description of each module from an internal point-of-view. It defines the module's main architecture, and mainly consists of development-related information, gathered before writing a single line of code. We do this in order to have a clear idea of what will be coded and how.
The Design is mainly a reference for the developers who will write the code which implements the module. Typically, the Design is used to choose/create algorithms, write the micro-analysis (a more in-depth description of what and how the module should work), define data scheme used within the module itself, and so on.
The Development step is the actual activity of code writing – in other words, when the project is built.
The Testing step is one of the most important, since having a stable and error-free product is one of our primary goals. Although in Software Development it's almost impossible to have a 100% error free product, we do everything possible to reduce errors before handing over a final product. This is achieved by executing detailed test activities on the final product trying to simulate all combinations of possible inputs and expected outputs/results, as well as trying with incorrect or not allowed inputs in order to detect any erroneous behavior of the application. For example, a calculator must be able to produce the correct results, but it must also handle the case of division by 0, and other logic errors.
Testing is also important to observe the product behavior from a live usage perspective of view.
For example, in a real-time application, it's important that the data be processed as soon as possible.
By defining appropriate test cases and executing them, we can observe how the application reacts in a
simulated live environment and take the appropriate actions in order to fine-tune the application.
Another example: if a web site has been tested for 10 concurrent users with excellent results, but the
web site is expected to be used by a million users, it could possibly fail if not properly tested for such a load.
We also ask the Customer to provide us a list of tests he wants to be executed which validate the key features of the project. These tests are executed after our set of tests, and documented appropriately.
Once the development and testing phases are completed, we deliver the product to the customer, who can verify that it meets the agreed requirements and it works properly.
After the customer completes the verification process, we get an acceptance sign-off.