ORREGO
CARRERAS PARA GENTE QUE TRABAJA
ESCUELA DE INGENIERA
DE COMPUTACIN Y SISTEMAS
Ingeniera de Software
TRABAJO DE INVESTIGACION
Alumno:
LUIS ALBERTO GALLARDO CERNA
Jos Luis Vilquimiche Garca
Augusto Lpez Quito
Docente
Trujillo Per
2016
INGENIERIA DE SOFTWARE
TRABAJOS DE INVESTIGACION
I.
REFACTORIZACIN
DEFINICION
La refactorizacin es una tcnica de la ingeniera de software que permite la optimizacin de
un cdigo previamente escrito, por medio de cambios en su estructura interna sin esto
suponer alteraciones en su comportamiento externo; Dicho de otro modo, la refactorizacin
no busca ni arreglar errores ni aadir nueva funcionalidad, si no mejorar la comprensin del
cdigo, para facilitar as nuevos desarrollos, la resolucin de errores o la adicin de alguna
funcionalidad al software.
OBJETIVO DE REFACTORIZACION
El refactoring tiene como objetivo limpiar el cdigo para que sea ms fcil de entender y
modificar. Permitiendo una mejor lectura para comprender que es lo que se est realizando.
Code Smells
Los code smells son malas prcticas a la hora de programar. Cosas que no se deben hacer
y que ensucian nuestro cdigo. Probablemente el cdigo funciona a la perfeccin, pero se
hace difcil de entender y de seguir. Ya que normalmente en el desarrollo de un programa
intervienen varias personas es bueno mantener cierto orden en el cdigo para que todo el
que requiera usarlo lo pueda entender ms fcilmente.
INGENIERIA DE SOFTWARE
TRABAJOS DE INVESTIGACION
Long Method
Un long method es un mtodo excesivamente largo.No existe una manera concreta para
detectarlo.
God Class
Cuando una clase se empieza a hacer muy extensa es sntoma que se esta convirtiendo
en una god class. Por lo general tienen muchas variables de instancia y asumen
responsabilidades que en realidad deberan estar delegadas en otra clase.
Estos son algunos de los muchos code smells que existen.
Ejemplo refactorizacin
Antes de refactorizar
INGENIERIA DE SOFTWARE
TRABAJOS DE INVESTIGACION
Despus de refactorizar
CATEGORIAS DE REFACTORING
1. (Re) Composicin de mtodos: En esta categora se incluyen las tcnicas que se basan
en acortar mtodos demasiado largos (de acuerdo a la funcionalidad), sustituir llamadas
a los mtodos por su cdigo.
2. Movimiento de caractersticas entre clases: Bajo esta categora se incluyen tcnicas para
reasignar las responsabilidades de una clase a otra, por ejemplo, separar una clase en
varias, eliminar una clase, introducir uno o ms nuevos mtodos a una clase
3. Reorganizacin de datos: Esta categora incluye las tcnicas de refactoring que permiten
facilitar el trabajo con datos, como la creacin de accesos para consultar los propios
atributos dentro de una clase, reemplazar ciertas estructuras de datos por objetos
4. Simplificacin de expresiones condicionales: Esta familia de tcnicas pretende facilitar la
comprensin, depuracin y mantenimiento del software mediante la simplificacin de las
estructuras condicionales, por ejemplo dividiendo una condicional compleja en varias,
eliminando expresiones condicionales redundantes en estructuras complejas.
INGENIERIA DE SOFTWARE
TRABAJOS DE INVESTIGACION
5. Simplificacin de las llamadas a los mtodos: Las tcnicas de esta categora pretenden
simplificar la interfaz de una clase para que sea ms fcil de usar. Incluye algunos
refactorings como cambiar el nombre de mtodos, eliminar o aadir parmetros a las
signaturas de los mtodos, etc.
6. Reorganizacin de la jerarqua generalizacin: Bajo esta categora se engloban las
tcnicas que permiten mover mtodos a lo largo de la jerarqua de herencia, como aadir
un mtodo de subclases a una superclase, aadir constructores a las superclases o
dotar su cuerpo de mayor funcionalidad, crear nuevas sub/superclases, etc.
1. Si vamos haciendo refactoring sistemticamente cada vez que veamos cdigo feo, el
cdigo se mantiene ms elegante y ms sencillo. En fases ms avanzadas de nuestro
programa, seguir siendo un cdigo legible y fcil de modificar o de aadirle cosas.
2. Las modificaciones y aadido tardan menos y se pierde mucho menos tiempo en depurar
y entender el cdigo.
3. El cdigo afectado es el mismo que el que se modific para aadir la funcionalidad y por
tanto se reduce o evita completamente los inconvenientes para otros desarrolladores
4. El tiempo que se debe dedicar es reducido dado que en ese momento se tiene un
conocimiento preciso del cdigo que se ver afectado
REFRENCIAS
http://www.scrummanager.net/bok/index.php?title=Refactorizaci%C3%B3n_del_c
%C3%B3digo
http://www.programacion.com/articulo/refactorizacion:_camino_hacia_la_calidad_221 http://
www.taringa.net/posts/info/9199389/Code-smell-a-que-huele-tu-codigo.html
INGENIERIA DE SOFTWARE
TRABAJOS DE INVESTIGACION
II.
cdigo.
Sirve para asegurar que cada uno de los mdulos funcione correctamente
por separado.
Con las Pruebas de Integracin, se podr asegurar el correcto
integracin continua.
Independientes: la ejecucin de una prueba no debe afectar a la
ejecucin de otra.
Profesionales: las pruebas deben ser consideradas igual que el
cdigo, con la misma profesionalidad, documentacin, etc.
Objetivos
INGENIERIA DE SOFTWARE
TRABAJOS DE INVESTIGACION
Ventajas
Limitaciones
NUnit
INGENIERIA DE SOFTWARE
TRABAJOS DE INVESTIGACION
INGENIERIA DE SOFTWARE
TRABAJOS DE INVESTIGACION
Es extensible.
Elementos de NUnit
La declaracin de la prueba
INGENIERIA DE SOFTWARE
TRABAJOS DE INVESTIGACION
10
INGENIERIA DE SOFTWARE
TRABAJOS DE INVESTIGACION
Referencias:
http://en.wikipedia.org/wiki/Unit_testing
http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks
http://www.xprogramming.com/xpmag/acsUsingNUnit.htm
http://msdn2.microsoft.com/en-us/library/ms364064(vs.80).aspx
http://msdn2.microsoft.com/en-us/library/aa292197(VS.71).aspx
http://msdn.microsoft.com/msdnmag/issues/06/01/UnitTesting/default.aspx
http://buho.dbaccess.com/pages/viewpage.action?pageId=817
11
INGENIERIA DE SOFTWARE
TRABAJOS DE INVESTIGACION
III.
IV.
DESIGN PATTERNS
V.
12