Just keep it simple.

Software Engineering

User Interface, what is it ? It is not only where they can interact and write commands, like in terminal, in fact, bash and terminal applications are user interfaces. But not everyone is as tech savvy as others. So that’s why we must take the final user into account. Not only because it is he the one who pays, but also the one you must help. So, long story, short UIs are:

The means by which the user and a computer system interact, in particular the use of input devices and software.

This concept is something that changes across history, we didn’t have those cool transparency effects on the Mac Lisa. Developers have adapted to what the user needs and their experience. By the way, this experience is called User Experience (UX) and it has a strong link with UI Design. In fact, design provides the experience. These two…

View original post 296 more words

Software Maintenance

Software that has been released needs to be updated or to evolve if the point of it is not to die. Therefore, a software maintenance is needed in order to maintain our software up-to-date. The software maintenance is divided in five stages or phases. The phases are: Software Maintenance Fundamentals, Key Issues in Software Maintenance, Maintenance Process, Techniques for Maintenance, and Software Maintenance Tools. I’ll explain them briefly in order to comprehend more about Software Maintenance.

Software Maintenance Fundamentals

Here, the definitions and terminology are stated. Also, here is state the nature of the maintenance. The needs for a maintenance can be to correct mistakes, improve the design, implement new ideas, create or implement new software, create a better interface, or simply retiring the software. It includes the maintenance costs and the possible evolution of the software.

Key Issues in Software Maintenance

In these phase technical issues, management issues, cost estimation, and measurement are stated. Regarding the technical issues, the limitations, analysis, and maintainability are discussed. In management issues, staff, process, and Organizational Aspects of Maintenance are discussed. Cost estimation depends on what is going to be edited or added. 

Maintenance Process

Here, the actual maintenance is going through. The maintenance processes checks the process implementation, problem and modification analysis, modification implementation, maintenance review/acceptance, migration, and software retirement. The maintenance activities divide all these processes.

Techniques for Maintenance

It is important to have different techniques of maintenance in order to know how to react to the different issues. Some steps to understand the issues in order to try to solve them are: the comprehension of the programs, reengineering, reverse engineering, migration, and retirement.

Software Maintenance Tools

Some tools can be so useful while giving maintenance to the software, some of them are: program slicers, static analyzers, dynamic analyzers, data flow analyzers, cross-referencers, and dependency analyzers.

Retrieved from http://swebokwiki.org/Chapter_5:_Software_Maintenance.

By Juan

Continue reading "Software Maintenance"

Software Architecture

The software architecture is a process of declaring the components of a software, such as the requirements and functionality of it. Also, software architecture includes the quality attributes such as performance, security, and manageability. It is important, because it can reach a better communication between the customer and the software engineers.


In the software architecture, decisions are made in order to follow a schedule. This structure is very helpful to follow the tasks or steps to reach the final product. It can reduce the lapse time of the project because of the organization. The architecture is supposed to be redacted in a way in which all of the involved people can understand.

The architecture can be divided in four statements: the creation of a understanding system, create accessible knowledge and accessible decisions, have an efficient development, and  reduce the risks while completing tasks. Not all the architectures leave you in the best way to success, but it is a great tool or guide.

Retrieved from https://msdn.microsoft.com/en-us/library/ee658098.aspx .

Software Testing

Software Testing is as a process in which testers try to find software bugs. In other words, it is a process that validates if the software is well-implemented or needs to be fixed. There are a lot of types of testing in the software world. The list is kind of huge, that’s why I’ll only describe some of them, if you want to see a more complete list, go to visit http://www.softwaretestinghelp.com/types-of-software-testing/.

  • Black box Testing: tests are based on the requirements and functionality of the project.
  • White box Testing: tests are based on the knowledge of the internal logic of the project.
  • Unit Testing: tests from individual code or individual sections of the code.
  • Functional Testing: tests are focused on the output, leaving aside the internal development of the project.
  • System Testing: tests the functionality of all the project, trying to find new glitches and bugs.
  • Acceptance Testing: tests are made to verify if the project reach the customer’s expectations.
  • Security Testing: tests regarding the security of the software, they try to close any unauthorized access.
  • Beta Testing: this test is tested by the final users. This test is the final test before it is released.

Tests are very important in the software environment, they help you to find out new problems and the idea is to find a solution to them. These processes might be slow or boring, but they are a fundamental part of the software development. Most of the time, users are the testers or the ones that find the bugs and glitches, so, it is important to have a good communication between them to solve the problems faster.

Retrieved from http://istqbexamcertification.com/what-is-a-software-testing/ and http://www.softwaretestinghelp.com/types-of-software-testing/.

Software Design

Software design can be seen as a way of solving problems or even creating new ones. IN order to solve these problems, designers can follow few steps or recommendations from others. One of the most important topics regarding the software design is software requirements analysis. This SRA lists some specifications that might be useful most of the time.

The following points are some recommendations of the software design principles:

  • The designer needs to have the ability to search for new solutions to the problems
  • The model of the software must be able to be traceable in order to find a solution in an easier way.
  • It is accepted to use solutions that have been discovered by others.
  • The design needs to be reachable, that means that it needs to be possible to take it into the real world.
  • The design must show coherence.
  • The designs must be well structured.
  • The design must be able to accept or adapt changes.
  • The idea of a software design is to solve problems, not to get worse.

There are some points that are needed to be taken into account, such as the compatibility, extensibility,  security, usability, performance, scalability, etc. These considerations may lead you to a great software design.

Retrieved from https://en.wikipedia.org/wiki/Software_design.

Functional and Non-Functional Requirements

There is a huge difference between a functional and a nonfunctional requirement. The functional requirement describes the tasks that a software must do, while the nonfunctional requirement describes how the software will do.

The functional requirements most of the time describe the behavior of the function, such as instructions or tasks regarding something. In software, these requirements describe the way it functions.

The following functional requirements are some of the most common:

  • Business Rules
  • Transaction corrections, adjustments and cancellations
  • Administrative functions
  • Authentication
  • Authorization levels
  • Audit Tracking
  • External Interfaces
  • Certification Requirements
  • Reporting Requirements
  • Historical Data
  • Legal or Regulatory Requirements

The nonfunctional requirements are re remaining requirements of a project, in the case of software, they describe the what the software is going to do or how. These requirements specify in general the product, rather than an specific task or method.

The following nonfunctional requirements are some of the most common:

  • Performance – for example Response Time, Throughput, Utilization, Static Volumetric
  • Scalability
  • Capacity
  • Availability
  • Reliability
  • Recoverability
  • Maintainability
  • Serviceability
  • Security
  • Regulatory
  • Manageability
  • Environmental
  • Data Integrity
  • Usability
  • Interoperability

Retrieved from http://reqtest.com/requirements-blog/functional-vs-non-functional-requirements/.

Waterfall Method


The waterfall method is a way of producing new code, it is a sequential design process. This methodology has eight steps or tasks. Those are onception, initiation, analysis, design, construction, testing, implementation, and maintenance. Obviously, this methodology has advantages and disadvantages.


  • One of the biggest advantages regarding the methodology is that it is possible to have a well-programmed schedule. Each progress is recorded so it is the possibility to improve the way we  work.
  • It is a great tool to costumers. They can have an idea regarding the time, size, and cost of the project.
  • It’s a great way of having a complete documentation.


  • If a step or task is completed, there is no way back to it.
  • The methodology requieres a lot of time just for trying to reach it.
  • If a mistake in the methodology is found, all the project must start from the beginning.
  • The methodology doesn’t take into account the customer once the waterfall method starts.

Retrieved from http://www.base36.com/2012/12/agile-waterfall-methodologies-a-side-by-side-comparison/.



La nueva vida

¿Qué tanto hemos evolucionado? ¿Qué tanto nos hemos hecho dependientes de las cosas, te la tecnología en específico? ¿Qué tanto nos queda por mejorar? Todo apunta que vamos por un buen camino, si es que no tomamos en cuenta que no siempre se hace el bien con los nuevos descubrimientos de la tecnología. Muchos dicen que ésta nos va a llevar a nuestro fin, muchos decimos que será nuestro nuevo estilo de vida, aquel con el que vamos a mejorar como sociedad.

Tesla está creciendo de una manera increíble, Elon Musk no deja de tener ideas que parecen imposibles, pero que ha cumplido lo que se propuso hace diez años. Primero con la utilización de energías renovables, con la invención de una batería que almacene la energía de estas energías, con la creación de coches eléctricos, con la idea de ir a colonizar Marte, o con su nueva idea de tejas hechas de paneles solares.

Siento, yo, que no debemos utilizar la tecnología para todo, no podemos ser dependientes de ella al cien por ciento, tenemos que saber controlarla y no lo digo por miedo a que nos controle, sino por miedo a perder el sentido humano.

Sé que la tecnología se adentra poco a poco a nuestras vidas. Lo único que tengo que decir al respecto es que no hay manera de evitarlo, y que no hay por qué negar el éxito que ha tenido ésta. No hay que creer ni pensar que ésta nos llevará a la destrucción, aunque no hay que descartar la idea.

Software Development Process


The SDP (Software Development Process) is almost the same as the Software Development Life Cycle. It is the group of actions or processes in order to complete tasks. Some of the actions or activities regarding the SDP are:

  • Requirements Analysis: research the requirements of the future product, customers are needed to achieve this task.
  • Specification: create a deep explanation regarding the specifications that the customer gives.
  • Software Architecture: design a model in order to implement all, or at least most of, the specifications.
  • Implementation: Code the design.
  • Testing: test the different parts of the product. Different people may interact with it in order to find any bug or glitch.
  • Documentation: Specify every part of the code in order to state a clear description of the software.
  • Training and Support: Teach the customer how to use the new product.
  • Maintenance: create new updates if it is necessary. Fix bugs if something appears.


History – Software Engineering


According to the vikingcodeschool, the 50’s were difficult to programmers. They need to create the development of the programs by hand. All these scripts were processed by machines and later on, they might check if the code was correct or not. With the time, de development of software change. The first programming language was IBM´s Fortan, released in 1957.

With the time, the Defense Department from the US released Cobol in 1962, it was used with business purposes.

Many things appear every day, maybe they aren’t new, but maybe these things are changing something. I think that nowadays software and programs are being used to transform, not to CREATE.

New things are coming, maybe not an innovative thing or product, but a productive and helpful tool.