Please enable JavaScript.
Coggle requires JavaScript to display documents.
Proyecto de Software - Coggle Diagram
Proyecto de Software
Lenguaje de programación orientada a objetos (Java)
se define como un paradigma que permite realizar una abstracción de la realidad, que se puede implementar en una aplicación de software con el fin de resolver problemas mediante el uso de un lenguaje de programación.
Clasificación de métodos
consultores
Modificadores
constructores
Analizadores
Sobrecarga de métodos
es una característica que permite que varios métodos en una misma clase tengan el mismo nombre. La forma en que el compilador identifica cuál es el método a utilizar en tiempo de ejecución, se debe a que estos deben poseer diferentes parámetros y/o retorno.
Sentencia final
Hace referencia a constantes que no pueden cambiar su valor entiempo de ejecución de la aplicación
Recursividad
La recursividad es la característica en la programación que permite hacer un llamado a un método desde el mismo método. Esta característica simplifica el desarrollo.
sentencia static
Define estos atributos y métodos de tal forma que puedan ser accedidos sin requerir una instancia de la clase
Bajo acoplamiento
Es la característica en el paradigma de orientación a objetos que indica que los diferentes subsistemas deben estar unidos de forma mínima.
Objeto
Es la referencia e instancia de una clase
Alta Cohesión
Es la característica en el paradigma de orientación a objetos que indica que, las propiedades y servicios de una clase deben ser consistentes con el concepto que abstrae dicha clase.
Clase
se define como un punto de abstracto
Métodos
visibilidad
Retorno
Nombre
Parámetros
Encapsulamiento
indica que los atributos que definen propiedades propias dé la clase debe tener visibilidad private
Visibilidad
private
public
protected
Apuntador this
permite acceder a los atributos y métodos de la clase
Atributos
características que se le incluyen a la clase
Manejo de excepciones
Estructura try, catch y finally
Sentencia throws
Excepciones estándar del API de Java
.
Creación de excepciones en Java
Paquete
Es un contenedor de clases
Java.io
Java.beans
Java.lang
Java.math
Java.beans.beancontext
Java.net
Java.awt.print
Java.rmi
Java.awt.image
Java.security
Java.awt.geom
Java.sql
Java.awt.font
Java text
Java.awt.color
Java.util
Java.awt
Java.applet
Tecnología orientadas a objetos
Conceptos Básicos
Conceptos de programación orientada a objetos
Ofrece dos ventajas
La primera es permitir al programador que organice su programa de acuerdo con abstracciones de más alto nivel, siendo éstas más cercanas a la manera de pensar de la gente.
La segunda es que los datos globales desaparecen, siendo éstos junto con las funciones parte interna de los objetos
Revisión del problema del año 2000 (Y2K)
Al llegar el año 2000 y reconocer la deficiencia en los dos dígitos correspondientes al año, en la estructura interna del objeto Fecha, se habrían cambiado éstos de dos a cuatro dígitos
Conceptos de la programación tradicional
Programación tradicional o estructurada: datos y funciones globales.
Programación y Lenguajes Orientados a Objetos
aspectos que mejoran la calidad de los sistemas.
Abstraccion
consiste en elevar el nivel de las representaciones necesarias para un sistema de software, de manera que se reduzcan los detalles
Modularidad
permite dividir un sistema en componentes separados.
Extensibilidad
corresponde a la facilidad en modificar un sistema durante el transcurso de su vida.
Reutilizacion
o reúso de componentes es otro de los mecanismos importantes para administrar la complejidad del software.
características esenciales para que un lenguaje se considere orientado a objetos.
Clasificación
permite organizar objetos de acuerdo con estructuras comunes
Generalización
Así como los objetos pueden organizarse como miembros de una misma clase, podemos también organizar a las propias clases de los objetos de acuerdo con sus datos y funciones comunes.
Encapsulación
mecanismo básico de la programación orientada a objetos para ocultar los detalles internos del objeto de los demás objetos
Polimorfismo
Mediante el polimorfismo se definen múltiples funciones con nombres e interfaces similares sólo que en distintas clases.
Lenguajes de Programación
Al igual que los lenguajes de programación tradicionales varían en sus estructuras y flujos de control, de manera similar también cambian los lenguajes de programación orientados a objetos.
algunos lenguajes de programación orientadas a objetos son
1962 SIMULA, 1972 SMALLTALK, 1980 MODULA, 1983 ADA, 1983 OBJETIVE, 1983 BETA, 1985 C++, 1986 EIFFEL, 1986 SELF, 1990 HASKELL, 1992 DYLAN, 1993 JAVA, 2000 C#.
Proceso de software
Calidad de Software y Modelos de Madurez del Proceso
Organización internacional para la estandarización (iso)
ISO-900046 . Es una familia de normas internacionales relacionadas con la administración de la calidad en productos y servicios
ISO-1220747 . Es una familia de normas internacionales relacionadas con la administración de la calidad en los procesos del ciclo de vida del software
ISO-15504. (Ver sección 3.4.5.)
Mejora de proceso de software y determinación de la capacidad (iso-15504/spice)
Parte 2 – modelo de referencia de procesos y capacidad.
Parte 3 – realización de evaluación.
Parte 4 – guía para realización de evaluación.
Parte 5 – modelo de evaluación y guía de indicadores
Parte 6 – guía para calificación y entrenamiento de asesores
Parte 9 – vocabulario.
Parte 8 – guía de uso para determinar la capacidad del proceso de un proveedor.
Parte 7 – guía para uso en mejora del proceso.
Parte 1 – conceptos y guía introductoria.
Modelo de madurez ingeniería de desempeño (pemm)
(PEMM, Performance Engineering Maturity Model)48 sirve para evaluar los niveles de integración, aplicación, ejecución y diseño, de la ingeniería de desempeño como modelo de mejora de proceso
Proceso de software en equipos (tsp)
Desarrollar productos en varios ciclos.
Proporcionar métricas para equipos.
Ofrecer guías para la solución de problemas en equipos.
Evaluar roles y equipos
TICKLT
Ticklt,49 desarrollado por el departamento de comercio e industria del Reino Unido, es primordialmente una guía con estrategias para lograr la certificación en la producción de software según los estándares ISO-9000.
Proceso de software personal (psp)
PSP2 (i) introduce las actividades de detección temprana de defectos mediante revisiones de diseño, código y uso de listas de verificación. PSP2.1 (i) introduce formas para el diseño detallado, facilitando la revisión del diseño
PSP1 (i) mejora la planeación introduciendo la estimación del tamaño del producto y (ii) introduce los reportes de pruebas. PSP1.1 (i) introduce las estimaciones de recursos y (ii) introduce la calendarización.
PSP3 (0 introduce el proceso cíclico para crear programas de mayor tamaño, (ii) introduce el registro de seguimiento de asuntos y (iii) lleva el resumen de planeación y registro de tiempo, tamaño y defectos por ciclo
PSPO (i) define el proceso de trabajo personal identificando y ordenando las principales actividades; (ii) introduce la recolección de datos para medir la productividad y calidad a través del registro de tiempos y defectos; (iii)
Modelo de madurez de capacidades (cmm)
Inicial: Procesos disciplinados
Repetible: Procesos estandarizados
Definido: Procesos predecibles
Administrado: Procesos de mejora continua
Optimizado
El producto correspondiente al sistema a ser desarrollado.
El proceso seguido para el desarrollo del producto final.
El desarrollador es responsable del proceso de producción y de asegurar la calidad del producto.
El cliente o usuario es el participante primordial en el proceso de desarrollo del producto y responsable de definir los requisitos del producto final.
Modelos Clásicos
Cascada
especificacion de requisistos
Analisis
Diseño
implementación
pruebas parciales
integración
1 more item...
Evolucionarlo
Se permite entregar parte del sistema como herramienta para la generación de requerimientos faltantes.
Se obtienen beneficios para el sistema mediante entregas iniciales, mientras las entregas posteriores están en desarrollo
Se entrega temprano parte del sistema, aunque no estén completos todos los requerimientos
Incremental
es un desarrollo inicial de la arquitectura completa del sistema, seguido de incrementos y versiones parciales del mismo.31 Cada incremento tiene su propio ciclo de vida. Cada incremento agrega funcionalidad adicional o mejorada sobre el sistema.
Espiral
El desarrollo se incrementa en cada etapa, permitiendo prototipos sucesivos del producto.
Basado en la evaluación de soluciones alternas, se usan las herramientas que mejor reduzcan los riesgos.
Una actividad comienza cuando se entienden los objetivos y riesgos involucrados.
Todo el personal relacionado debe involucrarse en una revisión que determine cada actividad, planeando y comprometiéndose con las siguientes actividades
Modelos Recientes
GANAR-GANAR
(win-win)34 extiende el modelo de espiral, haciendo énfasis en la identificación de las condiciones de ganancia para todas las partes, creando un plan para alcanzar las condiciones ganadoras y los riesgos correspondientes
Programación extrema (XP)
(XP, extreme Programming)35 es un modelo de proceso de software que toma los principios y prácticas aceptadas, y las lleva a niveles extremos.
Proceso unificado
Estos modelos de proceso se basan principalmente en la especificación de requerimientos de un sistema mediante casos de uso.
Modelo de Proceso
Metodos y metodologias
Los métodos definen las reglas para las transformaciones internas de las actividades, mientras que las metodologías definen el conjunto de métodos
Dominio de aplicabilidad.
Ciclo de vida.
Información recopilada.
Extensibilidad.
Modelos generados.
confianza
Manejo de consistencia.
Integración
Escalabilidad.
Notaciones.
Estructuradas
Diagramas de flujo de datos.
Diagramas de transición de estados.
Diagramas de entidad-relación.
Orientadas a objetos
Diagramas de transición de estado.
Diagramas de secuencia
Diagramas de clases.
Diagramas de colaboración.
Diagramas de casos de uso
Diagramas de subsistemas
Estrategias
Prototipos verticales.
Consumo de componentes reutilizables.
Prototipos de diseño.
Prototipos de análisis.
Producción de componentes reutilizables.
Prototipos de requisitos.
REUTILIZACIÓN
Prototipos de factibilidad.
Arquitectura
define la estructura general de un sistema y varía de acuerdo con el tipo de sistema a desarrollarse.
Transformación en lote (batch).Un ejemplo de un sistema de este tipo es un compilador.
Transformación continua.Ejemplos de éstos son los sistemas de control de señales.
Sistemas interactivos. Ejemplo un click del ratón o la presión de una tecla.
Simulación dinámica. Ejemplos de estos sistemas son simuladores de sistemas financieros, redes neuronales
Sistemas de tiempo real. Ejemplos de estos sistemas son los controladores de procesos industriales y dispositivos de comunicación.
Administración de transacción.Ejemplos de estos sistemas son los de reservaciones de vuelos y los de control de inventario.
Actividad
(i) requisitos para especificar los aspectos funcionales del sistema, que describen cómo interactuaría un usuario con la aplicación.
(ii) análisis para dar al sistema una estructura o arquitectura robusta y extensible independiente del ambiente de implementación final.
(iii) diseño para adoptar y refinar la arquitectura del sistema y adaptarla al ambiente de implementación específico.
(iv) implementación para codificar el sistema.
(v) integración para combinar componentes del sistema.
(vi) pruebas para validar y verificar el sistema.
(vii) documentación para describir los diversos aspectos del sistema.
(viii) mantenimiento para extender la funcionalidad del sistema.
Herramientas
Las herramientas son aplicaciones que apoyan la administración del proceso de software. El conjunto de estas herramientas se conoce como ingeniería de software asistida por computadora (CASE, Computer-Aided Software Engineering), cuyo objetivo es asistir al desarrollador durante las diferentes actividades del ciclo de vida del proceso de software
Costo y Complejidad del Software
El costo indirecto para utilizar el software
El costo oculto ocasionado principalmente por las fallas del software
Fallas en el sistema de software
Ejemplos: Fracaso del Mariner 1 (1962), Sobregiro del Bank of New York (1985), Accidente de un F-18 (1986).
consecuencias
Consecuencias a mediano y largo plazo y efectos indirectos.
Consecuencias inmediatas y efectos directos.
Sobrecostos, Retrasos y cancelaciones en los sistemas de software
(i) Participación del usuario.
(ii) Apoyo de la administración ejecutiva.
(iii) Clara especificación de requerimientos.
El costo directo para adquirir el software
Complejidad del software
Software suficientemente bueno
La bala de plata
Confiabilidad del software
Ciclo de vida del software