sintesis

¿Por qué?

¿Qué?

Conceptos Recurrentes

  • son ideas, preocupaciones, principios y procesos significativos que ayudan a unificar una disciplina académica

    • Cada concepto recurrente enumerado en este artículo

      • Ocurre a lo largo de la disciplina

      • Tiene una variedad de instanciaciones

      • Tiene un alto grado de independencia tecnológica

    • Claramente, al diseñar un currículo particular, estos conceptos recurrentes deben ser comunicados de manera efectiva

      • es importante señalar que el uso adecuado de los conceptos recurrentes es un elemento esencial en la implementación de planes de estudio y cursos basados en las especificaciones dadas en este artículo.

sintesis

¿Para qué?

  • Una apreciación de la omnipresencia de estos conceptos y la capacidad de aplicarlos en contextos apropiados es un indicador de la madurez de un graduado como científico o ingeniero informático

la mayoría de las técnicas que recomendamos son universales: la modularidad aplica al código, al diseño, a la documentación a la organización, por ejemplo
— Andrew Hunt David Thomas
The Pragmatic Programmer
a los requisitos, al análisis, a las pruebas, al despliegue, a la gestión, …​s
— Autor
Plano del Producto Software Disciplinas del Software Modelo (conjunto) Abstracción (unidad) Asociación Orden …​

Dominio del mundo real o virtual del negocio/ocio

Modelo del Dominio

Modelo del Dominio

Tipo de Entidad

Composición, Asociación

Estados de un Pedido

…​

Abstracción del Producto software, vista de casos de uso

Requisitos

Jerarquía de Paquetes

Casos de Uso

Inclusión y Extensión

Especificación de Caso de Uso

…​

Resumen de Implementación del producto software, sin y con tecnologías, vista lógica

Análisis/Diseño

Jerarquía de Paquetes

Clases

Agregación y Uso

Top Down vs Bottom Up

…​

Implementación del producto software, tiempo de compilación, vista de implementación

Implementación

Jerarquía de Paquetes

Clases

Dependencia

Funciones síncronas y asincronas

…​

Ejecucuión del producto software en desarrollo y pre-producción, tiempo de ejecución

Pruebas

Jerarquía de Paquetes

Clases

SUT y DOC

Aleatoriedad

…​

Ejecución del producto software en producción, tiempo de ejecución, vista de despliegue

Despliegue

Jerarquía de Componentes

Artefacto

Versión

Publicación

…​

Organización de las actividades en el calendario para crear el producto software de los requisitos

Gestión

Fases/Iteraciones

Actividad/ Vertical Slicing

Rol y Artefacto

Riesgos

…​

¿Cómo?

Concepto Recurrente Definición Ejemplos

Modelos conceptuales y formales

  • Diversas formas de formalizar, caracterizar, visualizar y pensar una idea o problema.

  • modelos formales en lógica,

  • teoría de conmutación y teoría de la computación,

  • paradigmas de lenguajes de programación basados ​​en modelos formales,

  • modelos conceptuales como tipos de datos abstractos y modelos de datos semánticos, y

  • lenguajes visuales utilizados para especificar y diseñar sistemas, como el flujo de datos y diagramas entidad-relación.

Niveles de abstracción

  • La naturaleza y el uso de la abstracción en la informática; el uso de la abstracción para gestionar la complejidad, estructurar sistemas, ocultar detalles y capturar patrones recurrentes; la capacidad de representar una entidad o sistema mediante abstracciones que tienen diferentes niveles de detalle y especificidad.

  • niveles de descripción de hardware,

  • niveles de especificidad dentro de una jerarquía de objetos,

  • la noción de genéricos en lenguajes de programación y

  • los niveles de detalle proporcionados en la solución de un problema a partir de especificaciones a través del código.

Asociación

  • Los procesos de hacer una abstracción más concreta al asociarle propiedades adicionales.

  • asociar (asignar) un proceso con un procesador,

  • asociar un tipo con un nombre de variable,

  • asociar un programa de objeto de biblioteca con una referencia simbólica a un subprograma,

  • instanciar en programación lógica,

  • asociar un método con un mensaje en un lenguaje orientado a objetos,

  • creando instancias concretas a partir de descripciones abstractas.

Complejidad

  • Los efectos del no lineal aumentan en complejidad a medida que aumenta el tamaño de un problema.

  • Este es un factor importante para distinguir y seleccionar métodos que se adapten a diferentes tamaños de datos, espacios de problemas y tamaños de programas.

  • En grandes proyectos de programación, es un factor que determina la organización de un equipo de implementación.

Ordenar en el espacio

  • Los conceptos de localidad y proximidad en la disciplina de la informática.

  • ubicación física, como en las redes o la memoria,

  • ubicación organizacional (por ejemplo, de procesadores, procesos, definiciones de tipo y operaciones asociadas) y

  • ubicación conceptual (por ejemplo, alcance, acoplamiento y cohesión del software).

Ordenar en el tiempo

  • El concepto de tiempo en el orden de los eventos.

  • parámetro en modelos formales (por ejemplo, en la lógica temporal),

  • sincronizar procesos que se extienden por el espacio,

  • ejecución de algoritmos.

Compromisos y consecuencias

  • El fenómeno de los compromisos en la informática y las consecuencias de dichos compromisos. Los efectos técnicos, económicos, culturales y de otro tipo de seleccionar una alternativa de diseño sobre otra. Los compromisos son un hecho fundamental de la vida en todos los niveles y en todas las áreas temáticas.

  • compromisos de espacio-tiempo en el estudio de algoritmos,

  • compromisos inherentes a objetivos de diseño en conflicto (por ejemplo, facilidad de uso versus integridad, flexibilidad versus simplicidad, bajo costo versus alta confiabilidad, etc.),

  • compromisos de diseño en hardware y

  • compromisos implícitas en los intentos de optimizar la potencia informática frente a una variedad de limitaciones.

Eficiencia

  • Medidas de costo en relación con recursos como espacio, tiempo, dinero y personas.

  • evaluación teórica de la complejidad espacial y temporal de un algoritmo,

  • la viabilidad, la eficiencia con la que se puede lograr un determinado resultado deseable (como la finalización de un proyecto o la fabricación de un componente) y

  • eficiencia de un determinado resultado

Reutilización

  • La capacidad de una técnica, concepto o sistemas en particular para responder de manera adecuada para ser reutilizada en un nuevo contexto o situación.

  • probabilidad, la reutilización de bibliotecas de software y componentes de hardware,

  • tecnologías que promueven la reutilización de componentes de software y

  • abstracciones de lenguaje que promueven el desarrollo de módulos de software reutilizables.

Coherencia e integridad (Eficacia)

  • Realizaciones concretas de los conceptos de coherencia e integridad en la informática, incluidos conceptos relacionados como corrección, solidez y fiabilidad.

  • Conjunto de axiomas que sirven como especificación formal,

  • la coherencia de la teoría con los hechos observados y

  • la coherencia interna de un lenguaje o diseño de interfaz,

  • Comportamiento del componente o del sistema con las especificaciones establecidas.

  • la adecuación de un conjunto dado de axiomas para capturar todos los comportamientos deseados,

  • la adecuación funcional de los sistemas de software y hardware, y

  • la capacidad de un sistema para comportarse bien en condiciones de error y situaciones imprevistas.

Seguridad

  • La capacidad de los sistemas de software y hardware para responder de manera adecuada y defenderse de solicitudes inapropiadas e imprevistas; la capacidad de una instalación de computadora para resistir eventos catastróficos (por ejemplo, desastres naturales e intentos de sabotaje).

  • verificación de tipos y otros conceptos en lenguajes de programación que brindan protección contra el uso indebido de objetos y funciones de datos,

  • cifrado de datos, otorgamiento y revocación de privilegios por parte de un sistema de administración de bases de datos,

  • características en las interfaces de usuario que minimizan los errores del usuario, medidas de seguridad física en la computadora

Evolución

  • El hecho del cambio y sus implicaciones. El impacto del cambio en todos los niveles y la resiliencia y adecuación de abstracciones, técnicas y sistemas frente al cambio.

  • modelos formales para representar aspectos de los sistemas que varían con el tiempo, y

  • capacidad de un diseño para resistir las demandas ambientales cambiantes y los requisitos,

  • herramientas e instalaciones cambiantes para la gestión de la configuración.

Itinerario

desarrollo
  • 1. Patrones

    • Modelos

    • Abstracción

    • Reusabilidad

  • Valores vs Objetos vs Clases

  • Datos vs Algoritmo. Estructura

  • Recursivo vs Recurrente vs Iterativo

  • Lenguaje de Modelado

  • 2. Concocimiento

    • Orden

    • Enlace

    • Eficacia

    • Seguridad

    • Evolución

  • Dato vs Información vs Conocimiento

  • Lenguajes formales

  • Modelo Orientado a Objetos

  • 3. Complejidad

    • Complejidad

    • Compromisos

    • Eficiencia

  • Árbol vs Jerarquía Grafo

  • Abstracción, Encapsulación, Modularidad y Jerarquía.

  • Cohesión y Acoplamiento. Granularidad

  • 4. Software

    • Paradigmas del Software

    • Proyecto Software

    • Crisis del Software

  • Requisitos, Coste, Tiempo, Calidad

  • Calidad. Mantenibilidad

  • Viscosidad, Rigidez, Fragilidad e Inmovilidad

  • 5. Disciplinas del Software

    • Modelo del Dominio y Requisitos

    • Programación y Diseño/Análisis

    • Pruebas y Despliegue

  • Casos de Uso vs Historias de Usuario. DDD

  • Análisis de Casos de Uso vs Vertical Slicing

  • Ecosistema y devop

  • 6. Desarrollo del Software

    • Procesos en Cascada vs Iterativa

    • Procesos Pesados vs Ágiles

  • Fases e Iteraciones vs Sprints

  • RUP vs XP+Scrum

  • TFD vs TDD

  • 7. Aplicaciones del Software

    • Información

    • Sistemas de Información

    • Sistemas de Información en Red

  • Hipertextos, Hipermedia. Estándares

  • Sistemas Operativos e Interfaces de Usuario

  • Interfaces de Comunicaciones y Sistemas Gestores de Bases de Datos

  • 8. Aplicaciones Web

    • Internet vs World Wide Web

    • Web 1.0

    • Web 2.0

  • Clientes Ligeros vs Pesados

  • Front-End vs Back-End

  • Trasparencia, Honestidad, Confianza y Prestigio

Sintesis

sintesis

sintesis

Bibliografía

Obra, Autor y Edición Portada Obra, Autor y Edición Portada

Ponente

  • Luis Fernández Muñoz

setillo

  • Doctor en Inteligencia Artificial por la UPM

  • Ingeniero en Informática por la UMA

  • Diplomado en Informática por la UPM

  • Profesor Titular de ETSISI de la UPM