Devops for Growth
107.5K views | +0 today
Follow
Devops for Growth
For Product Owners/Product Managers and Scrum Teams: Growth Hacking, Devops, Agile, Lean for IT, Lean Startup, customer centric, software quality...
Curated by Mickael Ruau
Your new post is loading...
Your new post is loading...

Popular Tags

Current selected tag: 'asd'. Clear
Scooped by Mickael Ruau
Scoop.it!

Adaptive software development — Wikipédia

Adaptive software development - Wikipédia

L'Adaptive software development (ASD ) est une méthode de développement rapide d'applications proposée par Jim Highsmith . L'Adaptive Software permet de personnaliser des outils informatiques en fonction de demandes spécifiques en s'appuyant sur l'industrialisation du développement informatique et la production automatisée de code informatique. Il s'agit d'une façon de concevoir des logiciels ou des applications informatiques.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

ADAPTIVE SOFTWARE

The problem with software is that it takes too much time and money to develop, and is brittle when used in situations for which it was not explicitly designed. Various software design methodologies address this problem:

  • 1970s: Structured Programming makes it feasible to build larger-scale software systems - provided you have a specification of the desired results at the start of the project and the specification rarely changed. A typical application is a database report writing program which reads an input file and produces an output file. We call this an input/output based application.
  • 1980s: Object-Oriented Programming makes it easier to reorganize when the specification changes, because functionality is split up into separate classes that are designed to have minimal interaction between them However, each change to the specification (or to the environment) still requires programmer intervention, with a costly redesign/reimplement/rebuild/retest cycle A typical application is a desktop publishing system, where user-initiated events (mouse clicks, menu selections, etc.) trigger computation. We call this a user-initiated event based application.
  • Today: Adaptive Programming is aimed at the problem of producing applications that can readily adapt in the face of changing user needs, desires, and environment. Adaptive software explicitly represent the actions that can be taken and the goals that the user is trying to achieve. This makes it possible for the user to change goals without a need to rewrite the program. A typical application is an information filter which searches the Internet or company intranet for information of personal interest to the reader. Note that much of the searching may go on when the user is not even logged in. The application does more on behalf of the user without constant interaction, and the sophistication comes from a splitting of responsibilities between the program and the user. We call this an agent based application.

Of course, there have been other proposed methodologies for improving software. Some address the problem of managing change, but only adaptive programming is about anticipating change and automatically dealing with it within a running program, without need of a programmer. As a definition, we can say:

"Adaptive software uses available information about
changes in its environment to improve its behavior."

Mickael Ruau's insight:

Five Myths of Traditional Software Development

Traditional software development is based on some principles which are no longer appropriate under this new world of complex environments. It is worth looking at five of these myths.

    • The myth of the specification: Traditional software development assumes that the first task is to determine the specification, and all design and development follows after the specification is finalized. More modern approaches stress spiral rapid development methods in which the specification is constantly being refined. The target is really a combination of related components, not a single application.
    • The myth of software maintenance: The word "maintenance" gives the impression that the software has somehow degraded, and needs to be refurbished to its original condition. This is misleading. The bits in a program do not degrade. They remain the same, while the environment around the program changes. So it is really a process of upgrading or evolving to meet the needs of the changing environment. By viewing it as a maintenance problem, one risks making the mistake of trying to preserve the old structure when its time has passed.
    • The myth of the black box: Abstraction plays a crucial role in the development of reliable software. However, treating a process as a black box with an input/output specification ignores the practical problem of resource usage. When a system built out of these black boxes is too big or too slow, there is no way to improve the performance other than to tear the boxes apart. Some work has been done on the idea of Open Implementation, in which modules have one interface for input/output behavior, and another orthogonal interface for performance tweaking. Adaptive software adds to this by making the orthogonal interface a two way system ÷ there is a feedback loop that provides information on the results of the performance tweaking.

  • The myth of design choices: In traditional software development, the designers consider several alternatives to implement each component, and then make choices based on the desired product. The alternatives that were not chosen, along with the rationale for the choice, are then discarded. That means when the environment changes (perhaps a new communications protocol becomes popular, or the user gets a computer that is twice as powerful), one needs to start all over again to see what choices are now the best. Often, the original programmers have moved on, and so their design rationale is lost. The alternative is to capture the design criteria as a formal part of the program, and let the program reconfigure itself, as the environment changes, to optimally satisfy the criteria.
  • The myth of the expert programmer: Most programmers have pride in their abilities, and feel they can always come up with a good solution, given a suitable specification of the problem. In reality, programmers are only one resource available to a project, and an expensive resource at that. Furthermore, it is impractical to ship a developer with each program (except for very large and expensive custom applications). This suggests that we find a tradeoff where the programmers and designers do what they can do best ÷ formally describe what the program is trying to do. Then the program itself does the calculating and configuring necessary to achieve these goals in the current environment.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Associez l'intégration continue et la méthode ASD - Perfectionnez votre gestion de projet agile

Associez l'intégration continue et la méthode ASD - Perfectionnez votre gestion de projet agile | Devops for Growth | Scoop.it

L'ASD est une évolution de la méthode RAD (voir chapitre précédent) qui distingue 3 formes de production du code informatique :

  1. La transformation de code
    Vous traduisez un code informatique d'un langage de programmation à un autre. Simplifiez le travail quotidien de vos développeurs, favorisez des langages structurés, formalisez des instructions compréhensibles pour les humains.
     

  2. La production par templates
    Vous générez des blogs ou des sites web avec des modèles de pages prédéfinies. Produisez en priorité pour les navigateurs web, stockez les contenus et les fichiers dans une base de données, optimisez l'ergonomie, l'accessibilité et les règles de mise en page.
     

  3. La production à partir d'une modélisation
    Vous créez du code informatique avec un modèle abstrait. Générez un système solide et difficilement modifiable par un humain, anticipez les progrès de l'Intelligence Artificielle qui permettront bientôt à un programme informatique de se modifier lui-même.
     

Votre rôle de facilitateur vous amène à concentrer la gestion de projet sur les demandes des utilisateurs et sur la capacité de vos équipes à faire évoluer facilement le produit. Ne réinventez pas la roue !
La méthode ASD, vous fera gagner beaucoup de temps et de confort dans l'atteinte de vos objectifs professionnels. 

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Méthode agile — Wikipédia

Méthode agile - Wikipédia

En 2001, aux États-Unis, dix-sept figures éminentes du développement logiciel se réunissent pour débattre d'un thème unificateur de leurs méthodes respectives.

Méthodes agiles au sens strict

Classées par date de publication :

Mickael Ruau's insight:

Les méthodes agiles sont l'aboutissement de nombreux travaux tels que ceux de Tom Gilb (cycle de vie évolutif), de Scott Shultz (production en itérations rapides), de Brian Gallagher et de Alex Balchin. Elles intègrent aussi les techniques JRP (Joint Requirements Planning) et JAD (Joint application design) (en) qui furent initiées par Dan Gielan, puis formalisées par Chuck Morris d'IBM en 1984 et diffusées sous forme de livres en 1989 par, entre autres, J. Wood et D. Silver. La première méthode agile3 serait la méthode EVO4, de Tom Gilb, publiée en 1976.

En 1986, Barry Boehm publie le modèle en spirale (développement incrémental) tandis que Hirotaka Takeuchi (en) et Ikujiro Nonaka publient « The new new product developpement game5 » un modèle de développement de produits industriels basé sur l'engagement simultané des diverses disciplines concernées (ingénierie concourante).

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Une rétrospective des méthodes agiles

Cette synthèse aborde les caractéristiques du mouvement agile et les principales méthodes qui en découlent. Cette vue d’ensemble est précédée d’une mise en contexte présentant l’évolution du cadre méthodologique de la gestion de projet en ingénierie logicielle, dans le contexte de l’arrivée de l’approche agile. Les méthodes détaillées plus loin sont les méthodes les plus importantes du mouvement agile. Elles sont décrites de manière à fournir un aperçu de leurs caractéristiques spécifiques, sans toutefois entrer dans des détails trop techniques.

No comment yet.