Ingeniería del Software: Analistas, Programación y Bases de Datos

Unidad N° 1: El Profesional de Sistemas de Información

Analista de Sistemas

Un analista de sistemas es el profesional responsable de investigar, planificar, coordinar y recomendar soluciones de software y sistemas para satisfacer las necesidades de una empresa. Debe dominar cuatro habilidades clave: analíticas, técnicas, gerenciales e interpersonales.

  • Las habilidades analíticas permiten comprender la organización y sus funciones, identificando oportunidades y resolviendo problemas.
  • Las habilidades técnicas implican comprender el potencial y las limitaciones de las tecnologías de la información, incluyendo lenguajes de programación, sistemas operativos y plataformas de hardware.
  • Las habilidades gerenciales ayudan a administrar proyectos, recursos, riesgos y cambios.
  • Las habilidades interpersonales facilitan la colaboración con usuarios finales.

El proceso de construcción de software se concibe como un conjunto de tareas especializadas, donde cada rol profesional tiene responsabilidades específicas:

  • El analista: analiza el problema y lo describe para su solución mediante un sistema informático.
  • El diseñador: diseña la solución basándose en el análisis.
  • El analista: delimita el análisis inicial y proporciona opciones adicionales al usuario.

Perfil Tradicional del Analista

El perfil tradicional del analista se centra en el análisis. Requiere conocimiento del paradigma tradicional de la ingeniería del software y del ciclo de vida del software en cascada.

  • Modelado funcional: Diagramas de flujo de datos, diagramas de estado, etc.
  • Modelado de datos y sus técnicas: Diagrama entidad-relación, modelo relacional, etc.
  • Conocimiento de la tecnología: Arquitectura de software, bases de datos, etc.

Analista Funcional

  • Rol en equipos ágiles: define los requerimientos y reglas de negocio en ciclos iterativos.
  • Rol como facilitador: traduce la visión del dueño del producto en un listado de requerimientos (backlog).
  • Enlace entre stakeholders y el equipo de desarrollo: utiliza técnicas y habilidades para asistir a los líderes del proyecto.
  • En proyectos ágiles: asegura el cumplimiento de la visión y alcance, y modera las reuniones de planificación y revisión de cada iteración.

El desafío para el patrocinador es asegurar que la visión y el alcance del proyecto sean resultado de un esfuerzo colaborativo. El analista funcional facilita este proceso, asegurando que las funcionalidades estén justificadas y correspondan a las necesidades del negocio.

Programador

Un programador escribe, depura y mantiene el código fuente de un programa informático. Se encarga de la implementación de prototipos.

La profesión de programador ha evolucionado desde la simple transcripción de especificaciones del analista a código ejecutable.

Especialidades

  • Programadores de mainframe
  • Programadores de»Nuevas Tecnología»
  • Programadores de Firmware y videojuegos
  • Programadores de sistemas integrados
  • Programadores de Software de Escritorio a medida: Visual Basic, Visual Fox, Delphi, entre otros.

Programación Extrema

La programación extrema prioriza la adaptabilidad sobre la previsibilidad. Adopta las mejores metodologías de desarrollo de forma dinámica durante el ciclo de vida del software.

Valores

  • Simplicidad: diseño simplificado para agilizar el desarrollo y facilitar el mantenimiento. Incluye la refactorización del código y la documentación concisa.
  • Comunicación: código simple y autodocumentado, pruebas unitarias y comunicación fluida con el cliente.
  • Retroalimentación (feedback): integración del cliente en el proyecto para obtener retroalimentación en tiempo real.
  • Coraje o valentía: confianza en la programación por parejas y en la implementación de características prioritarias.
  • Respeto: los programadores respetan su trabajo y el de sus compañeros, buscando la alta calidad y el diseño óptimo.

Características Fundamentales

  • Desarrollo iterativo e incremental
  • Pruebas unitarias continuas
  • Programación en parejas
  • Corrección de errores antes de añadir nueva funcionalidad
  • Reorganización del código (refactorización)
  • Propiedad del código compartida
  • Simplicidad en el código

Unidad N° 2: Programación Modular

Programación Estructurada (PE)

La programación estructurada utiliza un número limitado de estructuras de control para reducir errores y aumentar la productividad.

  • Diseño descendente (top-down): descomposición del problema en etapas jerárquicas.
  • Recursos abstractos (simplicidad): descomposición de acciones complejas en acciones más simples.
  • Estructuras básicas: secuenciales, selectivas (IF THEN, SELECT CASE) y repetitivas (DO LOOP, FOR NEXT, WHILE WEND, DO UNTIL).

Ventajas de la Programación Estructurada

  • Programas más fáciles de entender
  • Reducción de la complejidad de las pruebas
  • Aumento de la productividad del programador
  • Mejor documentación interna de los programas

Programación Modular

La programación modular divide un programa en módulos o subprogramas para hacerlo más legible y manejable. Permite la descomposición de un problema en subproblemas independientes, más fáciles de resolver y probar.

El programa principal coordina las llamadas a los módulos secundarios y pasa los datos necesarios como parámetros. Cada módulo puede contener sus propios datos y llamar a otros módulos o funciones.

Módulo

Un módulo es una parte del programa que resuelve un subproblema. Cada módulo tiene una tarea bien definida y algunos necesitan de otros para operar. Las subrutinas son un elemento principal en la representación de los módulos.

Un módulo es un segmento, rutina, subrutina, subalgoritmo o procedimiento que ejecuta una tarea específica. Tiene una entrada y una salida. Las decisiones dentro de un módulo deben tener repercusión en todo el flujo, pero el salto debe ser únicamente hacia el programa principal.

¿Cuándo es útil la modularización?

  1. Cuando un grupo de instrucciones o una tarea específica debe ejecutarse más de una vez.
  2. Cuando un problema es complejo o extenso, y su solución se divide en módulos que ejecutan tareas específicas.

Ventajas de la Programación Modular

  • Independencia de los módulos: se puede modificar un módulo sin afectar a los demás. Facilita la comprensión de la lógica subyacente, el mantenimiento y la modificación.
  • Desarrollo modular de programas: permite identificar las principales tareas y diseñar y probar procedimientos individuales para cada tarea.

Tiempo de Vida de los Datos

Las variables pueden ser:

  • Globales: activas durante todo el programa.
  • Locales: creadas al llegar a la función o procedimiento donde están definidas y desaparecen al finalizar.

Parámetros

  • Parámetros formales: variables especiales en un procedimiento que reciben valores externos. Se declaran en la cabecera del procedimiento.
  • Parámetros por valor: reciben valores pero no los devuelven.
  • Parámetros por variable: reciben y devuelven valores.

Funciones y Procedimientos

Procedimientos

Son subprogramas que realizan una tarea específica y pueden tener variables locales.

Funciones

Son estructuras autónomas similares a los módulos, pero devuelven un solo valor de un tipo de dato simple a su punto de referencia.

  • Estándar: proporcionadas por el lenguaje de programación (aritméticas y alfabéticas).
  • Definidas por el usuario: definidas por el programador para ejecutar funciones específicas.

Semejanzas entre Procedimientos y Funciones

  • Ambos son unidades de programa independientes.
  • Los parámetros, constantes y variables son locales.
  • El número y tipo de parámetros reales deben coincidir con los parámetros formales (excepto entero/real por valor).

Diferencias entre Procedimientos y Funciones

  • La llamada a un procedimiento se hace mediante una instrucción, mientras que la llamada a una función se hace usando su nombre en una expresión.
  • Las funciones devuelven un único valor, mientras que los procedimientos pueden devolver varios o ninguno.
  • Los procedimientos devuelven valores a través de parámetros por variable, mientras que las funciones devuelven el valor mediante la asignación al nombre de la función.

Funciones Estándar

Aritméticas y alfabéticas (no se detallan en el documento original).

Funciones Definidas por el Usuario

(No se detallan en el documento original).

Reutilización de Código

La reutilización de software es el uso de módulos (procedimientos, funciones, librerías, clases, etc.) creados previamente en un nuevo proyecto.

Beneficios de la Reutilización

  • Mejora de la productividad
  • Disminución del tiempo de desarrollo
  • Mejor adaptación a requisitos cambiantes
  • Disminución de costes
  • Mejora de la calidad del software
  • Mayor fiabilidad
  • Mayor eficiencia
  • Mejoras en mantenimiento y soporte
  • Mejoras en control y planificación

Niveles de Reutilización

  • Código: librerías de funciones, editores, inclusión de ficheros, herencia en POO, componentes, etc.
  • Diseños: patrones de diseño, patrones arquitectónicos (C/S, pipeline, OO, etc.).
  • Especificaciones: reutilización de las abstracciones del dominio.

Herramientas

  • Gestión de ontologías
  • Trazabilidad total
  • Repositorio de activos reutilizables

Librerías DLL (Dynamic Link Library)

Las DLL agrupan el código en módulos separados, facilitando la programación y reutilización en varios programas.

Usar una DLL desde otro proyecto de VB6

  1. Crear un nuevo proyecto EXE estándar.
  2. Escribir los Declare para acceder a las funciones.
  3. Ejemplo: Private Declare Function Saludo Lib"Prueba.dl" () As String
  4. La DLL debe estar en el mismo directorio que el ejecutable.
  5. Usar la función: MsgBox Saludo

Unidad N° 3: Aplicaciones con Base de Datos

Una base de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente.

Los Sistemas Gestores de Bases de Datos (SGBD) permiten almacenar y acceder a los datos de forma rápida y estructurada.

Definición de Base de Datos

Una base de datos es una serie de datos organizados en tablas y relacionados entre sí, recolectados y explotados por los sistemas de información de una empresa u organización.

Características

  • Independencia lógica y física de los datos
  • Redundancia mínima
  • Acceso concurrente por múltiples usuarios
  • Integridad de los datos
  • Consultas complejas optimizadas
  • Seguridad de acceso y auditoría
  • Respaldo y recuperación
  • Acceso a través de lenguajes de programación estándar

Sistema de Gestión de Base de Datos (SGBD)

Un SGBD sirve de interfaz entre la base de datos, el usuario y las aplicaciones. Se compone de un lenguaje de definición de datos, un lenguaje de manipulación de datos y un lenguaje de consulta.

Ventajas de las Bases de Datos

  • Control sobre la redundancia de datos
  • Consistencia de datos
  • Compartición de datos
  • Mantenimiento de estándares
  • Mejora en la integridad de datos
  • Mejora en la seguridad
  • Mejora en la accesibilidad a los datos
  • Mejora en la productividad
  • Mejora en el mantenimiento
  • Aumento de la concurrencia
  • Mejora en los servicios de copias de seguridad

Desventajas de las Bases de Datos

  • Complejidad
  • Coste del equipamiento adicional
  • Vulnerable a fallos

Tipos de Base de Datos

  • MySQL
  • PostgreSQL
  • Oracle

Lenguaje de Consulta Estructurado (SQL)

SQL (Structured Query Language) es un lenguaje declarativo para acceder a bases de datos relacionales. Permite realizar diversas operaciones, incluyendo consultas y modificaciones de datos.

Fundamentos

  • Data Manipulation Language (DML): acceder, crear, modificar o eliminar datos.
  • Data Definition Language (DDL): crear, modificar o eliminar objetos de base de datos y sus privilegios.
  • Transaction Control: garantiza la consistencia de los datos.
  • Session Control: control de las propiedades de sesión de un usuario.

Consultas Simples en SQL

  • Seleccionando registros: Select * From Tabla
  • Seleccionando columnas: Select col1, col2 From Tabla
  • Alias para columnas: Select col1 as A, col2 as B From Tabla
  • Valores únicos: Select Distinct col1 From Tabla
  • Limitando filas (Oracle): Select * From Tabla Where Rownum <>
  • Limitando filas (SQL Server): SELECT TOP 10 campo1, campo2 FROM tabla
  • Limitando filas (MySQL): SELECT campo1, campo2 FROM products LIMIT 10

Fundamentos de SQL

Operadores de comparación: =; <; >; <>; <=; >=

Otros operadores: IN, NOT IN, EXISTS, IS NULL, IS NOT NULL, LIKE

Operador de conjunto UNION

Agrupaciones en SQL

Funciones: SUM, COUNT, MAX, MIN, AVG

GROUP BY

GROUP BY con HAVING

Case When en SQL

Consultas Multitablas

SQL Subconsultas

  • Subconsultas de una fila
  • Subconsultas de múltiples filas
  • Subconsultas escalares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.