Thank you, Ken Bauer

During this entire course we have been part of the flipped Learning project that Ken Bauer is trying to implement in Tecnológico de Monterrey. Flipped learning consists on students learning by themselves with the help of a teacher. This way, students see the teachers as someone more approachable and feel the need to ask the teacher more questions.


Each topic must be reviewed by the student at home. The basic  information about the topic can be provided by the teacher to impose a small lead. However, the student need to go further than what the teacher them. During class, the students share their discoveries with the teacher and pronounce their doubts.


In my opinion, these systems works perfectly fine as I believe I have learned more this way. Here, you are encouraged to keep learning even when the topic has already been reviewed in class. I usually read the information for class, but to the blog posts at last minute. This way, I can reread what I found earlier and even look for more information regarding on something I have missed before. And in case I have any doubt, I can always ask Ken, even if we were supposed to have discussed the topic a month ago.


Here is a video of some of my classmates and I,  giving our reviews on the curse:

Software Verification and Validation

Software Verification

The process of evaluating work-products of a development phase to determine whether they meet the specified requirements for that phase. Its objective is to ensure that the product is being built according to the requirements and design specifications. It evaluates the plans, requirement speculations, design speculations, code, test cases

Software Validation

The process of evaluating software at the end of the development process to determine whether it satisfies business requirements. Its objective is to ensure that the product will actually meet the user’s needs.


Summarizing, software verification is made during the process of creating the software for making sure the requirements will be meet, and software validation is done after the software is finished and it makes sure that all the requirements were met.

User Interface Design

User interface design is the visible part of a software. It focuses on anticipating what users might need to do and ensuring that the interface has elements that are easy to access, understand, and use to facilitate those actions.

Interface Elements

Interface elements are those elements that help the user interact with the software without complications. These can be:

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

It is important to consider that even though these elements make the navigation easier for the user, the excessive use of them can also make it harder.

Best practices for designing an Interface

  • Keep the interface simple
  • Create consistency and use common UI elements
  • Be purposeful in page layout
  • Strategically use color and texture
  • Use typography to create hierarchy and clarity
  • Make sure that the system communicates what’s happening
  • Think about the defaults


Never forget to keep in mind what the user wants. Sometimes your design might seem beautiful to you, but is no adequate for your users. (Something I learned from Interactive Design classes)

Usability. (s.f). User Interface Design Basics. November 23rd, 2016, from Usability Website:

Software Maintenance

Software is supposed to cover a user’s necessity and satisfy its requirements. For doing this, the software is supposed to evolve as the necessity itself evolves and new requirements start to surface. The process of finding new necessities and improving the software through time is called maintenance.

The purpose of maintenance is to:

  • Correct faults
  • Improve the design
  • Implement enhancements
  • Interface with the software
  • Adapt programs so that different hardware, software, system features, and telecommunications facilities can be used
  • Migrate legacy software
  • Retire software

The main characteristics of the maintainer’s activities are:

  • Maintaining control over the software’s day.-to-day functions
  • Maintaining control over software modifications
  • Perfecting existing functions
  • Identifying security threats and fixing the vulnerabilities
  • Preventing software performance from degrading


Types of maintenance

  1. Corrective maintenance: Correct discovered problems. It also covers emergency maintenance
  2. Adaptive maintenance: Performed after delivery to be sure that software remains effective
  3. Perfective maintenance: Modifications of a software after delivery to detect errors and latent faults.


Maintenance Processes

Software maintenance activities include:

  • Process implementation
  • Problem and modification analysis
  • Modification implementation
  • Maintenance review/acceptance
  • Migration
  • Software requirement

Open Source Software

Are those pieces of code that are available to other developers. The creator of this software can decide whether to charge for it or make it free. Also, they can decide whether they want to get credit or not depending on the type of license have.

Software Implementation

Is the process of installing and maintaining a new system while making sure it operates correctly. Some challenges faced during this process are:

  • Code re-use: It´s hard to know how much code is okay to reuse
  • Version management: Developers keep communication related to the version and configuration
  • Target – host: Making sure the program works on the host machines

Software Testing

Software testing consists on trying all the possible incomes to a program and see if it still happens what was expected (Dynamic). However, it can be done just by reviewing the whole code without inserting any inputs (Static)


Software testing types:

  • Black box testing: Tests based on requirements and functionality.
  • White box testing: based on the internal logic
  • Unit testing: Testing of individual components or modules.
  • Integration testing: Testing of integrated
  • End-to-end testing: testing in a situation that mimics real-world use
  • Stress testing: System is stressed beyond its specifications.
  • Usability testing: User-friendliness check.
  • Recovery testing: Testing how well a system recovers
  • Security testing: Can system be penetrated by any hacking way.

Software Design Patterns

These are open source pieces of code that solve a common issue in a program. They can be:

  • Structural: How entities work together
  • Creational: how mechanisms are instantiated
  • Behavioral: Communication between entities

However, if the pattern is not implemented correctly, it can have disastrous repercussions.

Software Architecture

It states how a program is composed without involving in the details and taking care of all the possible scenarios. The steps of the Architecture Design Process are:

  1. Understand the problem
  2. Evaluate the Architecture Design
  3. Transform the Architecture Design