1. Costo y Complejidad del Software
1.1. Costo del Software:
1.1.1. • Se incrementa con la complejidad del sistema. •Involucra análisis, diseño, codificación y pruebas. •Importancia de la mantenibilidad del software a largo plazo
1.2. Complejidad del Software:
1.2.1. •Relacionada con el tamaño del proyecto y las interacciones entre los componentes. •Modularidad como clave para reducir la complejidad. •Necesidad de modelos bien estructurados para manejar la complejidad.
2. Tecnología Orientada a Objetos
2.1. Este es un enfoque de desarrollo de software que organiza el código en objetos, los cuales combinan datos y comportamientos.
2.1.1. Se basa en cuatro principios clave:
2.1.1.1. abstracción (ocultar detalles complejos y mostrar solo lo necesario)
2.1.1.2. encapsulamiento (proteger los datos dentro de los objetos),
2.1.1.3. herencia (reutilización de código a través de clases base)
2.1.1.4. polimorfismo (permitir que diferentes objetos respondan de manera distinta a la misma interfaz).
3. Proceso de Software
3.1. Es un conjunto estructurado de actividades que guían el desarrollo de un sistema de software desde su concepción hasta su mantenimiento Este se compone de unas fases principales:
3.1.1. Análisis
3.1.1.1. Comprender y documentar los requisitos del sistema.
3.1.2. Diseño
3.1.2.1. Crea la arquitectura del sistema, con especial énfasis en la orientación a objetos.
3.1.3. Implementación
3.1.3.1. Consiste en la traducción del diseño a código fuente, utilizando un lenguaje de programación. En esta fase, se crean y prueban los componentes o módulos del software y se integran herramientas y frameworks para simplificar la creación de funcionalidades complejas.
3.1.4. Pruebas
3.1.4.1. Verificación y validación del software desarrollado para asegurar calidad.
3.1.5. Mantenimiento
3.1.5.1. Modificación del software después de su entrega para corregir errores y mejorar su funcionalidad.
4. Entornos de Programación Orientados a Objetos
4.1. Eclipse (para Java)
4.1.1. CARACTERÍSTICAS • IDE de código abierto especializado en Java. • Soporte para múltiples lenguajes de programación a través de plugins. • Sistema de autocompletado de código y depuración en tiempo real. • Refactorización automática, lo que facilita modificar código sin romper dependencias.
4.1.2. FUNCIONALIDADES CON JAVA: Soporte para JUnit para pruebas unitarias. Creación e integración de APIs y bibliotecas de Java. Herramientas de análisis de código, como SonarLint.
4.2. Visual Studio (C# y .NET)
4.2.1. CARACTERÍSTICAS • IDE desarrollado por Microsoft, especializado en C# y .NET. • Depurador avanzado que permite ejecutar y observar el comportamiento del código. • Herramientas de integración continua y despliegue con Azure DevOps. • Soporte nativo para aplicaciones web, móviles y de escritorio en .NET. • IntelliSense para autocompletar el código de manera inteligente.
4.2.2. FUNCIONALIDADES CON C# Y .NET: Soporte para crear aplicaciones empresariales escalables en el entorno .NET. Herramientas para desarrollo de API RESTful y microservicios. Integración con ASP.NET para desarrollo de aplicaciones web. Uso de Xamarin para aplicaciones móviles multiplataforma.
4.3. PyCharm (Python)
4.3.1. CARACTERÍSTICAS •IDE especializado en Python, con soporte para versiones múltiples del lenguaje. •Herramientas para desarrollo rápido con plantillas de proyectos. •Integración con frameworks populares como Django y Flask. •Sistema de gestión de paquetes integrado con pip y conda. •Herramientas de pruebas unitarias y depuración para identificar errores en tiempo real.
4.3.2. FUNCIONALIDADES CON PYTHON: •Soporte para el desarrollo en programación orientada a objetos. •Optimización para aplicaciones científicas y de análisis de datos. •Integración nativa con herramientas de IA y Machine Learning como TensorFlow y NumPy. •Soporte para desarrollo full-stack con Python tanto en backend como en frontend.