Waterfall Development

Just as ASD (Agile Software Development), the waterfall model for software development gets the job done. The question is: How?  Unlike ASD development, this methodology is sequential, you can’t skip one step just like that, you’ll need thousands of reasons to do it. Waterfalls always flow from top to bottom, and it is the same way in the technical concept.  There are five main stages in the waterfall methodology:plainicon-com-45868-512px

  • Requirements
  • Design
  • Implementation
  • Verification
  • Maintenance

As you can see, the stages are basically the same as in ASD. But the difference is that it is sequential. In this context, sequential means much more than just a structure. It paves the way of the development. I consider this methodology to be excessively sequential. When an stage is over or completed, once you step on the next phase, you never go back. That means that in order to step into the design phase, the project requirements must be heavily specified, because as I said, there is no turning back.

There are a few situations in which is better to use Waterfall methodology, according to Base36 Inc., these are the top three situations:

1. When there is a clear picture of what the final product should be.

2. When clients won’t have the ability to change the scope of the project once it has begun.

3. When definition, not speed, is key to success.

Credits to: PlainIcon.com and WallPaperSafari.com


The Software Development Process

Brown Hotdog on a Brown Plate

What is a software development process?

The software development process is a structure imposed on the development of a software product. It is a splitting of software development work into distinct phases containing activities with the intent of better planning and management.

There are several models or methodologies, each describing approaches to a variety of tasks or activities that take place duri  ng the process. Common methodologies include the waterfall, prototyping, iterative and incremental development, spiral development, rapid application development, extreme programming and various types of agile methodology. Free stock photo of schedule, startup, to do, concept 

Process Steps

SE processes are composed of many activities/steps:

  • Requirement Analysis
    • While the customer probably believe they know what the software is to do, it is common that you need to recognize incomplete, ambiguous or contradictory requirements.
  • Specification
    • In this step a precise description of the software is to be written. 
  • Software architecture
    • Design an abstract representation of the system. Architecture is concerned with making sure the software system will meet the requirements of the product, as well as ensuring that the future req  uirement can be addressed.
  • Implementation
    • Very self explanatory, code the design.
  • Testing
    • Testing the software.
  • Documentation
    • For the purpose of future maintenance and enhancement.
  • Training and support
    • It is very important to have training classes for the most enthusiastic software users, incorporate the rest of the organization into adopting the new software.
  • Maintenance
    • Maintaining and enhancing software to co  pe with the new problems or new requirements. It may be necessary to add code and determine how the software works. 

 


Agile development

Can one produce software the same way as cars are made in a factory? Is the sequential process efficient for ambiguous requirements?

flickr photo by cyclonebill https://flickr.com/photos/cyclonebill/2905044002 shared under a Creative Commons (BY-SA) license
flickr photo by cyclonebill https://flickr.com/photos/cyclonebill/2905044002 shared under a Creative Commons (BY-SA) license

Agile development is an alternative to traditional sequential development. It was purposed in 1970 by Dr. Winston Royce in his paper “Managing the Development of Large Software Systems”. He mentioned that this process does not work because the communication between each specialized group tends to fail. Also, sequential process supposes that all the requirements can be determined in the beginning, and this seldom happens. Sometimes, the requirements change, and in the production phase, the requirements may have changed completely, making the product completely useless.

Agile development is based on 12 principles, which can be found in the Agile Manifesto page:

  1. Satisfying the customer during all phases.
  2. Be ready for changes.
  3. Deliver constantly. Don’t wait at the end.
  4. Business people and developers work together.
  5. Motivate employees. Make them feel like fish in sea.
  6. Face-to-face conversation does matter.
  7. Working software measures the progress.
  8. Sustainability is essential.
  9. Focus on good design and technical details.
  10. Simplicity.
  11. Teams organize by themselves.
  12. Regular intervals of time make coordination and feedback better.

Agile development has several benefits over sequential development, which include:

  • Prevents analysis paralysis: this is one of the main problems in sequential development. You have made the requirements analysis and you’re building software, but in another step, you realize that several requirements have changed or have been added. You need to make another analysis in order to keep working. This does not happen in agile, since analysis is a step in every sprint.
  • Allows client to have a product every time: because of the sprints, each iteration returns a product, each time better. In this way, the client does not needs to wait until production phase.
  • Continue reading "Agile development"

Agile Development

In 2001, 17 software developers met at Utah to put together ideas they had on lightweight development methods. They agreed on 12 Principles that turned into “The Agile Manifesto”.

Agile software development is about doing things based in short term plans instead of spending a lot of time planning a big strategy. According to the Agile Manifesto individuals and interactions over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation and responding to change over following a plan.

Scrum is the most common approach to agile development. It’s an alternative to the traditional waterfall method, as each process isn’t dependant on its previous process. All processes happen at the same time, quickly and in an interconnected, multifunctional matter. Then, after all processes are done, analysis and conclusions are reached and a whole set of new interactions can start.

If you want to know more about scrum you can watch the following video:

Agile development provides a way to know the direction of a project THROUGHOUT the development cycle, not before.

By: Carlos Martell and Lucía Velasco.


Agile Software Development

Agile Software Development is an umbrella term for a set of methods and practices based on the values and principles expressed in the Agile Manifesto.
Solutions evolve through collaboration between self-organizing, cross-functional teams utilizing the appropriate practices for their context.

  • The satisfaction of the customer must be guaranteed throughout all the development process.
  • Change is a key of the ASD, developers must be capable of changing and adapting to the customer’s needs.
  • Deliver new releases frequently.
  • A friendly environment must be present between business people and the devteam.
  • Promote motivation among all individuals involved.
  • In order to be efficient, the communication must be face-to-face.
  • Progress is measured by stable and working releases.
  • There must be sustainable development by keeping a constant pace between sponsors, developers and users.
  • There is constant attention to provide technical excellence.
  • Keep things simple.Period.
  • The devteam must be sustainable and self-organizing.
  • Everyone involved learns from their mistakes and move on.

As everything in this world, ASD was criticised. There was an anti-agile movement called the Dark Manifesto for ASD. You can read it here.

It was also heavily criticised by Aaron Gray because of the working environment of ASD, in this critic, the author establishes that people is not always willing to work, or the team might not be so motivated to work in a team, and rather prefer to work alone.  The biggest argument is that programming or coding is not measurable, because of the environment uncertainty.

Written by Miguel Cabral and Juan Pablo Ramírez

 

 

 


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.

 


History and Improvement of Software Development

Normally we use our electronic devices every single day of our lives. We use our mobile applications, play with our computers or even argue about the new technology. But, have you ever think about the past? How did people live without a smartphone? Or what we did to evolve from nothing  to today’s technology?

9112c7ca9db8cc1d95be4a2213ecffb6

A little bit of history…

There was a time were programs were only instructions to manipulate physical devices, but today software is everything to the world. Basically, without the software, our devices are obsolete.

Late in the 50’s and 60’s, programmers didn’t interact directly with computers. For making mathematical operations they delivered their programs to a technician, which returned the results some hours later. Here is where programming languages started. The FORTRAN (by IBM) and the COBOL (by the US Department of Defense) were the first programming languages used for engineering and business applications; but their effectiveness was not the best, normally they took a long time to give results, leading to loss of time and budget. This started the “Software Crisis”!!

historyoftest

But fortunately, in 1968 a conference (NATO) took place to find a solution to these problems.Here, the term Software Engineering was created. Their solution was to use practices of traditional engineering applied to software. More about Software Engineering

applemacAfter this, the BOOM of software development started. The 70’s saw the growth of interfaces, that allows the developer to break the project into pieces. Then the 80’s gave birth to the famous “object-oriented programming”, that changed the way a user interact with the computer, by the Graphical user interface (GUI); now the device was more
friendly and easy to use.

But there were also bad things. Apparently the improvement on the hardware led to more software developers?, but bad code writing?.

What…Bad Coding?!

Yes! Bad code

i-will-not-write-any-more-bad-code
627x627-sftwaredev-feature-huss
software-development-banner
Continue reading "History and Improvement of Software Development"