Software Design Patterns

Software Design Patterns are commonly used on object-oriented software development, they are previously defined methods to design and code programs, used commonly by experts and corporations that benefit from structured and unified ways to develop and execute. They serve as a common framework for developers and promote good coding practices.

Source


They were not developed intentionally, they were instead created by trial and error and the prevalent ones are the ones that, by natural selection, were proven to be the best ones.
The Gang of Four, are the ones that wrote a book and set the SDP principles down, the book is called "Design Patterns - Elements of Reusable Object-Oriented Software". The two main principles are:

  • Program to an interface, not an implementation: Basically programming the classes in order for them to be implementable by other software, resuable and act as pieces of a bigger puzzle.
  • Favor composition over inheritance: Classes should implement other classes to complete their functionality, rather than inheriting from them.
There are a lot of desing patterns and not one is always the "correct" one, nonetheless, four main pattern types are defined:
  • Creational: Create objects on the go as they are being used.
  • Structural: The composition of objects is of most importance, mix and match to obtain new functionality.
  • Behavioral: Communication between objects is prioritized.
  • J2EE: Presentation layer.

Source: https://www.tutorialspoint.com/design_pattern/design_pattern_overview.htm

Software Design Patterns

Software Design Patterns are commonly used on object-oriented software development, they are previously defined methods to design and code programs, used commonly by experts and corporations that benefit from structured and unified ways to develop and execute. They serve as a common framework for developers and promote good coding practices.

Source


They were not developed intentionally, they were instead created by trial and error and the prevalent ones are the ones that, by natural selection, were proven to be the best ones.
The Gang of Four, are the ones that wrote a book and set the SDP principles down, the book is called "Design Patterns - Elements of Reusable Object-Oriented Software". The two main principles are:

  • Program to an interface, not an implementation: Basically programming the classes in order for them to be implementable by other software, resuable and act as pieces of a bigger puzzle.
  • Favor composition over inheritance: Classes should implement other classes to complete their functionality, rather than inheriting from them.
There are a lot of desing patterns and not one is always the "correct" one, nonetheless, four main pattern types are defined:
  • Creational: Create objects on the go as they are being used.
  • Structural: The composition of objects is of most importance, mix and match to obtain new functionality.
  • Behavioral: Communication between objects is prioritized.
  • J2EE: Presentation layer.

Source: https://www.tutorialspoint.com/design_pattern/design_pattern_overview.htm

Software Design & Software Architecture

These two parts are essential to software-making, they are sequential steps that ensure a program meets the specifications needed and solves a particular problem, let's start with Architecture.


Source

Software architecture deals with the abstraction part of design, it analyzes the problem and sets a methodolgy to solve it, commonly using blocks. The software architect must be very acquainted with the challenge that he is facing, along with the technologies that can be used to solve it. Nonetheless, the SA doesn't do coding, he gives the product owner a thorough analysis and the underlying structure of the program that must be made, including a design blueprint and the attributes and connections of each part that has to be implemented later.

Software Architecture is, in essence, delivering a structured solution to a problem.

Software Design, on the other hand, deals with the technical details of the implementation of the system. They take into account the environment, adapting the development process to it, incluiding software and hardware constraints. They design and guide the coding process, including testing and debugging, in order for the process to be orderly and ensure success.

Software Design creates the functional part of the archutecture plan.

Software Design & Software Architecture

These two parts are essential to software-making, they are sequential steps that ensure a program meets the specifications needed and solves a particular problem, let's start with Architecture.


Source

Software architecture deals with the abstraction part of design, it analyzes the problem and sets a methodolgy to solve it, commonly using blocks. The software architect must be very acquainted with the challenge that he is facing, along with the technologies that can be used to solve it. Nonetheless, the SA doesn't do coding, he gives the product owner a thorough analysis and the underlying structure of the program that must be made, including a design blueprint and the attributes and connections of each part that has to be implemented later.

Software Architecture is, in essence, delivering a structured solution to a problem.

Software Design, on the other hand, deals with the technical details of the implementation of the system. They take into account the environment, adapting the development process to it, incluiding software and hardware constraints. They design and guide the coding process, including testing and debugging, in order for the process to be orderly and ensure success.

Software Design creates the functional part of the archutecture plan.

El único curso con un #

En México todas nuestras clases desde que estamos en la primaria son completamente aburridas. Es muy raro ver a un maestro que disfruta dar clases y más que eso que hace que sus alumnos disfruten de su clase. En toda mi vida solo he tenido 3 maestros que han hecho de la escuela un lugar de diversión.

#TC1019

La clase de Fundamentos de Ingeniería de Software fue una experiencia diferente a las que había vivido en años. Al entrar a la universidad no esperaba tener clases de este tipo, tan animadas y con un maestro que disfruta lo que hace.

El Tec21 se caracteriza por crear nuevas técnicas de enseñanza, y sin duda el aprender por ti mismo es una muy buena ya que te permite descubrir el aprendizaje por ti mismo; pero Ken Bauer va más allá. Para empezar trata a sus alumnos como personas, y no como simples minions que van a aprender de algo.

Su clase y sus palabras te dicen que siempre está atento a los sentimientos de los estudiantes. Cuando necesitas momentos para ti mismo u otras materias, él te ofrece ese tiempo que es valioso para cualquier persona.


En esta nube no llueve

Todos usamos la nube, mejor conocidas como “The Cloud” en inglés. Algunos pueden decir que no es verdad, que todo lo que usan es su computadora. Pero al final, no se dan cuenta que la nube no es un lujo más en la web; la nube se ha convertido en algo fundamental para el uso de un ordenador y por supuesto de internet.

¿En qué la uso?

almacenamiento-en-la-nubeEl uso más común es en los correos electrónicos que usamos a diario. Al momento de entrar a tú correo, no estás viendo la información directo de la computadora. Lo que está sucediendo es que se observa un reflejo de lo que está guardado en la nube, al entrar al correo solo se está dando acceso a ese espacio y todo lo que se haga se modificara directamente.

Otro uso común es en proveedores de espacio. Servicios como Drive, Dropbox, OneDrive o  Box, dan espacio en la nube para que las personas puedan guardar sus archivos. Sin duda algo que se veía como un lujo antes, ahora es algo indispensable, y los que proveen este servicio se ven recompensados.

 

Referencias:

http://aprenderinternet.about.com/od/ConceptosBasico/a/La-Nube-En-Internet.htm

http://www.conexionbrando.com/1389864-que-es-la-nube-para-que-sirve-y-cuales-son-los-servicios-que-tenes-que-conocer


¿Por qué todos hablan de Big Data?

Últimamente se está hablando mucho sobre Big Data. Se ven conferencias cada mes de expertos hablando de este tema. Los que estamos rodeados de tecnología lo escuchamos seguido, pero, ¿qué es Big Data y por qué todos hablan de ella?

big-data

big-data¿Qué es Big Data?

Con tantos datos en la actualidad, existen diferentes problemas al tratar de administrarlos. Eso es lo que Big Data pretende. Administrar datos nuevos, creación de nuevos datos y administración de los tipos de datos tradicionales. Todo el almacenamiento y control de los mismos datos se permite mediante patrones que se encuentran dentro de estos.

¿Para qué se usa?big-data-collection

Se busca manipular enormes cantidades de datos para áreas como la mercadotecnia, análisis de negocios, datos sobre enfermedades, lucha contra el crimen, entre otros. El gran problema es que cada día estos datos crecen y los lugares de almacenamiento se acortan. Incluso se dice que si guardaran todos los bits y bytes de datos dentro de un disco, la torre sería suficiente para ir de la Tierra a la Luna y de regreso.

Problema…

Cada vez somos más personas en este mundo. Y sin duda el uso de internet y de datos son indispensables en el mundo tecnológico. La administración de una gran cantidad de datos puede significar un gran avance. Y si se toma con cuidado, ese avance se pude convertir en el futuro.

 

Referencias:

https://www.ibm.com/developerworks/ssa/local/im/que-es-big-data/

https://www.oracle.com/lad/big-data/index.html


Software Verification and Validation

Julia's Blog

slide_42.jpg

Verification and Validation are important during the Software Lifecycle because they help us to find and correct errors as soon as possible, thus preventing the delivery of a faulty product to a costumer. Is it a good product or not?

There are two aspects of V&V tasks:

  • Confirms to requirements
  • Fit for use

It’s important to outline the difference between these two terms:

  1. Verification:
    1. Process to evaluate the mediator products to check wheter the products satisfy the conditions imposed during the beginning of the phase.
    2. “Are we building the product right?”
    3. It uses static testing.
    4. A verifier stablishes that the product implements all the requirements documented in the SRS.
  2. Validation: 
    1. Process of evaluating the final product to check if it meets the business needs.
    2. “Are we building the right product?”
    3. It uses dynamic testing.
    4. The validator establishes that the SRS is a true reflection of the user’s needs.

Source:

View original post


Designing a UI

A UI or User Interface is every single interaction of a software with the users. The UI is a big part of developing a program. Without an attractive view, the UX (User experience) and usability of that software will go down.

350px-linux_kernel_input_ouput_evdev_gem_usb_framebuffer-svg

Interface design is made totally for the public. So if the public don’t like it, your development won’t work. That’s why it should have some elements like these ones:

  • Input Controls: buttons, text fields, checkboxes, radio buttons, dropdown lists, list boxes, toggles, date field
  • Navigational Components: breadcrumb, slider, search field, pagination, slider, tags, icons
  • Informational Components: tooltips, icons, progress bar, notifications, message boxes, modal windows
  • Containers: accordion

The key for a good UI is to keep it simple. A page, program or desktop with a lot of elements is not good-looking. Also the colors and typography are important. Attractive colors and different sizes of letters will please the users eyes and gain more views.

Sources:

http://bokardo.com/principles-of-user-interface-design/

https://www.usability.gov/what-and-why/user-interface-design.html


Software Maintenance

Selling and delivering a piece of software is not the only work that a software engineer has. Actually the post-developement processes are important too. Maintaining the software is important for a better performance.

Why is performance so important?

Basically it’s important because if there is a software problem that users won’t like it, and if that problem is not fixed then the users will stop using it.

maintenance_cost_chartBut, even when performance is so important, the majority of fixes during the software maintenance is not for it. Main changes are for software evolution. Time changes and programs should too.

Maintaining a program is part of the software life cycle, but it is not as important as the development part. In my opinion it should be that important, because that process is the one that helps the software to be alive. Without this process our softwares are obsolete and wouldn’t live so long.

 

Sources:

https://www.tutorialspoint.com/software_engineering/software_maintenance_overview.htm

http://swebokwiki.org/Chapter_5:_Software_Maintenance