Deep technical expertise and knowledge of software engineering
Continuous research and development is one of the basic habits in Tiba. Based on this, the team monitors the latest software engineering practices and technologies and seeks to increase the team’s ability to produce sophisticated software by incorporating these technologies. Tiba has also begun extensive communications with universities, including Sharif University of Technology, to transfer advanced technologies and superior software engineering models.
State of the art software production line
One of the key pillars of software industrialization is the utilization of software development frameworks. Software development framework is an integrated environment for the production of various enterprise software. Such frameworks provide the capabilities to enhance the efficiency of the development process by utilizing superior practices and tools. Using software development frameworks, programmers focus on using pre-developed functions to generate complex business functions, rather than focusing on developing all the low-level functions. The development process is also controlled using automation tools at all stages of development, testing, integration and deployment.
Tiba’s enterprise software development is based on Microservice architecture, DDD, CQRS and Event Sourcing technologies. Current software development frameworks do not support the above mentioned technologies, so the software development framework in Tiba is a unique framework. This framework enables the development of large-scale enterprise systems by providing iterative and widely used components as well as automated tools and mechanisms. This product enables the development of software based on the TDD and BDD approach and enables the application of a variety of BUS technologies to integrate microservices. It also fully supports the DevOps approach and fully executes the CI and CD cycle. Enterprise systems in Tiba are developed so that it is possible to use any type of RDBMS and NoSQL databases and analytical data warehouses (OLAPS). In other words, the application of the Event Sourcing approach has minimized the dependence of software on technology and database type.
The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms. Teams can develop, maintain, and deploy each microservice independently. Applications composed of microservices scale better, as you can scale them separately, whenever it’s necessary.
Microservices also reduce the time to market and speed up CI/CD pipeline. This means more agility, too. Besides, isolated services have a better failure tolerance. It’s easier to maintain and debug a lightweight microservice than a complex application, after all.
Domain Drive Design assists in focusing on the client problems and guides in the direction of solving it by using conquer and divide techniques. Domain Drive Design is more than object orientation. It deals with the challenges of understanding an issue or problem space and communicating that understanding. Domain Drive Design also encourages the inclusion of areas like Test-Driven Development (TTD) by using patterns and continuous refactoring.
High quality software services
Software is constantly changing to meet business needs. Changes are also always associated with errors. Approaches as Behavior-driven development (BDD) have been developed to identification of errors and to prevent them from occurring when changes occur. BDD is a software development method that focuses on creating tests using concrete, real-life examples. These examples use natural language constructs to express the behavior and the expected outcomes.
Tiba team developed automatic test infrastructure according to BDD and TDD to assure software quality. Test design is done with BDD and TDD approaches. In the BDD approach, the test scenarios are written by the Gherkin- syntax and run automatically. In the TDD approach, all developers write a test for each component first, and then implement the original code. The condition for accepting the generated code is to pass the tests. If it is needed to make any changes to the software, the tests are first updated and the original code changed and then all the related tests are executed to ensure that it works properly.
Fully Automated deployment and delivery infrastructure
Continuous integration (CI) attempts to increase the quality of the code by testing, reviewing, and running test cases automatically. This is carried out at regular intervals each day, all with the purpose of detecting integration bugs. This facilitates a more collaborative approach when enhancing code quality and provides failure and success reports of the code in real time as well.
Continuous Delivery (CD) entails automating the steps for software deployments so that a code can be released securely and at any time.
Professional Project Management Practices
The software production management process at Tiba is based on the agile approach and the SCRUM methodology. Based on the identified requirements, the Product Backlog is specified and assigned to the weekly Sprints. At the beginning of the week a new Sprint is defined and the Sprint Backlog is specified. This process is fully supported by the Youtrack tool. All the steps of registering and assigning activities, recording the work reports for each activity and controlling the work reports and preparing performance reports are performed using this tool. Reports are received daily and weekly from the tool and are the basis for estimating future activities, controlling team performance and controlling the production process.