1. PROCESO PARA EL DESARROLLO
1.1. COSTO Y COMPLEJIDAD
1.1.1. Costo directo: Compra del software adaptado a la necesidas
1.1.2. Costo indirecto: Capacitaciones, instalacion, soporte tecnico, entre otros costos que se preveen.
1.1.3. Costo oculto: Dificiles de preveer, como fallos en el sistema, sobre todo si es un sistema de mision critica.
1.2. TECNOLOGIA ORIENTADA A OBJETOS
1.2.1. Define una estructura de mas alto nivel llamada obtejo.
1.2.2. Permite al programador organizar su programa con abstracciones de alto nivel
1.3. MODELO DE PROCESO
1.3.1. Define como solucinar la problematica del desarrollo de sisemas de software. este debe considerar varios aspectos, como reglas, politicas, metodologias, etc, Dada la variedad de tipos de proyectos se deben considerar distintos componentes de modelo de procesos, algunos de estos componentes son...
1.3.1.1. ARQUITECTURA: Define la estructura general de un sistema y cambia deacuerdo al sistema a desarrollarse.
1.3.1.1.1. Sistemas interactivos: Son sistemas regidos por interacciones externas, por lo general, con un usuario.
1.3.1.1.2. Sistema de tiempo real: Son sistemas regidos por restricciones estrictas en el tiempo, que requieren garantias en el tiempo de la respuesta.
1.3.1.1.3. Simulacion dinamica: Son sistemas que simulan entidades del mundo real y evolucionan con el tiempo.
1.3.1.1.4. Transformacon en lote: Son sistemas de transformacion sbre un conjuntode entradas de valor constante, para generar conjuntos de salidas.
1.3.1.1.5. Transformacion continua: Son sistemas de transformacion sobre de entradas de valor variable, que genera conjuto de salidas que difieren en el tiempo.
1.3.1.1.6. Administracion de transiccion: Son sistemas para interactuar con bases de datos que incluye acceso concurrente y distribuido de multiples usuarios. .
1.3.1.2. ACTIVIDAD: Define los pasos basicos y necesarios para lograr las metas y los objetivos, sabiendo las especificaciones y requisitos del sistema. Las actividades basiscas del proceso del desarrollo del software son
1.3.1.2.1. Requisitos; para especificar los aspectos funcionales del sistema, que describen como interactuaria un usuario con la aplicacion.
1.3.1.2.2. Analisis; para dar al sistema una estructura o arquitectura robusta y extensible.
1.3.1.2.3. Diseño; para adoptar y refinar la arquitectura de un sistema y adaptarla al ambiente de implementacion especifco.
1.3.1.2.4. Implemetacion; para codificar el sistema.
1.3.1.2.5. Integracion; para combinar los componentes del sistema.
1.3.1.2.6. Pruebas:; para validar y verificar el sistema.
1.3.1.2.7. Documentacion; para describir los diversos aspectos del sistema.
1.3.1.2.8. Mantenimiento; para extender la funcionalidad del sistema.
1.3.1.3. METODOS Y LAS METODOLOGIAS: Los metodos definen las reglas para las transformaciones internas de las actividades. Las metodologias definen el conjunto de metodos.
1.3.1.3.1. Metodo tradicional o estructurado. se enfoca en lograr una definicion completa del sistema en terminos de funciones. Utiliza diferentes herramientas de modelado:
1.3.1.3.2. Orientado a objetos Se enfoca principalmente en el modelado de un sistema en terminos de objetos. Utiliza diferentes herramientas de modelado:
1.3.1.4. ESTRATEGIA: Se define como un plan para lograr un objetivo. Estas afectan aspectos como la arquitectura del sistema, el orden en que se llevaran a cabo las actividades del proceso y las metodologias a utilizarse.
1.3.1.4.1. Prototipo: Es una version preliminar, intencionalmente reducida de un sistema, se usa para obtener informacion rapida y ayuda a tomar decisiones.
1.3.1.4.2. Reutilizacion: Es la explotacion de componentes desarrollados anteriormente dentro de un mismo proyeto o entre proyectos.
1.3.1.5. HERRAMIENTAS PARA LA UTILIZACION DEL SOFTWARE: Son aplicaciones que apoyan la admimistracion del proceso del software. Estas herramientas se conocen como ingenieria de software asistida por computadora, y esta acompaña al desarrollador durante las diferentes actividades del ciclo de vida del proceso del software.
1.3.1.5.1. la seleccion de estas herramientas deben considerar el apoyo a las metodologias utilizadas:
2. ENTORNOS DE PROGRAMACION
2.1. Visual Studio
2.1.1. lenguajes soportado: C# - VB.NET - F# - C++
2.1.2. Funcionalidades: Edicion de codigo, compilacion y depuracion, diseño de interfaces graficas, gestion de versiones.
2.1.3. Caracteristicas: IDE completo con soporte para depuracion, integracion con Azure DevOps, herramienta de pruebas unitarias y de integracion.
2.2. IntelliJ IDEA
2.2.1. Lenguajes soportados: Jaa - Kotlin - Groovy
2.2.2. Funcionalidades: Pruebas y depuracion, soporte para desarrollo web, analisis de codigo estatico, asistencia de codigo inteligente.
2.2.3. Caracteristicas: IDE con soporte avanzado para Java y JVM, herramientas de refactorizacion, integracion con sistemas de construccion como Maven y Gradle.
2.3. PyCharm
2.3.1. Lenguajes soportados: Python
2.3.2. Funcionalidades: Edicion y depuracion de codigo Python, gestion de paquetes y dependencia, pruebas unitarias y de integracion, integracion con entornos virtuales
2.3.3. Caracteristicas: IDE especifico para Python, soporte para frameworks como Django y Flask, Herramienta de analisis y refactorizacion de codigo.
2.4. Xcode
2.4.1. Lenguajes soportados: Swift, Objetive-C
2.4.2. Funcionalidades: Edicion de codigo, depuracin de pruebas especificas de Apple, integracion con servicios de Apple, diseño de interfaces graficas.
2.4.3. Caracteristicas: IDE para desarrollo de aplicacines IOS y macOS, herramienta de diseño de interfaz, simuladores de dispositivo Apple.