Skip to content

Commit

Permalink
Create index.md
Browse files Browse the repository at this point in the history
  • Loading branch information
jonasjucker authored Oct 24, 2023
1 parent 396fbaf commit e25afc8
Showing 1 changed file with 86 additions and 0 deletions.
86 changes: 86 additions & 0 deletions code_management/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
---
title: Code Management
layout: default
nav_order: 3
has_children: false
---

# Code Management
**Embrace Version Control and Testing**

At C2SM, we're all about making software development a breeze. Version control is your friend—it keeps your code organized and helps teams collaborate seamlessly.
Plus, don't forget to add tests; they're like the quality check for your code. They catch issues early, making your code rock-solid. It's that simple!

## Versioning with Git

**Git**, a distributed version control system, has gained widespread popularity as an essential tool for managing source code in software development.
Created by Linus Torvalds in 2005, Git's decentralized and efficient approach to version control has revolutionized collaborative software development practices.

### Key Concepts

#### 1. Repository (Repo)

A Git repository is a container for a software project. It stores the complete history of the project, including all files, directories, and changes made over time. Repositories can be hosted locally or remotely on platforms like GitHub, GitLab, or Bitbucket.

#### 2. Commit

A commit is a fundamental concept in Git, representing a snapshot of the codebase at a specific point in time. Each commit is identified by a unique SHA-1 hash, contains a descriptive message explaining the changes, and references the previous commit, forming a version history.

#### 3. Branch

Branches allow developers to work on separate lines of development. The primary branch is usually named "master" or "main," while feature branches enable the development of new features or bug-fix branches for addressing issues without affecting the main codebase.

#### 4. Merge

Merging is the process of combining changes from one branch into another. Git provides tools to automatically or manually resolve conflicts that may arise when merging different branches.

#### 5. Pull Request (PR)

In a collaborative development environment, developers use pull requests to propose changes from their branches to the main branch. Changes are reviewed, discussed, and, if approved, merged into the main codebase.

### Basic Workflow

The typical Git workflow involves the following steps:

1. **Initializing a Git Repository:** Developers begin by initializing a Git repository in the project directory using the `git init` command, creating a hidden `.git` directory to manage version control.

2. **Making Changes:** Developers modify the codebase and use `git add` to stage specific changes for a commit. Staging allows for selecting which changes to include in the next commit.

3. **Committing Changes:** Once changes are staged, developers commit them using `git commit`, providing a descriptive message about the changes made.

4. **Branching:** Developers create branches with `git branch` and switch between them using `git checkout`. Branching allows for isolated feature development and issue fixing.

5. **Merging:** After completing work on a branch, developers can merge their changes back into the main branch using `git merge`.

6. **Collaboration:** In collaborative environments, pull requests enable developers to propose and review code changes, providing a user-friendly interface for managing the process.

## Code Testing

**Code testing**, also known as software testing, is a critical phase in the software development process aimed at identifying and eliminating defects and ensuring the functionality,
quality, and reliability of a software application. It involves systematic evaluation and validation of various components
and aspects of the code. Code testing is essential to deliver robust and error-free software.

### Purpose of Code Testing

The primary objectives of code testing are:

1. **Defect Detection:** Identifying and addressing defects, bugs, and issues in the software code to prevent them from reaching end-users.

2. **Quality Assurance:** Ensuring that the software meets specified requirements and performs as expected, meeting user needs and expectations.

3. **Performance Evaluation:** Assessing the software's speed, scalability, and resource utilization under various conditions.

4. **Usability Testing:** Evaluating the user-friendliness and user experience of the software.

5. **Regression Testing:** Ensuring that code changes do not introduce new issues and that existing functionality remains intact.


### Importance of Code Testing

Code testing is vital in software development because it:

- Enhances software quality and reliability.
- Reduces the cost of bug fixing in later development stages.
- Identifies issues early in the development process, allowing for quicker resolutions.
- Ensures that the software meets user requirements and expectations.
- Supports continuous improvement and software maintenance.

0 comments on commit e25afc8

Please sign in to comment.