Академический Документы
Профессиональный Документы
Культура Документы
Asimismo, el producto afectar la eleccin de qu proceso usar. Los principios son afirmaciones abstractas que describen propiedades deseables del proceso y del producto. Para aplicarlas, los ingenieros deben contar con mtodos y tcnicas que incorporen dichos principios.
Lo que se busca con este anlisis es la confiabilidad de las aplicaciones. Tambin se supone que las aplicaciones sern lo suficientemente grandes para descomponerlas en partes manejables. Todo esto hace que la confiabilidad y la evolucin sean importantes y que afirmemos que la eleccin de principios y tcnicas son determinantes para las metas de calidad del software. 1. Rigor y formalidad. El rigor es un complemento de la creatividad en la ingeniera. Con la aproximacin rigurosa podremos tener productos ms confiables y mejores controles (de tiempo, costos, etc.). El rigor mejora la creatividad, optimizando la confianza en los resultados creativos, una vez analizados en base a una planificacin rigurosa. Hay varios grados de rigurosidad. El ms alto es la formalidad, que es un requerimiento ms restrictivo que el rigor, que exige que el proceso de soft sea dirigido y evaluado con leyes matemticas. La formalidad implica rigor, pero uno puede ser riguroso e informal. En ingeniera, el proceso de diseo son pasos bien definidos y con bases slidas. En cada paso el ingeniero sigue algn mtodo o tcnica basados en
resultados tericos de un modelado formal de la realidad o en ajustes empricos de fenmenos no considerados por el modelo, o en reglas heursticas que dependen de la experiencia. Todo est resuelto en una aplicacin rigurosa y sistemtica (metodologa), fcilmente explicada y aplicada una y otra vez. El ingeniero debe saber cmo y cundo ser formal, adems de entender el nivel de rigurosidad y formalidad a alcanzar, dependiendo de la dificultad de la tarea y su criticidad. Ej.: podemos ser muy formales para las partes crticas de un problema y para las partes estandarizadas aplicar una aproximacin ms simple. La formalidad aventaja al rigor en el sentido de que la primera puede ser la base para mecanizar procesos. La nica fase del desarrollo de software donde se usa aproximacin formal es en la programacin. Los programas son objetos formales, escritos en lenguajes cuya sintaxis y semntica estn definidos. Estas operaciones mecnicas, posibles por usar la formalidad, pueden mejorar la confiabilidad y verificabilidad de los productos software. El rigor y la formalidad benefician tambin la mantenibilidad, reusabilidad, portabilidad, comprensin e interoperabilidad del software. Ej.: la documentacin nos permite prever la evolucin del proyecto, los recursos a usar, etc., as como nos ayuda a mantener el producto, al usarla para cualquier modificacin que se requiera; y por ltimo nos permite monitorear el software en forma precisa, para garantizar el cumplimiento de los puntos de control y mejorar la productividad. 2. Separacin de intereses. Es involucrarse con distintos aspectos de un problema para concentrarse en ellos separadamente. En cada proyecto debemos separar aspectos: primero, aislar los factores relacionados ms dbilmente y luego considerar los factores en la medida en que impactan el anlisis.
La separacin implica separacin de responsabilidades para tratar los distintos aspectos. Es la base para la asignacin del trabajo en asignaciones especficas para distintas personas con distintas habilidades. 3. Modularidad. Divisin de un sistema en partes ms simples (mdulos). Esto nos permite separar los contextos en fases: cuando relacionamos cada mdulo aislado y cuando relacionamos todos los mdulos globalmente, analizando sus conexiones e integracin.
Objetivos de la modularidad:
Las estructuras que cumplan esto nos permiten ver los mdulos como cajas negras cuando describimos la estructura total y verlos separadamente cuando analizamos la funcionalidad de cada uno. 4. Abstraccin. Es identificar los aspectos importantes de un fenmeno e ignorar los detalles. Esto depende de cada persona o de cada enfoque o propsito que se le d a un problema. Los modelos que construimos son abstracciones de la realidad, vlidas tambin para modelos de software. Los lenguajes de programacin son abstracciones que nos permiten construir sin preocuparnos por los detalles de hardware. Este principio es importante para aplicarlo a productos y procesos software. Cuando la documentacin de un programa o procedimiento se analiza, se supone que suministra toda la informacin necesaria para entender las otras partes del programa que usan ese procedimiento. 5. Anticipacin al cambio. Se refiere a la mantenibilidad. Es poder predecir los cambios y trabajar para que los cambios futuros sean fciles de aplicar. Esto es importante en el software, ya que los productos estn en ambientes donde permanentemente surgen nuevos requerimientos. La reusabilidad tambin se ve afectada por esto. Un componente es reusable si se puede emplear para generar un nuevo producto o si solo requiere pequeos cambios para ello. La reusabilidad es la capacidad de evolucionar que tienen los componentes.
Para anticiparse al cambio debemos contar con herramientas de administracin de versiones y revisiones de software. Debemos poder almacenar y recuperar informacin, mdulos fuente y objetos, todo desde una base de datos central. Asimismo se afecta al proceso de soft, al considerar el mantenimiento de una aplicacin y asignando estructura y costos para apoyar la evolucin del software. 6. Generalidad. Poder descubrir un problema ms general en la resolucin de un primer problema. Este puede ser menos complejo y proveer soluciones reutilizables. Puede surgir de un paquete ya existente o lo podemos crear nosotros. Sin embargo, puede ser ms costoso en trminos de velocidad de ejecucin, requerimientos de memoria o tiempos de desarrollo. Este principio es fundamental si se busca desarrollar herramientas software para uso amplio en el mercado. Si el problema puntual se puede reformular como una instancia de un problema general, es conveniente adoptar el paquete en vez de una solucin especfica.
7. Incrementalidad.
Desarrollar paso a paso con incrementos, sucesivas. Esto nos da un proceso evolutivo. logrando aproximaciones
Debemos identificar subconjuntos primarios tiles para desarrollar y distribuir a los clientes, de manera de obtener realimentacin temprana. Esto nos permite que la aplicacin evolucione de manera controlada, en casos donde los requerimientos iniciales no se comprendieron bien. Las etapas intermedias son prototipos del producto final, lo cual beneficia el entendimiento de los requerimientos y permite usar un modelo de desarrollo iterativo ms flexible. Debemos tener mucho cuidado en la manipulacin de documentos, programas, datos de prueba y todo lo que usemos en las distintas versiones. Cada paso incremental significativo debe ser registrado.
Qu es el software? Programas, estructuras de datos, documentacin y ms. Caractersticas: desarrollo, no manufactura. Desgaste, no gasto. Principalmente desarrollado a medida. Mantenibilidad: debe poder evolucionar y seguir cumpliendo sus especificaciones. Confiabilidad: no debe causar daos fsicos ni econmicos en caso de fallos. Eficiencia: no debe desperdiciar los recursos del sistema. Utilizacin adecuada: debe contar con una interfaz adecuada y documentacin. Acta como un diferenciador en los negocios, es estratgico. Captura informacin, produce informacin y es informacin en s mismo.
Productos Software
Mitos del software: Estndares y procedimientos bastan. Tecnologa de punta basta. Ms gente para ponerse al da. Programacin inmediata. Fcil acomodo de los cambios. Programacin: fin del trabajo. Calidad: solo del ejecutable.
Ingeniera de software Establecer y usar principios con caracteres de ingeniera para obtener, eficientemente, software confiable, que opere eficaz y eficientemente en mquinas reales. Objetivos: maximizar la calidad, maximizar productividad, minimizar riesgos. Implicancias: Constructores bsicos ms poderosos. Mejores tcnicas de control de calidad. Mejores herramientas y mtodos. Filosofa Global enfoque de procesos?
Principios: Hacer de la calidad el primer objetivo. El software de alta calidad es posible. Entregar tempranamente productos a los clientes.
Determinar el problema antes de describir los requerimientos. Evaluar alternativas de diseo. Usar un modelo apropiado. Usar lenguajes diferentes para fases diferentes. Minimizar la distancia intelectual. Decidir las tcnicas antes que las herramientas. Hacerlo correcto antes que hacerlo rpido. Inspeccionar diseo y cdigo. La gestin es ms importante que la tecnologa. Gente: clave del xito. Adoptar tcnicas y metodologas con cuidado. Asumir responsabilidad. Comprender prioridades de los clientes. Clientes-Usuarios: ms ven, ms necesitan. Planificar para desechar parcialmente. Disear para el cambio. Diseo sin documentacin no es diseo. Usar herramientas con realismo. Evitar trucos. Encapsular. Usar acoplamiento y cohesin. Usar mediciones de complejidad. No probar el software propio. Analizar causas de errores. Asumir que la entropa del software aumenta. Gente y tiempo no son intercambiables. Esperar y demandar excelencia.
Costos del software Los costos del software a menudo dominan el costo del sistema y superan muchas veces el valor de una PC. Cuesta ms mantener el software que desarrollarlo. Para sistemas con larga vida, este costo se multiplica. La ingeniera de software concierne a un desarrollo efectivo en cuanto a costos.