Showing posts with label software engineering. Show all posts
Showing posts with label software engineering. Show all posts

11/29/16

User Interface Design

User Interfaces, or UIs, are what the user utilizes to interact with a piece of software, it often is graphical and displayed in a screen, but it can also be hardware, like a controller. They are the most important part of the software for end users.

For a UI to be useful and likeable by the user or customer, it must be easy to use, must attract the attention, easy and intuitive to use, consistent and responsive. There are two main user interface categories: Command-line interface and graphical interfaces.

Command-line interface (CLI)

It is the most basic interface and consists only of text characters on lines. The first computers used CLIs to interact not particularly for the ease-of-use, but for the minimal resources consumed by it and the simpleness that it has. The main input method for the CLI is the keyboard.
Advanced users often prefer command lines to execute some tasks, as a graphical interface would be too bulky and impractical.
Embedded and remote systems often use CLIs because of the low data rates that they produce and the fact that they can be channeled through a variety of protocols, from serial to over-the-internet SSH connections.

Source
Graphical User Interface

GUIs are what most common users today know to interact with a computer, they are graphical frameworks to interact with a program often in more simple and intuitive ways than CLIs, the disadvantage of graphical interfaces is that they consume more resources, and often require a graphics processor to generate what is on screen. The main input methods for GUIs are mouse and keyboard.

They are often comprised of "windows" that represent a particular instance of a program that is executing, they provide buttons, sliders and tabs that make navigation a breeze, and change and adapt in order to fit what the user wants to do at a particular moment, responsiveness is crucial for the computing experience to be good when using GUIs.

Source
Lastly, the GOLDEN RULES for GUI design are:

  • Consistency: same commands and access methods used everywhere.
  • Shortcuts: Users sould be able to use hotkeys or commands to navigate faster.
  • Feedback: Even the click of a button should acknowledge the action that is made.
  • Defined sequences: opening, usage and closing of a window should be well defined. 
  • Simple error handling: Avoiding user errors and if they happen, handle them adequately. 
  • Easy reversal: Allow for Ctrl-z
  • Support user control: Make the user feel in control of the actions they execute.
Source: https://www.tutorialspoint.com/software_engineering/software_user_interface_design.htm


9/20/16

Software Requirements

In order to define what a piece of software can do, you have to define clearly the functions and requirements that it must contain for the customer to be satisfied and your team to know what to do and how.

The goal is to arrive at a Software Requirements Specification (SRS) Document, a spec sheet that details what the software can do.
Photo by Nathanael Coyne on Flickr. CC BY-NC-ND
Requirement Engineering is a discipline that aims towards understanding client's requirements and translating them into technical and detailed specifications for the developers, it consists of four basic steps:

  1. Feasibility Study: Knowing if what the client wants is possible, taking into account technical, economical, and organizational aspects. This stage outputs the feasibility study report.
  2. Requirement Gathering: Getting the expectations of what the software should do from the client and end-users. Requirements must be clear, correct, consistent, coherent, modifiable, verifiable, unambiguous, traceable, and from a credible source.
  3. Software Requirement Specification: After collecting information from all the people involved, an engineer creates the SRS, where the client's specifications are expressed in natural language, and all the technical aspects of the project are detailed in order for it to be useful for the development team, including pseudo code and GUI sketches.
  4. Software Requirement Validation: Between the developer and client, the specifications are reviewed to verify that they are correct, within scope, and achievable.

REQUIREMENT ELICITATION
It is an organized process to gather requirements for the software, it has four steps.

Requirement elicitation process

First the developer gets the requirements from the client, then they are prioritized and categorized, next they are reviewed with the stakeholders to remove any ambiguity or doubts about the requirements, finally, they are documented correctly for the next phases of development.

One or more of these methods can be used in the elicitation phases, each one with its ups and downs:
  • Interviews
  • Surveys
  • Questionnaires
  • Brainstorming
  • Prototyping
  • Observation
Hope y'all learned something from this :)

8/16/16

Software Engineering discussion


Participants, left to right:
Enrique, José Manuel, Frida, José Carlos
We discussed the topic on question and the following things surfaced:

  • It is a engineering branch that is dedicated to make software.
  • It includes developing, testing and maintaining software.
  • Software engineering is involved in design so it could be considered an art, in this aspect, the limit is the software engineer's imagination.
  • It is an applied science, and thus includes a methodology that can be followed in order to be successful.
  • Methodology is not all, there is also the developer's criteria that enables a project to be successful.
  • It can be used for a wide variety of things, from low-level stuff like compilers to big user software.
  • The applications are almost everything, some examples are: medicine, administration, construction, education, governments, etc.


We concluded that software engineering can be basically a methodology, but there a lot of possibilities that can expand the engineer's potential, it is one of the most flexible areas in engineering because it creates solutions to everyday problems, from the most simple to the craziest applications.