The Zero Defect Software Concept
From a certain point of view, a software which is not serving the needs of the user can be considered as defected. This can be caused by one or both reasons listed below:
- There are coding errors (bugs) within the code of the software.
- The real-life system/problem related to the software was poorly or never analyzed, therefore the resulting computer system fails to serve the real-life system.
One should overcome the above issues to get closer to the zero-defect software phenomenon.
The first type of errors are the runtime errors, namely the bugs in the software. At every line of code developed, there is a certain probability of having something wrong. Therefore as the number of lines of code developed for a project/software increases, the probability of having an error also increases. Reducing the number of lines of code developed specifically for a software project reduces the number of errors. Code generators enable the reduction in number of lines of code. Once the initial bugs in the generator are fixed, in unit time the generated code becomes bug-free.
Modo is designed to be well-structured and machine readable, and therefore it is possible to use generators to convert Modo models to different languages. With the help of this feature Modo addresses the runtime errors.
The second type of errors is the design-time errors which are basically the errors that occur when analyzing the systems. The quality of the system analysis is directly related with the experience of the analyzer. However, even for the inexperienced analyzer, the design-time errors can be fixed with trial and error. The trial and error method can only be efficient if the time needed for each trial is affordable. The simple syntax of Modo combined with the rapid code generation, decreases the time needed to try different scenarios. Therefore enabling the trial and error process and addressing also the design-time errors.
Agile Software Development
Agile Software Development is a set of values and principles that seek ways to develop better software by using approaches that go beyond traditional patterns. Agile Software Development does not rely on certain rules, nor does it propose a specific method, tool, and / or framework. Instead it reveals a software development philosophy. While developing software, the development team takes decisions on many issues and these decisions affect the overall processes of the project. In the whole development process, taking into account the values and principles of Agile Software Development is the basis of this software development philosophy.
According to Agile Software Development Manifesto:
Agile Software Development focues on
- Individuals and interactions rather than processes and tools,
- Working software rather than comprehensive documentation,
- Customer collaboration rather than contract negotiation,
- Responding to change rather than following a plan.
Although the Agile Software Development approach is proposed as an alternative to the traditional Waterfall approach, both approaches have their own advantages and disadvantages. In other words, it is difficult to say that the Agile Software Development approach is superior to the Waterfall approach or vice versa. On the other hand, the Agile Software Development approach, its result-oriented nature, and its search for better ways of software development by going beyond certain patterns have increased its importance among software development approaches in recent years.
Lean Software Development
To understand the Lean Software Development approach, we need to understand the concept of "Lean" used for systems. The word "Lean" refers to a fast and flexible production flow. The "Lean" concept used for the systems can be summarized as the systems that provide the highest value to the stakeholders of the relevant system with the highest efficiency. Lean Software Development approach is based on Toyota's Lean Product Development approach.
Lean Software Development approach can be defined as rapid and cost-effective software development with a competent team besides efficient and sustainable processes. The development team gathered for Lean Software Development should focus on continuous improvement in development processes.
- Holistic optimization approach,
- Eliminating time-consuming and unnecessary processes,
- Building quality with effective, efficient and sustainable methods,
- Stay true to planning,
- Recognizing the stakeholders of the system and caring for their needs,
- Ensuring the transformation of tacit knowledge into accumulation by experiencing
- Delivering fast results can be counted as Lean Software Development principles.
In order to implement the Lean Software Development approach accurately, the development team must convert all requirements into unit specifications before starting any production process. The development team should understand the importance of building an environment of interaction shaped by continuous communication with the users/stakeholders/customers of the system, not assumptions. Only the features that are necessary and feasible should be taken into consideration. If a requested feature is not possible, no time should be wasted to improve it. With continuous observation and measurement, time-consuming processes need to be avoided. The team should ensure the transformation of intermediate outputs into final outputs. The development team covers everyone who contributes to the development of the system in any way. Managers, analysts, quality engineers, developers, system administrators, people who deal with installation, support, and maintenance are considered noble members of the development team. Any suggestions for improvement should be carefully analyzed. Also, a strategy should be designed to evaluate the recommendations and to ensure the implementation of the appropriate ones.
For more than 20 years, companies have been investing in huge software applications to increase their productivity. Although these software applications have singular functionality, their ability to adapt to changing situations is limited. The internet has lifted the borders, and the local competitive environment of the companies has gained a global dimension. In other words, in today's world, a company that produces automobile spare parts has to compete not only with companies in its province or country but with companies all over the world. The changing competitive environment has profoundly affected the firm scales and business patterns as well. The necessity of adapting to innovations and the necessity of implementing new business patterns have required new features from these huge software applications. Also, the global competitive environment has led to the formation of new firm cultures. However, these huge software applications, which operate with standard approaches, have had difficulty in adapting these new firm cultures. For this reason, many companies have started to use spreadsheets.
The difficulty in the adaptation of these huge software applications to new business patterns and the sharing, updating, managing, and synchronizing problems of the spreadsheets have resulted in the invention of low-code platforms.
Low-code platforms are software platforms where the users can add new features by themselves by writing little or no code. In this way, software applications can easily be adapted to new business patterns; also, the new features can easily be added by people who have limited knowledge in software development, just like spreadsheets. With the development of cloud-based technologies, it has become possible to access via mobile devices regardless of location and time. Thanks to these features, it has been accepted and widely used by many companies.