Software Architecture

The software architecture of a program or computing system is a depiction of the system that aids in the understanding of how the system will behave.

Software architecture serves as the blueprint for both the system and the project developing it, defining the work assignments that must be carried out by design and implementation teams. The architecture is the primary carrier of system qualities such as performance, modifiability, and security, none of which can be achieved without a unifying architectural vision. Architecture is an artifact for early analysis to make sure that a design approach will yield an acceptable system. By building effective architecture, you can identify design risks and mitigate them early in the development process.

Functional and non functional req.. Does it really matter?

What is a functional requirement?

Refers mainly to the expected function of the product. Product or system features, or what the program does is what the functional requirements are. Definitely it is easier to determine the functional requirements than the non-functional because they are almost obvious.

What is a non-functional requirement?

These requirements refer mainly to the attributes that include performance, security, usability, etc. Developers usually miss these requirements because they focus mainly on the functional requirements. When addressing incorrectly these non-functional requirements, the system actually fails. For example, the lack of usability or performance can lead to frustration or system problems. This is why non-functional requirements are so important for a system to succeed.



Waterfall Method

The Waterfall Model was first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed before the next phase can begin and there is no overlapping in the phases.

Waterfall model is the earliest SDLC approach that was used for software development .

Waterfall Model design

Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure success of the project. In “The Waterfall” approach, the whole process of software development is divided into separate phases. In Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially.

Following is a diagrammatic representation of different phases of waterfall model.SDLC Waterfall Model


The advantage of waterfall development is that it allows for departmentalization and control. A schedule can be set with deadlines for each stage of development and a product can proceed through the development process model phases one by one.

Development moves from concept, through design, implementation, testing, installation, troubleshooting, and ends up at operation and maintenance. Each phase of development proceeds in strict order.


The disadvantage of waterfall development is that it does not allow for much reflection or revision. Once an application is in the testing stage, it is very difficult to go back and change something that was not well-documented or thought upon in the concept stage.

More info: Here!

The Lifecycle of Software (the whaaat??)

There are series of steps to design and develop a software efficiently.

These are the steps:


Image recovered from xbs software

1. Requirements Analysis

It is important to document all requirements to the software that you want to develop. You need to make interviews and all that stuff. Structure all incoming data, analyze them, consider all technical limitations that may arise on the client’s side, and come out with a ready-to-follow specification to meet the client’s needs. Consider also, the clients budget and time to spend on the project.

2. Design Phase

This involves the creation of a project scope document with mockups, or hand-drawn sketches, and a detailed software development specification.

To create a prototype, you need to figure out the following things:

  • The way the input data will be acquired and processed to produce the desired output data
  • The form in which the output data should be presented

Mockups are sent to UI/UX designers who turn them into colorful layouts.

3. Software Development Life Cycle Phase

This phase can also include the creation of an interactive prototype that is actually the skeleton of the future application. Such prototype helps define the overall system architecture. This step involves little coding, like coding buttons and simple forms, just to give the client an idea how the final product will operate. That’s why we included creation of a prototype into the software development phase.

4. Software Testing Phase

Once the product is developed, it should undergo a meticulous testing process to make sure that it solves the needs set forth during the requirements study phase. The client should be involved in the acceptance testing and try using it exactly the way it will be used when implemented . Once the major code problems are fixed, the software can be deployed. For minor fixes, a simple bug tracking system can

Continue reading "The Lifecycle of Software (the whaaat??)"

Software Engineer

Let me define what is Software Engineer first:

The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software.

The study of approaches as in the above statement.

-Tutorials Point

Software is more than just a program code. A program is an executable code, which serves some computational purpose. Software is considered to be collection of executable programming code, associated libraries and documentations. Software, when made for a specific requirement is called software product.

Engineering on the other hand, is all about developing products, using well-defined, scientific principles and methods.

High-quality software is characterized by:

  • High dependability (including safety, security and reliability)
  • Efficiency
  • Usability
  • Accessibility
  • Maintainability

A software product is said to have a life-cycle, or undergo a software process, which in software engineering terms consists essentially of two parts: development and evolution. Both involve traditional engineering phases, software development consisting primarily of concept creation, requirements specification, design, implementation, integration, testing, and deployment. On the other hand, software evolution involves operation and maintenance as well as some limited development activities aimed at improving the software.

Prototype and codiiiiiing!

Esta segunda clase presentamos el prototipo que habíamos empezado la clase pasada. Presentamos un monorriel y un tipo “carrusel” para que las personas se pudieran transportar de manera más rápida.

Un video pequeño para explicar el proyecto:

(Bajen un poco el volumen, jeje)


También, empezamos a conocer algunas funciones de HTML5 y CSS3 mediante el sitio de en el cual conocimos algunas de las etiquetas más utilizadas en HTML y la estructura básica.

Ahora nuestra tarea será crear una página para promocionar el producto que acabamos de crear.


Primer día 10/8

En esta clase, el profesor aprovechó para presentarse y contarnos acerca de lo que abarcaría el curso. También creamos boletines informativos mediante MailChimp el cual desafortunadamente, al momento de enviar los boletines a nuestros compañeros de clase nos bloquearon la cuenta.


Además, empezamos con la creación de un prototipo para solucionar un problema que se diera en la actualidad. Debido a los tiempos, la actividad quedó pospuesta para la clase de la próxima semana.

Así fue nuestra primer día de clase en Fundamentos de Diseño Interactivo