In today's world, with the increase of competition between companies, product costs are constantly decreasing. On the other hand, turning the idea and requirements into a product as soon as possible enables the company that owns the product to get ahead of its competitors.
As ARDE, we take it as a principle to ensure that the product is released before the schedule by being selective, from project processes, project documentation, design architecture, development tools to be used and even the determination of the processor. At this point, we provide our customers with an advantage in competitive market conditions by using agile design methods.
In the agile project design and development model (agile methods), project stages are intertwined. Conceptual design, preliminary design and critical design phases begin from the moment the initial requirements are determined. While there may be feedbacks at every stage, the party responsible for realizing the project alleviates the workload of the project owner, who is the customer, with the necessary guidance and improvements. Flashbacks are not destructive.

Agile Modeling and Agile Software Development
Agile methods are the general name given to practice-based methods for effectively and efficiently modeling and documenting software systems. This modeling format, which is produced for software development, can be applied to software in a more flexible and useful way than traditional modeling methods, thanks to the values, principles and practices it covers.
The main feature of agile modeling is that it tells what modeling techniques such as data models and interface models are and how these techniques should be applied, rather than detailing them. For example; Even if it states that the projects should be tested, it does not mention how to prepare a test. It is just a form of methods and guides developers in delivering a project effectively and quickly, meeting the client's needs, and at the same time easily adapting to any change.
Situations where these methods are most appropriate are:
Unpredictability of demand changes from the customer during the software phase of the project
Parts of the project need to be designed and then developed immediately, and it is very difficult to predict what will be done beforehand, the detailed roadmap and design
Unpredictability of how long the analysis, design and testing processes will take
The software team should have features such as working together, not giving importance to hierarchy, and establishing strong communication.
Of course, in some cases, agile programming may need to be abandoned. For example; It may not be possible to develop projects with agile methods in projects involving many people, or classical methods may be more appropriate in company environments where teammates and hierarchical structure are always dominant. Contrary to what is thought, people who recommend programming and modeling using these methods are not against using classical methods in such cases.
Features of agile programming methods:
Agile methods are not a complete software process, but complement comprehensive software development methods.
Major agile process models:
Limit programming (Extreme Programming-XP)
Agile Unified Process
scrum
Test-Driven Development
Agile Data Method
Feature-Driven Programming
Agile software development encompasses the project management process that supports leadership skills that support teamwork, ability to take responsibility and self-organization, and engineering practices for quality and fast enough software development. This management process provides a positive development environment and approach by aligning both customer demands and company objectives.
Agile modeling considers it appropriate to do short-term plans and small developments. Short-term plans are known as iterations. In each iteration process, it works with a certain set of software or models, and this process includes processes such as planning, demand analysis, design, coding, unit testing, and acceptance testing. The iteration process makes it easier to adapt to changes while reducing overall risk. A single iteration may not add enough functionality to launch a product, but the goal is to have an existing version that works with the least amount of issues at the end of each iteration. Multiple iterations are required to release a product as a version and add new features.
Documentation is also done in agile programming and modeling. However, the documentation does not preclude the usability and efficiency of the product. On the contrary, documentation is made only where deemed necessary. According to scott ambler, who works at IBM and is also the author of the book "Effective Practices for Modeling and Documentation"; Models that developers write and draw on the board are more useful than lengthy documents, and people need to be prevented from documenting for months.
The team structure in the agile project is mostly based on job exchange and self-organizing. Hierarchical situations within the company are ignored within the team and work is carried out in this way.
People from many projects start working ahead of time for further work. For example; developing and modeling complex infrastructures for future work. This situation causes a great loss of time, and in case of a change in demands, this returns to the working people as extra labor and workforce. Agile models are against doing anything without need and wasting time.
At the project stage, the testing process occupies an important place. Leaving all the tests to the last moment can cause misunderstandings to take the project to very different places. It is a vital process in this respect that different people test the part and give feedback while it is still under construction. In this way, the mistake is detected and eliminated while it has just been made. Agile programming and modeling overcomes this problem by requiring developers to be side by side at all times in this communication and at the same time communicating with the customer. Acceptance tests are the tests to be carried out by the customer at the last stage. Errors returned here can be transferred to remodeling. Even the latest changes to agile modeling are welcome.
Agile Method Principles:
The aforementioned community has listed in the manifesto how they have developed better software and items that will guide those who want to do it. The generally accepted method can be listed in 4 items:
Preferring interaction between individuals and them over process and tool
Prefer working software over detailed documentation
Prefer cooperation with the customer over agreement negotiations
Preferring the ability to respond to changes at any time over a specific plan
The main principles behind the Agile manifesto are:
It is one of the aims to provide customer satisfaction by producing fast, continuous and useful software.
Working software is the most important measure of development.
Late changes in demands are also welcomed.
Face-to-face meeting is the best way of communication.
There should be daily and close cooperation between developers and business people
Simplicity is important.
A self-organizing team structure is required.
Difference of Agile Methods from Other Methods:
Although agile methods are sometimes criticized for not being planned and disciplined, this is not true. To explain; Two types of methods can be used to reveal a project. One is adaptive and the other is predictable. It is designed to react to change. For example, if the project's requirements change, the project's team also adapts and changes. This team can tell us what work will be done after 1 week, but cannot specify what they will do after 1 month. In other words, the farther the planned date is in the project, the more uncertain the work to be done on that date. Teams of predictable methods know in advance the dates of all changes and developments within the project completion period, and work within this plan. When there is a change, the whole plan is canceled and a new program is made. In the new program, only the most important changes are selected and included in the project. Agile methods are included in adaptive ones. So it is open to change and adaptable. The project, which is not planned so clearly because it is adaptable, takes shape according to the wishes of the customer and shows the desired success.
Another feature of agile methods is; In other iterative development methods, the time period is taken as months, while in agile methods this period is reduced to weeks. In this short time, the software is revealed in the form of small advances and feedback from the customer at every step.
Another model used today is the Waterfall model. The Waterfall model is a model that remains valid even in 2008 and differs from agile modeling. This model plans the software project from start to finish. Progress is measured in terms of deliverables: claim statements, design documents, test plans, code reviews, etc. This situation is not suitable to be divided into certain intervals and cannot be adapted to future changes. However, agile methods make everything in small pieces and present it on a weekly basis and easily apply the necessary changes on that piece if necessary.
Cowboy coding differs from agile modeling in that it lacks methods. Those in the project team work in whatever way suits them. In agile programming, face-to-face meeting and being in communication at all times are at the forefront. In addition, studies are carried out within a short predetermined period.
As a result; Today, the world of software and technology is developing at a rapid pace and as new systems and new demands arise, new models are also needed. The clearest indicator of this is that IT projects are completed in an average of 1 year. It is now expected that the projects will be completed more effectively and quickly. Agile programming models that emerged for this purpose guide developers in modeling and programming and create an alternative model.
Comments