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.

Video:

Complete tutorial:

https://www.tutorialspoint.com/software_testing/index.htm


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.

Video:

References

http://www.sei.cmu.edu/architecture/


Software Development Processes

Processes VS life cycles

Software Development Processes are often confused with software life cycle; and although, it is a series of steps to follow, processes is referred to as all the approaches or models for different types of tasks.

Activities & Steps:

  • Requirement analysis: Mostly analyzing requirements for desired product or software: skills, money, etc.
  • Specifications: Precisely describing what a software is to do.
  • Software architecture: Abstractedly representing the architecture of a software system.
  • Implementation: Actual coding, and implementation of architecture.
  • Testing: Testing the code, or codes.
  • Documentation: In order, to create a safe maintenance ambiance for the software.
  • Training and support: Develop training classes for intended users, so that the software is not new for them, and they notice the transcendence of the system.
  • Maintenance: Enhancing, upgrading, and deleting bugs mostly.

There are several models and methodologies that try to improve quality, and productivity.

Examples of methodologies:

  1. Waterfall processes (Soon blog about this method)
  2. Iterative processes (Soon blog about this method)

2 hours long tutorial explaining more about this topic, and about more methodologies.

References:

http://www.selectbs.com/analysis-and-design/what-is-a-software-development-process


Be an agile software developer

What is agile software development?

“Agile Development” is an umbrella term for several iterative and incremental software development methodologies.

There are many methodologies: Extreme Programming XP, Scrum, Crystal, Dynamic Systems Development Method DSDM, Lean Development, and Feature-Driven Development FDD. Each one of them has a unique characteristic; however, they all share the same approach to the incorporation of iteration and feedback that helps to improve and deliver a final software system.

What does that mean?

Software development is taken more seriously because, to develop a software system, these methodologies involve continuous testing, planning, integration, and evolution of software. These methodologies force people to collaborate and make decisions together in a more efficient, and effective way.

This isn’t new, however:

These practices have been around for several years. Basically, these methodologies have packaged and implemented various management, engineering, and customer aimed practices to help, and guide teams into making quick and efficient solutions. Planning and delivering. This trend has been evolving and improving constantly.

VIDEO

References:

https://www.versionone.com/agile-101/