You are on page 1of 9

PD

H F-XC A N GE

PD

H F-XC A N GE

O W !

bu

.d o

c u-tr a c k

.c

Ingeniera de software ___________________________________________________________________________________________

to

lic

lic

to

bu

N
w

O W !
.d o

c u-tr a c k

.c

INGENIERIA DE SOFTWARE Vicente Aranda Chacn 1. PERSPECTIVA DE NEGOCIO Porqu es el software una estrategia de Negocio? Qu lo hace importante? El software puede clasificarse como un diferenciador. Cuando est empotrado dentro de productos industriales, hacen que ellos sean nicos porque le proveen una funcin extendida que lo diferencia de otros productos similares de sus competidores. Cuando forma la base de un servicio (sistema de reserva de aerolneas, ..), Esta capacidad ofrece caractersticas y funciones que otorgan beneficios a los clientes. Cuando el software est inmerso en el kernel de un sistema de telecomunicaciones, su impacto en el comportamiento, desempeo, eficiencia e integridad de 1 sistema lo hace un factor clave en diferenciar el sistema de otros que ejecutan funciones similares. En esencia, el software es un componente clave de ventaja competitiva, y una ventaja competitiva es el resultado de una estrategia de negocio. Si se est de acuerdo conque el software es un diferenciador, esto es, una estrategia de negocio, se puede comenzar a entender porqu cada empresa que usa el computador como parte integral de su negocio puede ser caracterizada como una empresa de software. Directa o indirectamente, la capacidad y calidad del software que se adquiere o construye puede ser delineada desde la lnea base. La tecnologa debera ser administrada usando un enfoque disciplinado que entregue un camino claro para el logro de las necesidades actuales, y lo ms importante, establecer las bases desde la cual los cambios futuros a los productos, sistemas, y servicios puedan ser prontamente satisfechos. El trmino "software" se usa, pero normalmente no es definido. Hay una definicin aceptada? Una descripcin de Ebro del software podra tomar la siguiente forma: software es (1) instrucciones que cuando son ejecutadas entregan funciones y desempez-o deseadas, (2) estructura de datos que permiten a las instrucciones una adecuada manipulacin de la informacin, y (3) documentos que describe la operacin y uso de las instrucciones. Para mejorar el entendimiento del software (y finalmente de la ingeniera de software), es importante examinar las caractersticas del software que lo hacen diferentes de otras cosas que el ser humano construye. Cuando se construye hardware, el proceso de creatividad humana es trasladado finalmente a una forma fsica. El software es diferente. Captura informacin, produce informacin, y es en s mismo informacin. Software es ms un elemento lgico que un elemento fsico.

Vicente Aranda Ch.

w
w

w
w

PD

H F-XC A N GE

PD

H F-XC A N GE

O W !

bu

.d o

c u-tr a c k

.c

Ingeniera de software ___________________________________________________________________________________________

to

lic

lic

to

bu

N
w

O W !
.d o

c u-tr a c k

.c

Qu enfoque se puede dar cuando el desarrollo de software va a ser administrado? Se puede tratar el desarrollo de software al igual que una actividad de manufactura? Entre el desarrollo de software y la manufactura de hardware existen algunas similitudes, pero tambin dos actividades fundamentalmente diferentes. En ambas actividades la alta calidad se logra a travs de un buen diseo, pero en la fase de manufactura de hardware se pueden introducir problemas de calidad que no existen (o son fcilmente corregidas) para el software. Estas actividades son dependientes de las personas, pero las relaciones entre las personas empleadas y el trabajo logrado es enteramente diferente. Los costos de software estn concentrados en ingeniera y soporte. Esto significa que los proyectos de software no pueden ser administrados como si ellos fueran proyectos de manufactura. Si se recibe una orden y compromiso para una fecha de entrega agresiva, y se aplica criterio de manufactura, la primera reaccin sera la de agregar personal adicional para producir ms software por unidad de tiempo. Sin embargo agregar ms personas a un proyecto de software slo ser efectivo cuando el software y el proceso a travs del cual es construido estn bien definidos. Una de las cosas que no es bien comprendida es porqu un software de aplicacin parece ser ms pesado o dificultoso con el paso del tiempo En el caso del hardware las relaciones entre tasa de fallas y tiempo es denominada curva de tina de bao, como se ilustra en la figura 1.1. Indica que el hardware exhibe una alta tasa de fallas en las etapas tempranas de su vida (defectos de diseo o manufactura); cuando los defectos son corregidos la tasa cae a un estado estacionario por un determinado periodo de tiempo. Sin embargo, cuando el tiempo pasa, la tasa de fallas sube nuevamente cuando el hardware comienza a gastarse. Fallas Curva de bao tina

tiempo Figura 1. 1 Curva de fallas para hardware


Vicente Aranda Ch.

w
w

w
w

PD

H F-XC A N GE

PD

H F-XC A N GE

O W !

bu

.d o

c u-tr a c k

.c

Ingeniera de software ___________________________________________________________________________________________

to

lic

lic

to

bu

N
w

O W !
.d o

c u-tr a c k

.c

En teora la curva de fallas de software toma una forma idealizada que se muestra en la figura 1.2. Los defectos no descubiertos en las etapas tempranas causarn una tasa de fallas altas en las etapas tempranas de la vida de un programa. Sin embargo una vez corregidos, la curva se mantendr con una tasa similar hasta su obsolescencia. Esto significara que el software no se gasta, pero se deteriora!. falla

tiempo Figura 1.2 Curva de falla idealizada para el software

La curva real se muestra en la figura 1.3. durante su vida el software estar bajo cambios. Cuando los cambios son realizados se introducirn algunos nuevos defectos, causando que la tasa de fallas de la curva tenga un peak. Antes que la curva vuelva a su estado original, otro cambio es requerido causando que la curva tenga un peak adicional. Lentamente el nivel de tasa de fallas comienza a subir, y el software va deteriorndose producto del cambio. Otra diferencia radica que en el caso del hardware, los componentes pueden desgastarse, y ser reemplazados por repuestos. En software no hay repuestos. Una mantencin de software implica una complejidad considerablemente mayor que una mantencin de software, ya que una falla de software indica un error en el diseo o en el proceso a travs del cual fue trasladado a cdigo de mquina ejecutable.

Vicente Aranda Ch.

w
w

w
w

PD

H F-XC A N GE

PD

H F-XC A N GE

O W !

bu

.d o

c u-tr a c k

.c

Ingeniera de software ___________________________________________________________________________________________

to

lic

lic

to

bu

N
w

O W !
.d o

c u-tr a c k

.c

Figura 1.3 Curva de falla real para el software

Actualmente se habla de construir software desde partes reusables. Se puede esperar que esto suceda? Los desarrolladores de software estn slo comenzando a reconocer la importancia del re-uso, y aunque mucho se ha escrito respecto de la reusabilidad del software, estamos slo en el comienzo de las primeras implementaciones exitosas de este concepto. Cules son los problemas que afectan actualmente al desarrollo de software? Pueden ser caracterizados desde diferentes perspectivas, pero desde el punto de vista del responsable de la gestin de desarrollo de software, debe concentrarse en los problemas de la lnea base: (1) estimacin de planificacin y costos que generalmente son groseramente inexactos, (2) productividad de gente de software que no mantienen el paso con las demandas por sus servicios, y (3) calidad de software que muchas veces es menos que lo adecuado. Todos estos problemas son ms visibles a travs de otras dificultades del software: - No se tiene tiempo de colectar data del proceso de desarrollo de software. Con poca data histrica como gua, las estimaciones han dado pobres resultados. Sin indicadores slidos de productividad, no se puede evaluar exactamente la eficacia de nuevas herramientas, mtodos o estndares. - Insatisfaccin del cliente con el sistema completado, ya que ha habido una vaga indicacin de los requerimientos de los clientes. la comunicacin entre el cliente y el desarrollador de software es generalmente pobre.

Vicente Aranda Ch.

w
w

w
w

PD

H F-XC A N GE

PD

H F-XC A N GE

O W !

bu

.d o

c u-tr a c k

.c

Ingeniera de software ___________________________________________________________________________________________

to

lic

lic

to

bu

N
w

O W !
.d o

c u-tr a c k

.c

- La calidad del software es generalmente sospechosa. Slo en el tiempo reciente se comenz a entender la importancia de la prueba de software sistemtica, tcnica y completa. Los conceptos cuantitativos slidos de confiabilidad de software y garanta de calidad existen, pero aun no se aplican ampliamente en la industria. - El software existente puede ser difcil de corregir, adaptar y mejorar, lo que normalmente se denomina mantencin de software. Las tareas de iteracin requieren de la mayor parte de los presupuestos. La mantenibilidad del software no ha sido enfatizada como un criterio importante para la aceptacin del software. Cules son las razones de que se presenten los problemas antes mencionados? Los problemas asociados con el software han sido causados por las caractersticas del software y por el fracaso de las personas que tienen la responsabilidad del desarrollo de software. Cuando se encuentran una fallas en el software, existe una alta probabilidad de que fueran introducidas inadvertidamente durante el proceso de desarrollo y no fueron detectadas durante las pruebas. Las partes defectuosas son reemplazadas durante el proceso de mantencin, el cual, normalmente incluye correcciones o modificaciones al diseo. La naturaleza lgica del software implica un desafo intelectual del desarrollo de software, y esto es ciertamente una de las causas de los niveles que afectan al software, sin embargo los problemas antes discutidos han sido causados ms por flaquezas humanas. Los gerentes de nivel medio y alto que no tienen preparacin en software y que tienen la responsabilidad en el desarrollo de software, no siempre se comunican con todos los actores relacionados al desarrollo de software, clientes, desarrolladores de software, equipos de soporte y otros. Cuando esto ocurre, crecen los problemas asociados con el software. Los especialistas en software han tenido poco entrenamiento formal en desarrollo de software. Algunos han desarrollado un Enfoque ordenado y eficiente al desarrollo de software, va prueba y error, pero muchos otros desarrollan malos hbitos que resultan en baja calidad y mantenbilidad de software. Y lamentablemente, mientras la potencialidad computacional (hardware) experimenta un enorme cambio, la gente de software responsable de provocar el cambio, se opone y se resiste a que sea introducido. Los mitos del software Mito: Ya tenemos un libro completo de estndares y procedimientos para construir software. Proveern a mi gente de todas las cosas que ellos necesitan conocer?

Vicente Aranda Ch.

w
w

w
w

PD

H F-XC A N GE

PD

H F-XC A N GE

O W !

bu

.d o

c u-tr a c k

.c

Ingeniera de software ___________________________________________________________________________________________

to

lic

lic

to

bu

N
w

O W !
.d o

c u-tr a c k

.c

Realidad: ,Se usan?, se conoce su existencia?, Refleja las practicas de desarrollo modernas, Es completo?..... En muchos casos la respuesta es no. Mito: Mi gente tiene herramientas del estado del arte para el desarrollo de' software. Despus de todo, le compramos los computadores ms nuevos. Realidad: Se necesita mucho ms que los computadores ms modernos para desarrollar software de alta calidad. Las herramientas CASE son ms importantes que el hardware para lograr buena calidad de software y productividad, an cuando la mayora de los desarrolladores de software no las usan todava. Mito: Una descripcin general de los objetivos es suficiente como para comenzar a escribir programas. Podemos completar los detalles despus. Realidad: Una pobre definicin inicial es una de las causas principales en el fracaso en el desarrollo de software. Es esencial una descripcin formal y detallada del dominio de la informacin, de las funciones, del desempeos, de las restricciones de disafo y de los criterios de evaluacin. Esto puede ser determinado slo si existe una buena comunicacin entre cliente y desarrollador. Existe una estructura tecnolgica que ayude a mejorar el proceso que se usa para construir software? La respuesta a esta pregunta tiene relacin con una estructura disciplinada y sistemtica que requiere de un enfoque ingenieril. Se denomina ingeniera de software. Un ingeniero de software soluciona un conjunto de problemas que convenzan con un reconocimiento de necesidades y termina con la creacin de instrucciones de mquina ejecutables. Usando la definicin dada con anterioridad, ingeniera de software puede ser definida como el establecimiento y uso de profundos principios de ingeniera para obtener software econmicamente, que sea contable y que trabaje eficientemente en mquinas reales. Los procedimientos de ingeniera de software son el elemento que mantiene juntos a los mtodos y las herramientas, y que posibilitan un desarrollo racional y a tiempo del software del computador. Definen la secuencia en que los mtodos sern aplicados, los elementos (documentos, informes, formularios, etc.) que sern requeridos, los controles que ayudarn a asegurar la calidad y coordinar el cambio, y los hitos que permitirn a los gerentes medir el avance. En esencia, proveen la estructura que soporta todos los otros aspectos de la disciplina ingenieril. Los mtodos proveen el elemento tcnico de como construir software. Los mtodos abarcan un amplio espectro de tareas que incluyen la planificacin y estimacin, anlisis de requerimientos de sistemas y de software, diseo de estructuras de datos, arquitecturas de programas y procedimientos algoritmicos, codificacin, prueba y mantencin. Los mtodos para la ingeniera de software no solamente introducen un lenguaje especial o notacin grfica, e introducen adems un conjunto de criterios de calidad de software.

Vicente Aranda Ch.

w
w

w
w

PD

H F-XC A N GE

PD

H F-XC A N GE

O W !

bu

.d o

c u-tr a c k

.c

Ingeniera de software ___________________________________________________________________________________________

to

lic

lic

to

bu

N
w

O W !
.d o

c u-tr a c k

.c

Las herramientas de la ingeniera de software proveen soporte automtico o seudoautomtico para los mtodos. Cuando las herramientas son integradas de forma que la informacin creada por una herramienta puede ser utilizada por otras herramientas, se establece un sistema de soporte de desarrollo denominado Computer--Aided Software Engineering (CASE). Combinan software, hardware y base de datos de ingeniera de software (una estructura de datos que contiene informacin relevante de los proyectos de software e informacin tcnica del anlisis, diseo, codificacin y prueba) para crear un ambiente de ingeniera de software. Cando se pueden utilizar estos procedimientos, mtodos y herramientas de modo que les permita construir y mantener software de alta calidad? El producto que es creado como consecuencia del proceso de ingeniera de software ha sido notoriamente difcil de administrar. Parte del problema es el proceso en s mismo. En muchas empresas est mal definido. La otra parte del problema es tecnolgica. Los ingenieros de software crean productos de alta tecnologa, sistemas y servicios, pero a menudo lo hacen usando mtodos y herramientas inadecuadas. Parte de esto es un problema cultural. Consideraciones de importancia. Las estrategias en el desarrollo forman parte integral de la calidad en un proyecto. Se debe recordar que un Plan de proyecto DEBE incluir los planes que relacionan las distintas estrategias: Poblamiento de datos, implantacin, capacitacin y pruebas. Ideas sobre el trabajo en equipo.

En el transcurso de la puesta en servicio de un proyecto, en su creacin, periodo de Desarrollo, implantacin de la solucin y en definitiva en cada una de las fases que contenida en el Plan, existen acciones que Ayudan y otras que Dificultan el trabajo en equipo. Ayudan Estar a tiempo, estar preparado Participar, ofrecerse voluntariamente Escuchar para aprender Hablar para ser entendido Seguir la agenda de la reunin Construir sobre las ideas de otros Ser positivo, optimista acerca del equipo de trabajo Criticar las ideas, no a los participantes Cumplir con el seguimiento comprometido Ser corts, honesto, confiable

Vicente Aranda Ch.

w
w

w
w

PD

H F-XC A N GE

PD

H F-XC A N GE

O W !

bu

.d o

c u-tr a c k

.c

Ingeniera de software ___________________________________________________________________________________________

to

lic

lic

to

bu

N
w

O W !
.d o

c u-tr a c k

.c

Usar la expresin nosotros Mostrar sentido del humor Fijar objetivos realistas, con un plazo definido Establecer roles claros y definidos Distribuir el trabajo equitativamente

Vicente Aranda Ch.

w
w

w
w

PD

H F-XC A N GE

PD

H F-XC A N GE

O W !

bu

.d o

c u-tr a c k

.c

Ingeniera de software ___________________________________________________________________________________________

to

lic

lic

to

bu

N
w

O W !
.d o

c u-tr a c k

.c

Dificultan Ser crtico, negativo Realizar ataques personales Dominar Ser manipular Saltar de un tpico a otro Estar de acuerdo con todo Evitar la toma de decisiones o el cierre a travs de sarcasmos Buscar simpata Reflejar aburrimiento / no poner atencin Ser prejuicioso / estar cerrado Usar la expresin ustedes Juzgar ideas / juzgar a los otros No escuchar (involucrarse en subconversaciones) Hacer otros trabajos distractivos.

Bibliografa Aranda Chacn, Vicente, Apuntes personales. D. Harrington-Mackin, The Team Building Tool Kit AMACOM. (1994). .

Vicente Aranda Ch.

w
w

w
w

You might also like