Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Semana 7
DESARROLLO DE SOFTWARE
➢ Sistemas Operativos
Logro de aprendizaje de la sesión
➢ DESARROLLO DE SOFTWARE
✓ Arquitectura de software
✓ Lenguajes de Programación
✓ Paradigmas de Programación
✓ Versionamiento Git
DESARROLLO DE SOFTWARE
Proceso de desarrollo de aplicaciones software
Un proceso de desarrollo de software es la descripción de
una secuencia de actividades que deben ser seguidas por un
equipo de trabajadores para generar un conjunto coherente
de productos, uno de los cuales es el programa del sistema
deseado.
El objetivo básico del proceso es hacer predecible el trabajo
que se requiere:
➢ Predecir el costo.
➢ Mantener un nivel de calidad
➢ Predecir el tiempo de desarrollo
Naturaleza de las aplicaciones software
Modelo Túnel:
➢ Ausencia de modelo
➢ No hay ningún control
➢ Sólo válido en proyectos muy pequeños.
Modelo en cascada
Problemas del proceso en cascada
Descripción de arquitectura
Producto de trabajo explícito que expresa una arquitectura de
un sistema, normalmente a través de modelos, texto o
gráficos.
Diseñar una arquitectura (architecting)
Proceso de crear una arquitectura
Arquitectura vs diseño
Arquitectura se enfoca en estructura de alto nivel de un
sistema de software.
2ª ley:
Porqué es más importante que cómo
Cuestionar todo
Documentar decisiones tomadas
Proceso de diseñar una arquitectura
Dominio del problema Dominio de la solución
ARQUITECTO
Diseño de la
Arquitectura
(ENTRADAS) (SALIDA)
Motivaciones proceso de arquitectura
Entradas
✓ Objetivos de diseño
✓ Requisitos funcionales
✓ Atributos de calidad
✓ Restricciones
Preocupaciones
Objetivos de diseño
Ejemplos:
Propuesta de pre-venta: diseño rápido de una solución
inicial para obtener una estimación.
Sistema a medida con un tiempo y coste establecido que
no puede variar mucho una vez enviado.
Incremento nuevo ó versión de un sistema que está
continuamente evolucionando.
Requisitos funcionales
➢ Funcionalidad que debe soportar los objetivos de negocio
➢ Lista de requisitos como casos de uso o historias de
usuario
Ejemplos:
▪ Crear una estructura física o lógica consistente
▪ Validar campos de entrada
▪ Gestión de excepciones y logging
▪ Migración de datos y backup
▪ Organización del código fuente
▪ …
Creatividad vs método:
Arquitecto del software
La disciplina evoluciona.
Arquitecto debe conocer:
Avances en técnicas de construcción
Estilos y patrones
Mejor herramienta = experiencia (no silverbullet)
Experiencia propia
Experiencia de la comunidad.
Papel del arquitecto de software
Lenguajes de Programación
Un lenguaje de programación consiste en un conjunto de
órdenes o comandos que describen el proceso deseado.
Cada lenguaje tiene sus instrucciones y enunciados verbales
propios, que se combinan para formar los programas de
cómputo.
Sintaxis
➢ Reglas que determinan cómo se pueden construir y
secuenciar los elementos del lenguaje
Semántica
➢ Significado de cada elemento del lenguaje ¿Para qué
sirve?
Un programa que muestra un saludo en la pantalla:
Análisis
del
programa:
Hola Mundo!
Casi todo es infraestructura
Sólo:
cout << "Hola Mundo!" << endl
hace algo palpable
GitHub:
GitHub es un repositorio web basado en Git que presta
servicios de hosting, ofrece todas las opciones de control de
versiones distribuido y la administración del código fuente
similar a Git, así mismo agrega algunas funciones
adicionales.
¿Qué es un sistema de control de versiones?