SISTEMAS UNACH

download SISTEMAS UNACH

If you can't read please download the document

Transcript of SISTEMAS UNACH

FACULTAD DE INGENIERIAESCUELA DE INGENIERIA SS S COMPUTACION EN SISTEMAS Y CO U C O INGENIERIA DE SOFTWARE Ing. Pamela Vsquez Costales Tercer Ao Septiembre 2012 Julio 2013

1. El Software y la Ingeniera de SoftwareQu es? Software es el producto que construyen los programadores y al que despus le dan mantenimiento. Incluye programas que se ejecutarn en una computadora de cualquier tamao y arquitectura, el contenido se t it t l t id presenta a medida de que se ejecutan los p g programas de cmputo e informacin tanto p en una copia dura como en formatos virtuales como cualquier medio electrnico. Ingeniera de Software est formada por un proceso, un conjunto de mtodos y un arreglo de herramientas que permite a los profesionales elaborar software de calidad calidad.

Por qu es importante? El software es importante porque afecta a casi todos los aspectos de nuestras vidas y ha invadido nuestro comercio, cultura y actividades cotidianas. La ingeniera de software es importante porque nos permite construir sistemas complejos en un tiempo razonable y con alta calidad

Cules son los pasos? El software de computadora se construye del mismo modo que cualquier producto exitoso, con la aplicacin de un proceso gil para obtener un resultado de mucha calidad, que satisfaga las necesidades de las personas que usarn el producto. E l d t En estos pasos se aplica el enfoque de la ingeniera de software software.

Cul es el producto final? Desde el punto de vista de un ingeniero de software, el producto final es el conjunto de programas, contenido o datos y otros productos terminados p que constituyen el software de computadora. Pero desde la perspectiva del usuario, el producto final es la informacin resultante que de l d algn modo h d hace mejor al mundo en j l d el que vive.

1.1. 1 1 La Naturaleza del Software El software tiene un papel dual es un dual, producto y tambin el vehculo para entregar un producto. En su forma de g p producto, brinda el potencial de cmputo incorporado en el hardware de cmputo o en una red d computadoras t d de t d a las que se accede por medio de hardware local local. Ya sea que resida en un telfono mvil u opere en el interior de una computadora p p central, el software es un transformador de informacin:

Produce, administra, adquiere, modifica, despliega o transmite informacin que puede ser t d tan simple como un solo bit o i l l tan compleja como una presentacin con multimedios generada a partir de datos obtenidos de decenas de fuentes independientes. Como vehculo utilizado para distribuir el producto, el software acta como la base p para el control de la computadora p (sistemas operativos), para la comunicacin de informacin (redes) y para la creacin y control de otros programas (herramientas y ambientes de software).

El software distribuye el producto ms importante de nuestro tiempo: la informacin. Transforma los datos personales por ejemplo, l l l las transacciones financieras de un individuo de modo que puedan ser p edan se ms tiles administ a la tiles, administra informacin de negocios para mejorar la competitividad, competitividad provee una va para las redes mundiales de informacin la internet y brinda los medios para obtener informacin en todas sus formas.

Las notables mejoras en el funcionamiento del hardware los cambios hardware, en las arquitecturas de computadora, el gran incremento en la memoria y capacidad d id d de almacenamiento y una l i t amplia variedad de opciones de entradas y salidas han propiciado la existencia de p p sistemas basados en computadora ms sofisticados y complejos. Cuando un sistema tiene xito la sofisticacin y xito, complejidad producen resultados excelentes pero tambin plantean problemas enormes para aquellos deben construir sistemas complejos.

En la actualidad, la enorme industria del software se ha convertido en un factor dominante en las economas del mundo industrializado. Equipos de especialistas de software cada uno software, centrado en una parte de la tecnologa que se requiere para llegar a una aplicacin compleja, h li i l j han reemplazado l d al programador solitario de los p primeros tiempos. p A pesar de esto, las preguntas que se haca aquel programador son las mismas que surgen cuando se construyen sistemas modernos basados en computadora:

Por qu se requiere tanto tiempo para terminar el software? Por qu son tan altos los costos del desarrollo? Por qu no podemos detectar todos q p los errores antes de entregar el software a nuestros clientes? Por qu dedicamos tanto tiempo y esfuerzo a mantener los programas existentes? Por qu seguimos con d f l d dificultades para medir el avance mientras se desarrolla y mantiene el software? Esta preocupacin llev a la adopcin de la prctica de la ingeniera de software. ft

1.1.1. Definicin de Software1. Instrucciones

que cuando se ejecutan proporcionan las caractersticas funcin y caractersticas, desempeo buscados 2. Estructuras de datos que permiten que los q p q programas manipulen en forma adecuada la informacin Pueden darse definiciones ms completas pero es probable que no mejore nuestra comprensin por eso es importante asimilar las caractersticas d l software que l h l t ti del ft lo hacen diferente de otros objetos que construyen los seres humanos. El software es elemento de un sistema lgico y no de uno fsico, por eso tiene caractersticas que difieren del hardware:

1. El software se desarrolla o modifica con intelecto; no se manufactura en el sentido clsico Aunque hay similitudes en el desarrollo de software y la fabricacin de hardware, las dos actividades son dif d ti id d diferentes en l t lo fundamental. En ambas, la alta calidad se logra a travs de un buen diseo pero la diseo, fase de manufactura del hardware introduce problemas de calidad que no existen o que se corrigen con facilidad en el software. Ambas actividades dependen de personas, pero la relacin entre los individuos dedicados y el trabajo logrado es diferente.

2. 2 El software no se desgasta El hardware presenta una tasa de fallas relativamente elevada en una etapa temprana de su vida atribuidas generalmente a defectos de diseo y manufactura; los defectos se corrigen y la tasa de fallas es estable y muy bajo. No obstante, conforme pasa el tiempo, la tasa de fallas aumenta de nuevo a medida que q los componentes del hardware resienten los efectos acumulativos de suciedad, abuso, vibracin, temperaturas e inconvenientes ambientales.

El software no es susceptible a los problemas ambientales que hacen que el hardware se d h d desgaste. L t Los d f t defectos ocultos lt ocasionarn tasas elevadas de fallas al comienzo de la vida de un programa pero se corrigen. La implicacin est clara: el software no se desgasta pero si se deteriora.

3. 3 Aunque la industria se mueve hacia la construccin basada en componentes, la mayor parte del software se construye para un uso individualizado A medida que evoluciona una disciplina de ingeniera, se crea un conjunto de componentes estandarizados para el diseo. Los tornillos estndar y los circuitos integrados preconstruidos son solo dos de g p los miles de componentes estndar que utilizan los ingenieros mecnicos y electrnicos conforme disean nuevos sistemas.

Los componentes reutilizables han sido p creados para que el ingeniero pueda concentrarse en los elementos verdaderamente innovadores de un diseo; es decir, en las partes de este que representan algo nuevo. En hardware volver a usar componentes es una parte natural del proceso de ingeniera. En el software es algo que apenas ha empezado a h d hacerse a gran escala. l Un componente de software debe disearse e i implementarse d l t de modo que pueda d d volverse a usar en muchos programas diferente. diferente

1.1.2. 1 1 2 Dominios de aplicacin del softwareSoftware de sistemas: conjunto de programas escritos para dar servicio a otros programas. Determinado software como compiladores, editores y h il d dit herramientas para i t administrar archivos procesa estructuras de informacin complejas pero deterministas deterministas. Otros como componentes de sistemas operativos, manejadores, operativos manejadores software de redes redes, procesadores de telecomunicaciones procesan datos indeterminados.

En cualquier caso el software de sistemas se caracteriza por gran interaccin con el hardware d h d de l la computadora, uso t d intensivo por parte de usuarios y administracin de un proceso sofisticado sofisticado, estructuras complejas de datos e interfaces externas mltiples mltiples.

Software Soft a e de aplicacin aplicacin: p og m programas aislados que resuelven una necesidad especfica de negocios Las aplicaciones en negocios. esta rea procesan datos comerciales o tcnicos en una forma que facilita las operaciones de negocios o la toma de d decisiones administrativos o tcnicas. o ad a o a Tambin se usa para controlar funciones de negocios en tiempo real como procesamiento de transacciones en punto de venta, control de procesos de manufactura en tiempo real.

Software de ingeniera y ciencias: se p por algoritmos g ha caracterizado devoradores de nmeros, las aplicaciones van de la astronoma a la vulcanologa, del anlisis de tensiones en automviles a la dinmica orbital, y de la biologa molecular a l manufactura automatizada. la f t t ti d El diseo asistido por computadora, la simulacin d sistemas y otras aplicaciones i l i de i t t li i interactivas, han comenzado a hacerse en tiempo real e incluso han tomado caractersticas del software de sistemas.

Software incrustado: reside dentro de p p un producto o sistema y se usa para implementar y controlar caractersticas y funciones para el usuario final y para el sistema en s. Ejecuta funciones limitadas y particulares como control del tablero de un microondas o provee una capacidad i d id d significativa de funcionamiento y control como funciones digitales en un automvil automvil, como el control del combustible, el sistema de frenos frenos.

Software de lnea de productos: es p p p p diseado para proporcionar una capacidad especfica para uso de muchos consumidores diferentes. Se centra en mercados limitados como el control de inventarios de productos o se dirige a mercados d masivos i de d consumidores id procesamiento de textos, hojas de clculos, clculos grficas por computadoras, computadoras multimedios, entretenimiento, finanzas, negocios, etc. negocios etc

Aplicaciones Web: llamadas webapps, esta categora de software centrado en redes agrupa una amplia gama d d li de aplicaciones, en su forma ms sencilla son poco ms que un conjunto de archivos de hipertexto vinculados que presentan informacin con uso de texto y grficas limitadas. Desde que surgi web 2.0 estn evolucionando hacia ambientes de cmputo sofisticados que proveen caractersticas aisladas, funciones de c puto cmputo y contenido para el usuario final, co te do pa a e usua o a, sino que tambin estn integradas con bases de datos corporativas y aplicaciones de d negocios. i

Software de inteligencia artificial: hace uso de algoritmos no numricos para resolver problemas complejos que no son fciles de tratar computacionalmente o con el anlisis d l l directo. Las aplicaciones en esta l rea incluyen robtica, sistemas expertos, reconocimiento de patrones imagen y voz voz, redes neurales artificiales, demostracin de teoremas y juegos juegos.

Son millones de ingenieros de software en el mundo que trabajan duro en proyectos de software en una o ms de estas categoras. categoras En ciertos casos se elaboran sistemas nuevos, pero en muchos otros se co ge , adapta corrigen, adaptan mejoran aplicaciones ya ejo a ap cac o es existentes.

Han aparecido nuevos desafos: Computacin en un mundo abierto, el rpido crecimiento de las redes inalmbricas da el reto a los ingenieros de software desarrollar software de sistemas y aplicacin que permita a dispositivos mviles, computadoras personales y sistemas empresariales comunicarse a i t i l i travs de redes enormes.

Construccin de redes, la red mundial World Wide Web se est convirtiendo con rapidez tanto en un motor d computacin id de i como en un proveedor de contenido. El desafo para los ingenieros de software es hacer arquitecturas sencillas como planeacin financiera personal y aplicaciones sofisticadas que proporcionen un beneficio a mercados objetivo de usuarios finales.

Fuente abierta, tendencia creciente que da como resultado la distribucin de cdigo f di fuente para aplicaciones d li i de sistemas como sistemas operativos, bases de datos y ambientes de desarrollo de modo que mucha gente pueda contribuir a su desarrollo desarrollo.

El desafo para los ingenieros de software es elaborar cdigo fuente que sea auto descriptivo y tambin l que es ms d i i bi lo importante, desarrollar tcnicas que permitirn tanto a los consumidores como a los desarrolladores saber cuales son los cambios hechos y como se manifiestan dentro del software.

1.2. La webapps

naturaleza

nica

de

las

La mayora de las aplicaciones presentan los siguientes atributos: pp Uso intensivo de redes: una webapp reside en una red y debe atender las necesidades de una comunidad diversa de clientes. La red permite acceso y comunicacin mundiales como internet o tiene acceso y comunicacin li it d i i limitados como una i t intranet t corporativa.

Concurrencia: a la webapp puede acceder un gran nmero de usuarios a la vez. En muchos casos, l h los patrones d uso entre de los usuarios finales varan mucho. Carga impredecible: el nmero d usuarios d bl l de de la webapp cambia en varios rdenes de magnitud magnit d de un da a ot o n otro. Rendimiento: si un usuario de la webapp debe d b esperar d demasiado para i i d ingresar para al procesamiento por parte del servidor para el formado y despliegue del lado del cliente, quiz decidan irse a otro lugar.

Disponibilidad: aunque no es razonable esperar una disponibilidad del 100%, es frecuente que los usuarios de webapps populares demanden acceso las 24 horas los 365 das del ao. Orientadas a los datos: la funcin principal de muchas webapp es el uso de hipermedios para presentar al usuario final contenido en forma de texto, grficas, audio y video Adems las webapps se video. Adems, usan en forma comn para acceder a informacin que existe en bases de datos q que no son parte integral del ambiente basado en web como correo electrnico o aplicaciones fi li i financieras. i

Contenido sensible: la calidad y naturaleza esttica del contenido constituye un rango importante d l calidad d una webapp. i de la lid d de b Evolucin continua: a diferencia del software d aplicacin convencional que f de l l evoluciona a lo largo de una serie de etapas planeadas y separadas sepa adas cronolgicamente, las aplicaciones web evolucionan en forma continua No es raro continua. que muchas de estas se actualicen minuto a minuto o que su contenido se realice en cada solicitud.

Inmediatez: necesidad de que el software llegue con rapidez al mercado en las webapps tienen plazo d d b i l de das o semanas e incluso horas con ciertas herramientas modernas. modernas Seguridad: debido a que las webapps se encuentran enc ent an en la red es difcil o imposible ed limitar la poblacin de usuarios finales que pueden accesarla Con el fin de proteger accesarla. el contenido y brindar modos seguros de transmisin de datos, datos deben implementarse medidas estrictas a travs de la infraestructura de apoyo de una p y webapp y dentro de la misma aplicacin

Esttica: parte innegable del atractivo de las webapp es su apariencia y percepcin. Cuando se h di d una aplicacin para C d ha diseado li i comercializar o vender productos o ideas, la esttica tiene tanto que ver con el xito como el diseo tcnico.

1.3. Ingeniera de software: Para elaborar software listo aceptar algunas realidades: hay que

El software se ha incrustado en casi todos los aspectos de nuestra vida y como consecuencia el nmero de personas que tienen inters en las caractersticas y funciones que brinda una aplicacin especifica ha crecido notablemente. Para construir una nueva aplicacin o sistema t i li i i t incrustado, deben escucharse muchas opiniones. opiniones

Y en ocasiones son opiniones muy distintas entre ellas sobre que caractersticas y funciones d b tener el software. f i debera l f Se concluye que debe hacerse un esfuerzo concertado para entender el problema d d l bl antes de desarrollar una aplicacin de software. soft a e Los requerimientos de la tecnologa que demandan l d d los i di id individuos, negocios y i gobiernos se hacen mas complejos con cada ao que pasa pasa.

El software sofisticado que alguna vez se implement en un ambiente de cmputo predecible y autocontenido, h d ibl id hoy en d se da halla incrustado en el interior de todo, desde la electrnica de consumo hasta dispositivos mdicos o sistemas de armamento. armamento Se concluye que el diseo se ha vuelto una actividad crucial crucial.

Los individuos, negocios y gobiernos dependen cada vez ms del software para tomar d i i decisiones estratgicas y tcticas, i i as como para sus operaciones y control cotidianos. cotidianos Si el software falla las falla, personas y empresas grandes pueden experimentar desde un inconveniente menor hasta fallas catastrficas. Se concluye que el software debe tener alta calidad.

A medida que aumenta el valor percibido por una aplicacin especfica se incrementa la l probabilidad d que su b b bilid d de base d usuarios de i y longevidad tambin crezcan. Conforme se extienda l b f d la base d usuarios de y el tiempo de uso, las demandas para adaptarla mejorarla adapta la y mejo a la tambin c ece n crecern. Se concluye que el software debe tener facilidad f ilid d para recibir mantenimiento. ibi t i i t

Estas realidades simples llevan a una conclusin: debe hacerse ingeniera con el software en todas sus f f d formas y a travs d de todos sus dominios de aplicacin.

La ingeniera de software es una tecnologa con varias capas, y cualquier enfoque de ingeniera d b b i i debe basarse en el compromiso l i organizacional con la calidad.

La administracin total de calidad, Six Sigma, y otras filosofas similares alimentan l cultura d mejora continua, y li la l de j i es esta cultura la que lleva una ltima instancia al desarrollo de enfoques cada vez ms eficaces de la ingeniera de software. software

El fundamento en que se apoya la ingeniera de software es el compromiso con l calidad. la lid d El fundamento para la ingeniera de software es l capa d proceso. El proceso f la de l de ingeniera de software es el aglutinante que q e une las capas de la tecnologa y ne permite el desarrollo racional y oportuno del software software. El proceso define una estructura que debe establecerse para la obtencin eficaz de tecnologa de ingeniera de software .

El proceso de software forma la base para el control de la administracin de proyectos d de software, y establece el f bl l contexto en el que se aplican mtodos tcnicos, tcnicos se generan productos del trabajo (modelos, documentos, datos, reportes formatos, etc.). formatos etc ) Se establecen puntos de referencia, se asegura la calidad y se administra el cambio de manera apropiada.

Los mtodos de la ingeniera de software proporcionan la experiencia tcnica para elaborar software. I l l b f Incluyen un conjunto j amplio de tareas, como comunicacin, anlisis de los requerimientos modelacin requerimientos, del diseo, construccin del programa, pruebas y apoyo Se basan en un conjunto apoyo. de principios fundamentales que gobiernan cada rea de la tecnologa e incluyen actividades de la modelacin y otras tcnicas descriptivas. p

Las herramientas de la ingeniera de software proporcionan un apoyo automatizado o semi automatizado para el i d i i d l proceso y los mtodos. Cuando se integran l d las h herramientas d de modo que la informacin creada por una pueda ser utilizada po p eda se tili ada por ot a otra, q eda queda establecido un sistema que la informacin creada por una pueda ser utilizada por otra, queda establecido un sistema llamado ingeniera de software asistido por computadora que apoya el desarrollo del software.

1.4. El proceso del software Un proceso es un conjunto de actividades, acciones y tareas que se ejecutan cuando va a crearse algn producto del trabajo. Una actividad busca lograr un objetivo amplio y se desarrolla sin importar el p p dominio de la aplicacin, tamao del proyecto, complejidad del esfuerzo o grado de rigor con el que se usar la ingeniera de software.

Una accin (diseo de la arquitectura) es un conjunto de tareas que producen un producto i d importante d l trabajo por del b j ejemplo, un modelo del diseo de la arquitectura. arquitectura Una tarea se centra en un objetivo pequeo pero bien definido por ejemplo realizar una prueba unitaria que produce li b it i d un resultado tangible.

Un proceso no es una prescripcin rgida de cmo elaborar software de cmputo, Por el contrario, es un enfoque adaptable P l i f d bl que permite que las personas que hacen el trabajo (equipo software) busquen elijan busquen, el conjunto apropiado de acciones y tareas para el trabajo trabajo. Se busca entregar el software en forma oportuna y con calidad suficiente para satisfacer a quienes patrocinaron su creacin y a aquellos que lo usarn usarn.

La estructura del proceso establece el fundamento para el proceso completo de la ingeniera d software por medio d l i i de f di de la identificacin de un nmero pequeo de actividades estructurales que sean aplicables a todos los proyectos de software, sin importar su tamao o software complejidad. Adems, la estructura del proceso incluye un conjunto de actividades sombrilla que son aplicables a travs de todo proceso de software

Una estructura de proceso para la ingeniera de software consta de cinco actividades: i id d 1. 2. 3. 4. 5. Comunicacin Planeacin Modelado Construccin Despliegue

Comunicacin: antes de iniciar cualquier trabajo es de importancia crtica comunicarse y colaborar con el cliente ( i l b l li (y otros participantes). Se busca entender los objetivos de los participantes respecto al proyecto y reunir los requerimientos que ayuden a definir las caractersticas y funciones del software.

Planeacin: Cualquier viaje complicado se simplifica si hay un mapa. Un proyecto de software es un viaje dif il y l actividad d f i j difcil la i id d de planeacin crea un mapa que gua al equipo mientras viaja El mapa llamado viaja. plan de proyecto de software define el trabajo de ingeniera de software al describir las tareas tcnicas por realizar, los probables riesgos, los recursos que se requieren, los productos del trabajo que se obtendrn y una programacin de las p g actividades.

Modelado: Ya sea usted diseador de paisaje, constructor de puentes, carpintero, i arquitecto, i ingeniero i i aeronutico a diarios trabaja con modelos. Crea un bosquejo del objeto por hacer a fin de entender el panorama general. Un ingenie o de soft a e hace lo mismo al ingeniero software crear modelos a fin de entender mejor los requerimientos del software y el diseo que los satisfar.

Construccin: est actividad combina la generacin de cdigo (ya sea manual o automtico) y l i ) las pruebas que se b requieren para descubrir errores en ste. Despliegue: el software ( l l f (como entidad d d completa o como un incremento parcialmente terminado) pa cialmente te minado) se ent ega al entrega consumidor que lo evala y que le da retroalimentacin, retroalimentacin misma que se basa en dicha evaluacin.

Ests cinco actividades se usan durante el desarrollo de programas pequeos y sencillos, en l creacin d aplicaciones ill la i de li i web grandes y en la ingeniera de sistemas enormes y complejos basados en computadoras. Los detalles del proceso de software sern distintos di ti t en cada caso, pero l actividades d las ti id d estructurales son las mismas.

Para muchos proyectos de software, las actividades estructurales se aplican en forma it f iterativa a medida que avanza el ti did l proyecto. Es decir, la comunicacin, la planeacin, planeacin el modelado la construccin y modelado, el despliegue se ejecutarn a travs de cierto nmero de repeticiones del proyecto. Cada iteracin produce un incremento del software que da a los participantes un subconjunto de caractersticas y funcionalidad generales g del software. Conforme se produce cada incremento, el software se hace ms completo.

Las actividades estructurales se son complementadas por cierto nmero de actividades sombrilla: ti id d b ill Seguimiento y control del proyecto de software: permite que el equipo d ft it l i de software evale el progreso comparndolo con el plan del proyecto y tome cualquier accin necesaria para apegarse a la programacin de actividades actividades.

Administracin del riesgo: evala los riesgos que puedan afectar el resultado del proyecto o l calidad d l producto. t la lid d del d t Aseguramiento de la calidad de software: define y ejecuta l d fi j t las actividades requeridas ti id d id para garantizar la calidad de software. Revisiones tcnicas: evala l R i i i l los productos d del trabajo de ingeniera de software a fin de descubrir y eliminar errores antes de que se propaguen a la siguiente actividad.

Medicin: define y rene mediciones del proceso, proyecto y producto para ayudar al equipo a entregar el software que l i t l ft satisfaga las necesidades de los participantes; puede usarse junto con las dems actividades estructurales y de sombrilla. sombrilla Administracin de la configuracin del software: administra los efectos del cambio a lo largo del proceso de software.

Administracin de la reutilizacin: define criterios para volver a usar el producto de trabajo (i l t b j (incluso l los componentes d l t del software) y establece mecanismos para obtener componentes reutilizables reutilizables. Preparacin y produccin del producto de trabajo: agrupa las actividades requeridas para crear productos del trabajo, tales como modelos documentos modelos, documentos, registros registros, formatos y listas.

Un proceso adoptado para un proyecto puede ser distinto de otro adoptado para otro proyecto las diferencias son las siguientes:

Flujo general de las actividades, acciones y tareas, tareas as como de las interdependiencias entre ellas. Grado en el que las acciones y tareas estn definidas dentro de cada actividad estructural Grado en el que se identifican y requieren los productos del trabajo Forma en la que se aplican las actividades del aseguramiento de calidad calidad.

Manera en la que se realizan las actividades de seguimiento y control del proyecto. t Grado general de detalle y rigor con el que se d describe el proceso. ib l Grado con el que el cliente y otros participantes se i i i involucran con el proyecto. l l Nivel de autonoma que se da al equipo de software f Grado con el que son prescritos la organizacin y los roles del equipo.

1.5. La prctica de la ingeniera de software En la seccin anterior se introdujo un modelo general de proceso de software compuesto de un conjunto de actividades q que establecen estructura para la prctica p p de la ingeniera de software. Las actividades estructurales generales: Comunicacin, Planeacin, Modelado, Construccin C t i y Despliegue, D li y las l actividades sombrilla establecen el esqueleto de la arquitectura para el trabajo de ingeniera de software

1.5.1. La 1 5 1 L esencia d l prctica i de la ti La esencia es la solucin de problemas y en consecuencia la esencia de la prctica de la ingeniera de software: 1. Entender el problema (comunicacin y anlisis) 2. Planear la solucin (modelado y diseo del software) ) 3. Ejecutar el plan (generacin del cdigo) 4. 4 Examinar la exactitud del resultado (probar y asegurar la calidad)

Entender el problema: entender no siempre es fcil, es conveniente dedicar un poco d tiempo a responder preguntas de i d como: Quines tienen que ver con l solucin d l la l del problema? Cules son las incgnitas? Cules datos, funciones y caractersticas se requieren para resolver el problema en f l l bl forma apropiada? Puede f P d fraccionarse el problema? i l bl ? es posible representarlo con problemas ms pequeos?

Es posible representar grficamente el problema? Puede crearse un modelo de anlisis? li i ? Planear la Solucin: ahora entiende el problema, antes de escribir el cdigo piense un poco: Ha visto antes problemas similares? Hay patrones reconocibles en una solucin potencial? Hay software existente que implemente i l t los l datos, d t funciones f i y caractersticas que se requieren?

Ha resuelto un problema similar? Si es as, son reutilizables los elementos de la solucin? l i ? Puede definirse problemas ms pequeos?, si es as, Hay soluciones l evidentes para estos? Es capaz de representar una solucin en una forma que lleve a su implementacin eficaz? E posible crear un modelo d l fi ? Es ibl d l del diseo?

Ejecutar el plan: el diseo que creo sirve como mapa para carreteras para el sistema que quiere construir i i i Se ajusta la solucin al plan? Es probable que cada parte componente de la solucin sea correcta? El diseo y cdigo se han revisado o, mejor an se han hecho pruebas respecto de la correccin d l algoritmo? i del l it ?

Examinar el resultado: no se puede estar seguro que la solucin sea perfecta, pero si d que se h di d un nmero i de ha diseado suficiente de pruebas para descubrir tantos errores como sea posible posible. Puede probarse cada parte componente de la sol cin? Se ha implementado una solucin? na estrategia razonable para hacer pruebas? La L solucin produce resultados que se l i d lt d apegan a los datos, funciones y caractersticas que se requieren? El software se ha validado contra todos los requerimientos de los participantes?

1.5.2. Principios generalesDavid Hooker propuso siete principios que se centran en la prctica de la ingeniera p g de software como un todo. Primer principio: La razn de que exista todo, un sistema existe para dar valor a los , p usuarios. Antes de especificar un requerimiento, su funcionalidad, las plataformas o procesos a desarrollar hay que ver si agrega valor real al sistema si no, no h hay que h hacerlo. l

Segundo principio: MSE (Mantenlo sencillo, ), hay muchos factores por considerar en cualquier diseo; debe ser tan simple como sea posible. Facilita conseguir que el sistema sea comprensible i l i t ibl y susceptible de recibir mantenimiento, pero sin descartar caractersticas o rasgos internos. Tercer principio: Mantener la visin visin, tener una visin clara es ideal para el xito del proyecto Comprometer la visin de la proyecto. arquitectura de un sistema de software debilita y har que colapsen los sistemas bien diseados.

Cuarto principio: Otros consumirn lo que usted produce, siempre establezca especificaciones, disee e implemente con la seguridad de que alguien ms tendr que entender l que usted h t d lo t d haga. C difi Codifique pensando en aquellos que deben dar mantenimiento y ampliar el sistema sistema. Alguien debe depurar el cdigo que usted escriba, escriba y eso lo hace usuario d su cdigo cdigo. Hacer su trabajo ms fcil agrega valor al sistema. Quinto principio: Abrase al futuro, un sistema con vida til tiene mas valor.

En los ambientes de cmputo actuales, donde las especificaciones cambian de un momento a otro y l las plataformas d l f de hardware quedan obsoletas con slo unos meses de edad es comn que la vida til edad, del software se mida en meses y no en aos. Los sistemas de software con aos verdadera fortaleza deben durar mucho tiempo, para tener xito los sistemas deben ser fciles de adaptar a esos y otros cambios.

Sexto principio: Planee por anticipado la reutilizacin, la reutilizacin ahorra tiempo y esfuerzo. f Al d desarrollar un sistema ll i lograr un alto nivel de reutilizacin es quiz la meta ms difcil de lograr lograr. La reutilizacin del cdigo y de los diseos se ha reconocido como uno de los mayores beneficios de usar tecnologas orientadas a objetos. Sin embargo, lar recuperacin de esta inversin no es automtica. Sptimo principio: Piense es el principio Piense, que ms se pasa por alto. Pensar en todo con claridad antes de emprender la accin p casi siempre produce mejores resultados.

RESUMEN El software es un elemento clave en la evolucin de sistemas y productos basados en computadoras, y una de las tecnologas ms importantes en todo el mundo. El software h pasado d ser l solucin d un ft ha d de la l i de problema especializado y herramienta de anlisis de la informacin a una industria en si misma. No obstante, an hay problemas para desarrollar software de calidad a tiempo y dentro del presupuesto asignado.

El software se di i ft dirige a una gama amplia d li de tecnologa y campos de aplicacin. El software heredado sigue planteando retos especiales a quienes deban darle mantenimiento. mantenimiento Los sistemas y aplicaciones basados en web han evolucionado de simples conjuntos de contenido de informacin a sistemas sofisticados que presentan una funcionalidad compleja y contenido en multimedios, aunque dichas webapps tienen , q pp caractersticas y requerimientos nicos son software.

La ingeniera d software i l L i i de ft incluye procesos, mtodos y herramientas que permiten elaborar a tiempo y con calidad sistemas complejos basados en computadoras. El proceso de software incorpora cinco actividades estructurales: comunicacin, planeacin, modelado, construccin y despliegue que son aplicables a todos los p y proyectos. La prctica de la ingeniera es una actividad p para resolver problemas, que sigue un p , q g conjunto de principios fundamentales.