jueves, 30 de agosto de 2012

Conclusiones Generales

Conclusiones  Generales:

     Nos quedaron más claros los términos antes mencionados. Comprendimos que los modelos de ciclo de vida del software son muchos y muy variados, pero todos tienen un mismo  fin. Así mismo, llegamos a la conclusión de que el modelo que escojamos debe estar ligado a la trayectoria que seguirá nuestro proyecto. 
      Respecto a la ingeniería de software, encontramos muy interesante este término, ya que teníamos una idea un tanto errónea y vaga de ella. Comprendimos mejor sus características y su propósito.

Un requerimiento es una condición o capacidad que un sistema debe cumplir  esperando la entrada y  salida (I/O), sin embargo los requerimientos funcionales no garantizan un software de calidad ya que la calidad se puede ver en los requerimientos no funcionales

     



miércoles, 29 de agosto de 2012

Problemática


Planteamiento de la problemática
La empresa JEFEVEL, ubicada en el número 61 de la calle 11, en la colonia Valentín Gómez Farías, delegación Venustiano Carranza dentro de México, DF,  tiene un negocio de venta y renta de carritos eléctricos, así como sus refacciones. Todos los procesos que se realizan son manuales, ya que no se cuenta con suficiente capital humano, al ser solo de una persona el negocio. Los procesos son lentos y a veces tardados por lo mismo.
JEFEVEL contaba con una página web, donde mostraba un pequeño catálogo no modificable de sus productos (carritos) en venta; al no contar con la seguridad suficiente fue bloqueada por personas externas, imposibilitando su uso; teniendo así que realizar una nueva página con mucha más seguridad y mejor control de aplicaciones.

JUSTIFICACIÓN

Este proyecto ayudará a los clientes agilizando el proceso de compra al reducir el tiempo de espera, realizando el apartado de los productos desde la comodidad de su hogar o cualquier  otro punto que ellos deseen.
Así mismo ayudará al propietario de la empresa a promocionar su negocio por medio de internet, aumentando las ventas y apoyando una mejor organización de productos al realizar los envíos y/o entregas personales.

OBJETIVO GENERAL

Para automatizar los procesos de la empresa anteriormente mencionada, se creará una aplicación web que mostrará un catálogo virtual de los productos en venta; así mismo contará con administración de usuarios (Altas, bajas, cambios y consultas) para tener un registro de ventas y un contacto más “personal” hacia los clientes.  Además, los usuarios tendrán acceso a un carrito de compras virtual, donde podrán “apartar” la mercancía y acordar la hora y fecha para la entrega de la misma, agilizando así el servicio casi por completo, ahorrando valiosos recursos como el tiempo.

OBJETIVOS ESPECÍFICOS

  •  Tener una administración de usuarios y stock virtual.
  •   Reducir el tiempo de espera de respuesta para la venta y/o compra por parte de los usuarios.
  •  Dar a conocer los productos y sus especificaciones vía internet para expandir su posibilidades de venta.

 

ALCANCES Y LIMITACIONES

Alcances:
  •   Reducir los tiempos de trámites para la compra y entrega de productos mediante la   realización de la aplicación web.
  •   Modificar el proceso usado por uno más innovador y eficiente.
  •   Crear una aplicación web para la gestión de usuarios y sus compras.
  •   Se contemplarán 2 tipos de usuarios: administrador y general. El primero podrá modificar casi toda la información de la página, el segundo solo podrá tener su carrito de compras virtual y visualizar información general.

Limitaciones:
  •   La aplicación creada debe ser en lenguaje PHP y/o JavaScript.
  •   El tiempo de entrega estimado es entre los meses de Diciembre-Enero.
  •   Se contará con un chat usuario(s) – administrador, si y solo si se termina la aplicación en un tiempo anterior al estimado.




sábado, 25 de agosto de 2012

Definiciones



INSTITUTO POLITÉCNICO NACIONAL
Centro de Estudios Científicos y Tecnológicos No.9 “Juan de Dios Bátiz Paredes”




Alumno:
Pacheco Ruiz Elizabeth   


Profesor:
Cruz Mendoza Juan Manuel


Asignatura:
Ingeniería de Software Básica


Grupo:
6IV3


Contenido

Introducción

En el presente documento se explicará la definición de ingeniería de software, así como los 3 principales modelos de ciclo de vida del software, dos a detalle y uno en vista general.

Desarrollo

Ingeniería de software (Definición).

Es una disciplina de la ingeniería que pertenece a todos los aspectos de la producción de software. (Tello Rodríguez, 2011)
Se adopta un enfoque sistemático para llevar a cabo el trabajo, se utilizan las herramientas y técnicas correctas para resolver los problemas de acuerdo a las restricciones de desarrollo y/o a los recursos disponibles.

Modelos de ciclo de vida del software.

Un ciclo de vida, es “Un marco de referencia que contiene los procesos, las actividades y las tareas involucradas en el desarrollo, la explotación y el mantenimiento de un producto de software, abarcando la vida del sistema desde la definición de los requisitos hasta la finalización de su uso” Según la ISO 12270-1.

·         Modelo en cascada:
El más conocido, esta basado en el ciclo convencional de una ingeniería, el paradigma del ciclo de vida abarca las siguientes actividades:



Ingeniería y Análisis del Sistema: Debido a que el software es siempre parte de un sistema mayor el trabajo comienza estableciendo los requisitos de todos los elementos del sistema y luego asignando algún subconjunto de estos requisitos al software.

Análisis de los requisitos del software: el proceso de recopilación de los requisitos se centra e intensifica especialmente en el software. El ingeniero de software (Analistas) debe comprender el ámbito de la información del software, así como la función, el rendimiento y las interfaces requeridas.

Diseño: el diseño del software se enfoca en cuatro atributos distintos del programa: la estructura de los datos, la arquitectura del software, el detalle procedimental y la caracterización de la interfaz. El proceso de diseño traduce los requisitos en una representación del software con la calidad requerida antes de que comience la codificación.

Codificación: el diseño debe traducirse en una forma legible para la maquina. El paso de codificación realiza esta tarea. Si el diseño se realiza de una manera detallada la codificación puede realizarse mecánicamente.

Prueba: una vez que se ha generado el código comienza la prueba del programa. La prueba se centra en la lógica interna del software, y en las funciones externas, realizando pruebas que aseguren que la entrada definida produce los resultados que realmente se requieren.

Mantenimiento: el software sufrirá cambios después de que se entrega al cliente. Los cambios ocurrirán debido a que hayan encontrado errores, a que el software deba adaptarse a cambios del entorno externo (sistema operativo o dispositivos periféricos), o debido a que el cliente requiera ampliaciones funcionales o del rendimiento. (Rojas & Boucchechter, 2005)





·         Modelo incremental:
ü  Se evitan proyectos largos y se entrega “Algo de valor” a los usuarios con cierta frecuencia.

ü  El usuario se involucra más.

ü  Difícil de evaluar el coste total.

ü  Difícil de aplicar a sistemas transaccionales que tienden a ser
ü  integrados y a operar como un todo.

ü  Requiere gestores experimentados.

ü  Los errores en los requisitos se detectan tarde.

ü  El resultado puede ser muy positivo.




·         Modelo en espiral

Éstos son los 3 más conocidos. Existen muchos modelos de ciclo de software, como el ciclo de vida lineal, ciclo de vida en “V”, ciclo de vida tipo sashimi, ciclo de vida iterativo, entre otros.

Conclusiones

Existen diversos tipos de ciclo de vida del software, y aunque tengan diferentes etapas o “ciclos” todos terminan en la entrega de un software funcional. Está claro que algunos requieren de más tiempo para su desarrollo pero la mayor parte de ese tiempo es para documentación, ya que es una parte importante de todos los proyectos.
Pero no hay un modelo más “bueno” que otro, se debe elegir el modelo a seguir según se adapte mejor al proyecto.

Bibliografía

(s.f.). Recuperado el Agosto de 2012, de http://img.redusers.com/imagenes/libros/lpcu097/capitulogratis.pdf
12270-1, I. (s.f.).
Rojas, R., & Boucchechter, I. (17 de Enero de 2005). Ingeniería del Software II. Ciclos de Vida de Ingeniería del Software.
Tello Rodríguez, E. A. (31 de Agosto de 2011). Cinvestav Tamaulipas. Recuperado el Agosto de 2012, de Conceptos básicos de Ingeniería de Software: http://www.tamps.cinvestav.mx/~ertello/swe/sesion01.pdf



Ingeniería del Software


¿Qué es la Ingeniería del Software?

La Ingeniería del Software es una disciplina de la ingeniería que comprende todos los aspectos de la producción de software desde las etapas iniciales de la especificación del sistema, hasta el mantenimiento de éste después de que se utiliza. En esta definición existen dos frases claves:

  • Disciplina de la ingeniería. Los ingenieros hacen que las cosas funcionen. Aplican teorías, métodos y herramientas donde sean convenientes, pero las utilizan en forma selectiva y siempre tratando de descubrir soluciones a los problemas, aun cuando no existan teorías y métodos aplicables para resolverlos. Los ingenieros también saben soluciones tomando en cuenta estas restricciones.

  • Todos los procesos de producción de software. La ingeniería del software no sólo comprende los procesos técnicos del desarrollo de software, sino también con actividades tales como la gestión de proyectos de software y el desarrollo de herramientas, métodos y teorías de apoyo a la producción del software.

En general los ingenieros de software adoptan un enfoque sistemático y organizado en su trabajo, ya que es la forma más efectiva de producir software de alta calidad. Sin embargo, aunque la ingeniería consiste en seleccionar el método más apropiado para un conjunto de circunstancias, un enfoque más informal y creativo de desarrollo podría ser efectivo en algunas circunstancias. El desarrollo informal es apropiado para el desarrollo de sistemas basados en Web, los cuales requieren una mezcla de técnicas de software y de diseño gráfico.



¿Qué es un modelo de procesos de software?


Un modelo de proceso de software es una descripción simplificada de un proceso del software que presenta una visión de ese proceso. Estos modelos pueden incluir actividades que son parte de los procesos y productos del software y el papel de las personas involucradas en la ingeniería del software. Algunos ejemplos de estos tipos de modelos que se pueden producir son:


  • Un modelo de flujo de trabajo. Muestra la secuencia de actividades en el proceso junto con sus entradas, salidas y dependencias. Las actividades en este modelo representan acciones humanas.

  • Un modelo de flujo de datos o actividad. Representa el proceso como un conjunto de actividades, cada una de las cuales realiza alguna transformación en los datos. Muestra cómo la entrada en el proceso, tal como una especificación, se transforma en una salida, tal como un diseño. Pueden presentar transformaciones llevadas a cabo por las personas o computadoras.
  • Un modelo de rolación. Representa los roles de las personas involucradas en el procesp del software y las actividades de las que son responsables.
Un modelo de rolación. Representa los roles de las personas involucradas en el procesp del software y las actividades de las que son responsables.

La mayor parte de los modelos de procesos del software se basan en los tres modelos generales o paradigmas de desarrollo de software:


  • El enfoque en cascada. Considera las actividades anteriores y las representa como fases de procesos separados, tales como la especificación de requerimientos, el diseño del software, la implementación, las pruebas de requerimientos, el diseño del software, la implementación, las pruebas, etc.


  • Desarrollo iterativo. Este enfoque entrelaza las actividades de especificación, desarrollo y validación. Un sistema inicial se desarrolla rápidamente a partir de especificaciones muy abstractas. Éste se refina basándose en las peticiones del cliente para producir un sistema que satisfaga las necesidades de dicho cliente. El sistema puede ser entregado. De forma alternativa, se puede re implementar utilizando un enfoque más estructurado para producir un sistema más sólido y mantenible.


  • Ingeniería del Software basada en componentes (CBSE). Esta técnica supone que las partes del sistema existe. El proceso de desarrollo del sistemas se enfoca en la integración de estas partes más que desarrollarlas desde el principio.
Rocha Ortiz Miguel Angel 2010090617

Fuente: Ingenieria.de.Software.-.Ian.Sommerville.7ma.Edicion.PRENTICE-HALL

Ingieneria

Mas que una disciplina o un cuerpo de conocimiento, la ingenieria es un verbo, una palabra de accion, una manera de abordar un problema. "Scott Whitmire"


La Ingenieria del Software 


es una disciplina o area de la informatica o ciencias de la computacion, que ofrece metodo y tecnicas para desarrollar y mantener software de calidad que resuelven problemas de todo tipo. Hoy dia es cada vez mas frecuente la consideracion de la Ingenieria del Software como un nueva area de la ingenieria, y el Ingeniero del Software comienza a ser una profesion implantada en el mundo laboral internacional, con derechos, deberes y responsabilidades que cumplir, junto a una, y reconocida consideracion social en el mundo empresarial y, por suerte, para esas personas con brillante futuro.




CICLO DE VIDA DEL SOFTWARE
Es la forma mediante la cual se describen los diferentes pasos que se deben seguir para el desarrollo de un software, partiendo desde una necesidad hasta llegar a la puesta en marcha de una solución y su apropiado mantenimiento. El ciclo de vidapara un softwarecomienza cuando se tiene la necesidad de resolver un problema, y termina cuando el programa que se desarrollópara cumplir con los requerimientos, deja de ser utilizado.
Existen varias versiones del ciclo de vida del software entre las cuales se destacan: el ciclo de vida clásico o en cascada, el modelo en espiral, el desarrollo de prototipos, el modelo por incrementos y el modelo extremo [6].

ETAPAS DEL CICLO DE VIDA DEL SOFTWARE
El ciclo de vida clásico del software siendo uno de los más utilizados tal como lo plantean diferentes autores, está conformado en su versión ampliada por siete etapas que se pueden representar mediante un modelo en cascada así:


- INGENIERÍA DE SISTEMAS: En esta etapa el analista luego de unminucioso y detallado estudio de los sistemas de una organización, detecta un problema o una necesidad que para su solución y/o satisfacción es necesario realizar un desarrollo de software.
- ANÁLISIS: En esta etapa se debe entender y comprender de forma detallada cual es la problemática a resolver, verificando el entorno en el cual se encuentra dicho problema, de tal manera que se obtenga la información necesaria y suficiente para afrontar su respectiva solución. Esta etapa es conocida como la del QUÉ se va a solucionar.
- DISEÑO: Una vez que se tiene la suficiente información del problema a solucionar, es importante determinar la estrategia que se va a utilizar para resolver el problema. Esta etapa es conocida bajo el CÓMO se va a solucionar.
- IMPLEMENTACIÓN: partiendo del análisis y diseño de la solución, en esta etapa se procede a desarrollar el correspondiente programa que solucione el problema mediante el uso de una herramienta computacional determinada.
- PRUEBAS: Los errores humanos dentro de la programación de los computadores son muchos y aumentan considerablemente con la complejidad del problema. Cuando se termina de escribir un programa de computador, es necesario realizar las debidas pruebas que garanticen el correcto funcionamiento de dicho programa bajo el mayor número de situaciones posibles a las que se pueda enfrentar.
- DOCUMENTACIÓN: Es la guía o comunicación escrita en sus diferentes formas, ya sea en enunciados, procedimientos, dibujos o diagramas que se hace sobre el desarrollo de un programa. La importancia de la documentación radica en que a menudo un programa escrito por una persona, es modificado por otra. Por ello la documentación sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento).
La documentación se compone de tres partes:
a. Documentación Interna: Son los comentarios o mensajes que se añaden al código fuente para hacer más claro el entendimiento de los procesos que lo conforman, incluyendo las precondiciones y las poscondiciones de cada función.
b. Documentación Externa: Se define en un documento escrito con los siguientes puntos:
Descripción del Problema
Datos del Autor
Algoritmo (diagrama de flujo o Pseudocódigo)
Diccionario de Datos
Código Fuente (programa)
c. Manual de Usuario: Describe paso a paso la manera como funciona el programa, con el fin de que el usuario lo pueda manejar para que obtenga el resultado deseado.
- MANTENIMIENTO: una vez instalado un programa y puesto en marcha para realizar la solución del problema previamente planteado o satisfacer una determinada necesidad, es importante mantener una estructura de actualización, verificación y validación que permitan a dicho programa ser útil y mantenerse actualizado según las necesidades o requerimientos planteados durante su vida útil. Para realizar un adecuado mantenimiento, es necesario contar con una buena documentación del mismo.
Para terminar de entender la problemática en la cual se desarrolla este libro es importante tener unos conceptos claros y precisos de lo que es el Análisis y el Diseño de Algoritmos.

Requerimientos

Definición:
Propiedad o restricción, determinada con precisión, que un producto software debe satisfacer


 Los requerimientos puedes dividirse en requerimientos funcionales y requerimientos no funcionales. Los requerimientos funcionales definen las funciones que el sistema será capaz de realizar. Describen las transformaciones que el sistema realiza sobre las entradas para producir salidas. 


Sergio Martinez

Requerimientos.


INSTITUTO POLITÉCNICO NACIONAL
Centro de Estudios Científicos y Tecnológicos No.9 “Juan de Dios Bátiz Paredes”




Alumno:
Pacheco Ruiz Elizabeth


Profesor:
Cruz Mendoza Juan Manuel


Asignatura:
Ingeniería de Software Básica


Grupo:
6IV3





Contenido:



Desarrollo

Requerimiento (Definición):

Es el conjunto de técnicas y procedimientos que nos permiten conocer los elementos necesarios para definir un proyecto de software. Es la etapa más crucial del desarrollo de un proyecto de software. 
También es una condición o capacidad que debe estar presente en un sistema o componentes de sistema para satisfacer un contrato, estándar, especificación u otro documento formal.

Requerimiento funcional:

Estos son los que describen lo que el sistema debe de hacer. Es importante que se describa él ¿Qué? Y no él ¿Cómo?. Estos requerimientos al tiempo que avanza el proyecto de software se convierten en los algoritmos, la lógica y gran parte del código del sistema. Describen las transformaciones que el sistema realiza sobre las entradas para producir salidas. 

Requerimiento no funcional:

Tienen que ver con características que de una u otra forma puedan limitar el sistema como por ejemplo, el rendimiento (en tiempo y espacio), interfaces de usuario, fiabilidad (robustez del sistema, disponibilidad de equipo), mantenimiento, seguridad, portabilidad, estándares, etc. 

Conclusiones

Los requerimientos son parte esencial para el desarrollo de un software, independientemente de su clasificación.
Para lograr unos mejores requerimientos, se debe ser preciso y no ambiguo. Deben ser lo más “cerrados” posible, para lograr una mejor especificación y que la documentación sea lo más correcta posible.

Bibliografía

Requerimientos del software. (s.f.). Recuperado el Agosto de 2012, de Galeon.com: http://requerimientos.galeon.com/




Requerimientos Funcionales y No Funcionales


Requerimiento Funcional:


Característica requerida del sistema que expresa una capacidad de acción del mismo – una funcionalidad; generalmente expresada en una declaración en forma verbal.


Cuando hablamos de una característica requerida de la cual se sabe que va a ser satisfecha por medio del software, entonces se dice que estamos ante un requerimiento funcional, por lo cual esto es un requisito que se denota una funcionalidad del sistema.



Requerimiento No Funcional:


Característica requerida del sistema, del proceso de desarrollo, del servicio prestado de cualquier otro del desarrollo, que señala una restricción del mismo.


Llamamos requerimientos no funcionales a todas las exigencias de cualidades o características que se imponen al proyecto tales como es el caso de usas un cierto lenguaje de programación o plataforma de desarrollo, es decir, es una característica del sistema o del proyecto que no se satisface añadiendo código, sino cumpliendo con esta como si fuera una restricción.


Rocha Ortiz Miguel Angel 2010090617

Fuente:  http://synergix.wordpress.com/2008/07/07/requisito-funcional-y-no-funcional/