Вы находитесь на странице: 1из 7

Principios de ingeniera de software Apuntan al proceso de ingeniera y el producto final: el proceso correcto ayudar a obtener el producto correcto.

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.

Mtodos: guas para la ejecucin de alguna actividad, aproximaciones


rigurosas, sistemticas y disciplinadas.

Tcnicas: son ms mecnicas que los mtodos y tienen aplicabilidad ms


restringida. Ambos se usan como sinnimos. Los mtodos y tcnicas se encapsulan para crear metodologas, que sirven para promover una aproximacin a la solucin de problemas, preseleccionando los mtodos y tcnicas a usar. Las herramientas son desarrolladas para apoyar la aplicacin de los 3 niveles anteriores.

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.

Separacin en base al tiempo: permite planificar las actividades de


manera precisa.

Separacin en trminos de calidades: manejar separadamente la


eficiencia y la correccin de un programa, diseando software cuidadoso y estructuradamente, tal que su correccin est garantizada a priori y luego reestructurada para mejorar su eficiencia. Separacin por vistas: separar los datos que fluyen de una actividad a otra en el flujo de control que gobierna la sincronizacin de las actividades.

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:

Capacidad de descomposicin de un sistema complejo: divisin del


problema original en subproblemas y luego dividir cada subproblema.

Composicin de un sistema a partir de componentes existentes:


partir de componentes elementales hasta llegar al sistema terminado. Cuando un componente falla, se reemplaza por uno nuevo. Podemos usar mdulos de una biblioteca, que al ser reutilizables, aceleran el proceso de construccin. Comprensin del sistema mirndolo en partes: Nos facilita la reparacin y modificacin, al buscar los errores en un componente en particular.

Para lograr los tres objetivos, los mdulos deben tener:

Alta cohesin: sus elementos internos estn muy relacionados y


agrupados por razones lgicas. Bajo acoplamiento: es la relacin entre mdulos y mide la interdependencia entre 2 mdulos. La idea es lograr que los mdulos tengan un nivel bajo.

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

Genricos: son producidos por una organizacin para venderlos en el


mercado.

A medida: desarrollados bajo pedido a un desarrollador especfico.


La mayor parte del gasto del software es en productos genricos, pero hay ms esfuerzo en el desarrollo a medida. Componentes:

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.

El cdigo es el nico producto. Evolucin del software:

Software vs. Hardware:

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.

Вам также может понравиться