No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Understanding the principles of defensive development

13/25
Recursos

Como desarrollador o desarrolladora de software eres responsable no solo de la calidad del código que escribes, sino también de la seguridad y el cuidado del mismo.

Defiende tu software de ti mismo y de tus compañeros

Procura cuidar tu software no solo de otras personas, también de ti mismo. Si tienes necesidad de refactorizar tu código o trabajar en el que escribiste hace meses/años, puedes introducir bugs en el mismo al no recordar qué has hecho aquí.

  • Talk to your teammates and make sure their number one priority is protecting that advantage that you have just gotten.
  • This is where the concept of Defensive Development comes from.
  • Once you have reached a point where your software is working, you need to protect it and make sure it continues working.

Let’s look at some techniques to do that:

Técnica #1 - Control de versiones con tu repositorio de código

En el desarrollo de software tradicional, no utilizar un control de versiones como GIT no es una opción.

  • Version Control is a super cool technology you can use, it’s one of the best defensive tools.
  • VC software helps you keep track of changes made to your code.
  • VS allows you to control different versions of your files, different versions of your code, and different versions of what you have committed.

Control de versiones con tu repositorio de código

  • Committing is a very important word here - saving your files onto the version control software. You are committing new versions of your files into your VC repository.
  • You commit those changes to your branch or branches.
  • The Branch is the file of code you are working on.
  • Within this branch, you can have additional branches, for different uses and modifications on different branches.
  • It lets multiple people check changes back into the repository and distribute them.
  • It keeps track of the history, who changes what, when, and why.
  • It tags, so you can find versions of your code from “way back when”.

Técnica #2 - Controla tus dependencias

Un proyecto de software tendrá N dependencias de terceros, código que tú ni tu equipo han escrito, pero dependes de él para que el mismo funcione. Llevar un control de qué dependencias utilizas es muy importante.

  • Dependencies make your code more complex.
  • Sometimes you want to test some functionality of your code, but that functionality is tied to another task you haven’t done yet.
  • Real-World code always has dependencies, it’s never isolated.
  • Sometimes you have code that depends on something external, like a database.
  • You have to figure out a way to test that functionality independent of those dependencies.
  • Always check your dependencies for connectivity necessities.
  • You need to find a way to keep things independent but work together at the same time to make testing easier.

Test-Driven Development (TDD)

El Test-Driven Development (TDD) es una de las metodologías más populares para escribir pruebas de software.

Código que prueba tu código.

  • TDD = Doing everything with testing in mind, writing tests before the code.
  • This approach ensures that Developers clearly understand the specifications and requirements of features.
  • TDD is all about creating tests for individual pieces of functionality, and then writing code for that specific functionality.

Cuidar el código de un proyecto es trabajo de todo el equipo. Llegar a un acuerdo sobre qué metodologías utilizarán, cómo versionarán el código, cómo escribirán las pruebas. Son charlas que tú y tu equipo deben tener antes de comenzar un proyecto.


Contribución creada por: Kevin Fiorentino.

Aportes 30

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Version Control
In software engineering, version control is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections of information. Version control is a component of software configuration management.
/


/
Test-driven development (TDD)
Is a software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases, then the code is improved so that the tests pass. This is opposed to software development that allows code to be added that is not proven to meet requirements.
/

Take this course;
https://platzi.com/clases/git-github/
There you can fully understand and domain the topic about version control.

Defend your software

  • Talk to your peers to protect the advantage
  • Protect your software

Technique 1: Version control with your code repository

  • Keeps track of changes made to your code
  • Control different versions
  • Committing: Save your local files to your version control
  • Branch: File of code you’re working on

Control your dependencies

  • Dependencies makes your code more complex
  • Figure out how to test independent functionalities without dependencies
  • Check dependencies for connectivity issues

Peers = teammates

JAVA BUILDER TOOLS

  • Maven
    Apache Maven is a powerful software project management tool used in the Java development environment to manage and build projects as well as to maintain dependencies. Maven uses an XML (pom.xml) for project configuration.
  • Gradle
    Gradle is a modern automation tool used in software development for project build automation. Gradle has its own domain-specific language (DSL) based on a Groovy (build.gradle).
  • Ant
    Apache Ant is the predecessor of Apache Maven. First released in 2000, Ant was developed as a replacement for a build tool Make, which was used widely in software development in the past. Using an XML file

    According to the 2021 Java Developer Productivity Report, the majority of Java developers reported using Maven as their main build tool, at 67% of respondents. In a distant second and third place were Gradle at 20% of respondents and Ant at 11%.
     
    https://www.jrebel.com/blog/java-build-tools-comparison

Thanks

Thanks 😊

thank you teacher

Branch: File of code you’re working on Control your dependencies Dependencies makes your code more complex Figure out how to test independent functionalities without dependencies Check dependencies for connectivity issues
Defend your software Talk to your peers to protect the advantage Protect your software Technique 1: Version control with your code repository Keeps track of changes made to your code Control different versions Committing: Save your local files to your version control
Ant Apache Ant is the predecessor of Apache Maven. First released in 2000, Ant was developed as a replacement for a build
JAVA BUILDER TOOLS Maven Apache Maven is a powerful software project management tool used in the Java development environment to manage and build projects as well as to maintain dependencies. Maven uses an XML (pom.xml) for project configuration. Gradle Gradle is a modern automation to
Keeps track of changes made to your code Control different versions Committing: Save your local files to your version control Branch: File of code you’re working on Control your dependencies Dependencies makes your code more complex Figure out how to test independent functionalities without dependencies Check dependencies for connectivity issues
Defend your software Talk to your peers to protect the advantage Protect your software Technique 1: Version control with your code repository
Test-driven development (TDD) Is a software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases, then the code is improved so that the tests pass. This is opposed to software development that allows code to be added that is not proven to meet requirement
Version Control In software engineering, version control is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections of information. Version control is a component of software configuration management.

Defend your software

Talk to your peers to protect the advantage
Protect your software
Technique 1: Version control with your code repository

Keeps track of changes made to your code
Control different versions
Committing: Save your local files to your version control
Branch: File of code you’re working on
Control your dependencies

Dependencies makes your code more complex
Figure out how to test independent functionalities without dependencies
Check dependencies for connectivity issues

Hello
estoy aprendiendo
jdkd
yes

Understanding the principles of defensive development Defend your software

Talk to your peers to protect the advantage
Protect your software
Technique 1: Version control with your code repository

Keeps track of changes made to your code
Control different versions
Committing: Save your local files to your version control
Branch: File of code you’re working on
Control your dependencies

Dependencies makes your code more complex
Figure out how to test independent functionalities without dependencies
Check dependencies for connectivity issues Version Control
In software engineering, version control is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections of information. Version control is a component of software configuration management.
/

Version Control.png
/
Test-driven development (TDD)
Is a software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases, then the code is improved so that the tests pass. This is opposed to software development that allows code to be added that is not proven to meet requirements.
/
Screenshot from 2020-08-23 18-32-38.png

Version Control
In software engineering, version control is a class of systems responsible for managing changes to

Defend your software from yourself and your peers:

  • Talk to your team and protect the advantage, and advance that you reach it.
    Technique #1 - Version control with your code repository:
  • It’s one of the best defensive tools.
  • VC software helps you to keep track of changes made to your code.
  • VC allows you to control different versions of your files, different versions of your code, and different versions of what you have committed.
  • You have to save your files onto the version control software.
  • You’re committing new versions of your files into your VC repository.
    Technique #2 - Control your dependencies:
  • Make your code more complex.
  • Real word code always has dependencies, it’s never isolated.
  • You have to figure out a way to test that functionality independent of those dependencies.
  • You need to worry about compiling your code and packaging it into a deployable unit.
  • Your software must be usable.

protect your software.
The first technique is version control with your code repository, and the second technique is to control your dependencies. protect the advantage you just gained. And this is where the concept of defensive development comes from.

Once you’ve reached a point where your software is developing, and once your code is compiling correctly and working fine, it’s working fine. So you should do everything you can to protect your software

version control. Version Control is a super cool technology that you can use. Version control allows you to control different versions of your code, different versions of your files, different versions of what you’ve committed.

once you’ve put it into version control, that means your software and code are working fine. Version control allows multiple people to check out changes to the repository and distribute them.

The second technique is about controlling your dependencies Dependencies make your code much more complex. It is very important that you always check the connectivity of your dependencies. you need to find a way to verify things and test things independently. take care of your work and you can protect your work using various defensive techniques.

Este video queda pausado en el minuto 4:39

You need to find a way to keep things independent, but working together at the same time to make testing easier.

Version Control is very important not only in Software projects but in any team project, I suppose

very good

Never watched American football !