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 :)

9/6/16

Mind-blowing! What are APIs? You will be amazed when you find out!!!!






API means Application Programming Interface and they are, in essence, a way to communicate with a certain software or service, in order to integrate it into another application. It defines specifications on how software interacts with each other.

APIs are like building blocks for programs.

They range from the most fundamental functions, like interfacing with an operating system in order to use its functions, to enabling the interactive content and seamless integration that the web experience has to offer these days. 

APIs can be seen often in everyday life, from the apps on your phone to the sites you visit when browsing, it's hard to find a digital resource that doesn't use an API to integrate some sort of content, often making it easier for the user and creating a better experience overall.

For example, the google maps API can be seen in a lot of apps and sites that include geolocation data. The Waze app can pull google maps data and locations using an API, and lots of Android apps use it to display graphics that otherwise would have taken a lot of time to develop, in these cases, the API just takes the data, does its magic, and delivers displayable results instantly. In one example, the google maps API can be seen like this:


You provide the information, it provides the framework.


Here are some of the most popular APIs and their functions:

  • Facebook: social networking, authentication, content sharing.
  • Twitter: statistics, feed visualization, content sharing.
  • Youtube: video sharing, statistics, advertising.
  • Amazon products: advertising.
  • Linkedin: business networking.


As you can see, APIs can be very useful and, as a tool for programmers, they are very valuable in order to help them create better applications.

Sources and read more:
http://readwrite.com/2013/09/19/api-defined/http://readwrite.com/2013/09/19/api-defined/
http://www.webopedia.com/TERM/A/API.html
http://www.programmableweb.com/news/most-popular-apis-least-one-will-surprise-you/2014/01/23

9/2/16

Software Lifecycle - Waterfall Method

If you remember last week's Software Lifecycle post, at the end I wrote that there are methodologies to follow the steps defined in the SDLC.

Today in this TC1019's express blog post, I will write about the Waterfall Model (WM), a software development methodology. This is a very simple topic.

The WM is called like that because each step is executed lineally and individually, with the output of one step being the input of the other, if you put it in a diagram, it would look like this:
Source
Hence the name waterfall method, it is the most basic and widely used model, also the first one to appear. Its application is recommended when the software requirements are well defined, the project is short and customer input is not usually required. The software definition must be stable.

Here are the advantages and disadvantages of this model:

Advantages
Disadvantages
  • Simple and easy
  • Well-defined stages and deliverables
  • Non-overlapping phases
  • Good for small and well-understood projects.
  • Once finished, the application cannot be changed easily.
  • The product is delivered at the end, no minimum viable product to test.
  • Not good for complex and long-running projects.
  • Specification changes are not easily incorporated.

Hope you learned something today :) 

Sources:
http://www.tutorialspoint.com/sdlc/sdlc_waterfall_model.htm
http://istqbexamcertification.com/what-is-waterfall-model-advantages-disadvantages-and-when-to-use-it/