CAPITULO ICAPITULO I
1.1 CONCEPTOS BASICOS
Resumen preparado por Miguel Cotaña
Ingeniería del SoftwareINF - 163
Método:Método:
Procedimiento para alcanzar un determinado fin
Los métodos de la I.S. indican “cómo”construir técnicamente el software.
Metodología:Metodología:
En un proyecto de desarrollo de software la metodología define Quién debe hacer Qué, Cuándo y Cómo debe hacerlo
Procedimiento:Procedimiento:
Método de ejecutar algunas cosas
Proceso:Proceso:
Conjunto de las fases sucesivas de un fenomeno natural o de una operación artificial
Una secuencia de pasos desarrollados para un proposito dado (por ejemplo, el proceso de desarrollo de software).
Herramientas:Herramientas:
Las herramientas de la I.S. proporcionan un enfoque automático o semi-automático para el proceso y para los métodos
Modelo:Modelo:
Es la representación formal de un sistema
SISTEMASSISTEMAS
Intuitivamente decimos que cuando
no hay “Sistema” se produce el:
““Efecto 2+2=3Efecto 2+2=3””
Enfoque de sistemasEnfoque de sistemas
Vision sistémica:Vision sistémica:
La visión sistémica nos ayuda a ““verver”” el el todotodo, apreciar su energía y descubrir sus caractercaracteríísticas distintivassticas distintivas, aquellas que son propias del conjuntopropias del conjunto y que no existen en las partes.
Esta visión permite ubicar al sistema en su entornoentorno o realidado realidad dinámica, integral, compleja e incierta, entre otras características.
Pensamiento sistemico:Pensamiento sistemico:
“El pensamiento sistémico es la
disciplinadisciplina que integra las demintegra las demáás ramass ramas,
fusionándolas en un todo coherente de
teoría y práctica. .....Al enfatizar cada
una de las demás disciplinas, el
pensamiento sistémico nos recuerda
continuamente que el todo puede el todo puede
superar la suma de las partessuperar la suma de las partes”, Peter
Senge
““Efecto 2+2=5Efecto 2+2=5””
Definiciones de SistemaDefiniciones de Sistema
Se origina en la palabra griega sunistsunistáánainai, que significa: causa que mantiene la unidadcausa que mantiene la unidad.
Conjunto de reglas o principiosreglas o principios sobre una materia enlazados entre senlazados entre síí.
Conjunto de cosas que ordenadamente y relacionadas entre sí, contribuyen a determinado objetivoobjetivo. (Diccionario de la RAE)
Sistema es cualquier procesoproceso que convierte inputs en outputs. (H. Eisner)
Un grupo de elementosgrupo de elementos, ya sea humanos y/o no-humanos, que están organizados y ordenadosorganizados y ordenados de tal manera que los elementos pueden actuar como actuar como un todoun todo en busca del logro de algún objetivoobjetivo, meta o fin común. (Martin “Systems EngineeringGuidebook”)
Una entidad con un propentidad con un propóósitosito definido, formulada a partir de la integraciintegracióón de componentesn de componentes, cada uno de los cuales no posee individualmente las características totales requeridas de dicha entidad (R. Stevens y otros)
¡¡ESTE ES UN SISTEMA!ESTE ES UN SISTEMA!
• Hay un conjunto de elementos : : las piedraspiedras• Están interrelacionados interrelacionados entre sí : : la posiciposicióón relativa entre n relativa entre ellasellas
• Tienen un objetivo comobjetivo comúún : trasmitir n : trasmitir una informaciinformacióónn•• Alguien necesita resolver una necesidad o problemaAlguien necesita resolver una necesidad o problema
Atributos fundamentales de sistemas:Atributos fundamentales de sistemas:
ObjetivoObjetivo BordeBorde
PropiedadesPropiedades
EmergentesEmergentes
HolismHolism
ViabilidadViabilidad
ObjetivoObjetivo: Todo sistema tiene algún tipo de objetivo o propósito, que puede no siempre ser uno consciente.
BordeBorde: Todo sistema debe tener un borde/límite para efectos de análisis.
El borde/límite de un sistema define el contexto interior y exterior del sistema.
El borde/límite de un sistema estáfuertemente relacionado con su objetivo.
HolismHolism: Toma una vista del “sistema completo”. El sistema debe incluir todo lo necesario para lograr su objetivo.
“No existe garantía de beneficio optimizando solo partes del sistema, o incluso todos los componentes independientemente”.
Propiedades EmergentesPropiedades Emergentes: Cuando la entidad completa (sistema) exhibe una propiedad que es significativa sólo cuando es atribuida al todo y no a uno de sus componentes en particular.
Efectividad Rendimiento
Disponibilidad Confiabilidad
Soportabilidad Seguridad
Peso Tamaño
Transportabilidad Costo, otros
ViabilidadViabilidad: Cuando el medio ambiente cambie, seguirá funcionando el sistema?
Diversidad hace a los sistemas más probables a que sobrevivan a cambios ambientales.
SISTEMASSISTEMAS
INGENIERIAINGENIERIA
INGENIERIAINGENIERIA
DEDE
SISTEMASSISTEMAS
Ingeniería de Sistemas(Ingenierizar un sistema)
Ingeniería de Sistemas(Origen teórico-científico)
++
““INGENIERINGENIERÍÍA DE SISTEMASA DE SISTEMAS””
•• COMPONENTESCOMPONENTES•• INTERRELACIONES internasINTERRELACIONES internas•• INTERRELACIONES con sistema INTERRELACIONES con sistema superiorsuperior•• OBJETIVO COMOBJETIVO COMÚÚNN
•• FORMULACION del PROBLEMAFORMULACION del PROBLEMA•• MODELOS REPRESENTATIVOSMODELOS REPRESENTATIVOS•• ALTERNATIVAS de SOLUCIALTERNATIVAS de SOLUCIÓÓNN•• VALIDACIVALIDACIÓÓN por N por EXPERIMENTACIONEXPERIMENTACION
TEORTEORÍÍA DE A DE SISTEMASSISTEMAS
BertalanffyBertalanffy
METODO METODO CIENTCIENTÍÍFICOFICO
GalileoGalileo
� “El disediseññoo, producciproduccióónn y mantenimientomantenimiento de sistemas dentro de las restriccionesrestricciones de costo y tiempocosto y tiempo”, Sage(1992)
� “Una aproximaciaproximacióón interdisciplinarian interdisciplinaria para posibilitar la realización de sistemas exitosos” INCOSE. (1999)
� “Las acciones tacciones téécnicas y de controlcnicas y de control asociadas a los procesos de desarrolloprocesos de desarrollo de un sistema y sus sistema y sus capacidadescapacidades” R. Stevens, P. Brook y S. Arnold.
Definicion de Ingenieria de Sistemas:Definicion de Ingenieria de Sistemas:
� Conozca el problema, el cliente y el usuario del sistema
� Use criterios de efectividad basados en las necesidades
� Establezca y administre los requerimientos
� Identifique y evalúe distintas alternativas de solución
� Verifique y valide los requerimientos y el desempeño
� Mantenga la integridad del sistema
� Use un proceso estructurado y documentado
Principios de la Ingenieria de Sistemas:Principios de la Ingenieria de Sistemas:
Esfuerzos InnecesariosEsfuerzos Innecesarios
Cumplir con los Principiosde Ingeniería de Sistemas podría evitar:
Cumplir con los Principiosde Ingeniería de Sistemas podría evitar:
########¿¿¿¿¿¿¿¿?{[/&#?{[/&#?{[/&#?{[/&#?{[/&#?{[/&#?{[/&#?{[/&#
FustracionesFustraciones
IngenierIngenieríía a de sistemasde sistemas
Ingeniería Mecánica
Ingeniería de Software
Ingeniería Eléctrica y Electrónica
Ingeniería Civil y Construcciones
Ingeniería de Costos
Ingeniería Logística
Confiabilidad y MantenibilidadPotenciales usuarios
del Sistema
Fabricación y Producción
Aseguramiento de la Calidad
Otras disciplinas
Ingeniería Comercial
Ingeniería Humana
Seguridad Física y del Personal
Ingeniería de SistemasProceso Interdisciplinario
SoftwareSoftware
El software se forma con:
Las instrucciones (programas de ordenador) que cuando se ejecutanproporcionan las características, funciones y el grado de comportamientodeseado;
Las estructuras de datos que permitenque los programas manipulenadecuadamente la información;
Los documentos que describen la operación y el uso de los programas
Características:Características:
El software se desarrolla o construye, no se manufactura en sentido clásico(a pesar de las similitudes entre el desarrollo de Sw y la manufactura del Hw, ambas son diferentes);
El software no se desgasta, pero se deteriora (cuando un componente del Hw se desgasta se sustituye con un repuesto. Pero en Sw no existenrepuestos). El software es inmune a los males ambientales (polvo, vibración, temperatura);
Curva de fallos de HardwareCurva de fallos de Hardware
TiempoTiempoTiempoTiempo
Indice de fallos
Indice de fallos
Indice de fallos
Indice de fallos
Defectos fabricación
(ej: mortalidad infantil)
Estropeado
(desgaste)
Obsolescencia
Curva real de fallos de SoftwareCurva real de fallos de Software
TiempoTiempoTiempoTiempo
Indice de fallos
Indice de fallos
Indice de fallos
Indice de fallos
Defectos fabricaciDefectos fabricaciDefectos fabricaciDefectos fabricacióóóónnnn
Curva ideal
Cambio Cambio Cambio
Curva
realObsolescencia
A pesar de que la industria tiene unatendencia hacia la construcción porcomponentes, la mayoría del software aúnse construye a medida.
Un componente Hw (tornillo) se puedereutilizar.
Un componente de Sw se debe diseñar e implementar de forma que pueda utilizarseen muchos programas (creación de ventanas gráficas, menús desplegables) diferentes (encapsulan tanto los datos comoel proceso)
Categorias del SoftwareCategorias del Software
Es una colección de programas escritos paraservir a otros programas.
Algunos programas de sistemas(compiladores, editores y utilerias para la administración de archivos) procesanestructuras de información complejas perodeterminadas.
Otras aplicaciones de sistemas (componentesdel S.O. controladores, software de red, procesadores para telecomunicaciones) procesan datos indeterminados.
Software de sistemas:Software de sistemas:
Consiste en programasindependientes que resuelven unanecesidad de negocios específica.
Las aplicaciones en esta áreaprocesan datos empresariales o técnicos de forma que facilitan lasoperaciones de negocios o la tomade decisiones técnicas o de gestión.
Software de aplicación:Software de aplicación:
Se caracterizaba por algoritmos“devoradores de números”, abarcadesde la astronomia hasta la vulcanología, desde el análisis de la tensión automotriz hasta la dinámicaorbital de los transbordadoresespaciales, y desde la biología molecular hasta manufactura automatizada.
Hoy en día, el diseño asistido porcomputadora, la simulación de sistemas, han comenzado a tenerrelevancia en tiempo real.
Software científico y de ingeniería:Software científico y de ingeniería:
Reside dentro de la memoria de sólolectura del sistema y con él se implementan y controlan características y funciones para el usuario final y el sistemamismo.
El software incrustado puede desempeñarfunciones limitadas y curiosas (como el control del teclado de un horno de microondas) o proporcionar capacidades de control y funcionamiento significativas(funciones digitales de un automovil, control de combustible, sistema de frenado, etc.)
Software empotradoSoftware empotrado
Diseñado para proporcionar unacapacidad específica y la utilización de muchos clientes diferentes, se puedeenfocar en un nicho de mercadolimitado (como en los productos para el control de inventarios) o dirigirse hacialos mercados masivos ( por ejemplo, aplicaciones de procesadores de palabras, gráficas por computadora, multimedia, manejo de bases de datos, finanzas).
Software de linea de productosSoftware de linea de productos
Las “WebApps” engloban un espectroamplio de aplicaciones.
Son apenas un poco más que un conjuntode archivos de hipertexto e hipermedia.
A medida que el comercio electrónico y lasaplicaciones B2B adquieren mayor importancia, las WebApps evoluciona haciaambientes computacionales sofisticados, integrados con bases de datos corporativasy aplicaciones de negocios.
Aplicaciones basadas en WEBAplicaciones basadas en WEB
Las aplicaciones dentro de estaárea incluyen la robótica, los sistemas expertos, el reconocimiento de patrones(imagen y voz), las redesneuronales artificiales, la comprobación de teoremas y los juegos en computadora.
Software de inteligencia artificialSoftware de inteligencia artificial
Software heredadoSoftware heredado
Fuerón desarrollados hace décadas y hansido modificados en forma continua paracumplir los requerimientos de los cambiosen los negocios y en las plataformas de computo. La proliferación de dichossistemas ha causado dolores de cabeza a las grandes organizaciones, las cuales los perciben como costosos en sumantenimiento y riesgosos en suevolución.
El software heredado lo caracterizán sulongevidad y el ser crítico para los negocios.
Crisis del SoftwareCrisis del Software
El estudio de mercado The Chaos Reportrealizado por Standish Group International Inc, reportó que sólo un 16% de los proyectos de software son exitosos (terminan en los plazos y costos y cumplen los requerimientos acordados).
Otro 53% sobrepasa costos y plazos y cumpleparcialmente los requerimientos. El resto nisiquiera llega a téermino.
En 1995, se estima que las companias y el gobierno de USA se gastaron 81,000 millones de dolares en proyectos cancelados.
Los proyectos terminados, pero cuyo plazo de ejecución ha sido superior al previsto, supondrán un coste de 50,000 millones de dolares.
Se estima que solo el 16,7% de los proyectos software fueron terminados en el plazo y presupuesto previstos.
Muchos de estos proyectos terminados distan mucho de satisfacer las espectativas planteadas.
El grado de cumplimiento de los requisitos inicialmenteplanteados se estima en un 42% en companias grandes.
La cifra mejora para pequeñas companias: Se finalizan el 78,4% de los proyectos con un gradode satisfacción de requisitos del 74,2%
En 1997 la compania Oxford Healthcare creciaaceleradamente.
� De un momento a otro perdió $200 millonesen valor de sus acciones (50%).
� La causa fue que un proyecto de TI quefracaso (su sistema diseñado para 76000 suscriptores, alcanzo a 3 millones y el sistema no pudo emitir la facturaciónrequerida)
� ¾ de todos los proyectos de misión críticanunca son terminados o utilizables.
� 29% cancelados
� 6% concluidos más de 200% más tarde
� 16% concluidos 101-200% tarde
� 9% concluidos 51-100% tarde
� 8% concluidos 21-50% tarde
� 6% concluidos menos de 20% tarde
� 26% concluidos a tiempo
Problemas del SoftwareProblemas del Software
La planificación y la estimaciónde costos son muy imprecisas
La productividad es baja
La calidad es mala
El cliente queda insatisfecho
Proyecto Software Tipico (codificar y arreglar - Code and Fix)Proyecto Software Tipico (codificar y arreglar - Code and Fix)
Preguntamos al programador que estime el tiemponecesario para programar X sistema/programa
Reducimos esta estimación en un 30%
No realizamos análisis de requerimientos niprototipos por que no hay suficiente tiempo
Adoptamos la última herramienta como solución ideal para cumplir con la estimación propuesta
Codificamos rapidamente y poco elegantementeparchando donde así haga falta porque no hay tiempopara un buen diseño
Adicionamos características que fueron olvidadascuando el trabajo en la especificación de requerimientos fue obviado
Cortamos el tiempo planeado para las pruebas del software
Abandonamos la herramienta que solucionaría todoslos problemas y regresamos a la herramienta anterior y mejor conocida
Se libera la 1ra. Versión del producto con muchasexpectativas
Se comienza a arreglar los problemas que fueroncreados cuando se codificó rápida y desordenadamente
Creamos más versiones
Se libera definitivamente el sistema con costossuperiores al presupuesto original, con menorfuncionalidad y en el tiempo aproximado a la estimación realizada en el primer punto.
Como resultado del Chaos Report y otros estudios, se puedeseñalar las siguientes peores prácticas y prácticas ausentesdel desarrollo de software:
No existe medición del proceso ni registro de datoshistóricos
Rechazo a estimaciones imprecisas de plazos y costos
Mal uso de herramientas automatizadas para la planificacióny estimación
Excesiva e irracional presión en los calendarios
Crecimiento excesivo de los requerimientos para un producto de software
Escaso o deficiente monitoreo
No se hace gestión de riesgos formalmente
No se realiza un proceso formal de pruebas
No se realizan revisones técnicas e inspeccion de código
SolucionesSoluciones
Pero: Cómo se pueden modificar estas prácticasincorrectas e introducir aquellas correctas ?
Pero: Cómo se pueden modificar estas prácticasincorrectas e introducir aquellas correctas ?
Bajo la premisa básica de que el desarrollo de software
es una actividad de INGENIERIA
(crea soluciones costo-efectivas aplicadas a problemas prácticos)
Utilizando metodos y herramientas adecuados !!!
Utilizando metodos y herramientas adecuados !!!
Top Related