Este documento describe varios conceptos relacionados con la calidad del código, incluyendo code smells, principios SOLID y refactorización. Explica que los code smells son síntomas que indican problemas de calidad en el código y diseño. Describe varios code smells como rigidez, fragilidad e inamovilidad. También explica los cinco principios SOLID y cómo ayudan a mejorar la calidad del código. Finalmente, señala que la refactorización es importante para mejorar el código al cambiar su estructura interna sin alterar su comportamiento
Cuadro Comparativo de Diseño de sistema: Modelo de Cascada
Desarrrollo Evolutivo
Desarrollo Formal de Sistemas
Desarrollo Orientado a la Reutilizacion
Desarrollo Incremental
Desarrollo en Espiral
¿Cómo aplicar los principios SOLID a mi código?
Definición de los principios y ejemplos clásicos de buenas prácticas de Diseño Orientado a Objetos
Audio de la presentación:
http://archive.org/details/10.S.o.l.i.d.ComoLoAplicoEnMiCdigo-JuanJosFuchs
Cuadro Comparativo de Diseño de sistema: Modelo de Cascada
Desarrrollo Evolutivo
Desarrollo Formal de Sistemas
Desarrollo Orientado a la Reutilizacion
Desarrollo Incremental
Desarrollo en Espiral
¿Cómo aplicar los principios SOLID a mi código?
Definición de los principios y ejemplos clásicos de buenas prácticas de Diseño Orientado a Objetos
Audio de la presentación:
http://archive.org/details/10.S.o.l.i.d.ComoLoAplicoEnMiCdigo-JuanJosFuchs
Refactoring: Improving the design of existing codeKnoldus Inc.
Refactoring is a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior.
Objetivo: Describir el proceso de desarrollo de software mediante las características de las fases de análisis, diseño y pruebas para identificarlas dentro de un proyecto de software.
a) Script por Fase: Planeación, desarrollo, revisión y Post Mortem.
b) PROXIES (métricas de desarrollo).
c) PIPS – Compromisos de mejor.
d) Método PROBE.
e) Mediciones de Calidad PSP.
San Francisco Software Craftsmanship Meetup
Test Driven Developers Bay Area Meetup
TDD Flow: The Mantra in Action” is a talk + hands-on about the mantra of TDD and its core patterns. Here are some questions for this talk: What is TDD? How to write a good test that fails? How to write code enough to make the test pass? How to remove duplication? How to refactor code? How to create clean code? Is TDD about testing or design? How small should a test be? Should I only write unit tests? Should I estimate TDD? How to use TDD with other agile methods like Scrum, Kanban or BDD? And finally, how to flow in TDD?
SOLID is a mnemonic device for 5 design principles of object-oriented
programs (OOP) that result in readable, adaptable, and scalable code.
S - Single Responsibility Principle.
O - Open Closed Principle.
L - Liskov Substitution Principle.
I - Interface Segregation Principle.
D - Dependency Inversion Principle.
El modelo C4 se creó como una forma de ayudar a los equipos de desarrollo de software a describir y comunicar la arquitectura de software, tanto durante las sesiones de diseño iniciales como cuando se documenta retrospectivamente una base de código existente. Es una forma de crear mapas de su código, en varios niveles de detalle, de la misma manera que usaría algo como Google Maps para acercar y alejar un área que le interesa.
¿A qué huele tu código? Afinando nuestro olfatoRubén Bernárdez
Repaso por los principales olores de código que podemos encontrar en el desarrollo de software.
Obtenidos a partir del libro "Refactoring: Improving the design of existing code" de Martin Fowler
Refactoring: Improving the design of existing codeKnoldus Inc.
Refactoring is a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior.
Objetivo: Describir el proceso de desarrollo de software mediante las características de las fases de análisis, diseño y pruebas para identificarlas dentro de un proyecto de software.
a) Script por Fase: Planeación, desarrollo, revisión y Post Mortem.
b) PROXIES (métricas de desarrollo).
c) PIPS – Compromisos de mejor.
d) Método PROBE.
e) Mediciones de Calidad PSP.
San Francisco Software Craftsmanship Meetup
Test Driven Developers Bay Area Meetup
TDD Flow: The Mantra in Action” is a talk + hands-on about the mantra of TDD and its core patterns. Here are some questions for this talk: What is TDD? How to write a good test that fails? How to write code enough to make the test pass? How to remove duplication? How to refactor code? How to create clean code? Is TDD about testing or design? How small should a test be? Should I only write unit tests? Should I estimate TDD? How to use TDD with other agile methods like Scrum, Kanban or BDD? And finally, how to flow in TDD?
SOLID is a mnemonic device for 5 design principles of object-oriented
programs (OOP) that result in readable, adaptable, and scalable code.
S - Single Responsibility Principle.
O - Open Closed Principle.
L - Liskov Substitution Principle.
I - Interface Segregation Principle.
D - Dependency Inversion Principle.
El modelo C4 se creó como una forma de ayudar a los equipos de desarrollo de software a describir y comunicar la arquitectura de software, tanto durante las sesiones de diseño iniciales como cuando se documenta retrospectivamente una base de código existente. Es una forma de crear mapas de su código, en varios niveles de detalle, de la misma manera que usaría algo como Google Maps para acercar y alejar un área que le interesa.
¿A qué huele tu código? Afinando nuestro olfatoRubén Bernárdez
Repaso por los principales olores de código que podemos encontrar en el desarrollo de software.
Obtenidos a partir del libro "Refactoring: Improving the design of existing code" de Martin Fowler
Refactoring e Code Smells: Seu código está apodrecendo!Emanuel Canuto
Uma apresentação sobre Refactoring e Code Smells, abordando características do software em estado de apodrecimento, identificação de alguns code smells, e refactoring, e focado em melhoria contínua profissional em relação a engenharia de software.
Las imagenes usadas en esta presentación tiene un fin exclusivamente academico, si alguien considera que debo eliminarlas, por favor hagamelo saber. Gracias
Tras tres años programando en la plataforma Android esta es la película de mi vida como Android Developer, un conjunto de buenas practicas y conceptos necesarios que aún a día de hoy sigo viendo que no se cumplen en la mayoría de proyectos con los que me cruzo. Son la conclusiones sacadas de mi experiencia y de multitud de debates con compañeros. Se abordan temas como: fragmentación, uso de la clase Context, naming, maquetación en Android, memory leaks y S.O.L.I.D.
Objetos virtuales de aprendizaje en e-learning 2.0David Ramírez
Presentación para el Teledu 2009 sobre objetos virtuales de aprendizaje y el uso de licencias libres para permitir que la información fluya más en la red.
Herramientas para desarrollar rápidamenteCarlos Toxtli
Más de 150 herramientas en linea que debes conocer para crear desarrollos asombrosos en muy poco tiempo. La era de hacer todo desde cero cada vez es más lejana, ahora tenemos herramientas que pueden hacer que un desarrollo antes tardaría 2 meses tarde menos de 2 semanas.
Más allá de los recursos que ofrece Moodle encontramos numerosas aplicaciones o herramientas que pueden ser integradas fácilmente a la plataforma y que permiten crear de muy diversas formas material didáctico de apoyo al proceso educativo
Es decir, que las web que cumplan los estándares se vean bien en todos los navegadores actuales.
Me gustan que sean fáciles de mantener y de actualizar, que tengan una consistencia visual entre navegadores.
Me gusta que sean fácilmente accesibles.
Y por pedir… me gusta que sean rápidas, que se posicionen bien en los motores de búsqueda, buen UX, que consuman poco ancho de banda, que sean eficientes, hacerlas con menos esfuerzo y poder visitarlas desde cualquier dispositivo.
La mayoría de las web a las que accedemos no respetan los estándares de la W3C, pero estamos viviendo un cambio y deberíamos encaminarnos a crear páginas bien hechas.
Veremos cuáles son los estándares actuales, como actualizar un sitio web para que utilice los estándares sobre los que se basan la mayoría de los navegadores modernos y en qué me beneficia que mi web los siga.
En resumen: buenas prácticas, qué funciona y las mejores herramientas para llevar a cabo todo esto.
Node.js
Code Blast 2012 en el marco de charlas de por la Semana de la Ingeniería de la Universidad Tecnológica Nacional, Facultad Regional Tucumán.
Juan Maria Martinez Arce compartió un poco de sus investigaciones en el uso de node.js para la creación de aplicaciones de red de alta concurrencia.
Plone es un gestor de contenidos implementado en Python sobre el framework de aplicaciones Zope. Recientemente Plone cumplio 9 años y durante este tiempo se realizaron iniciativas y acciones que aún son inéditas en muchos programas y comunidades libres.
En esta charla analiza cuestiones técnicas, de comundiad y legales que forman parte de las lecciones aprendidas por la comunidad Plone y que pueden ser de utilidad en Drupal.
Diseño de Centro de Excelencia en Ágil (CoEs)Johnny Ordóñez
Un CoE es un grupo de personas con habilidades y conocimientos especializados cuyo trabajo es proporcionar liderazgo y difundir deliberadamente ese conocimiento dentro de la organización. Tiene como propósito el desarrollar, gobernar y asegurar la excelencia en el ejercicio de una determinada disciplina en los equipos del Delivery y en toda la organización.
Un modelo operativo es una representación conceptual del estado deseado de una organización que trabaja bajo una estructura, patrones y principios ágiles. Esta presentación contiene los elementos y principios operativos más relevantes de un modelo ágil (Building Blocks).
Agile People - Habilitando la agilidad desde Gestión de talentoJohnny Ordóñez
Les comparto mi presentación en Ágiles Colombia 2019; con algunas técnicas y enfoques que me han servido durante estos años colaborando con áreas de Gestión de Talento.
An excerpt of my proposal to the implementation and management of Corporate Innovation portfolio based on Tendayi Viki's book: The Corporate StartUp and Lean Management principles.
'agility enablement' - desbloqueando la agilidad empresarialJohnny Ordóñez
agilidad está siempre presente en la organización. En lugar de tratar de alcanzar el 'ser Ágil’ como una meta, enfocarse en identificar los límites y remover las restricciones que dan forma a la capacidad organizacional de poder percibir, adaptarse y responder.
Nuestro trabajo es identificar los límites y remover las restricciones que la rodean para potenciarla.
Esta es mi propuesta.
'agility' is always present within the organization. Instead of trying to achieve ‘to be Agile' as a goal, focus on identifying boundaries and removing the constraints that shape the organizational capacity of sensing, adapting and responding. Our job is to identify the boundaries and remove the constraints that surround 'agility' to enhance it.
This is my proposal.
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...espinozaernesto427
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta intensidad son un tipo de lámpara eléctrica de descarga de gas que produce luz por medio de un arco eléctrico entre electrodos de tungsteno alojados dentro de un tubo de alúmina o cuarzo moldeado translúcido o transparente.
lámparas más eficientes del mercado, debido a su menor consumo y por la cantidad de luz que emiten. Adquieren una vida útil de hasta 50.000 horas y no generan calor alguna. Si quieres cambiar la iluminación de tu hogar para hacerla mucho más eficiente, ¡esta es tu mejor opción!
Las nuevas lámparas de descarga de alta intensidad producen más luz visible por unidad de energía eléctrica consumida que las lámparas fluorescentes e incandescentes, ya que una mayor proporción de su radiación es luz visible, en contraste con la infrarroja. Sin embargo, la salida de lúmenes de la iluminación HID puede deteriorarse hasta en un 70% durante 10,000 horas de funcionamiento.
Muchos vehículos modernos usan bombillas HID para los principales sistemas de iluminación, aunque algunas aplicaciones ahora están pasando de bombillas HID a tecnología LED y láser.1 Modelos de lámparas van desde las típicas lámparas de 35 a 100 W de los autos, a las de más de 15 kW que se utilizan en los proyectores de cines IMAX.
Esta tecnología HID no es nueva y fue demostrada por primera vez por Francis Hauksbee en 1705. Lámpara de Nernst.
Lámpara incandescente.
Lámpara de descarga. Lámpara fluorescente. Lámpara fluorescente compacta. Lámpara de haluro metálico. Lámpara de vapor de sodio. Lámpara de vapor de mercurio. Lámpara de neón. Lámpara de deuterio. Lámpara xenón.
Lámpara LED.
Lámpara de plasma.
Flash (fotografía) Las lámparas de descarga de alta intensidad (HID) son un tipo de lámparas de descarga de gas muy utilizadas en la industria de la iluminación. Estas lámparas producen luz creando un arco eléctrico entre dos electrodos a través de un gas ionizado. Las lámparas HID son conocidas por su gran eficacia a la hora de convertir la electricidad en luz y por su larga vida útil.
A diferencia de las luces fluorescentes, que necesitan un recubrimiento de fósforo para emitir luz visible, las lámparas HID no necesitan ningún recubrimiento en el interior de sus tubos. El propio arco eléctrico emite luz visible. Sin embargo, algunas lámparas de halogenuros metálicos y muchas lámparas de vapor de mercurio tienen un recubrimiento de fósforo en el interior de la bombilla para mejorar el espectro luminoso y reproducción cromática. Las lámparas HID están disponibles en varias potencias, que van desde los 25 vatios de las lámparas de halogenuros metálicos autobalastradas y los 35 vatios de las lámparas de vapor de sodio de alta intensidad hasta los 1.000 vatios de las lámparas de vapor de mercurio y vapor de sodio de alta intensidad, e incluso hasta los 1.500 vatios de las lámparas de halogenuros metálicos.
Las lámparas HID requieren un equipo de control especial llamado balasto para funcionar
En este documento analizamos ciertos conceptos relacionados con la ficha 1 y 2. Y concluimos, dando el porque es importante desarrollar nuestras habilidades de pensamiento.
Sara Sofia Bedoya Montezuma.
9-1.
16. Actitud http://www.flickr.com/photos/designd15/4220055968/in/photostream/
“Escribir código que entienda la computadora es una
técnica; escribir código que entienda un ser humano
es un Arte” – Robert ‘Uncle Bob’ Martin
17. Entonces, ¿Por
qué es
importante
escribir mejor
código?
http://www.websoftwareqa.com/wp-content/uploads/2010/07/Computer-Code.jpg
19. Cómo detectar
Dónde puedo si lo estoy
encontrar la haciendo mal?
información que
necesito?
Qué puedo
aplicar y qué
Qué patrones no?
resuelven este
problema?
22. Qué son los Code Smells?
Son todos los síntomas que
podemos encontrar en el código
fuente de un sistema que
indican que muy probablemente
existan problemas más
profundos de calidad de código,
de diseño o de ambos.
52. Single Responsibility Principle
“Cada objeto debe tener
una responsabilidad
única, y esta
responsabilidad debe
estar completamente
encapsulada dentro de
la clase”
“Las clases deben tener una única
responsabilidad, una única razón de
cambio”
53. Open / Close Principle
“Una clase debe
estar abierta para
extensión pero
cerrada para
modificación”
55. Interface Segregation Principle
“Mantenga interfaces
finas a un nivel de
granularidad que el cliente
necesita.
Los clientes no deben ser
forzados a depender de
interfaces que no utilizan.”
56. Dependency Inversion Principle
“Clases de alto nivel
no deben depender
de clases de bajo
nivel. Ambas deben
depender de sus
abstracciones”
“Dependa de abstracciones, no de
objetos concretos”
59. Referencias
• Clean Code: A Handbook of Agile Software Craftsmanship,
Robert C. Martin (Aug 11, 2008) http://www.amazon.com/Clean-Code-
Handbook-Software-Craftsmanship/dp/0132350882
• Agile Software Development, Principles, Patterns, and
Practices, Robert C. Martin (Oct 25, 2002) http://www.amazon.com/Software-
Development-Principles-Patterns-Practices/dp/0135974445
• Code Smells, Louhekon (2010) http://www.louhekon.fi/2010/02/code-
smells/
• A Taxonomy for "Bad Code Smells ", Mika Mäntylä (2010)
http://www.soberit.hut.fi/mmantyla/BadCodeSmellsTaxonomy.htm
60. Referencias
• A Taxonomy for "Bad Code Smells ", Mika Mäntylä (2010)
http://www.soberit.hut.fi/mmantyla/BadCodeSmellsTaxonomy.htm
• SOLID Software Design, AbbasRaza (2012)
http://www.slideshare.net/theceo/solid-software-design
• SOLID OO Principles, Andreas Enbohm (2011)
http://www.slideshare.net/enbohm/solid-design-principles-9016117
• The SOLID Principles in C#, Leon van Bokhorst (2012)
http://www.remondo.net/solid-principles-csharp-single-responsibility/
• A qué huele tu código?, Rubén Bernárdez (2011)
http://www.slideshare.net/rubenbp/a-qu-huele-tu-cdigo-afinando-nuestro-
olfato-7400175
61. Más Code
Smells y Tips
para corregirlos
Tomado de:
http://www.slideshare.net/rubenbp/a-qu-huele-tu-cdigo-afinando-nuestro-olfato-7400175