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 Continue reading "Software Requirements"

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 Continue reading "Software Requirements"

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

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

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/




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/




What the hell is SCM?

At first, I didn't really know what it was or anything about it, but with some google-fu and midnight reading I will share with you my findings about SCM.

SCM stands for Software Configuration Management, sometimes called Software Control Management, it is a framework for organizations to manage software and its changes, updates, errors, versions, tests, and code; all of this in a clean and organized manner.

SCM is the process that defines how to control and manage change.
It is needed with software that involves large organizations and a lot of programmers, it defines who is allowed to make changes, how they make them, and when they can. Software configuration management benefits all the stakeholders in a software project, making their jobs easier. Among the beneficiaries are: developers, testers, support, management, and investors.

Source

SCM consists of four Configuration stages:

  1. Identification
    • Made up of configurable items (CI), that is, the programs that make up the SW project.
    • Baselines are contemplated, they are the status of the CIs at a given point, a version.
    • A baseline must have a complete documentation that includes the capabilities of the software, bugs and testing, and a unique footprint.
    • On each baseline, the CIs are at an specific version-controlled stage.
  2. Control
    • Implementing the approved changes to the CIs.
    • Process to get to a new baseline.
  3. Status Accounting
    • Tracking the changes made from the old baseline to the new one.
    • Describes the current version and how it came to be.
    • The "what's new" section that you see when updating an app in your cell phone, only more detailed.
  4. Authentication
    • Making sure that the previous processes are complete and correct.
    • Testing the software.
    • If the tests are passed, then comes the release.

Source
I think, on the grand scale, that's about it. SCM seems like Continue reading "What the hell is SCM?"

What the hell is SCM?

At first, I didn't really know what it was or anything about it, but with some google-fu and midnight reading I will share with you my findings about SCM.

SCM stands for Software Configuration Management, sometimes called Software Control Management, it is a framework for organizations to manage software and its changes, updates, errors, versions, tests, and code; all of this in a clean and organized manner.

SCM is the process that defines how to control and manage change.
It is needed with software that involves large organizations and a lot of programmers, it defines who is allowed to make changes, how they make them, and when they can. Software configuration management benefits all the stakeholders in a software project, making their jobs easier. Among the beneficiaries are: developers, testers, support, management, and investors.

Source

SCM consists of four Configuration stages:

  1. Identification
    • Made up of configurable items (CI), that is, the programs that make up the SW project.
    • Baselines are contemplated, they are the status of the CIs at a given point, a version.
    • A baseline must have a complete documentation that includes the capabilities of the software, bugs and testing, and a unique footprint.
    • On each baseline, the CIs are at an specific version-controlled stage.
  2. Control
    • Implementing the approved changes to the CIs.
    • Process to get to a new baseline.
  3. Status Accounting
    • Tracking the changes made from the old baseline to the new one.
    • Describes the current version and how it came to be.
    • The "what's new" section that you see when updating an app in your cell phone, only more detailed.
  4. Authentication
    • Making sure that the previous processes are complete and correct.
    • Testing the software.
    • If the tests are passed, then comes the release.

Source
I think, on the grand scale, that's about it. SCM seems like Continue reading "What the hell is SCM?"

Agile Development

Agile is an ideology for software development that aims towards a practical and more efficient way for teams to make software, the four principles are valuing:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan
Source
Methodologies that are considered agile are:
  • DSDM (Dynamic Systems Development Method)
    • One of the first agile methodologies (before the "agile" term was used).
    • Centered in teamwork.
    • A common framework in the industry.
    • Probably helped diminish the late-software problem that arose in the beginning of software development.
  • Crystal methods
    • Adaptable to the type of project.
    • Strives towards creating a set of principles that are ad hoc to the project.
    • Many types: crystal clear, crystal yellow, crystal orange...
  • Extreme Programming
    • Continuous and fast software development.
    • Customer oriented, many changes, testing and planning.
    • Feedback is continuous and welcome. 
    • Based in small releases, simple code and design, and good software practices.
  • Scrum
    • Task-oriented.
    • Information transparency.
    • Based on current problems, not predicted ones.
This blog post was written by Enrique García and Katia Chumakova, check out her blog at http://www.katiachumakova.com/


created at TagCrowd.com

Sources:

  • http://www.allaboutagile.com/what-is-agile-10-key-principles/
  • https://www.versionone.com/agile-101/what-is-scrum/
  • https://www.versionone.com/agile-101/agile-methodologies/

Agile Development

Agile is an ideology for software development that aims towards a practical and more efficient way for teams to make software, the four principles are valuing:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan
Source
Methodologies that are considered agile are:
  • DSDM (Dynamic Systems Development Method)
    • One of the first agile methodologies (before the "agile" term was used).
    • Centered in teamwork.
    • A common framework in the industry.
    • Probably helped diminish the late-software problem that arose in the beginning of software development.
  • Crystal methods
    • Adaptable to the type of project.
    • Strives towards creating a set of principles that are ad hoc to the project.
    • Many types: crystal clear, crystal yellow, crystal orange...
  • Extreme Programming
    • Continuous and fast software development.
    • Customer oriented, many changes, testing and planning.
    • Feedback is continuous and welcome. 
    • Based in small releases, simple code and design, and good software practices.
  • Scrum
    • Task-oriented.
    • Information transparency.
    • Based on current problems, not predicted ones.
This blog post was written by Enrique García and Katia Chumakova, check out her blog at http://www.katiachumakova.com/


created at TagCrowd.com

Sources:

  • http://www.allaboutagile.com/what-is-agile-10-key-principles/
  • https://www.versionone.com/agile-101/what-is-scrum/
  • https://www.versionone.com/agile-101/agile-methodologies/