Agile software development

Manifiesto por el Desarrollo Ágil de Software:

Estamos descubriendo formas mejores de desarrollar

software tanto por nuestra propia experiencia como

ayudando a terceros. A través de este trabajo hemos

aprendido a valorar:

Individuos e interacciones sobre procesos y herramientas

Software funcionando sobre documentación extensiva

Colaboración con el cliente sobre negociación contractual

Respuesta ante el cambio sobre seguir un plan

Esto es, aunque valoramos los elementos de la derecha,

valoramos más los de la izquierda.

http://agilemanifesto.org/iso/es/manifesto.html

Esta técnica nos habla de cómo trabajar juntos con el usuario para llegar al objetivo en común.

Para llegar al objetivo tenemos que seguir los siguientes pasos:

1.- Planificación del programa:

2.- Diseño del programa: Se tienen que definir los procesos.

2.- Construir el programa.

3.- Probar el programa.

4.- Revisar el programa.

5.- Lanzar al mercado.

Beneficios de agile:

  1. Satisfacción del cliente por la rapidez de entrega y por las mejoras continuas que se realizan.
  2. La persona y la interacción son el énfasis, no lo son los procesos ni las herramientas.
  3. El (los) desarrollador(es), el (los) cliente(s) y los probadores interactúan constantemente entre sí.
  4. El software desarrollado se entrega frecuentemente (meses en lugar de meses).
  5. La conversación cara a cara es la mejor forma de comunicación.
  6. La cooperación entre las personas de negocios y los desarrolladores es cercana.
  7. Atención continua a la excelencia técnica y buen diseño.
  8. Adaptación regular a las circunstancias cambiantes.
  9. Incluso cambios de requerimientos tardíos son bienvenidos.

Desventajas de agile:

  1. Existe falta de énfasis en el diseño y la documentación necesaria.
  2. El proyecto puede fácilmente salirse fuera de los objetivos si el representante del cliente no es muy claro con lo que desea.
  3. Es muy complicado que este modelo lo tomen los programadores novatos debido a el tipo de decisiones que se puedan
    Continue reading "Agile software development"

Ethics in software engineering

El desarrollo de software se ha vuelto algo fundamental en la actualidad; los ingenieros de software al ejercer su profesión pueden hacer un beneficio o dañar a la sociedad con el mal uso de esta, o hasta permitir que la sociedad se haga daño. Para garantizar que la ingeniería de software sea una profesión respetada se creó “Software Engineering Code of Ethics and Professional Practice”.

Este código tiene ocho principios relacionados con las conductas que los ingenieros de software deben tomar para ser profesionales; las cuales se fundamentan en las características humanas que debe de poseer y las personas que se ven afectadas en la toma de decisiones del profesionista.

Los ocho principios son los siguientes:

  1. Sociedad. Los ingenieros de software actuarán en forma congruente con el interés social, así como estar motivado a ofrecer voluntariamente asistencia técnica a buenas causas y contribuir a la educación pública relacionada con esta profession.
  2. Cliente y empresario. Los ingenieros de software actuarán de manera que se concilien los mejores intereses de sus clientes y empresarios, congruentemente con el interés social.
  3. Producto. Los ingenieros de software asegurarán que sus productos y modificaciones correspondientes cumplen los estándares profesionales más altos posibles.
  4. Juicio. Los ingenieros de software mantendrán integridad e independencia en su juicio profesional.
  5. Administración. Los ingenieros de software gerentes y líderes promoverán y se suscribirán a un enfoque ético en la administración del desarrollo y mantenimiento de software.
  6. Profesión. Los ingenieros de software incrementarán la integridad y reputación de la profesión congruentemente con el interés social.
  7. Colegas. Los ingenieros de software apoyarán y serán justos con sus colegas.
  8. Personal. Los ingenieros de software participarán toda su vida en el aprendizaje relacionado con la práctica de su profesión y promoverán un enfoque ético en la práctica de la profesión.

Este Código ha sido redactado por

Continue reading "Ethics in software engineering"

History of software engineering.

 

La ingeniería de software ha evolucionado con el paso de los años, esta industria ha cambiado en todos los aspectos desde que comenzó. La historia de esta disciplina nos cuenta cómo nació y las razones por las cuales tomó esta estructura.

Todo comenzó con la Crisis del Software, de 1955 a 1965 fue una década en la que se notaron problemas por el costo de los proyectos, no había seguridad ni eran seguros los sistemas. Fue una década de desastres, pero gracias a esta se lograron identificar los errores al implementar el software.

Afortunadamente después de que se identificaron los problemas empezó un tiempo en el que se proponían soluciones a estos, así nacieron muchas herramientas de programación que conocemos hoy en día; como la programación orientada a objetos, programación estructurada. Así  se comenzó a desarrollar un estilo de programación más estructurado y ordenado; incluso a mejorar la disciplina de la programación.

Después vino el nacimiento del internet, que trajo una demanda en los sistemas internacionales para desplegar información en la web. Así los programadores empezaron a ver la optimización en la visualización de imágenes y animaciones sencillas en la web. Actualmente se están implementando metodologías ligeras para desarrollar software funcional.

Resultado de imagen para historia de la ingenieria de software

https://www.youtube.com/watch?v=9IPn5Gk_OiM

http://conservancy.umn.edu/handle/11299/107103


Software life-cycle

Software life-cycle is used in systems engineering, and software engineering to describe a process for planning, creating, testing, and deploying an information system.  The systems development life cycle, according to Elliott & Strachan & Radford (2004), “originated in the 1960s, to develop large scale functional business systems in an age of large scale business conglomerates.

 

The waterfall: is a sequence of stages in which the output of each stage becomes the input for the next. These are defined by steps, they are the following:

 

–Project planning, feasibility study: captured in a product requirements document

–Systems analysis, requirements definition: Refines project goals into defined functions and operation of the intended application. Analyzes end-user information needs.

–Systems design: Describes desired features and operations in detail, including screen layouts, business rules, process diagrams, pseudocode and other documentation.

–Implementation: The real code is written here.

–Integration and testing: Brings all the pieces together into a special testing environment, then checks for errors, bugs and interoperability.

–Acceptance, installation, deployment: The final stage of initial development, where the software is put into production and runs actual business.

–Maintenance: What happens during the rest of the software’s life: changes, correction, additions, moves to a different computing platform and more. This, the least glamorous and perhaps most important step of all, goes on seemingly forever.

The first formal  description of the waterfall model is often cited as a 1970 article by Winston W. Royce; he was an American computer science and a pioneer in the field of software development.

One support augmentant is that the time spent early in the software production cycle can reduce costs at later stages. But a problem of the waterfall model is that the waterfall model assumes that the only role for users is in specifying requirements, and that all requirements

software-development-life-cycle
Continue reading "Software life-cycle"