Que es diseño de software

El diseño de software es un proceso de transformación que cambia las necesidades del usuario en algo concreto que ayuda al programador en la implementación y creación del código.

Esto normalmente es la parte donde todos los métodos comienzan para la creación de un programa, código o algo relacionado ya que es donde se pone en los zapatos de los usuarios e intentan hacer algo tomándolos en cuenta.

El diseño de software se divide en tres grandes rasgos:

  • El diseño de la arquitectura: Esta parte es la más general donde se identifica al software como un conjunto de componentes que interactúan entre ellos, en esta parte es donde el diseñador empieza a implementar la idea.
  • El diseño de alto nivel: Esta parte es donde de lo general pasamos a lo particular y empezamos a implementar los pequeños métodos que forman parte del sistema y hacemos que se puedan comunicar entre ellos sin problemas.
  • El diseño de detalles: En esta parte ya no nos enfocamos es la comunicación entre los métodos sino nos enfocamos en su parte individual y revisamos que cumplan con su función.

El diseño de software para mi es algo muy importante ya que es donde comienza todo, la idea, las partes de la idea y las cosas particulares de cada una de ellas. Creo que no siempre la primera vez que hagas el diseño de un software va a funcionar como tu pienses pero lo bueno es que siempre lo podemos modificar pero es bueno ya tener la idea plasmada y funcionando aunque sea parcialmente.

Referencia


Lenguaje unificado de modelado (UML)

UML es el lenguaje de modelado de los sistemas de software más utilizado en la actualidad.

Es un lenguaje gráfico que nos permite poner un estándar para los sistemas que incluye procesos, funciones del sistema,esquemas de datos, expresiones de lenguaje y compuestos reciclados.

Hay que entender algo en concreto el UML no es una programación estructurada, solo se diagrama la realidad de una utilización en un requerimiento.

La utilización de modelos en nuestro código nos puede abrir los ojos a una gran variedad de posibilidades, aunque nosotros no estamos acostumbrados a su utilización, es muy recomendable que las comprendas ya que las mayorías de los trabajos tienen un cierto modelo que todos los programadores tienen que seguir para que todos puedan entender el código con mayor facilidad y aumente la productividad del equipo.

Algunas ventajas de la utilización de este modelo son:

  • La reutilización de código.
  • Facilitación de mantenimiento y comprensión del código.
  • Mejora la productividad del equipo.

Referencia 1, Referencia 2

 


Lenguaje unificado de modelado (UML)

UML es el lenguaje de modelado de los sistemas de software más utilizado en la actualidad.

Es un lenguaje gráfico que nos permite poner un estándar para los sistemas que incluye procesos, funciones del sistema,esquemas de datos, expresiones de lenguaje y compuestos reciclados.

Hay que entender algo en concreto el UML no es una programación estructurada, solo se diagrama la realidad de una utilización en un requerimiento.

La utilización de modelos en nuestro código nos puede abrir los ojos a una gran variedad de posibilidades, aunque nosotros no estamos acostumbrados a su utilización, es muy recomendable que las comprendas ya que las mayorías de los trabajos tienen un cierto modelo que todos los programadores tienen que seguir para que todos puedan entender el código con mayor facilidad y aumente la productividad del equipo.

Algunas ventajas de la utilización de este modelo son:

  • La reutilización de código.
  • Facilitación de mantenimiento y comprensión del código.
  • Mejora la productividad del equipo.

Referencia 1, Referencia 2

 


Especificaciones y elicitación de software

Los requerimientos de un software son descripciones de características de funcionamiento del sistema que pueden ser visibles, obvio y conocidos por el usuario o no.

Los procesos de elicitación de un software suelen seguir una serie de pasos los cuales son:

  • Recolección de requisitos:El desarrollador
    286791022_a388c02f02_b.jpg
    flicker photo by Claudio

    conversa con el cliente para tener la información necesaria para saber que es lo que esperan del software.

  • Organización de requisitos: El desarrollador arregla los requisitos por orden de prioridad e importancia.
  • Negociación y discusión:Si los requisitos son ambiguos o tienen algún problema esta parte se encarga de hablar con las personas involucradas para poder corregir y cambiar los requisitos.
  • Documentación: Esta parte es donde los requisitos funcionales y no funcionales son documentados para preparar y comenzar la siguiente fase del proyecto.

Las Especificaciones del software (ES) es el documento que se crea para saber la manera que el software se va a comunicar con el hardware, la velocidad de operación, el mantenimiento, la seguridad y la calidad.

ES tiene que cumplir con las siguientes caracteristicas:

  • Los comentaros de los usuarios en su idioma natal.
  • Condiciones y notas matematicas.
  • Descripcion del diseño en pseudocodigo.

Referencia


Requisitos funcionales y no funcionales.

Todo producto contiene n rango de especificaciones y requisitos que tienen que cumplir para considerase productos funcionales, pero estos requisitos se pueden dividir entre dos principalmente los requisitos funcionales y los requisitos no funcionales.

7158392354_a08ab7df99.jpg
flicker photo by Guillermo Moratalla

Los requisitos funcionales se definen como lo que el producto debe de hacer, en una computadora algunos de estos requisitos son que cuando la prendes te pide los datos del usuario o un paraguas que lo que tiene que hacer es evitar que el agua pase atreves de él.

 

 

 

10507905954_2ea8279e83_k.jpg
flicker photo by Frederic BISSON 

Los requisitos no funcionales son aquellos que definen el producto como tiene o debe de tener por hecho como el peso del producto lo que puede aguantar de presión, un ejemplo es un pistón que nos indica lo máximo de presión que puede soportar o aplicar.

 

La diferencia es poca, pero en si uno nos indica lo que el sistema debe de hacer y el otro como se debe de funcionar.

Referencia

 


Agile Software Development

Diego Armando Gracia Hinojosa

German Daniel Treviño Taboada

Agile

Este método se enfoca en construir un producto que es capaz de mejorarse constantemente en contrario  a productos que se hacen una vez  y son estáticos y no mejoran. Se agrega flexibilidad y la manera en que lo hace es mejorando un producto hasta tener un demo y sacarlo para recibir feedback de los usuarios y así poder seguir mejorando.

Los requisitos para mejorar un software tienden a cambiar, los usuarios tienden a pedir una característica que a la larga dejan de usar y esto logra ser algo malo ya que es perdida, pero siempre puede verse como que se están tomando en cuenta las ideas.

Otra característica buena que tiene es que hay muy buena comunicación entre quien esta creando el software y quien es el dueño de este. Todo esto con el fin de llegar a dar un buen producto, y , gracias a esto logra que el tiempo para mejorar el producto sea mucho mas hábil y con facilidad.


Los procesos de desarrollo de software

El proceso de desarrollo de software es muy parecido del ciclo de vida del software los dos siguen una cantidad de pasos, pero la diferencia es que uno es una rama del otro, el proceso de desarrollo de software se refiere a los pasos a seguir y da una explicación de porqué se tiene que seguir estos pasos y el ciclo de vida del software son los pasos a seguir.

Los procesos de desarrollo de software se dividen en muchos pasos que pueden seguir pero las principales que se tienen son:

  • Recolección de datos o analizar.
  • Especificar
  • Arquitectura de software
  • Implementación
  • Testeo
  • Documentación
  • Soporte
  • Mantenimiento

 

La recolección de datos es donde se investiga lo que quieres hacer y si es viable tu idea, las especificaciones es tener bien definido lo que quieres hacer y como lo quieres hacer, la arquitectura de software es donde se empieza a hacer el código de lo que quieres implementar, la implementación es donde ya tienes el producto y lo empiezas a distribuir entre los usuarios, el testeo es recibir feedback de las personas que están probando tu producto y corregir los errores marcados, la documentación es lo que se va a utilizar si en el futuro se va a mejorar lo que quieres hacer y facilitar su uso, el soporte es donde haces que tu producto sea requerido o usado por los usuarios y por último es el mantenimiento es como el testeo pero con un producto más completo donde los problemas que salieron son corregidos.


Waterfall method

Este método es una versión más utilizada de que se parece en gran cantidad en el modelo del ciclo de vida de un software la diferencia primordial es que ya que pasas uno de los pasos ya no puedes volver por eso el nombre cuando el agua de una cascada empieza a caer no puede regresar hasta que haya pasado por toda la cascada.

 

Los pasos que este método siguen son:

  1. Análisis de requisitos.
  2. Diseño del Sistema.
  3. Diseño del Programa.
  4. Codificación.
  5. Pruebas.
  6. Verificación.
  7.  Mantenimiento.

Las ventajas que este método nos da es que como se tiene que cumplir el paso en que estas en su totalidad esto hace que se puedan poner fechas límite para cada parte y pueda tener un mejor manejo en los proyectos. Las desventajas son que como no puedes regresar si una parte no te agrada ya implementado no puedes regresar a cambiarlo tienes que terminar para que puedas comenzar a cambiar cosas.

Referencia 1, Referencia 2


Software Lifecycle

El ciclo de vida de un software es en generar una serie de pasos que siguen los desarrolladores y el objetivo de esto es hacer que un producto de buena calidad que pueda estar en constantemente mejorándose.

Los ciclos de vida que siguen los desarrolladores la mayoría de las veces siguen un patrón en generar que son recolección y análisis de información, diseño, implementación, testeo, despliegue, mantenimiento.

En la parte de recolección y análisis normalmente es la parte donde se determina lo que va a hacer el producto, para quien está dirigido, como van a utilizar el producto, que se tiene que quitar y que se tiene que incorporar al producto. Es primordialmente donde tienes que estar en una buena comunicación para saber exactamente qué es lo que se va a hacer.

En el diseño es donde se especifican los detalles del producto como que sistema va a utilizar como será físicamente (si es que es físico).

2280385549_7b49046ef8
flickr photo by Lindsey Bieda shared under a Creative Commons (BY) license

 

La parte de implementación es donde se empiezan a hacer los cambios definidos en la
primera parte dentro del código. Como esta parte es la que nos va a dar el funcionamiento del producto es normalmente en la que más tiempo se tardan la mayoría de las empresas en cumplir.

El testeo está hecho para estar seguros de que el producto está cumpliendo con lo que se quería cumplir y si tiene algún problema poder saberlo y arreglarlo.

Ya que todas las anteriores están sigue el despliegue, la parte donde ya se le da tu producto al usuario.

La última parte del ciclo es el mantenimiento, cuando los usuarios están usando tu producto siempre va a haber algún tipo de problema y esta es la parte donde se solucionan estos.

Continue reading "Software Lifecycle"

Ética en la ingeniería de software

El software esta relacionado directamente con el producto final y esto ocasiona que si tu código está hecho para perjudicar de alguna manera al usuario es

La ingeniería de software puede influenciar el producto en una gran cantidad, esto puede ocasionar daño de alguna manera con los usuarios y una pérdida de confianza con la empresa.

Ya que los usuarios son las personas que van a estar utilizando el software hay una gran relación entre la ética y la calidad del software, una persona que tiene un aparato mal diseñado o mal testeado le puede ocasionar un gran daño y esto tiene que ver con la calidad, pero si la persona que crea el producto lo hace con la mentalidad de dañar al usuario esto es un problema ético, por eso hay una relación entre la ética y la calidad.

7411876554_fe09764262_b
Pagina

La parte de la calidad se puede solucionar probando, no dando nada por hecho y siempre teniendo en cuenta a los usuarios, pero la parte de la ética eso depende de las personas que creen el software, al ver esto la Association for Computing Machinery creo un código de conducta que tienen que seguir las personas para evitar los problemas éticos.

 

Referencias 1,Referencia 2