lunes, 20 de mayo de 2013

FACTIBILIDAD Y VIABILIDAD



FACTIBILIDAD Y VIABILIDAD

Textos de referencia:
Factibilidad:  FACTIBILIDAD-IS.PDF
Viabilidad: VIABILIDAD-IS.PDF

CUADRO DE DIFERENCIAS DE LA VIABILIDAD Y LA FACTIBILIDAD 

VIABILIDAD
FACTIBILIDAD
- Es el estudio que intenta predecir el eventual
 éxito o fracaso de un proyecto.
- Estudia la situación actual del proyecto.
- Toma en cuenta restricciones: económicas, operativas, técnicas, legales, etc.


- Se refiere a la disponibilidad de recursos necesarios para llevar a cabo los objetivos o metas señalados.
-F. Técnica: tecnología necesaria para el sistema.
-F. Económica: relación beneficio-costo.
 -F. Operacional: si el sistema puede funcionar en la organización.
 

FACTIBILIDAD Y VIABILIDAD



FACTIBILIDAD Y VIABILIDAD

Textos de referencia:
Factibilidad:  FACTIBILIDAD-IS.PDF
Viabilidad: VIABILIDAD-IS.PDF

CUADRO DE DIFERENCIAS DE LA VIABILIDAD Y LA FACTIBILIDAD 

VIABILIDAD
FACTIBILIDAD
- Es el estudio que intenta predecir el eventual
 éxito o fracaso de un proyecto.
- Estudia la situación actual del proyecto.
- Toma en cuenta restricciones: económicas, operativas, técnicas, legales, etc.


- Se refiere a la disponibilidad de recursos necesarios para llevar a cabo los objetivos o metas señalados.
-F. Técnica: tecnología necesaria para el sistema.
-F. Económica: relación beneficio-costo.
 -F. Operacional: si el sistema puede funcionar en la organización.
 

viernes, 3 de mayo de 2013



PROCESO DEL SOFTWARE

La Ingeniería del software como cualquier enfoque de  ingeniería debe apoyarse sobre un compromiso de  organización de calidad.

Entonces, un proceso de software se define como un marco de trabajo de las tareas que se requieren para construir software de alta calidad.

¿Por qué es importante?

Porque proporciona estabilidad, control y organización a una actividad que puede, si no se controla, volverse caótica.

Modelo de proceso

Para poder desarrollar un proceso de la manera correcta, el ingeniero encargado, debe de implementar una estrategia de desarrollo que acompañe a las herramientas y métodos del proceso.

Esta estrategia a menudo se llama modelo de proceso  o paradigma de ingeniería del software. Este modelo se debe seleccionar según la naturaleza del proceso.

Todo desarrollo de software se puede caracterizar como un bucle de resolución de problemas, donde se pueden diferenciar cuatro etapas claras: status quo, definición del problema, desarrollo técnico e integración de soluciones.

Status kuo: representa el estado actual.
Definición del problema: identifica el problema a resolverse.
Desarrollo técnico: resuelve el problema.
Integración de resultados: ofrece soluciones.

Algunos modelos de procesos son:

Modelo de Cascada: Separar en distintas fases de especificación y desarrollo.
Desarrollo Evolutivo: La especificación y el desarrollo están intercalados.
Desarrollo de prototipos: Un modelo sirve de prototipo para la construcción del sistema final.
Transformación Formal: Un modelo matemático del sistema se transforma formalmente en la implementación.
Desarrollo basado en Reutilización: El sistema es ensamblado a partir de componentes existentes.

Costos de la Ingeniería de Software

Los costos dependen del tipo de sistema que se desarrolla y de los requerimientos del mismo tales como desempeño y contabilidad. La distribución de los costos depende del modelo de desarrollo empleado.

Cuesta más mantener el software que desarrollarlo. Para sistemas con una larga vida, este costo se multiplica.

Metodologías de la Ingeniería del Software

La metodología es una de las etapas específicas de un trabajo o proyecto que parte de una posición teórica y conlleva a una selección de técnicas concretas (o métodos) acerca del procedimiento para realizar las tareas vinculadas con la investigación, el trabajo o el proyecto. (wikipedia.org)

Al igual que los enfoques de diseño de ingeniería en otras disciplinas, va cambiando continuamente a medida que se desarrollan métodos nuevos, análisis mejores y se amplía el conocimiento. Las metodologías de diseño del software carecen de la profundidad, flexibilidad y naturaleza cuantitativa que se asocian normalmente a las disciplinas de diseño de ingeniería más clásicas.

Fuentes:

“Ingeniería del software”, 5ta Edición. Roger Pressman.
http://www.tamps.cinvestav.mx/~ertello/swe/sesion01.pdf: “costos de la ingeniería de software”
http://www.ctic.uni.edu.pe/files/insoft01.pdfingeniería de software”

Diferencia entre: Ingeniería de Software, de Sistemas y Ciencias de la Computación



INGENIERÍA DE SOFTWARE: Diferencias de otras ingenierías

     La ingeniería de software es una disciplina que aplica los métodos de la ingeniería al desarrollo y producción del software.

¿CUÁL ES LA DIFERENCIA ENTRE INGENIERÍA DE SOFTWARE Y LAS CIENCIAS DE LA COMPUTACIÓN?
     Las ciencias de la computación o ciencias computacionales son aquellas que abarcan las bases teóricas de la información y la computación, así como su aplicación en sistemas computacionales.
     Las ciencias de la computación: "¿Qué puede ser (eficientemente) automatizado?"(Peter J.Denning)
     Es así, que podemos reconocer, que la ingeniería de software es una disciplina incluida en las ciencias de la computación. Y que esta se centra en hardware y software y la automatización, mientras que la ingeniería de software, se centra en el desarrollo del software.

¿CUÁL ES LA DIFERENCIA ENTRE LA INGENIERÍA DE SISTEMAS Y DE SOFTWARE?
     La ingeniería de sistemas es un modo de enfoque interdisciplinario que permite estudiar y comprender la realidad, con el propósito de implementar u optimizar sistemas complejos. Puede verse como la aplicación tecnológica de la teoría de sistemas a los esfuerzos de la ingeniería, adoptando en todo este trabajo el paradigma sistémico.
     Entonces, la ingeniería de software  será parte de la implementación informática dentro de los sistemas.

Fuente:
"Ingeniería de sistemas", Wikipedia: la enciclopedia libre, http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_sistemas
"Ciencias de la Computación", Wikipedia: la enciclopedia libre, http://es.wikipedia.org/wiki/Ciencias_de_la_computaci%C3%B3n 
Majochir(2012),"Ciencias de la Computación", slideshare: present yourselfhttp://www.slideshare.net/majochir/ciencias-de-la-computacin-14021536
Noemifelix,"Ingeniería de Sistemas", slideshare: present yourselfhttp://www.slideshare.net/noemifelix/ingeniera-de-sistemas-12143229

Ingeniería de Software




INGENIERÍA DE SOFTWARE

Síntesis de la evolución del software

     Durante los primeros años de la era de la computadora, el software se contemplaba como un añadido. […]El desarrollo del software se realizaba virtualmente sin ninguna planificación, hasta que los planes comenzaron a descalabrarse y los costes a correr. Los programadores trataban de hacer las cosas bien, y con un esfuerzo heroico; a menudo salía con éxito.

     En estos años, en la computadora, lo que realmente primaba era el hardware, y teniendo como a un complemento al software. Esto se debía a la corta distribución que tenía el software, puesto que su desarrollo era de forma personal, para empresas, u otras instituciones, más no tenía un carácter comercial.

     Posteriormente, una segunda fase de su evolución se caracterizo principalmente por el establecimiento del software como producto, y con esto la llegada de las “casas del software”.

     Es aquí en pleno auge del mercado del software, donde se producen los primeros errores. Todos los programas que se habían desarrollado, tuvieron que ser corregidos cuando se encontraban fallos, ya sea por las especificaciones del usuario y/o la adaptación a un nuevo hardware que se hubiera conseguido.

     Una tercera fase, la cual tuvo como principales características: “Las redes de área local y global” , las cuales permitían una comunicación y acceso casi instantáneo; “la llegada del microprocesador”, lo cual hacia imaginar el futuro inmediato de computadoras portátiles.

     Más en cuanto nos concierne, debemos de mencionar situaciones importantes que dieron lugar a la ingeniería de software.

     Como se menciono anteriormente, a inicios de la era de la computadora, quien realmente recibía mayor crédito era el hardware en sí, para lo cual, tuvieron que controlar su coste.

     Esto llevo a la implementación de controles formales y estándares técnicos. Los cuales exigían un análisis y diseño completo antes de que algo se construyese.

     Dicho de forma sencilla, aplicaban controles, los métodos y las herramientas que reconocemos como la ingeniería del hardware. 

     Así mismo, la ingeniería de software tuvo una evolución similar. En las pasadas décadas los ejecutivos y muchos aprendices técnicos se habían hecho las siguientes preguntas.

  • ¿Por qué lleva tanto tiempo terminar un programa?
  • ¿Por qué es tan elevado el coste?
  • ¿Por qué no podemos encontrar todos los errores antes de entregar el software a nuestros clientes?
  • ¿Por qué nos resulta difícil constatar el progreso conforme se desarrolla el software?

     Estas y muchas otras cuestiones, son una manifestación del carácter del software, y de la forma en que se desarrolla, un problema que ha llevado a la adopción de la ingeniería de software como practica.

     Conociendo un poco la historia de la ingeniería de software, ahora es tiempo de definir lo que es INGENIERÍA DE SOFTWARE.

DEFINICIÓN:

La ingeniería de software es el estudio de técnicas, principios y métodos de la ingeniería, a fin de obtener un software de calidad. 
He aquí algunas otras definiciones:
  • Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978)
  • Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software (Bohem, 1976).
  • Ingeniería de software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972).
  • La aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software. Es decir la aplicación de ingeniería al software. (IEEE, 1993).
DESARROLLO O PROCESO DE SOFTWARE

    Cualquier enfoque de ingeniería (incluida ingeniería del software) debe descansar sobre un desempeño de organización de calidad.

    Un proceso de software, es un conjunto de tareas, actividades y/o marcos de trabajo, los cuales puedan ser aplicables a uno o varios proyectos de software.

Dentro de las fases genéricas tenemos.
  • Especificación: que establece a características y exigencia del sistema.
  • Diseño: generar un software de papel (modelo).
  • Implementación: construcción del sistema.
  • Prueba: cumplimiento de los requisitos y exigencias.
  • Mantenimiento: reparación de algún fallo en el sistema. 
MODELOS DE PROCESO DE SOFTWARE

  • MODELO SECUENCIAL LINEAL
  • MODELO DE CONSTRUCCIÓN DE PROTOTIPOS


  • MODELO EN ESPIRAL



  •  MODELO DE DESARROLLO RÁPIDO DE APLICACIONES (DRA)


  •  MODELO INCREMENTAL

BIBLIOGRAFÍA:
  • PRESSMAN,ROGER S.(1997),INGENIERÍA DE SOFTWARE, un enfoque practico, 4ta Edición.


domingo, 28 de abril de 2013

Ingenieria de Software


INGENIERIA DE SOFTWARE
DEFINICION:
Hablar de ingeniería de software, con lleva hablar de temas muy importantes, como los procesos, metodologías, procedimientos y otros temas concernientes.
Definiciones:
Aquí algunas definiciones que nos ofrecen algunos autores:
Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978)
Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software (Bohem, 1976).
Ingeniería de software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972).
Teniendo en cuenta estos puntos de vista, tendríamos que la ingeniería de software: “Es el estudio, diseño, aplicación de conocimientos científicos al proceso y desarrollo de un software en sí. Haciendo uso de metodologías, procedimientos y principios, los cuales a través del tiempo han ido modificando su contenido, para una mejora en los resultados finales (software).”
METODOLOGIAS DE LA INGENIERIA DE SOFTWARE
Como se menciono anteriormente, para una mejor comprensión y ejecución de lo que es ingeniería de software, se hace necesario el uso de técnicas y metodologías. Aquí algunos pasos que deben considerarse en ellas:
Análisis de requisitos
Es aquí donde  el cliente expresa sus expectativas con respecto al software que requiere, es decir su visión del software en sí y los requisitos que debe cumplir. Encargándose de este primer paso un analista de sistemas.
La IEEE Std. 830-1998 normaliza la creación de las especificaciones de requisitos de software (Software Requirements Specification).
Esta es la fase donde el se ira estructurando, conceptualizando un diseño (arquitectura) de lo que será el software.  
El encargado de este  rubro es el arquitecto de software, la persona que añade valor a los procesos de negocios gracias a su valioso aporte de soluciones tecnológicas.
Implementación
Es aquí donde entran en acción los conocimientos del ingeniero de software , es decir la parte del código fuente que será necesario editar. La complejidad y la duración de esta etapa está íntimamente relacionada al o a los lenguajes de programación utilizados, así como al diseño previamente realizado.
Y como en todo proyecto, o ejecución de programas, se tiene un proceso de prueba del producto, la cual debe cumplir con los estándares que requiera, y claro además de satisfacer al cliente o usuario. Consiste en comprobar que el software realice correctamente las tareas indicadas en la especificación del problema. Se considera una buena práctica el que las pruebas sean efectuadas por alguien distinto al desarrollador que la programó, idealmente un área de pruebas; sin perjuicio de lo anterior el programador debe hacer sus propias pruebas.
Documentación
Todo lo concerniente a la documentación del propio desarrollo del software y de la gestión del proyecto, pasando por modelaciones (UML),diagramas de casos de uso, pruebas, manuales de usuario, manuales técnicos, etc; todo con el propósito de eventuales correcciones, usabilidad, mantenimiento futuro y ampliaciones al sistema.
Esta fase es la encargada de darle soporte técnico al software y a la mejora de su versión, convirtiéndose en un círculo repetitivo para su continua evolución.

Fuentes: