Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
IBAGUE
2019
INDICE
INTRODUCCION……………………………………………………………………………………………….….3
OBJETIVOS GENERALES………………………………………………………………………………………..4
OBJETIVOS ESPECIFICOS …………………………………………………………………………………………5
INTRODUCCION A METODOLOGIAS DE DESARROLLO DE SOFTWARE
¿Qué es una metodología de desarrollo de software?...............................................6
¿Qué nos aporta una metodología de desarrollo de software?.................................6
¿Qué metodología escoger?.......................................................................................6
Ciclo de vida del software……………………………………………………………………………………...7
Modelos de metodología…………………………………………………………………………………….…8
ORIENTACION A OBJETOS
INTERFACES……………………………………………………………………………………………………………..15
Interfaces: Aspectos sintácticos………………………………………………………………………………16
Algunas características de las Interfaces son…………………………………………………………….17
Esta interfaz contiene………………………………………………………………………………………………18.
COMPONENTES………………………………………………………………………………………………………..20
¿cómo clasificar componentes? ………………………………………………………………………………21
clasificación de componentes……………………………………………………………………………………22
¿cómo evaluar la calidad de un componente?..............................................................23
tipos de componentes………………………………………………………………………………………………23
CONCLUSIONES…………………………………………………………………………………………………………26
WEBGRAFIA………………………………………………………………………………………………………………27
INTRODUCCION
Una metodología nos permite definir límites; Construir software complejo requiere un gran
esfuerzo: tecnología, dinero y sobre todo personas. Con este informe se quiere dar el inicio
al tema de las metodologías de desarrollo software, con el fin de dar claridad al tema con
respecto a las dudas que se puedan tener; para obtener un buen resultado frente a la
orientación a objetos interfaces y sus componentes.
Mediante a investigaciones y consultas que fueron desarrolladas por la cipa se realizó este
informe lo más claro posible con la intención de entender con claridad el tema.
OBJETIVOS GENERALES
Se busca enseñar que la metodología de desarrollo de software brinda los pasos con
sus respectivos requisitos para un software sea nuevo o modificado.
El ciclo de vida del software es el conjunto de etapas que sigue un proyecto de software
desde su concepción hasta su finalización y cierre, inclusive los mantenimientos (es decir,
cambios o ajustes que puedan producirse una vez está implementado, nuevas versiones,
etc.)
MODELOS DE METODOLOGIA
el estilo del modelo en cascada, es que no podrás avanzar a la siguiente fase, si la anterior
no se encuentra totalmente terminada, pues no tiene por qué haber vuelta atrás. Vamos a
ver cuáles son las fases de desarrollo de software del modelo en cascada, para que te
puedas dar una idea.
2. Diseño del Sistema. Todo lo que conlleva el armado de un diseño para el sistema que
vayas a utilizar, es lo que continua después del análisis de requisitos. Aquí se elaborará lo
que es la estructura del sistema y se determinarán las especificaciones para cada una de las
partes del sistema que se planea desarrollar. Siendo del mismo modo, una fase a la cual ya
no se podrá volver después de haber bajado al nivel 3.
3. Diseño del Programa. En este punto, aún no ingresamos a lo que es la escritura de código,
sin embargo, ya se realizan los algoritmos que se van a utilizar en la programación. Si bien
recuerdas, un algoritmo no necesariamente es código, simplemente tomas una hoja de
papel y escribes el algoritmo que vas a utilizar. Esto es precisamente lo que se realiza en el
paso número 3.
etapas de desarrollo de software por las cuales tendrás que pasar, en caso de utilizar la
metodología de prototipos.
2. Modelado. Nuevamente, una fase que deberá ser suficientemente rápida como para que
nos quite nada de tiempo. Hacer el modelado será simple y te sigo recordando que
solamente es un prototipo, al menos por ahora.
3. Elaboración del Prototipo. Ya que contamos con la planeación de lo que vamos a realizar
y el modelado rápido, entonces es momento de elaborar el prototipo. Para esta instancia,
ya no te diré que lo debes hacer rápido, puesto que te tomará el tiempo que tenga sea
necesario elaborarlo, recuerda que este ya se muestra al cliente, así que ya es una fase
importante.
4. Desarrollo. Posterior a contar con el prototipo elaborado y mostrado al cliente, es
momento de comenzar el desarrollo. Este te tomará una gran cantidad de tiempo,
dependiendo del tamaño del proyecto y el lenguaje de programación que se vaya a utilizar.
5. Entrega y Retroalimentación. Una de las cosas con las que cuenta el modelo de
prototipos, es que, una vez entregado el proyecto, debemos darle al cliente cierta
retroalimentación sobre cómo utilizarlo y ciertamente es una fase que se encuentra dentro
de las etapas de desarrollo de software esta metodología.
7. Entrega del Producto Final. Por último, solamente quedará entregar el sistema elaborado
mediante esta metodología. Aquí tendrás la ventaja de que el código es reutilizable, para
que así con el prototipo ya puedas simplemente empezar de nuevo y con una buena base
de código que te acelerará el proceso.
2. Periodos de Iteración. Durante el desarrollo del proyecto, es cuando damos inicio a las
iteraciones. La primera iteración se realiza con las características iniciales, básicamente al
final de la primera iteración, queda un pequeño prototipo de lo que será el proyecto, pero
se puede volver a inicializar la iteración y realizar modificaciones en los procesos, como el
análisis y las especificaciones o funciones que el usuario final requiere para su sistema. El
número de iteraciones que se realicen son ilimitadas y dependerá tanto del desarrollador
como del usuario final. Si nuestro objetivo es que el cliente o la persona que necesita el
trabajo quede completamente satisfecha, entonces nos veremos en la necesidad de hacer
la cantidad de iteraciones que se requieran al final del día.
3. Lista de Control. Es importante que conforme se vaya realizando cada iteración, se vaya
llevando un control de este en una lista. Como si fuera un programa que recibe
actualizaciones constantemente. Cada una de las actualizaciones o iteraciones deberá ser
documentada y de ser posible, guardada en sus respectivas versiones, para que sea sencillo
volver atrás, en caso de que una iteración no sea exitosa o el usuario ya no la requiera.
Modelo en Espiral
se trata de un modelo evolutivo, que conforme avancen los ciclos, irá incrementando el
nivel de código fuente desarrollado, un incremento en la gestión de riesgos y por supuesto
un incremento en los tiempos de ejecución y planificación del sistema, esto es lo que tiene
el modelo en espiral.
Para que tengas una idea más clara, el modelo en espiral es principalmente utilizado para
el desarrollo de grandes proyectos como la creación de un sistema operativo.
1. Determinar Objetivo. Es importante que siempre consideres una planeación inicial, esta
solo se realizará una vez. Sin embargo, el proceso de determinar objetivos se hará
constantemente durante cada iteración que se vaya realizando con el modelo espiral. Esto
se debe a que poco a poco se irá incrementando más el tamaño del manual de usuario, los
requisitos, las especificaciones e incluso las restricciones. Todo esto entra en lo que es la
tarea de objetivos y con cada vuelta en el espiral entraremos a esta tarea, la cual como
todas las demás, es fundamental.
2. Análisis de Riesgo. Una etapa donde incluso una lluvia de ideas podría ayudar, el análisis
de riesgos. Aquí deberás tener en cuenta todo aquello que pueda dañar a tu proyecto, ya
sea que se trate de ciertas amenazas o de posibles daños que se puedan ocasionar, teniendo
además un Plan B por así decirlo, para que en caso de que ocurra algo inesperado, tener a
la mano la solución para continuar con el proyecto. En esta fase del modelo espiral,
podemos agregar lo que son la creación de prototipos, pues siempre es bueno tener un
respaldo de nuestro código, se esta forma en caso de que algo malo suceda, volvemos a la
versión anterior. Así que cada vez que vayamos a ingresar a la fase de pruebas e
implementación, será necesario contar con un prototipo que nos respalde.
En java cada clase puede tener solo una clase base (en java no hay herencia múltiple).
Se cumple también el principio de sustitución. Instancias de la clase que implementa una I
nterfaz pueden ser usadas donde se espera una instancia de la interfaz. Es similar a usar
una instancia de una subclase cuando se espera un objeto de la clase base.
No se permite crear instancias (objetos) de una Interfaz. Por la misma razón que no se p
uede crear instancias de clases abstractas, no se tienen la implementación. new InterfazX
();
Todos los métodos de una Interfaz son públicos. No es necesario indicarlo.
Pueden incluir constantes. En este caso son siempre public static final.
Se debe de tener en cuenta dos cosas: si la interfaz no existe, debemos definirla y la segunda
es que luego debemos de implementar la interfaz en alguna clase.
Para declarar una o más Interfaces ponemos, a la derecha del nombre de la clase, la palabra
clave "implements" seguido de los nombres de las interfaces separadas por comas.:
También es posible heredar e implementar al mismo tiempo:
Existen ya varios modelos que permiten entender los componentes de software, para poder
encontrar los componentes que determinada aplicación necesita.
¿CÓMO CLASIFICAR COMPONENTES?
La clasificación de componentes es un proceso extenso, ya que un componente involucra
en sí mismo varios atributos relevantes. En este segmento se expone una serie de variables
que podrían considerarse criterios de clasificación de componentes:
CLASIFICACIÓN DE COMPONENTES.
1. Tamaño El tamaño de los componentes puede ser medido por medio de las métricas
utilizadas en diseño orientado a objetos. Esto significa que la medición del tamaño de un
componente puede ser medido a través de:
• Líneas de Código (LDC)
• Orientadas a Función Componentes de Software 6 “Si un componente resulta ser
demasiado grande en tamaño, el proceso de aseguramiento de calidad del mismo será más
complicado y exigente para el desarrollador.
2. Complejidad: En algunas ocasiones, son utilizadas métricas de tamaño para evaluar la
complejidad, pero es recomendable hacer uso de otro tipo de métricas. “Si un componente
es demasiado trivial no podrá sacársele mayor provecho en su reutilización, y si el
componente es demasiado complejo será difícil asegurar su calidad”.
3. Métricas de Complejidad: Las métricas más utilizadas para medir la complejidad de los
componentes, combina uno de los métodos más reconocidos para medir la complejidad de
métodos o algoritmos desarrollado por Tomas McCabe, “Complejidad Ciclomática”, este
método mide el número de decisiones lógicas en un segmento de código. A continuación,
nombramos cuatro diferentes técnicas para medir la complejidad de un componente:
• CPC (Component Plain Complexity): Mide la complejidad del componente por medio de
la suma de clases, clases abstractas e interfaces, la complejidad de clases y métodos.
• CSC (Component Static Complexity): Se centra en la estructura interna del componente
por medio de una visión estática del mismo, utilizando variables como la relación entre las
clases y el peso de cada relación.
• CDC (Component Dynamic Complexity): Se centra en el número de mensajes que pasan
dentro del componente por medio de una visión dinámica, evaluando variables como la
frecuencia en el intercambio de mensajes entre clases y la complejidad de los mensajes.
• CCC (Component Cyclomatic Complexity): Esta medida de complejidad es utilizada cuando
el componente ya ha sido finalizado. Utiliza como variables el código desarrollado, la suma
de las clases, interfaces, métodos definidos en cada una de las interfaces. A diferencia del
método CCC, los métodos anteriores CPC, CSC, CDC utilizan para sus cálculos los diagramas
de clase, la interacción de los diagramas y el diagrama de componentes.
- Mantenibilidad “La mantenibilidad de un sistema es la facilidad con la cual puede ser
modificado frente a cambios en el ambiente, requerimientos funcionales o especificaciones
funcionales”. Para los componentes de software esta es una característica de vital
importancia, ya que su propia naturaleza los obliga a tener la capacidad de adaptarse a
diferentes entornos. Generalmente, las métricas que se utilizan para medir la
mantenibilidad utilizan variables que miden los atributos, el comportamiento y el flujo de
trabajo, entre otros.
-Reusabilidad Componentes de Software 7 La reusabilidad de un componente se puede
medir a partir de dos diferentes perspectivas.
• Cómo puede un componente ser reutilizado: Este tipo de medida tiene en cuenta las
siguientes variables: El número de cada método de interfaz que puede proveer funciones
en común entre varias aplicaciones en un dominio, el número de métodos declarados en la
interface que pertenecen al componente.
• Cómo es re - usado un componente en una aplicación particular: Las variables que se
miden para este objetivo en particular son: Las líneas de código re - utilizadas por el
componente en una aplicación, el total de líneas entregados en la aplicación. La
combinación de estas dos variables resulta el porcentaje de funcionalidad que aporta el
componente dentro de toda la aplicación.
4. Frecuencia de re – uso El número de veces que ha sido utilizado un componente dentro
de distintas aplicaciones, es sin lugar a duda el mejor indicador de frecuencia de re– uso.
Cabe anotar que este atributo puede ser solo medido en componentes que ya han sido
expuestos al mercado.
5. Confiabilidad Es la probabilidad de falló en el funcionamiento del componente dentro de
cierto escenario operacional.
¿CÓMO EVALUAR LA CALIDAD DE UN COMPONENTE?
“La calidad dentro de la Ingeniería de Sistemas se define como la totalidad de aspectos y
características de un producto o servicio que tiene que ver con su habilidad de satisfacer las
necesidades declaradas o implícitas”. La calidad de los componentes de software puede ser
el factor decisivo para la selección de los componentes que entrarán a ser parte de un nuevo
sistema, es decir, si dos componentes son candidatos para hacer parte de una aplicación y
muestran la misma funcionalidad, el nivel de calidad que implemente cada uno de ellos será
el elemento sobre el cuál se base la decisión final. Algunos de los elementos que pueden
dar al usuario una idea del nivel de calidad de un componente son:
• Funcionalidad
• Interfaz
• Usabilidad
• Pruebas
• Seguridad
TIPOS DE COMPONENTES
Framework: Los frameworks de componentes proporcionan servicios que soportan un
modelo de componentes. Estos modelos de componentes son patrones que permiten
interactuar entres si de acuerdo al problema que resuelven y permiten la extensibilidad del
framework y su funcionalidad, estos son aplicados a dominios específicos, lo cual hace que
el framework también lo sea, se dice que un framework es una aplicación incompleta y
Componentes de Software genérica, sobre la cual las aplicaciones que se implementan (las
que soporta) son las que le dan el estado final definiendo una funcionalidad específica y
propia. Las principales ventajas que ofrecen los frameworks son la reducción del costo en
el proceso de desarrollo de aplicaciones software para dominios específicos, y la mejora de
la calidad del producto final. Existen tres tipos de Frameworks, los Frameworks de caja
blanca exigen al usuario un conocimiento muy profundo de su estructura interna y pueden
llevar aparejados los problemas que acarrea la herencia, como pueden ser las anomalías de
la herencia. Por otro lado, los Frameworks de caja negra enfrentan problemas de la
programación orientada a componentes, como son la composición tardía o la clarividencia
(previsión de los posibles usos futuros del Framework). Esto significa que cualquiera de los
dos necesita de un entendimiento técnico del framework sobre el cual se quiere trabajar y
una previa evaluación de sus características principales y su descripción. La elección de un
framework es un proceso de ingeniería de software y de este depende el producto final que
se quiera desarrollar. La mala elección de éste conllevará a un desarrollo complejo y fuera
del domino. Es necesario integrar los conceptos de DSBC y la ingeniería de dominio para
llegar a un desarrollo satisfactorio. Utilizar un Framework no es una tarea que se debe
tomar a la ligera, es necesario la utilización y condensación de conocimientos para que este
pueda ser utilizado como un componente. No es necesario conocer todos los tipos de
Frameworks existentes, pero sí es necesario saber cómo éstos ofrecen sus servicios. La
arquitectura de los Frameworks se basa en el uso de patrones de software, los cuales
simplifican su construcción y permiten su extensión, los patrones no solo se convierten en
los constructores del framework, sino que constituyen la manera de interactuar con este.
La manera más común de desarrollar una aplicación sobre un framework es a través de los
patrones, los cuales por medio de sus interfaces nos permiten interactuar con él y adaptarlo
a la aplicación.
Bussines Component: Los componentes de negocio, son aquellos componentes
especializados en prestar alguna clase de servicio, enfocado a un dominio en particular. Los
componentes de negocio son aquellos componentes que generan el valor agregado y se
enfocan a las necesidades de los clientes. Un componente de negocio es aquel que realiza
o provee al cliente de la funcionalidad necesaria en su aplicación para resolver sus
necesidades y cumplir con sus requerimientos. Este tipo de componentes se sitúan por lo
general en el último escalafón dentro del desarrollo basado en componentes, ya que estos
son los que darán la funcionalidad propia del negocio a la aplicación, estos componentes
están soportados por lo general bajo un framework en particular, el cual permite que el
componente de negocio se desempeñe y cumpla con su objetivo, lo cual implica que
además de las características propias de un componente de software, tenga también las
características adicionales del framework sobre el cual está soportado. Un componente de
negocio no le da particularidad a una aplicación, ni realiza Componentes de Software 9 por
sí solo la funcionalidad de una aplicación; es la integración entre el framework y por lo
general varios componentes de negocio, los que le dan la particularidad de todo un
desarrollo. Los componentes de negocio permiten interactuar con otros a través de
protocolos ya estandarizados inherentes al framework sobre el cual están soportados,
como por ejemplo J2EE. Los componentes de negocio necesitan de un nivel de
especificación más allá del establecido por el framework o los patrones. Los niveles de
especificación de los componentes de negocio resultan útiles, ya que cada nivel se enfoca
a un aspecto de la especificación del negocio y direcciona diferentes roles en el desarrollo
como desarrollador de componentes, documetador, jefe de proyecto, etc. Esto ayuda en la
búsqueda del componente necesario que se adapte al dominio y prevea la funcionalidad
que se busca, desde diferentes niveles de conocimientos. Existen siete distintos niveles,
cada uno con un aspecto en específico direccionado al negocio:
Nivel de Marketing: Características de la organización y el negocio, condiciones técnicas.
Nivel de tarea: Ayuda a las tareas del negocio que corresponden al dominio de la aplicación.
Propósito de la aplicación.
Nivel de terminología: Definición de conceptos del dominio de la aplicación.
Nivel de Calidad: Criterios de calidad, procedimientos y categorías de medidas, niveles de
servicio.
Nivel de interacción: Secuencias de dependencias a través de servicios del mismo
componente de negocio y de diferentes componentes de negocio.
Nivel de Comportamiento: Pre y postcondición, invariantes.
Nivel de Interfaces: Servicios, parámetros, tipos de datos y excepciones. Por medio de estos
niveles la búsqueda de un componente de negocio resulta más rápida y fácil, acelerando el
proceso de DSBC.
CONCLUSIONES
Este informe nos da a conocer lo que aporta la metodología de desarrollo de software y así
mismo sus fases ya que cada una organiza a la metodología con la ejecución de una o más
iteraciones. Los resultados de la investigación de la metodología del diseño de software son,
hacer saber que el ciclo de vida del software es el conjunto de etapas que sigue un proyecto
desde su concepción hasta su finalización y cierre, es tener en claro que cuenta con
enfoques los cuales se desarrollan en varias metodologías específicas, es saber que el uso
del diseño orientado a objetos induce a desarrolladores y programadores a pensar en
términos objetivos en vez de procedimiento cuando planifican el código y así lograr con
éxito el desarrollo y la ejecución de nuestro software.
WEB GRAFÍA
http://ima.udg.edu/~sellares/EINF-ES2/Present1011/MetodoPesadesDocumentacio.pdf
(INTRODUCCIÓN DE DESARROLLO DE SOFTWARE)
https://okhosting.com/blog/metodologias-del-desarrollo-de-software/
(METOLOGIAS DE SOFTWARE)
http://picarcodigo.blogspot.com/2012/10/interfaces.html
(EXPLICACIÓN DE INTERFACES)
http://profesores.elo.utfsm.cl/~agv/elo329/1s10/lectures/JavaInterfaces_InternalClasses.
pdf
(TEMA INTERFACES)
http://pegasus.javeriana.edu.co/~jcpymes/Docs/DSBC.pdf
(TEMA COMPONENTES)
https://www.google.com/search?q=metodologia+de+desarrollo+de+software&rlz=1C1NH
XL_esCO686CO686&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjBvcO51KfhAhXLx1kKH
WepD-MQ_AUIDigB&biw=1366&bih=625#imgrc=z6GDvTCxlDHpnM:
(IMAGEN DE METODOLOGIA DE DESARROLLO DE SOFTWARE)
https://www.google.com/search?rlz=1C1NHXL_esCO686CO686&biw=1366&bih=625&tb
m=isch&sa=1&ei=4DieXPzILcLX5gLYrbiADw&q=modelo+de+cascada&oq=MODELO+&gs_l=
img.1.4.35i39l2j0i67l5j0l2j0i67.109296.110552..113763...0.0..0.229.1322.0j5j2......1....1..g
ws-wiz-img.IHYaA0ibei4#imgrc=8v52uYL4PD07gM:
(IMAGEN DE MODELO METODOLOGIA DE CASCADA)
https://www.google.com/search?rlz=1C1NHXL_esCO686CO686&biw=1366&bih=625&tb
m=isch&sa=1&ei=VDmeXPXVH8XI5gL3sL-
gDw&q=METODO+PROTOTIPOS&oq=METODO+PROTOTIPOS&gs_l=img.3..0i8i30.73183.8
5729..86024...0.0..0.237.2770.0j16j1......1....1..gws-wiz-
img.......35i39j0i67j0j0i24.essMiAKEe0U#imgrc=In9lGP2GlnMtkM:
(IMAGEN DE MODELO METODOLOGIA DE PROTOTIPOS)
https://www.google.com/search?rlz=1C1NHXL_esCO686CO686&biw=1366&bih=625&tb
m=isch&sa=1&ei=qzmeXIPdOdCHggf1oZ_4DQ&q=METODO+INCREMENTAL&oq=METODO
+INCREMENTAL&gs_l=img.3..0l2j0i24l5.149985.152922..153661...0.0..0.257.2050.0j10j1...
...1....1..gws-wiz-img.......0i8i30.iYIQtar4y4w#imgrc=07WSCyLH1X23BM:
(IMAGEN DE MODELO METODOLOGIA INCREMENTAL)
https://www.google.com/search?rlz=1C1NHXL_esCO686CO686&biw=1366&bih=625&tb
m=isch&sa=1&ei=RjqeXNDpKsKO5wLMmaSoDw&q=METODO+ESPIRAL&oq=METODO+ESP
IRAL&gs_l=img.3..0l3j0i8i30l3j0i24l3.27795.29653..30102...0.0..0.217.1214.0j6j1......1....1..
gws-wiz-img.......0i10i24.IJ6wuWp0d6Y#imgrc=bEdkkbQQMfmMPM:
(IMAGEN DE MODELO METOLOGIA EN ESPIRAL)
https://www.google.com/search?rlz=1C1NHXL_esCO686CO686&biw=1366&bih=625&tb
m=isch&sa=1&ei=AzueXI6vNI2n5gKM-
L34Dw&q=metodologia+rad+fases&oq=METODOLOGIA+RAD+&gs_l=img.1.0.0j0i30j0i24l7.
41901.41901..43045...0.0..0.172.172.0j1......1....1..gws-wiz-img.q29kEVRlNaw#imgrc=Sm-
Xrl_BRYDGgM:
(IMAGEN DE MODELO ETODOLOGIA DE RAD)