Bibliografía sobre Arquitectura de Software

Recojo acá algunas lecturas sobre arquitectura de software que me parecen valiosas:

Clements, Paul, Bachmann, Felix, Bass, Len, Garlan, David, Ivers, James, Little, Reed, Nord, Robert, Stafford, Judith, Documenting Software Architecture: Views and
Beyond, SEI Series in Software Engineering, Addison-Wesley, 2003.

Bass, Len, Clements, Paul, Kazman, Rick, Software Architecture in Practice,
SEI Series in Software Engineering, 1998.

Evans, Eric, Domain-Driven Design, Tackling Complexity in the Heart of Software, Addison-Wesley, 2004

Fowler, Martin, Patterns of Enterprise Application Architecture, Addison-Wesley Professional, 2003.

Gamma, Eric, Helm, Richard, Johnson, Ralf, Vlissides, John, Design Patterns,
Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995.

Garlan, David, Shaw, Mary, “Software Architecture: Perspectives on an
Emerging Discipline”, Prentice Hall, 1996.

Meyer, Bertrand, Object-Oriented Software Construction,
Prentice-Hall, 1985, 2da. Edición 1997.

Artículos

Garland, David, Allen, Robert, Ockerbloom, John, ”Architectural Mismatch, or
Why it’s hard to build systems out of existing parts”, Computer Science
Department, Carnegie Mellon University, Pittsburgh, 1995.

Kruchten, Philippe, “Architectural Blueprints- The “4+1″ View Model of
Software Architecture”, IEEE Software 12 (6), 1995.

 

Kruchten, Philippe, “Architectural Blueprints- The “4+1″ View Model of
Software Architecture”, IEEE Software 12 (6), 1995.

Scrum with Abrojos

I had the opportunity a few months ago to facilitate a workshop on Scrum with a wonderful group, the Abrojos Collective. The Abrojos organization from the province of Tucumán in Argentina works along several strategic lines tied around Human Rights and Children Rights, from the point of view of Popular Education. They produce radio programs, facilitate workshops and operate a popular library and a communitiy telecenter in the Raco village, 50km from the capital of Tucumán.

It was an amazing experience for me, in particular because I had never run a scrum training outside the software development community, and both the differences and similarities I found, between the work they do and the work we software developers do, turned out to be fascinating.

We worked mostly around physical activities oriented towards understanding the ways of collaboration and complexity, mixed with some short talks to present the Artful Making and Scrum frameworks. The challenges I expected were:

* The group usually facilitates workshop on communication, human and children’s rights, community radio shows and the like, so I considered they might already be familiar with some of the activities I usually use, so I tried to choose activities they would find new and attractive.

* That the group might not share many terms we take for granted in software development, and some terms we share tend to have slightly different meanings (e.g. goals).

* That the role of the Product Owner, or the presence of the business leader might not appeal to them.

I could not have been more mistaken. Most of my preconceptions where dead wrong, and I imagine now that even what I considered engineering oriented activities like the Pajarraco Rasti/Lego building game would work perfectly (I have since learned that Alan Cyment, Astrid Astiz and Veronica Sack have used the game with non software development teams). The group enjoyed both the discussions and the activities, including some techniques I had to use to keep the workshop in track (for instance, I had to teach them to use the talking stick because they would interrupt each other frequently and some discussions seemed never-ending). It was for me a great opportunity for joined reflection on facilitation, the responsibilities of preparing yourself for each activity and the ways in which we try for valuable results in our group dynamics.

Here is a picture of the beautiful natural setting in which the workshop took place:

I would like to hear of your own experiences, thanks,

Diego

Latest readings

These are my comments on the books I read in my Methods: Deciding what to design course.

Books
More about requirements, by Karl Weigers

This book is a great sum of requirements engineering best practices. It takes an ecumenical look at the subject matter, trying to avoid a specific viewpoint.

Advanced Use Case Modeling

A good compendium of use case modeling techniques, although advanced users might not find many new perspectives or techniques.

The Social Life of Information:

A critique of the value that society places in huge volumes of undigested information, this book is a breath of fresh air for us working with information technology. It endeavors to tear down the myths of the home office, the value of information by itself, process vs. practice and learning.

Contextual Design

Psychology meets system’s engineering. This is an eye opener for engineers because it is focused on describing and understanding the work that people do rather than the systems they use to do it. A great tool to try out when interviewing your future users to decide what to design.

The design of everyday things

Again we have psychology to learn design from, in a very interesting and insightful book that explains why the world of common objects around us is usually designed against rather than for people. Of special interest are the feedback principle and the design for error considerations.

The Mythical Man-Month

An absolute classic, the necessary and precise justification of the complexity that we perceive when we work with software. I think “No Silver Bullet” is specially important for those of us who believe that what we do will remain a complex endeavor and a constant surprise.
Hope this will tempt you to do some reading,

Diego

Ágiles 2009 – Florianópolis

Increíble experiencia es la de estar en la 2da Conferencia Latinoamericana de Metodologías Ágiles 2009. Se respira entusiasmo y figuras legendarias del mundo ágil caminan entre los hombres comunes.
Hay en el aire mil palabras para aprender y pensar cosas nuevas, hay gente con la que conversar a cada paso, y hay charlas de tantos temas interesantes que nunca se llega a todo lo que uno querría hacer.

Termina el primer día, mañana veremos.

Scrum para proyectos que no son de software

Mis comentarios como los recogí durante la charla en el Agile Open La Plata

(Ya hubo una charla con este tenor en el Agile Open Buenos Aires.)

Scrum para proyectos de software con artistas (tal vez ni contestan los mails).

Ariel destaca el encuentro de la mejora de exportar hacia otras disciplinnas
Artful Making: Lo que podemos tomar del arte sobre cómo aprender: Por ejemplo, la repetición. La iteración te permite tomar ritmo, pero no debe ser exacta, hay que aceptar la variedad y aceptarla con gusto, porque permite innovar.

Miedo al error, debe cambiarse la cultura. El programa de 12 pasos de AA inicia con aceptar el problema, y reconocer los errores.

El proceso iterativo puede ser raro para organizaciones que no hacen software.

Ariel cuenta cómo el lenguaje técnico de software, con términos como “validación” resultan muy extrañas fuera del ambiente del software. También pasa con la terminología en inglés o mal traducida.

Ariel destaca los valores humanos en las metodologías ágiles, como aporte desde otras áreas de conocimiento. Ejemplos: Colaboración, Comunicación, Innovación.

Ariel, los ingenieros de software necesitan tener exposición a las artes y otros estímulos. Diego, el desarrollo de un lenguaje rico es necesario para construir software, conceptualizar las ideas básicas.

Etnografía para requerimientos de software, sociólogos trabajando.

Experiencias
Ariel, Open Space en vista en fábricas recuperadas. Tienen problemas porque los mandos medios se fueron y las asambleas no funcionan.

Empresa de Diseño gráfico en los cursos de CSM. Usan sprints y retrospectivas. Los dueños forman parte del equipo, que no termina de ser de pares.
¿Cómo llegaron ahí? Fueron a ofrecer sus servicios a la empresa de diseño y fueron aceptados. También aportaron mucho entusiasmo y facilitaron incluso procesos en forma ad honorem. Están en tratativas con organizaciones piqueteras.

Diego propone la colaboración como una reconcepción de las ideas de cada uno por exponerlas a los demás.

¿Cómo implementar Scrum en el Servicio Penitenciario para hacer software?

Diego, los diseñadores gráficos que no quieren entregar versiones borrador, porque la primera impresión es muy fuerte. Es decir, se pueden tener procesos por incrementos, pero no tanto evolutivos.

Ariel, la diferencia puede estar en la menor complejidad, tal que no requiera incrementos, simplemente iteraciones donde el equipo es el resultado (Diego).

Grupos de 5 ingenieros electrónicos usando modelos iterativos (Juan).

¿Qué llevarles a los artistas? Tal vez el ritmo. Tal vez no sea lo mismo para estudiantes de arte que no tienen experiencia de trabajo en equipo.
Puede disminuir el nivel de estréss y ayudar a autoorganizarse.

Pajarraco en la Maestría de Ingeniería de Software en La Plata

Ayer facilité el juego del pajarraco en la Maestría de Ingeniería de Software en La Plata, en la materia de Administración de Proyectos, invitado por Alejandro Oliveros.

El resultado fue muy positivo desde mi punto de vista, y creo que los alumnos también disfrutaron mucho la experiencia. Arranqué con una introducción a Scrum muy simple, y me resultó muy valioso recibir en la retrospectiva final muchos reflexiones enfocadas en el desarrollo de software, cosa que no siempre ocurre dado el estilo particular de la metáfora de trabajar con rastis. Tal vez tenga que ver con trabajar con un grupo de posgrado, de cualquier manera, una experiencia enriquecedora, como siempre.

Agile Open en La Plata

Ayer se realizó el cuarto evento del Agile Open Tour Argentina 2009 en La Plata. El evento estuvo sensacional, el ambiente en la sede de la Universidad Católica muy cálido y el grupo de participantes puso su entusiasmo para terminar con un cierre muy emotivo.

Como siempre, la técnica de Open Space dio resultados excelentes, y el nivel de interacción entre la gente tanto en las sesiones como en los intervalos fue muy intenso y valioso. En particular, me resultó muy interesante la presencia de gente que no provenía del mundo del software, que terminó en un sesión que propuse sobre aplicaciones de metodologías ágiles en entornos distintos al desarrollo de software.

Nos llevamos todos, creo, el compromiso de seguir difundiendo tanto el tema del evento, como el formato, que comparten el foco en el valor de la gente.

Esperemos que sirva también para desarrollar la comunidad local a partir de este excelente resultado.

Nota: La semana próxima voy a estar agregando mis apuntes de la charla “Metodologías Agiles en proyectos que no son de software” y la presentación de la charla que presenté de “Arquitectura Agil”.
Presentación de la charla