You are on page 1of 10

INGENIERIA DE SOFTWARE

Qu es la Ingeniera de software?
Es una disciplina de la ingeniera que comprende todos los aspectos de la produccin de software desde las etapas iniciales de la
especificacin del sistema hasta el mantenimiento de este despus que se utiliza.
Objetivo de la Ingeniera de Software
Construir Software de calidad a un bajo costo y en el menor tiempo posible
Funcionalidad: Un conjunto de atributos que se relacionan con la existencia de un conjunto de funciones y sus propiedades especficas.
Las funciones son aquellas que satisfacen lo indicado o implica necesidades.
Fiabilidad: Conjunto de atributos relacionados con la relacin entre el nivel de desempeo del software y la cantidad de recursos
necesitados bajo condiciones establecidas.
Eficiencia: Conjunto de atributos relacionados con la relacin entre el nivel de desempeo del software y la cantidad de recursos
necesitados bajo condiciones establecidas.
Mantenibilidad: Conjunto de atributos relacionados con la facilidad de extender, modificar o corregir errores en un sistema software.
Portabilidad: Conjunto de atributos relacionados con la capacidad de un sistema software para ser transferido desde una plataforma a
otra.
Funcionalidad: Un conjunto de atributos que se relacionan con la existencia de un conjunto de funciones y sus propiedades especficas.
Las funciones son aquellas que satisfacen lo indicado o implica necesidades.
Fiabilidad: Un conjunto de atributos relacionados con la capacidad del software de mantener su nivel de prestacin bajo condiciones
establecidas durante un perodo de tiempo establecido.
Eficiencia: Conjunto de atributos relacionados con la relacin entre el nivel de desempeo del software y la cantidad de recursos
necesitados bajo condiciones establecidas.
Usabilidad: Un conjuntos de atributos relacionados con el esfuerzo necesitado para el uso, y en la valoracin individual de tal uso, por
un establecido o implicado conjunto de usuarios.
Caractersticas de un SW de calidad
Correccin
Fiabilidad
Eficiencia
Integridad
Facilidad de uso Facilidad de mantenimiento
Flexibilidad
Facilidad de prueba
Portabilidad
Facilidad de rehus
Interoperabilidad
Verificacin y Validacin de Software (V&V)
Conjunto de procesos de comprobacin y anlisis que aseguran que el software que se desarrolla est acorde a su especificacin y
cumple las necesidades de los clientes
Verificacin: Estamos construyendo el sw correctamente?
Validacin de Software: Estamos construyendo el sw correcto?
UML (Lenguaje de modelado unificado). Tipos:
Diagramas de clases: Un Diagrama de clases muestra los atributos y las operaciones (mtodos) de las clases, as como las
restricciones que se aplican a la forma en que los objetos estn conectados.

Diagramas de casos de uso: Los diagramas de casos de uso representan formas de interaccin entre el sistema objeto del
modelo y elementos externos (usuarios y otros sistemas). Una de las mayores ventajas del uso de estos diagramas es que
permiten capturar y manejar los requerimientos del sistema.

Diagramas de Interaccin: Los Diagramas de Interaccin son modelos que describen como colaboran grupos de objetos en
algn comportamiento.
Diagramas de secuencia: Muestran el orden temporal en que se envan los mensajes entre los objetos,
con base en dos dimensiones.

Diagramas de colaboracin: Muestran la interaccin de un conjunto de objetos, sus conexiones estticas y el


paso de mensajes.

Otros Diagramas
Diagramas de Paquetes: Un Diagrama de Paquetes es un caso particular de un diagrama de clases, el cual consiste solamente
de: Paquetes, Dependencias y Generalizaciones.

Diagramas de Estado: Describen el comportamiento de un sistema, mostrando la secuencia de estados por los que atraviesa
un objeto durante su tiempo de vida en respuesta a estmulos recibidos, as como sus respuestas y acciones.
Estn formados por: Estados, Transiciones de estado y Etiquetas de transicin (Partes: Evento, Guardia y Accin).
Diagramas de actividades: Estos diagramas son tiles en conexin con flujo de trabajo y para describir comportamiento que
puede tener procesamiento en paralelo. Elementos: Actividades, Disparadores, Transiciones, Decisiones y guardias, Barras de
sincronizacin.
Desde el punto de vista conceptual, una actividad es una tarea que debe ejecutarse.
Desde el punto de vista de la especificacin, una actividad es un mtodo en una clase.
Diagramas de componentes Un Diagrama de Componentes muestra las dependencias entre componentes de software,
incluyendo: cdigo fuente, cdigo binario y componentes ejecutables. Un mdulo de software puede representarse como un
tipo de componente. Las dependencias se representan como flechas punteadas de un componente cliente a un componente
proveedor.

Diagramas de Implantacin. Un Diagrama de Implantacin muestra la relacin fsica entre los componentes de software y
hardware en el sistema liberado.

El Objetivo de cualquier actividad de Ingeniera es construir un producto.


Una diferencia fundamental de un sistema de software con respecto a otros productos es su maleabilidad.
Calidad de Software
Puede ser considerada desde dos perspectivas diferentes; la ptica del desarrollador se denomina Interna y los del cliente Externa.
Mtricas de calidad de un Producto de Software.

Correccin: Capacidad de los productos de software para realizar con exactitud las tareas expresadas en su especificacin.
Robustez: Capacidad de los productos software de reaccionar apropiadamente ante condiciones excepcionales.
Eficiencia: Capacidad del software para hacer buen uso de los recursos que manipula.
Portabilidad: Es la facilidad con que un sistema software puede ser migrado entre diferentes plataformas HW y SW.
Facilidad de Uso: Es la facilidad con la que un usuario puede interactuar con un sistema software.
Verificabilidad: Es la facilidad de verificacin de correccin de un SW. Que tan sencillo es la realizacin de pruebas que
garanticen la funcionalidad del sistema.
Compatibilidad: Es la facilidad de combinar diferentes elementos software con el fin de ejecutar una labor en conjunto.
Extensibilidad: Es la facilidad de adaptar los productos software a los cambios de su especificacin.
Reutilizacin: Capacidad de los productos de SW para funcionar como bloques bsicos de la construccin de la construccin de
diferentes aplicaciones.

Prototipo: Versin inicial de un sistema de software que se utiliza para demostrar los conceptos, probar las opciones de diseo y
entender mejor el problema y su solucin.
Mtricas de Calidad del Proceso de Desarrollo de software.
Productividad.
Cumplir con los tiempos.
Transparencia.
Principios de Ingeniera de Software.
Rigor y formalismo.
Separacin de problemas.
Modularidad.
Abstraccin.
Anticipacin de cambios.
Generalidad.
Proceso Incremental.
Proceso Evolutivo

Anlisis de Requerimientos
Estrategias y patrones de modelado.
Un patrn en el Modelo Orientado a Objetos es una plantilla de objetos con responsabilidades e interacciones estereotpicas que puede
utilizarse una y otra vez por analoga.
Actividades del Modelado Orientado a Objetos.
En el desarrollo de un modelo orientado a objetos se tiene cuatro grandes actividades:
Identificacin del objetivo y caractersticas del sistema.
Seleccin de objetos.
Establecimiento de responsabilidades.
Representacin de las propiedades dinmicas por medio de escenarios

Identificacin del objetivo y caractersticas del sistema.


Esta actividad se divide en varias sub actividades:
Identificacin del objetivo del sistema.
Identificar los principales problemas.
Incluir cuatro tipos de caractersticas.
Resultados calculados.
Caractersticas actuales y futuras.
Las diez principales caractersticas.
Seleccin de Objetos.
Un sistema est compuesto por 4 grandes componentes:
Objetos del Dominio del problema.
Interaccin Humana.
Manejo de Datos.
Interaccin con otros sistemas.
Establecimiento de Responsabilidades.
Para cada objeto establecer:
Que conozco (atributos); es decir, que conoce el objeto.
A quien conozco (asociacin con otros objetos).
Que hago (servicios que proporciono)
Patrones de Modelado.
Un patrn en el Modelo Orientado a Objetos es una
coleccin de Objetos con responsabilidades e
interacciones estereotpicas.
Patrones bsicos.
Patrones de transacciones.
Patrones agregados.
Patrones de planeacin.
Patrones de interaccin.

GRASP (General Responsibility Asignment Software Patterns)


Patrones generales de software para asignar responsabilidades.
Experto.
Creador.
Alta Cohesin.
Bajo Acoplamiento.
Controlador
Diseo
El diseo es una actividad creativa que involucra imaginacin, capacidad de sntesis dada por la experiencia y conocimiento.
El Objetivo del diseo es construir un sistema que:
Satisfaga una especificacin funcional dada.
Se adapte a las limitaciones del medio.
Satisfaga requerimientos implcitos y explcitos de rendimiento y uso de recursos.
Satisfaga criterios de diseos explcitos e implcitos.
Satisfaga restricciones al mismo proceso de diseo (tales como duracin, costo, etc.)
Pueda ser ampliado, modificado, corregido y aprendido por un equipo de personas que no participo en el desarrollo original.
Un Patrn de Diseo Orientado a Objetos es un conjunto de clases y objetos cooperativos que describen la esencia de un problema que
ocurre una y otra vez en nuestro ambiente y que puede emularse en diferentes aplicaciones.
Revisin y Auditoria del cdigo: Proceso de revisar el cdigo de una aplicacin para encontrar errores al tiempo de diseo.
Fallas en IDE que no se comprueban:
Cdigo muerto. Convenciones en el formato original.
Notaciones
Notacin C

Notacin Camel

Visibilidad innecesaria

Notacin Hngara

Reglas de Auditoria: Formato


-Posicin de las llaves
-Eliminacin de las llaves
-Uso del tabulador
-Cada lnea solo debe tener una sentencia
-Convencin de mtodos de acceso
-Convencin de nombre a identificadores
-Uso de variables significativas
Reglas de Auditoria: Implementacin
-Tamao de los mdulos.
-Las clases solo deben tener una funcionalidad.
-El cdigo debe estar cubierto al 100% por pruebas.
-Variables locales sin comentario.

Cdigo duplicado

Notacin Java

-Longitud de las lneas de cdigo


-Uso del ingls para el cdigo

-Tamao de las funciones y mtodos.


-Siempre debe haber una interfaz.
-Posicin de la declaracin de las variables.

-Uso del this.


-Cdigo comentado.

Reglas de Auditoria: Comentarios


-Todos los elementos identificados del programa deben tener un cometario que los describa.
-Los parmetros, los valores devueltos y las salidas de error de todos los mtodos y funciones deben tener un comentario.

Reglas de Auditoria: Cdigo muerto.


-Eliminar captura de excepciones innecesarias
-Eliminar condiciones constantes

-Eliminar mtodos innecesarios


-Eliminar llamadas innecesarias a mtodos

Reglas de Auditoria: Modificadores


-Siempre un mismo orden de modificadores
-Fomentar uso de constantes, no deben aparecer nmeros mgicos.
Herramientas para Auditoria:
-Junit Test Generation

-Impedirse la herencia.
-Evitar propiedades pblicas.

-CodePro Analytix

Mtricas del Software (Trminos)


MEDIDA: Valor asignado a un atributo de una entidad mediante una medicin.
MEDICIN: Es el acto de determinar una medida.
METRICA: Medida cuantitativa del grado en que un sistema, componente o proceso posee un atributo dado. Incluye el mtodo de
medicin.
INDICADOR: Es una mtrica o combinacin de mtricas que proporcionan una visin profunda del proceso de software.
ERROR: Fallo en un producto que se descubre antes de entregar el SW al usuario final.
DEFECTO: Un fallo que se produce una vez que se ha entregado el producto al usuario final.
Mtricas Orientadas al tamao: Medidas directas del resultado y del proceso
Mtricas Orientadas a la funcin: Medidas indirectas del software y del proceso
Medidas LDC:
n 1: nmero de operadores diferentes que aparecen en el programa.
n 2 : nmero de operandos diferentes que aparecen en el programa.
N 1 : nmero total de veces que aparece el operador.
N 2 : nmero total de veces que aparece el operando.
Qu es el control de versiones?
Capacidad de recordar todos los cambios que se hacen tanto en la estructura de directorios como en el contenido de los ficheros.
Qu es Subversin?
Herramienta de cdigo abierto, multiplataforma (Win32, Linux, Mac, etc), para el control de versiones de ficheros electrnicos, como son
el software o la documentacin.
Qu es TortoiseSVN?
TortoiseSVN es un cliente gratuito de cdigo abierto para el sistema de control de versiones Subversion.
Oficina de administracin de Proyectos (PMO)
Es un departamento o grupo que define y mantiene estndares de procesos, generalmente relacionados a la gestin de proyectos,
dentro de una organizacin
Etapas de un proyecto
Inicio -> Planeacin -> Ejecucin -> Ejecucin -> Monitoreo y Control -> Cierre
Beneficios de la PMO

Estandarizacin la metodologa, los procedimientos, herramientas y plantillas para la administracin de proyectos.

Mejora en la alineacin de los proyectos con las metas estratgicas de la SEG.

Prioriza las estrategias, programas y proyectos.

Mejora la estimacin y el cumplimiento de los tiempos en el proyecto.

Mejora el presupuesto y el cumplimiento de la ejecucin de los costos asignados al proyecto.

Mejora los niveles de calidad en el proyecto y en el producto

Visualiza la visibilidad de los proyectos.

Mantiene la confiabilidad en la informacin para la toma de decisiones dentro del proyecto o de la alta gerencia.

Optimiza los niveles de comunicacin entre los involucrados de los proyectos.

Racionaliza el uso de recursos compartidos.

Propicia la adecuada administracin de la configuracin de los proyectos y el despliegue de las lecciones aprendidas.

Minimiza los riesgos y su impacto.

Reduce los cambios de alcance.

Propicia una mayor participacin del equipo de trabajo en todas las fases del proyecto.
Beneficios de la Certificacin

Se busca mejorar el desempeo en la manera en que se administran proyectos.

Acredita conocimiento, experiencia, competencias y habilidades slidas en la Direccin de proyectos que posee el profesional.

Le permite asumir mayores retos y responsabilidades acreditando sus capacidades para gestionar proyectos de envergadura.

Conocimiento preciso de las mejores prcticas en administracin de proyectos propuestas por PMI.

Experiencia en la aplicacin de la metodologa en administracin de proyectos.

Habilidades gerenciales para la administracin de proyect.

Administracin de las Configuraciones


Software Configuration Managment (SCM).- Disciplina que se encarga de manejar la devolucin de los productos de SW a lo largo de
su vida, desde etapas de desarrollo, hasta que el producto sale del ambiente de su vida.
El diccionario de trminos de IEEE define SCM como el proceso de identificar y definir los tems de configuracin en un sistema,
controlando la entrega y el cambio de estos elementos a travs del ciclo de vida del sistema, almacenando el estado de los tems de
configuracin y de las solicitudes de cambio, y verificando la completitud con respecto a los requerimientos especificados.
El CMM es un modelo de calidad de software, el cual se refiere a la dimensin administrativa de SCM.
La norma ISO 10007 define el objetivo principal de SCM como: Documentar y proveer visibilidad de los productos de software y del
estado de progreso en la satisfaccin de los requerimientos funcionales y fsicos.
Herramietas de soporte a SCM: PVCS, CVS; RCS, Clear Case, ADELE
Administracin de la Configuracin del Software Disciplina que controla los cambios en la evolucin de los sistemas de software.
Su propsito es establecer y mantener la integridad de productos de trabajo utilizando identificacin de configuracin, control de
configuracin, administracin del estado de configuracin y auditorias de configuracin.
Versin: Identifica el estado de un artculo de configuracin o de una configuracin en un momento bien definido.
Configuracin: Para un agregado AC dado, a un conjunto de versiones consistente de sus artculos de configuracin.
Peticiones de Cambio: Reporte formal hecho por un usuario o un desarrollador que solicita una modificacin a un artculo de
configuracin.
Promocin: Versin que se ha puesto a disposicin de los dems desarrolladores.
Lanzamiento: Versin que se ha puesto a disposicin de los clientes o usuarios.
Promocin: Versin que se ha puesto a disposicin de los dems desarrolladores.
Lanzamiento: Versin que se ha puesto a disposicin de los clientes o usuarios.
Versiones del SW
-

Alpha/Alfa: Es la primera versin del programa, la cual es enviada a los verificadores para probarla.
Beta: Una versin beta o lanzamiento beta representa la primera versin completa del programa informtico o de otro
producto, que es posible que sea inestable pero til para que las demostraciones internas y las inspecciones previas
seleccionen a clientes.
Versin candidata a definitiva (RC): Una ms conocida por su nombre en ingls release candidate, comprende un producto
final, preparado para publicarse como versin definitiva a menos que aparezcan errores que lo impidan.
Versin de disponibilidad gl (RTM): La versin de disponibilidad general (tambin llamada "dorada") de un producto es su
versin final. Normalmente es casi idntica a la versin candidata final, con slo correcciones de ltima hora.
Estable/Inestable: En la programacin de cdigo abierto los nmeros de las versiones, o los trminos estable e inestable,
normalmente distinguen las fases del desarrollo.

Deployment: Tambin se le conoce como despliegue, y es cuando ya se entrega el software para ser puesto a produccin. Esto incluye la
entrega e instalacin del software, capacitacin de los usuarios, instalacin del hardware necesario y todas las acciones requeridas para
que el software pueda ser usado.
Funciones Principales de SCM
Identificacin de Configuracin
Mantenimiento del Estado de Configuracin

Control de Configuracin
Auditorias y Revisiones de Configuracin

Funciones relacionadas con el SCM


Build Management: Actividades asociadas al proceso de construir el producto final.
Release Management: Actividades asociadas al proceso de crear el medio de distribucin del producto final.

Beneficios de SCM
-Asegura que se construya el sistema correcto.
-Mejora la productividad de desarrollo de software
-Reduce los defectos
-Agiliza la identificacin de problemas y correccin de errores
-Mantiene historial de problemas y cmo fueron resueltos
Variantes: Versiones funcionalmente equivalentes, pero diseadas para ambientes diferentes
Branch: Es una revisin que surge a partir de una versin de la lnea evolutiva principal (trunk) y evoluciona independientemente
Codeline: Lnea evolutiva de un Agregado de SCM, Contiene cada versin de cada elemento de configuracin contenido en su ruta
evolutiva
Merge: Incorporar cambios realizados en una versin de un branch en una versin del trunk
Labels (Tags): Una versin label es una etiqueta utilizada para identificar una versin de un elemento de configuracin
Archivo de Trabajo (workfile): Archivo utilizado para crear una nueva versin de un elemento de configuracin, estos pueden ser copias
tanto de versiones iniciales como de versiones previamente sacadas del repositorio
Workspace: rea en donde se crean y se mantienen los archivos de trabajo (workfiles), pueden ser pblicos o privados
Check-in: Registra en el repositorio de CM una nueva versin de un elemento de configuracin utilizando un workfile, regularmente
conteniendo cambios sobre una versin anterior
Check-out/Get
Check-out : Extrae del repositorio de CM una versin especfica de un elemento de configuracin para introducir algn cambio
Get : Extrae una versin de un elemento de configuracin para fines de consulta o referencia
Baseline: Una especificacin o producto que ha sido revisado formalmente y arribado a un acuerdo, el cual de ah en adelante sirve de
base para desarrollo posterior y el cual puede ser cambiado slo a travs de procedimientos formales de control de cambios
Promocin (promotion): Mecanismo utilizado para indicar el nivel de madurez o progreso de una versin de elemento de configuracin
o Agregado de SCM
Integracin/Build
Integracin: Combinar elementos de configuracin desarrollados por distintos usuarios para crear el producto final .
Build (Construccin): Actividades asociadas al procesamiento de elementos de configuracin fuentes para construir el producto final
Release (Liberacin): Es una versin que se ha puesto disponible a los usuarios finales
Solicitud de Cambio (SCR): Un SCR (System Change Request) es un formulario fsico o electrnico conteniendo una solicitud de cambio
al sistema originada por un usuario o por un integrante del equipo. Usualmente es el mecanismo utilizado para coordinar la asignacin
de trabajo
Change Control Board (CCB): Analiza y determina si un cambio se va a llevar a cabo.
PRUEBAS DE SOFTWARE
Construccin de software.- Creacin detallada de software operativo mediante Codificacin, Verificacin, Pruebas Unitarias y de
Integracin y Depuracin.
Artefacto de software.- Engloba ficheros de cdigo, casos o archivos de prueba, contenidos.

Lenguajes de construccin: Especifican una solucin a un problema ejecutable por la computadora


Configuracin.- Ejemplo: Software nuevo para Linux o Windows.
Toolkits.- Ejemplo: Scripts o API (cdigo reutilizable)
Programacin.- Tipos: Lingstica, Formal, Visual.
Principios de construccin de software:
Minimizar complejidad (Cdigo sencillo y de calidad)
Anticipar cambios (Actualizar software)
Pensar en verificacin posterior. (Aplicar pruebas y pensar en los fallos)
Aplicar estndares
o Directos:
Usar lenguaje conocido y estndar como c++, java, etc.
Reglas de codificacin.
Notacin en diagramas como UML.
o De proyecto:
Externos.- ISO, ANSI, OMG, IEEE
Internos.- Propios de cada organizacin.
Perspectiva de proceso
Planificacin.- Orden de construccin y asignacin de tareas.
Manejo de Excepciones.- Modificaciones y detalles.
Codificacin.- Cdigo simple, variables significativas, manejo de excepciones, validaciones.
Pruebas.- Unitarias y de Integracin.
Aseguramiento de Calidad
Escribir pruebas primero
Ejecucin lnea a lnea
Usar aserciones.
Depuracin
Revisin
Reutilizacin.- Uso de bibliotecas.
Integracin.- Rutinas, clases y otros componentes que estn incluidos en forma separada.
Revisin.- Tcnica esttica basada en la construccin de software (Arquitectura, Base de diseo, Anlisis de Requerimientos).
Prueba.- Tcnica dinmica basada principalmente en la codificacin y en la ejecucin del programa.
Revisiones de software
Informales.- Inspeccin mnima y superficial, se detectan menos errores.
Semi-formales.- Procedimientos mnimos (walkthroughs)
Formales.- Inspeccin completa y detallada.
Tipos de Pruebas:
Un mdulo: Unitarias -> Verifican el funcionamiento aislado de piezas de software.
Varios mdulos: De integracin -> Interaccin entre componentes. Pueden ser:
Incremental ascendente.- Comienza por pruebas unitarias, siguiendo las ramas de dependencia
en profundidad.
Incremental descendente.- Comienza por un conjunto de mdulos en fases.
Sistema completo: De sistema. Aqu se detectan requisitos no funcionales y fallos funcionales.
Funcionamiento ante hardware: De aceptacin.
Orden: UNITARIAS -> INTEGRACION -> SISTEMA -> ACEPTACION
Pruebas de caja negra.- [Funcionales] Basadas en la entrada/salida que genera el cdigo
Pruebas de caja blanca.- [Estructurales] Basadas en cmo fue codificado el software
Pruebas Ad hoc.- Se generan por la habilidad intuitiva en programas del ingeniero de pruebas.
Pruebas Exploratorias.- Se generan sobre la marcha, es decir, se aprenden.
Criterios de cobertura
1-wise.- Cuando cada valor de la prueba es utilizado al menos una vez como parmetro en un caso.
2-wise.- Cuando un par de valores es utilizado en un caso de prueba como parmetro

DOCUMENTACION EN LINEA
Documentacin en Lnea.- Instrucciones escritas electrnicamente que permiten obtener las prestaciones de las aplicaciones de
software. Objetivos:
Minimizar costos de soporte.
Fomentar autoaprendizaje de usuarios
Minimiza errores de interaccin de usuarios con aplicaciones.
Documentacin en HTML.- Su aparicin oficial fue el 7 de febrero de 1996 en Seattle.
Acceso universal, distribucin de documento.
WorldWideWeb.- Primer navegador web, 1991.

CONVENIOS PARA PONER LLAVES EN UN PROGRAMA


Allman (ANSI C)
while (x == y)
{

K&R
if (some_error) {
do_correct();

something();
somethingelse();
}
Llaves alineadas a la sentencia contenedora.
Banner
function1 () {
do stuff
do more stuff
}
La ultima llave es alineada a las sentencias contenidas. Y
la primer llave incluida en la sentencia contenedora.
BSD KNF
while (x == y) {
something();
somethingelse();
}
La primer llave incluida en la sentencia contenedora y la
de cierre alineada a la sentencia contenedora.
GNU

} else
continue_as_usual();
Las llaves se colocan alineadas a la sentencia
contenedora, sin embargo, en estructuras de control la
sentencia se alinea a la llave de cierre.
White Smith
function some()
{
if(algo)
{
something();
}
}
Llaves alineadas a las sentencias contenidas.
Pico
Function indent(){
Instruccion;}
La primer llave incluida en la lnea de la sentencia
contenedora. La llave de cierre en la misma lnea que la
ultima instruccin;

Horstmann

concat (char *s1, char *s2)

while (x == y)

{ something();
while (x == y)
{
something ();
somethingelse ();
}

finalthing ();
}
Las llaves contenedoras alineadas a la sentencia
contenedora.
Las llaves encontradas adentro de las contenedoras
debern tener espacio de tal manera que queden a la
mitad entre la sentencia contenedora y las sentencias
contenidas

somethingelse();
}
Llaves alineadas a la sentencia contenedora.
La primer instruccin contenida deber ir en la misma
lnea que la primer llave.

REFACTORIZACION
Refactorizacin.- Es una tcnica de la ingeniera del software para efectuar cambios en la estructura interna de un cdigo sin cambiar su
comportamiento externo.
Refactorizacin Pull-Up: Mover un mtodo o variables de una subclase a una superclase.
Refactorizacin Push-down: Mover un mtodo o variables de superclase a una subclase.
ARQUITECTURA DE PROYECTOS DE SOFTWARE
Arquitectura n-Tier : es la distribucin fsica de las capas. Lugar en donde est el cdigo y se ejecutan
los procesos.
Arquitectura n-Layers : es la distribucin lgica de las capas. Es la forma en que est estructurado el cdigo.