capitulo icapitulo i - cotana.informatica.edu.bocotana.informatica.edu.bo/downloads/microsoft...

47
CAPITULO I CAPITULO I 1.1 CONCEPTOS BASICOS Resumen preparado por Miguel Cotaña Ingeniería del Software INF - 163

Upload: letram

Post on 20-Oct-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

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

Cumplir con los Principiosde Ingeniería de Sistemas podría evitar:

DesprestigioDesprestigio

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

1.- ESPECIFICACION DE SOFTWARE

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 !!!

Tendencias / EnfoquesTendencias / Enfoques

Proceso del software

Ingeniería de software

Modelos prescriptivos

Desarrollo ágil

Aseguramiento de la calidad

Mejoramiento de procesos

Estándares