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:

Test me!

“Testing is the process of evaluating a system or its component(s) with the intent to find whether it satisfies the specified requirements or not.” (TutorialsPoint, 2016)

Software needs to be tested to determine if all requirements were met. If there are any errors, bugs, mistakes, or gaps in the system.

Who does testing?

The more the better. Different points of view are required in this process: Normally, there is a software testing team; however, software developers, managers, and users also participate.

It is important to implement this phase throughout the development.

Why? To save time, reduce costs and errors.

Testing never ends

This means that there is always some improvement to the system; therefore, testing is needed to see if there is something to be improved.

Types of testing:

There are lots of testing types including compatibility, performance, usability, security, recovery, comparison, stress, unit, load, regression, system, etc.

Most known testing types are alpha testing which is done at the end of the development phase, where the software is almost complete; beta, where end-users are the ones testing the system supposedly finished; and black-box which tests if the system covers requirements.


Complete tutorial:

Building software

What is it?

“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.” (SEI|CM, 2016)

Basically, Software architecture is the process of creating a blueprint of your program. What will be its functionalities, applications, method, designs, etc. The main difference between Software Architecture and Software Design is that the architecture will demonstrate what the system will do, and the design will show how it will do it. Software architecture is represented on a high-scale abstract style; henceforth, is just a guide to show developers what the system is intended to do, and what it needs to work.



Beautifully covering requirements

What am I talking about? Software design. Helping the programmer in software implementation, it is a process that transform user requirements into a suitable form.

What we know?

If you’ve been following my blog posts, we’ve already talked about SDLC, and SRS where we discussed that a document is created to specify user and software requirements. It is important to make it specific, and make use of software terms. The first step in SDLC is Software Design, which changes the view of problem into solution.



  • The architectural design is the most superficial and abstract version of the system. It identifies software as a bunch of components that interact with one another. This is were developers take an idea of a proposed solution.
  • The high-level design breaks the “multiple components” concept of the architectural design, where a view of modules is portrayed and it shows where they interact with each other.
  • The detailed design deals with the implementation part, and its sub-systems, bringing together both previous designs. Defines the logical structure of each module.


Modularization is used to divide a system into multiple and independent modules. These modules are expected to carrying out independent functions, and may work as the base for the entire system.

Want to know more?

Read this blog post, where there is a more thorough explanation on the topic.



What is SCM?

Great post about SCM



Configuration management refers to a discipline for evaluating, coordinating, approving or disapproving, and implementing changes in artifacts that are used to construct and maintain software systems.
According to the
SCM helps in i
dentifying individual elements and configurations, tracking changes, and version selection, control, and baselining. One of the most widely used SCM is
, created by Linus Tovalds in 2005.


• Identify and store artifacts in a secure repository.
• Control and audit changes to artifacts.
• Organize versioned artifacts into versioned components.
• Organize versioned components and subsystems into versioned subsystems.
• Create baselines at project milestones.
• Record and track requests for change.
• Organize and integrate consistent sets of versions using activities.
• Maintain stable and consistent workspaces.
• Support concurrent changes to artifacts and components.
• Integrated early and often.
• Ensure reproducibility of software builds

figure_08Why is…

View original post 92 more words

Software Engineering, an art or a discipline?


According to the Institute of Electrical and Electronics Engineers,  Software Engineering applying the principals of engineering  to software development. For me, it’s a way to use the imagination to create new stuff, it’s a way to simplify the daily life activities all around the world. The question is, is it an art or a discipline? It’s an interesting discussion, because there are a lot of different ideas regarding the same theme. Here is a link if you want to know more about the topic:

To me, Software Engineering is a discipline because of all of the things that you need to learn in order to create a great development of a software. I think that it’s important to spend a good time studying, not just in a classroom, but in the outside. Before creating a really good software program, it’s a lot of work behind it; investigation, planning and processing the whole ideas that came up, deciding, etc. A complete Software Engineer needs to have an excellent process in order to be great in what he or she is doing.


The beginning of Software Enginnering

It began in the late 50’s and the early 60’s as computers were introduced to universities and research institutions. Computers quickly became indispensable for many, and programming soon became an activity under appeal. Programming, however, had no interaction with a computer, programmers would give the program to a dispatcher, who queued the programs, and the results came hours or days later.

Coding was almost too difficult, and, in order to ease this process, formal notations were created. These notations are now known as programming languages. The first one was Fortran by IBM in 1957, followed by Algol in 1958, and Cobol by the US Department of Defense in 1962.

Computer capabilities had grown, and with it, programs and programmers demands; henceforth, a friendlier programming language was created known as PL/1. Programming languages and compilers became a principal cornerstone of computing science. [1] C was created to be capable of doing software development in UNIX. That’s how programming took a leap backward, where languages were gaining high level features, but C is only higher level than assembly code.

Ever since, different compilers and programming languages have been created, with different methods, and objectives. Procedural, modular, and object-oriented languages are some of the most known ones. For example, Java, Ruby, C, C++, HTML, Python, etc. and software engineering has grown exponentially. It has grown to a point where future expects lots of software engineering contributions.

Software Engineering has been so important that it is not only considered professionalism, but also art or craft.



What does a Software Engineer do?


What is a software Engineer?

People, that from point of view of people, dedicates themselves to Software Engineering: -Not only coding, it is also information and administration of this information.

Many people generalize that it is engineering It includes optimization & processes.

Development and maintain, update efficiently and reliably. According the specifications and demonstrate they are good enough for the problem/situation where they are applied.

Satisfy clients’ necessities. Due to the demand of code and applications destinated to solve conflicts.

The terminology:

In past, Software Engineering were going to be “software physics”, but since the term were taken in other definition, Software Engineering were the name.

As an art:

Since is not only to follow a process to create or to develop a thing, its to create the process, to get out of the way with the rules and start a new line to start with.  Is also creating and adapting this process.

As Science:

The knowledge of software engineering can be transmitted and science is the integration knowledge, passed through generations.




By: Ekaterina Chumakova, Lucía Velasco, Miguel Miranda, Antonio Silva.

The art of Software Engineering

“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” – Martin Fowler

Technology and scientific knowledge has increased for the past centuries, and with it, the engineering field has acquired several disciplines based on the needs of these technologies. Software engineering is one of the latest disciplines; furthermore, it is different because professionals are not building a tangible structure. It is as important, though, as most technological equipment used in daily life require software. In fact, software impacts most aspects of our lives; for example, banks platforms, and businesses trust software programs.[1]

Software engineering is not just programming, it involves a series of steps priori and posteriori of programming. When a project is required there’s research to be done about the requirements of it, creation of algorithms to follow by the program, followed by the actual coding process, which needs comprehension, logical thinking, machine language knowledge, and programming abilities; finally, there’s validation and maintenance to the program, as it needs to keep running.

The question is, is it a discipline or an art? Most software engineers consider their labor as art [2]; however, software engineering is both of them, it is a discipline as all other engineering branches, which are considered as professionalism. Simultaneously, it is an art because there are no limits when developing software. Limits exists when the physical unit is not capable of supporting the virtual one; however, everyone can create their unique piece of software.



[1]: Software engineer insider

[2]: Steve McConnell