Application development
Ordisoftware™ communicate to you proposals and recommendations that are obtained by experience and that are sustained by an assessment highlighting suitable or unsuitable elements and critical areas of studied systems.
Whatever the objectives to reach, the organizational and technological constraints, domains being considered, and activities being established.
Three directions of action are put into practice to ensure the control of the work:
- Partnership with the business decision-making team.
- Responsibility of the expertise of technical solutions.
- Training and help of the user’s groups.
Methodology
Agile methods are the result of the practice and the afterthought from the use of methods called "traditional" that they incorporate and expand based on the following notions :
- Iterative method : the project is realized by compartments or portions, through the concepts of objects, components and packages.
- Incremental method : the project is realized by progression or refining, through the implementation of abstraction, polymorphism and genericity.
- Scenario : these methods of production are based on unitary specifications of the fonctionalities that are derided into tasks or steps.
- Deliverable: a functional application is frequently and regularly builds to lead the advance of these methods, from the initial model until the last prototype that became the final software.
Agile methods rely on four basic values in order to master architectures:
- Interaction: communication has priority over methods and tools.
- Result: a program that works has priority over documentation.
- Adaptability: regular participation has priority over negotiations.
- Improvement: changing has priority over planning.
These values are detailed in twelve principles:
- Satisfaction of the result : priority is to deliver useful software to the user.
- Improvement: ability to change is a competitive advantage.
- Feedback: action is based on the regular delivery and the user response.
- Contribution: the different specialized contributors are regularly solicited.
- Motivation: environment and support are essential to success.
- Interaction: communication is the way of transmitting information.
- Usability: software that works is the indicator of progress.
- Efficiency: adopting a comfortable rhythm is the way to get the result.
- Aptitude: expertise and quality are continuously evaluated.
- Pragmatism: simplicity is even more essential that the project is complex.
- Organization: sharing of activities provides the best software.
- Adaptability: mutual and regularly introspection about the effectiveness adjusts the behavior of the team.
The project is usually approached from four considerations and five viewpoints:
- Business & Use cases: actors and scenarios.
- Information & Design: models and databases.
- Application & Implementation: static and dynamic aspects.
- Technology & Deployment and process: infrastructure and components.
Modeling
Whether thanked or represented, models precede, underlie, document and validate the production of software of quality.
The use of relational and object-oriented modeling brings simplicity, clarity and modularity in the conceptual representation of real things.
Ordisoftware™ usually uses the Entity–relationship model and the UML standard to specify and visualize structures, functions and interactions of systems.
To obtain the desired result, the modeling and the implementation are continuously set in correspondence.
The constant review of models and code, associated with the refactoring, are essential methods to success.
Management
As the mutation of the classical programming to object-oriented programming has taken time to mature, since the creation of punch cards, many Agile methods are developed based on the sensitivity of their creators and depending on industrial requirements.
- Rapid Application Development (1991)*: Based on an analysis-design-construction iterative cycle to build a deliverable every 3-4 months by independent teams.
- Unified Process (1996)*: Based on use cases, focused on UML architectural views, driven by iterative and incremental methods.
- Extreme Programming (1999)*: Based on the construction of the application, with very short delivery cycles, the privileged integration of the customer into the team, and the use of specific coding techniques (simplicity, refactoring, conventions, common vocabulary, unit testing, pair programming, shared code, continuous integration, respect of reality and constraints).
- Object-oriented applications analysis and design method (2003)*: UP simplification associated with RAD focused on GUI and UML to define the structures and functions of the system and to achieve an incremental application prototyping.
- Kanban (2010)*: Inspired by Lean for the process management, focused on the organization, the communication and the knowledge.
- Dynamic Systems Development Method (1995): Structured development cycle by extension of RAD, with a higher frequency of delivery controlled by tests.
- Feature Driven Development (1999): Similar to RAD, with priority to features that deliver value, and the use of five activities (develop overall model, build feature list, plan by feature, design by feature, build by feature).
- Scrum (2001): Based on the goal and the complexity of the project goal according to the philosophy of rugby.
- Lean Software Development (2003): Based on eliminating waste, learning, on quality, fast return of delivery, later decision making, power given to the team, and overall vision.
- Crystal Clear (2004): Based on communication and collaboration, for small projects.
* Methods used preferentially by Ordisoftware™