devconcepts Archives - SoftUni Global https://softuni.org/tag/devconcepts-2/ Learn Programming and Start a Developer Job Thu, 28 Apr 2022 11:27:11 +0000 en-US hourly 1 https://wordpress.org/?v=6.1.3 https://softuni.org/wp-content/uploads/2022/04/cropped-SoftUni-Global-Logo-Square-notext-32x32.png devconcepts Archives - SoftUni Global https://softuni.org/tag/devconcepts-2/ 32 32 Bitwise Operations in Programming [Dev Concepts #34] https://softuni.org/dev-concepts/bitwise-operations-in-programming/ https://softuni.org/dev-concepts/bitwise-operations-in-programming/#respond Wed, 27 Apr 2022 06:00:00 +0000 https://softuni.org/?p=18889 In this lesson you will get an idea of bitwise operations: how they work and why we need them in computer programming. We will explain and demonstrate the main bitwise operators and introduce the concept of bitmasks.

The post Bitwise Operations in Programming [Dev Concepts #34] appeared first on SoftUni Global.

]]>

In this article, we will also solve several practical problems using bitwise operations:

  • Get the last bit from an integer
  • Get the bit at a certain index from an integer
  • Change the bit at a certain index in an integer
  • Extract the bit before the last from an integer

If you are not familiar with bits and storing data on the computer you can read our previous articles about them here:

Bitwise Operations

First, let’s start with learning about the bitwise operations in programming. They work with the binary representations of the numbers, applying bit-by-bit calculations. For example, if we have two 8-bit numbers, we can apply a bitwise operation, which takes as input the first 8 bits and the second 8 bits and produces as a result new 8 bits.

A simple bitwise operator over a single argument is the “tilde” operator – the bitwise logical NOT (also called negation). The operator “tilde” turns all zeroes to ones and all ones to zeroes, like the “exclamation mark” operator for the Boolean expressions, but it works bit by bit. For example, if we have the binary number1 0 0″, its negation “tilde 1 0 0” is “0 1 1“.

OperatorTable

The table above illustrates the work of the bitwise OR, AND, and XOR operators.

  • The bitwise OR operator (denoted by the vertical bar in most programming languages) returns 1, if one of its input bits is 1, otherwise returns 0.
  • The bitwise AND operator (denoted by the ampersand in most programming languages) returns 1, if both of its input bits are 1, otherwise returns 0.
  • The bitwise exclusive OR (XOR) operator (denoted by the ampersand in most programming languages) returns 1 if one of its arguments is 1, but not both at the same time, otherwise returns 0.

Bit Shifts

Bit shifts are bitwise operations, where bits inside a number are moved (or shifted) to the left or the right. During the shifting operation, the bits that fall at invalid positions are lost, and the bits which come from missing positions are replaced by 0.

left-and-right-shift

Bit shifting can be applied for 8-bit, 16-bit, 32-bit, and 64-bit numbers, as well as for numbers of other sizes in bits. The bit size of the number being shifted defines the valid bit positions and where the bits get lost. Bits can be shifted by more than 1 position. For example, 5 shifted left twice is 20 and 5 shifted right twice is 1.

Why We Need Bitwise Operations?​

Processing bits is important for many fields of computer science, information technologies, and software systems, like networking protocols, data storage, and file systems, binary file formatsmemory management, data compression, data encryption, video streaming, Internet of things (IoT) systems, low-level programming, computer graphics, and many others.

Binary-and-Text-File

Data compression algorithms replace bit or byte sequences with shorter bit sequences. For example, the “DEFLATEalgorithm, used to compress data in the ZIP files, finds the most often sequences and replaces them with shorter sequences, while it preserves a dictionary between the original bit sequences and their shorter compressed form. This is done using heavy bit-level processing with bitwise operations.

Many binary file formats use bits to save space. For example, PNG images (the Portable Network Graphics image format) use 3 bits to specify the color format used (8-bit color, 24-bit color, 32-bit color with transparency). These 3 bits are located at a certain offset in the PNG image header bytes, so reading and writing the value encoded in these 3 bits require bitwise operations.

To sum it up, bitwise operators work with the binary representations of the numbers, applying bit-by-bit calculations. Bit shifts are bitwise operations, where bits inside a number are shifted to the left or the right. These concepts are an important aspect of many fields of computer science.

Lesson Topics

In this tutorial, we cover the following topics:
  • Bitwise Operations

  • Bitwise Operators – Examples

  • Bit Shifts

  • Bitwise Operations Problems

  • Why We Need Bitwise Operations?

  • Bit Before the Last – Problems

Lesson Slides

The post Bitwise Operations in Programming [Dev Concepts #34] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/bitwise-operations-in-programming/feed/ 0
Data Representation in Computer Memory [Dev Concepts #33] https://softuni.org/dev-concepts/data-representation-in-computer-memory/ https://softuni.org/dev-concepts/data-representation-in-computer-memory/#respond Thu, 31 Mar 2022 06:00:00 +0000 https://softuni.org/?p=16611 In this article of the series Dev Concepts, we take a look at the binary representation of integers, floating-point numbers, text, and unicode.

The post Data Representation in Computer Memory [Dev Concepts #33] appeared first on SoftUni Global.

]]>

In this lesson, we will talk about storing data in the computer memory. By the end of this article, you will know how to work with binary representation of integers, floating-point numbers, text, and Unicode.

Integer numbers are represented in the computer memory, as a sequence of bits: 8-bits, 16-bits, 24-bits, 32-bits, 64-bits, and others, but always a multiple of 8 (one byte). They can be signed or unsigned and depending on this, hold a positive, or negative value. Some values in the real world can only be positive – the number of students enrolled in a class. There can be also negative values in the real world such as daily temperature.

Positive 8-bit integers have a leading 0, followed by 7 other bits. Their format matches the pattern “0XXXXXXX” (positive sign + 7 significant bits). Their value is the decimal value of their significant bits (the last 7 bits).

Negative 8-bit integers have a leading one, followed by 7 other bits. Their format matches the pattern “1YYYYYYY” (negative sign + 7 significant bits). Their value is -128 (which is minus 2 to the power of 7) plus the decimal value of their significant bits.

8-bit-binary-integer

Example of signed 8-bit binary integer

The table below summarizes the ranges of the integer data types in most popular programming languages, which follow the underlying number representations that we discussed in this lesson. Most programming languages also have 64-bit signed and unsigned integers, which behave just like the other integer types but have significantly larger ranges.

ranges-of-integer-data-types

  • The 8-bit signed integers have a range from -128 to 127. This is the sbyte type in C# and the byte type in Java.
  • The 8-bit unsigned integers have a range from 0 to 255. This is the byte type in C#.
  • The 16-bit signed integers have a range from -32768 to 32767. This is the short type in Java, C#.
  • The 16-bit unsigned integers have a range from 0 to 65536. This is the ushort type in C#.
  • The 32-bit signed integers have a range from -231231-1 (which is from minus 2 billion to 2 billion roughly).  This is the int type in C#, Java, and most other languages. This 32-bit signed integer data type is the most often used in computer programming. Most developers write “int” when they need just a number, without worrying about the range of its possible values because the range of “int” is large enough for most use cases.

Representing Text

Computers represent text characters as unsigned integer numbers, which means that letters are sequences of bits, just like numbers.

The ASCII standard represents text characters as 8-bit integers. It is one of the oldest standards in the computer industry, which defines mappings between letters and unsigned integers. It simply assigns a unique number for each letter and thus allows letters to be encoded as numbers.

representing-textFor example, the letter “A” has ASCII code 65. The letter “B” has ASCII code 66. The “plus sign” has ASCII code 43. The hex and binary values are also shown and are useful in some situations.

Representing Unicode Text

The Unicode standard represents more than 100,000 text characters as 16-bit integers. Unlike ASCII it uses more bits per character and therefore it can represent texts in many languages and alphabets, like Latin, Cyrillic, Arabic, Chinese, Greek, Korean, Japanese, and many others. 

Here are a few examples of Unicode characters:

representing-unicode-text

  • The Latin letter “A” has Unicode number 65.
  • The Cyrillic letter “sht” has Unicode number 1097.
  • The Arabic letter “beh” has Unicode number 1576.
  • The “guitar” emoji symbol has Unicode number 127928.

In any programming language, we either declare data type before using a variable, or the language automatically assigns a specific data type. In this lesson, we have learned how computers store integer numbers, floating-point numbers, text, and other data. These concepts shouldn’t be taken lightly, and be careful with them!

Lesson Topics

In this tutorial we cover the following topics:
  • Representation of Data

  • Representing Integers in Memory

  • Representation of Signed Integers

  • Largest and Smallest Signed Integers

  • Integers and Their Ranges in Programming

  • Representing Real Numbers

  • Storing Floating-Point Numbers

  • Representing Text and Unicode Text

  • Sequences of Characters

Lesson Slides

The post Data Representation in Computer Memory [Dev Concepts #33] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/data-representation-in-computer-memory/feed/ 0
Numeral Systems in Programming [Dev Concepts #32] https://softuni.org/dev-concepts/numeral-systems-in-programming/ https://softuni.org/dev-concepts/numeral-systems-in-programming/#respond Thu, 24 Mar 2022 06:00:00 +0000 https://softuni.org/?p=15750 In this article of the series Dev Concepts, we take a look at Binary, Decimal, Hexadecimal, and Conversions.

The post Numeral Systems in Programming [Dev Concepts #32] appeared first on SoftUni Global.

]]>

In this lesson, we will talk about numeral systems, which are widely used in computer programming. By the end of it, you will know how to use the binarydecimal, and hexadecimal numeral systems, their characteristics, and how to convert integers from one numeral system to another.

Numeral systems represent numbers in written form using sequences of digits. For example: the digit “4“, followed by the digit “2” in the traditional decimal system used by humans, represents the number “42.

Many systems can be used to represent numbers, like the Hindu–Arabic numerals, the Roman numerals, and the Hebrew numerals. In computer science, specific numeral systems are of big importance: the positional numeral systems. In the positional numeral systems, the value of each digit depends on its position. In the integer numbers, the digits on the left have a bigger weight than the digits, staying on the right.

Positional numeral systems use the so-called base (a number like 2, 10, or 16) that specifies how many digits are used to represent a number. For example, the decimal system uses 10 digits: 1, 2, 3, 4, 5, 6, 7, 8, 9, and 0. The binary system uses only two digits: 1 and 0. The hexadecimal system uses 16 digits: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, and F.

hex-to-decimal

On the image, you can see the decimal, binary and hexadecimal representations of the numbers 3045, and 60.

Decimal numbers use a positional numeral system of base 10. Decimal numbers are the traditional numbers used by humans in their everyday life.

Decimal numbers are represented by the following 10 digits: 012345678, and 9.

Each position in a decimal number corresponds to a certain power of 10. The rightmost position is multiplied by 1 (which is 10 raised to the power of 0), the next position on the left is multiplied by 10 (which is 10 raised to the power of 1), the next position on the left is multiplied by 100 (which is 10 raised to the power of 2), and so on. 

Four hundred and one is equal to:

  • 4 multiplied to 10 to the power of 2 + 0 multiplied to 10 to the power of 1 + 1 multiplied to 10 to the power of 0
  • which is equal to 4 multiplied by 100 + 0 multiplied by 10 + 1 multiplied by 1
  • which is equal to 400 + 0 + 1
  • which is equal to 401

conversion-model

We can think of decimal numbers as polynomials of their digits in the following form:

conversion-formula

The binary numeral systemis fundamental for computer systems. It uses base 2 and only two digits: 1 and 0Binary numbers (numbers of base 2) are sequences of zeroes and ones. For example: 5 (in decimal) is equal to 1 0 1 in binary. We denote binary numbers with a small suffix “b” at the end.

Hexadecimal numbers (also known as hex numbers) are widely used in computer science. Hex numbers use base 16 and are represented by a sequence of hex digits. The hex digits are the following literals: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, and F. Note that after 9 the next digit is A, which has a decimal value of 10. The next hex digits after A are B, C, D, E, and F and they have decimal values of 11121314, and 15. These decimal values are used when we convert a hex number to a decimal value.

That is the main idea about numeral systems. They are used by humans, and computers, to write numbers using digits. It is something that you shouldn’t take lightly, and be careful!

Lesson Topics

In this tutorial we cover the following topics:
  • Numeral Systems

  • Decimal Numbers

  • Binary Numbers

  • Binary and Decimal Conversion

  • Hexadecimal Numbers

  • Hex to Decimal Conversion

  • Hex to Binary Conversion

Lesson Slides

The post Numeral Systems in Programming [Dev Concepts #32] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/numeral-systems-in-programming/feed/ 0
What You Need to Know About Bits, Bytes, and Kilobytes [Dev Concepts #31] https://softuni.org/dev-concepts/what-you-need-to-know-about-bits-bytes-and-kilobytes/ https://softuni.org/dev-concepts/what-you-need-to-know-about-bits-bytes-and-kilobytes/#respond Thu, 03 Mar 2022 06:00:00 +0000 https://softuni.org/?p=13387 In this article of the series Dev Concepts, we take a look at Digital Units of Measure such as Bits, Bytes, and Kilobytes.

The post What You Need to Know About Bits, Bytes, and Kilobytes [Dev Concepts #31] appeared first on SoftUni Global.

]]>

For this article, we will take a look at bits, bytes, kilobytes and other digital units in computing. Decimal units such as kilobyte (KB), megabyte (MB), and gigabyte (GB) are commonly used to express the size of data. We will briefly go through them, starting from the smallest unitbit.

As we have said, bits are the smallest unit of data used in computing. A bit is a single unit of data, which takes only two possible values: either zero (0) or one (1).

bit-image

It can store anything, which has two separate states:

  • Logical values (true or false). An example of this will be – “is the registration open now or it’s closed“.
  • Algebraic signs (plus or minus) – positive or negative number.
  • Activation states (on or off) – Similar to the first example – “the lights are switched on” or “the lights are switched off“.

In computer memory, bits don’t stay alone. They are organized in sequences of 8 bits, called bytes. These are the machine “words“. Some devices use 8-bit words, others use 16-bit words, while others use 32-bit words, but usually, bits in memory are accessed in groups (bytes in most systems). That is the reason why the capacity of computer memory is measured in bytes and megabytes (not in bits and megabits).

byte-kilobyte

Kilobytes (denoted by KB or KiB) consist of 1024 bytes. In some contexts, 1 kilobyte can mean 1000 bytes (not 1024), which comes from the widely accepted prefix “kilo“, which means 1000. For example, the hard-drive manufacturers use 1000-based kilobytes to measure the hard drive capacity, so have in mind that hard drives are smaller than their label in the shop says. 

Megabytes (denoted as MB) consist of 1024 kilobytes, which calculates to 1 048 576 bytes. For example, a photo taken with your smartphone camera is several megabytes of compressed data, holding the image pixels.

Gigabytes (denoted as GB) consist of 1024 megabytes. One gigabyte holds 1 073 741 824 bytes. For example, a 1-hour long video compressed in Full HD quality takes a few gigabytes of storage.

In the same way, the next unit is a terabyte. Terabytes (denoted as TB) consist of 1024 gigabytes. One terabyte holds nearly 1.1 trillion bytes. One terabyte hard drive typically stores a few hundred Full HD movies.

MB-GB-Chart

The next unit is a terabyte. Terabytes (denoted as TB) consist of 1024 gigabytes. One terabyte holds nearly 1.1 trillion bytes. One terabyte hard drive typically stores a few hundred Full HD movies. 

What-is-an-ExabytePetabytes (denoted as PB) consist of 1024 terabytes. One petabyte holds nearly 1.13 quadrillions of bytes. Modern data centers provide and manage storage with a capacity of multiple petabytes, sometimes multiple exabytes. The next units after petabyte are exabyte, zettabyte, and yottabyte.

In computing, a unit of information is the capacity of some standard data storage system used to measure the capacities of other systems. The most commonly used units of data storage capacity are the bit, the capacity of a system, and the byte, which is equivalent to 8 bits.

Lesson Topics

In this tutorial we cover the following topics:
  • Bits

  • Bit, Byte, KB, MB, GB, TB, and PB

Lesson Slides

The post What You Need to Know About Bits, Bytes, and Kilobytes [Dev Concepts #31] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/what-you-need-to-know-about-bits-bytes-and-kilobytes/feed/ 0
Software Engineering Overview [Dev Concepts #30] https://softuni.org/dev-concepts/software-engineering-overview/ https://softuni.org/dev-concepts/software-engineering-overview/#respond Thu, 10 Feb 2022 06:00:00 +0000 https://softuni.org/?p=11933 In this article of the series Dev Concepts, we take a look at Software Engineering, Quality Assurance, Unit Testing, Source Control and Project Tracking.

The post Software Engineering Overview [Dev Concepts #30] appeared first on SoftUni Global.

]]>

For this article, we will make an overview of software engineering concepts like software development lifecycle, software quality assurance, unit testing, source control system, and project trackers. Each concept is essential for your development as a software engineer. You should have a basic knowledge of each area because they are daily used in software companies. Even if the technologies differ, the concept is still the same but with a different GUI and software.

sdlc-diagram

  • The Software Development Lifecycle is a process used by the software industry to designdevelop, and test high-quality software. It aims to produce high-quality software that meets or exceeds customer expectations reaches completion within times and cost estimates. The benefits of using it only exist if the plan is followed faithfully. Read our blog post about them here.

designer-work-with-internet-vector

  • Software Quality Assurance is a term that covers all aspects of guaranteeing a high-quality software product. It includes creating processes for each stage of development to reduce bugs and flaws during the build. Companies need it to measure the quality of the software. At the heart of the QA process is software testing. Read more about them in our separate blog post here.
  • Unit testing is an important concept and practice in software development. As a term, unit tests are pieces of code that test specific functionality in a certain software component.  Unit testing frameworks simplify, structure, and organize the unit testing process. It executes the test and generates reports. Examples of unit testing frameworks are JUnit for Java and Mocha for JavaScript. Read more here.

unit_testing_guidelines

  • Git is the most popular source control system in modern software development. It is a powerful tool for version control and team collaboration at the source code level. In our article, we work with Git and GitHub by showing a few examples. We clone the repositoryedit a local file, commit the local changes, and then publish the commit. You can read it here.

github-architecture

  • Project trackers, as a term, are a simple tool that manages the project schedule, planassignarrangetrack and visualize project tasks. They are a great way to make your tasks come to life and visualize your upcoming week or month’s tasks. You can read more about them in our blog post here.

trello-design

All of these concepts are important for your future development as a software engineer. Each topic can be separated into a course and studied in detail. Even if you are indifferent to all the concepts, you should know at least the basics about each topic. In almost every interview for a software developer, you will be asked if you are familiar with these areas. Each software company uses different technologies, but the concepts are the same.

Lesson Topics

In this tutorial we cover the following topics:
  • Software Development LifeCycle
  • Software Quality Assurance (QA)
  • Unit Testing and Testing Frameworks
  • Overview of Git and GitHub
  • Project Trackers, Kanban Boards, and Trello

Lesson Slides

The post Software Engineering Overview [Dev Concepts #30] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/software-engineering-overview/feed/ 0
Understanding Project Trackers, Kanban Boards and Trello [Dev Concepts #29] https://softuni.org/dev-concepts/understanding-project-trackers-kanban-boards-and-trello/ https://softuni.org/dev-concepts/understanding-project-trackers-kanban-boards-and-trello/#respond Thu, 03 Feb 2022 06:00:00 +0000 https://softuni.org/?p=11471 In this article of the series Dev Concepts, we take a look at Project Trackers, Kanban Boards, and Trello.

The post Understanding Project Trackers, Kanban Boards and Trello [Dev Concepts #29] appeared first on SoftUni Global.

]]>

Project trackers, as a term, are a simple tool that manages the project schedule, plan, assign, arrange, track and visualize project tasks. Trackers are an important concept in software project management in general. Each task may have a description, sub-tasks, assigned people, deadline, and other fields.trello-with-people

Most project trackers visualize and organize the work on the project with Kanban boards. A Kanban board is an agile project management tool designed to help visualize work limits, the work in progress, and maximize team efficiency. In general, it uses cards arranged in columns. Each card describes a task to be done or an issue to be handled. In general, it uses cards arranged in columns. Each card describes a task to be done or an issue to be handled. Typically columns on the Kanban board are:

  1. Backlog – Usually, the tasks staying upper in the backlog have higher priority.
  2. InProgress – The Column holds tasks that are currently taken by the team.
  3. Done – This is a collection of already completed tasks.

trello-design

Each task passes through all columns. On a daily or weekly basis, the project manager checks the project progressdiscusses the tasks and their priorities, and rearranges the order of the tasks in the Backlog. That process of work can be defined as “agile“. It means that tasks and their priorities change regularly, but everyone in the teams always knows the progress, and which task to do next. Teams that use project management apps typically track more than one project at a time. The software helps them figure out when to schedule work based on when things need to get done and the human resources available to do them.

tasks-complete-personIn conclusion, a Project Tracker is a tool that lets project managers measure the progress of their team as they execute tasks and use resources. It’s an essential tool to keeping projects on schedule and within their budgets. They are a great way to make your tasks come to life and visualize your upcoming week or month’s tasks.

Lesson Topics

In this tutorial we cover the following topics:
  • Project Trackers
  • Kanban Boards
  • Trello

Lesson Slides

The post Understanding Project Trackers, Kanban Boards and Trello [Dev Concepts #29] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/understanding-project-trackers-kanban-boards-and-trello/feed/ 0
What is Git and How to Work with GitHub? [Dev Concepts #28] https://softuni.org/dev-concepts/what-is-git-and-how-to-work-with-github/ https://softuni.org/dev-concepts/what-is-git-and-how-to-work-with-github/#respond Mon, 31 Jan 2022 06:00:00 +0000 https://softuni.org/?p=11150 In this article of the series Dev Concepts, we take a look at Source Control Systems, Git, and GitHub.

The post What is Git and How to Work with GitHub? [Dev Concepts #28] appeared first on SoftUni Global.

]]>

Git is the most popular source control system in modern software development. It is a powerful tool for version control and team collaboration at the source code level.

One of the main tasks for source control systems is to keep the source code and other project assets in a shared repository. The information there is available through the Internet or in a local environment. The team that works on the specific repository can clone, pull, commit, and push the local changes. If there are conflicting changes, they can fix and merge them in the end. If the developers have a problem with a specific commit, they can compare different versions of the same file and restore previous versions.

github-coverIn our video, we work with Git and GitHub by showing a few examples. First, we clone the repository, edit a local file, commit the local changes, and then publish the commit. If you haven’t worked with Git, first you need to install it. You can download it from here. To skip the process of creating a repository, we will be working with a sample repository: 

We start the system console (which is also called “terminal window” or “command prompt“). Then, we clone the sample repository to a local directory, using the “git clone” command.

git clone https://github.com/SoftUni/playground

That will create a local copy of the specified repository in the “playground” subdirectory in the current directory.

Now we modify а local file, for example, the file “README.md“. We can use a text editor of choice, such as “Notepad“. We can open the file with Notepad by typing the following command:

notepad README.md

After you add a new line in the file, save it. Now we have a modified file on the local disk. The changes are only made on your local device. If we want to add the changes to the local repository, we type the following command on the command prompt:

git add . & git commit -m “Added something”

We now have a local repository that holds changes. They are still not sent to GitHub. To send the local commits to the remote repository at GitHub, we can execute the following command:

git push

This command needs the current Git user to have permission to write on the remote repository. It may ask for your username and password for authentication. If you are not registered yet, you can do it from here.

After the command compiles successfully, we can open the repository from the GitHub website and see the changes. We can also review the commits history. GitHub stores all the commits and we will know if someone deletes our changes.

github-architecture

To sum it up, the source control system keeps the source code in a remote repository. We can clone, edit, commit and push to the origin repositories. The workflow allows different team members to work together on a shared source code.

Lesson Topics

In this tutorial we cover the following topics:
  • Source Control Systems
  • Git and GitHub

Lesson Slides

The post What is Git and How to Work with GitHub? [Dev Concepts #28] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/what-is-git-and-how-to-work-with-github/feed/ 0
What You Need to Know About Unit Testing [Dev Concepts #27] https://softuni.org/dev-concepts/what-you-need-to-know-about-unit-testing/ https://softuni.org/dev-concepts/what-you-need-to-know-about-unit-testing/#respond Thu, 27 Jan 2022 07:10:00 +0000 https://softuni.org/?p=11046 In this article of the series Dev Concepts, we take a look at Unit Testing and Testing Frameworks.

The post What You Need to Know About Unit Testing [Dev Concepts #27] appeared first on SoftUni Global.

]]>

Unit testing is an important concept and practice in software development. As a term, unit tests are pieces of code that test specific functionality in a certain software component. Usually, they are not written by QA engineers but from the developers that wrote the code. Unit tests are part of the product source code and aim to improve the code quality, reliability, and maintainability.

unit_testing_guidelines

Unit testing frameworks simplify, structure, and organize the unit testing process. It executes the test and generates reports. The developers organize tests in a hierarchy using classes and functions. After that is done, they assert the execution result and exit all conditions for correctness. Examples of unit testing frameworks are: JUnit for Java and Mocha for JavaScript.

boxes-unit-testingThe Unit testing techniques are mainly categorized into three parts which are Black box testing that involves testing of user interface along with input and output, White box testing that involves testing the functional behaviour of the software application and Gray box testing that is used to execute test suites, test methods, test cases and performing risk analysis.

Unit test developers usually follow the “AAA pattern“. It stands for:

  • arrange the input data and entrance conditions
  • act – execute the function for testing
  • assert whether the results and the exit conditions are as expected

In the arrange section, you have the code required for setting up the specific test. Here is where we create objects and potentially set expectations. Then there is the act, which should be the invocation of the method being tested. In the assert, you would check whether the expectations are met.

unit-test-ticket

By implementing unit testing, it’s easier to catch and fix issues early before they cost extra time and money. It can become an important part of the overall software development process, helping to foster development more efficiently and productively. We should aim to write unit tests that focus solely on a single unit of code. With having more test reports, it will be easy to find the error in our code.

Lesson Topics

In this tutorial we cover the following topics:
  • Unit Testing
  • Unit Testing Framework

Lesson Slides

The post What You Need to Know About Unit Testing [Dev Concepts #27] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/what-you-need-to-know-about-unit-testing/feed/ 0
Is Software Quality Assurance Important for Developers? [Dev Concepts #26] https://softuni.org/dev-concepts/is-software-qa-important-for-developers/ https://softuni.org/dev-concepts/is-software-qa-important-for-developers/#respond Tue, 25 Jan 2022 06:10:00 +0000 https://softuni.org/?p=10880 In this article, we will get familiar with the Software Quality Assurance (QA) and concepts like manual testing, bug tracking and automated testing.

The post Is Software Quality Assurance Important for Developers? [Dev Concepts #26] appeared first on SoftUni Global.

]]>

Software Quality Assurance is a term that covers all aspects of guaranteeing a high-quality software product. It includes creating processes for each stage of development to reduce bugs and flaws during the build. Companies need it to measure the quality of the software.

sqa-diagram

At the heart of the QA process is software testing.

Software testing is the process of checking whether the software conforms to the requirements and works as expected.

Software testing aims to find the bugs (or defects) in the software and to report them for fixing.

Software testing can be manual or automated.

Manual testing is done by hand.

The QA engineer clicks on the software UI, fill and submits forms, interacts with the software UI, invokes back-end operations by hand or by specialized tools, executes certain functionality, validates that it works correctly, and tries to find defects.

Manual testing also involves testing the user experience (UX), the user interface, and the visual look and feel of the software.

Automated testing is done by scripts and programs, which perform robotic checks of the software.

Instead of clicking at the UI controls, filling and submitting forms by hand,

QA automation engineers record scripts and write programs to do automate this and to check whether the software behaves correctly without human innervation.

In addition to testing, there are a few other approaches to software quality assurance.

Code reviews and quality inspections are proactive approaches to software quality.

They aim to catch defects and bad practices early before they appear in the functionality.

Such practices are typically done by senior developers or senior QA engineers.

Code reviews aim to enforce good practices for internal code quality, such as writing understandable and maintainable code, avoiding repeating code, using clear abstractions, formatting the code correctly, naming identifiers correctly, structuring the code in a clear way, and many others.

Quality inspections try to find problems in the code, by understanding its program logic and internal design.

The goal of the testing process is to find and report the defects and issues with the software.

Reported bugs are described, submitted, and tracked in issue tracking software (or simply, bug tracker).

In the issue tracker, developers and QA engineers discuss the issues, prioritize them, assign them to team members, track the work on the issues and the changes of their status, confirm when an issue is fixed, and finally close it.

Issue trackers track not only the defects but also new feature requests and other issues with the software.

Software quality assurance is a broad topic in software engineering and is a separate profession in many software companies.

QA engineers should have basic software development and technical skills

and strong attention to the details and quality, to be diligent and patient, and to work persistently on the software quality, testing, and test automation.

Here are some reasons for using Software Quality Assurance:

  • Ensures products keep improving

The Software Quality Assurance process is all about consistently maintaining high standards. Many of those standards depend on what customers want. As customers engage with a product, they will have suggestions on how to improve them.

 

  • Leads to more long-term profit

people-communicateSoftware Quality Assurance can boost profit in a few ways. The first is through saving more money by not wasting time and resources. The second is that the quality makes companies more competitive in the marketplace. Customers are willing to pay more for better quality

  • Saves companies time and money

cartWhile it takes time at the beginning of the process to create systems that catch errors, it takes more time to fix the errors if they’re allowed to happen or get out of control. Paying to prevent problems is cheaper than paying to fix them.

  • Boosts customers’ confidence

certificatePeople will want to spend money on products, but only if they believe they’re getting something that’s worth the price. When businesses use Software QA processes, they’re letting customers know that they care about them and their priorities.

  • Gives consistent results

checklistWith software products, consistency is the most important factor for Software Quality Assurance. The QA ensures every product bearing the company’s name is the same. No customer is going to get something worse or better than another customer.

Software Quality Assurance is a must in Software Development as it ensures your software is built efficiently and is finished with minimal flaws and bugs. Without it, Software Development could be quite unreliable, with products potentially requiring complete do-overs.

Lesson Topics

In this tutorial we cover the following topics:
  • Software Quality Assurance
  • Live Demo of Issue Tracker

Lesson Slides

The post Is Software Quality Assurance Important for Developers? [Dev Concepts #26] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/is-software-qa-important-for-developers/feed/ 0
What is Software Development Lifecycle? [Dev Concepts #25] https://softuni.org/dev-concepts/what-is-software-development-lifecycle/ https://softuni.org/dev-concepts/what-is-software-development-lifecycle/#respond Thu, 20 Jan 2022 06:10:00 +0000 https://softuni.org/?p=10766 In this video, we will get familiar with the Software Development Lifecycle and concepts like Requirements, Design, Construction, Testing and QA, Deployment, and Project Managment

The post What is Software Development Lifecycle? [Dev Concepts #25] appeared first on SoftUni Global.

]]>

sdlc-diagramThe Software Development Lifecycle is a process used by the software industry to design, develop, and test high-quality software. It aims to produce high-quality software that meets or exceeds customer expectations reaches completion within times and cost estimates. As shown in the diagram, the process splits into different stages:

  1. Requirement Analysis
  2. Defining requirements
  3. Designing architecture
  4. Building and Developing
  5. Testing the Product
  6. Deployment on the Web
  7. Maintenance

team-talkRequirement Analysis

The senior members of the team use information from the customer. This information is then used to plan the basic project approach and to conduct a product feasibility study in the economical, operational, and technical areas.

  • Defining requirements

Then the team should clearly define and document the product requirements and get them approved by the customer or the market analysts.

 

graphic-designer

  • Designing architecture

A design approach clearly defines all the modules of the product along with its communication and data flow representation. The internal design should be clearly defined with even the minutest of the details.

  • Building and Developing

In this stage, the actual development starts, and the product is built. If the design is performed in a detailed and organized manner, code generation can be accomplished without much hassle.

 

designer-work-with-internet-vector

  • Testing the Product.

In this stage, we test for defects and deficiencies. We fix those issues until the product meets the original specifications.

  • Deployment on the Web

At this stage, the goal is to deploy the software so users can start using the product. However, many organizations choose to move the product through different deployment environments, such as a testing or staging environment.

  • Maintenance

The final phase of the Software Development Lifecycle occurs after the product is in full operation. Maintenance can include software upgradesrepairs, and fixes if it breaks. Customers often demand new features for the software application, which the developing team needs to add.

tasks-point

The Software Development Lifecycle done right can allow the highest level of management control and documentation. Developers understand what they should build and why. All parties agree on the goal upfront and see a clear plan for arriving at that goal. Everyone understands the costs and resources required. The benefits of using it only exist if the plan is followed faithfully.

Lesson Topics

In this tutorial we cover the following topics:
  • Software Engineering
  • Software Development Lifecycle (SDLC)

Lesson Slides

The post What is Software Development Lifecycle? [Dev Concepts #25] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/what-is-software-development-lifecycle/feed/ 0
What is Internet of Things (IoT)? [Dev Concepts #24] https://softuni.org/dev-concepts/what-is-internet-of-things/ https://softuni.org/dev-concepts/what-is-internet-of-things/#respond Fri, 14 Jan 2022 06:10:00 +0000 https://softuni.org/?p=10571 In this video of the series Dev Concepts, we take a look at Internet of Things (IoT) and concepts like embedded systems, microcontrollers, Arduino and ESP32.

The post What is Internet of Things (IoT)? [Dev Concepts #24] appeared first on SoftUni Global.

]]>

With this tutorial episode, we take a closer look at the Internet of Things. IoT is a system that provides machines to transfer data over a network without the need for human-to-computer interaction. The term “thing“ is an object that we can assign to an Internet Protocol (IP) address and transfer data over a network.

iot-chart

IoT helps people gain complete control over their lives. It provides us with smart devices and automated homes. It is essential for businesses by providing a real-time look into how their systems work. It delivers insights into everything from the performance of machines to supply chain and logistic operations.

iot-diagramThe Internet of things gives organizations the tools required to improve their business strategies. Some of the benefits of IoT enable companies to:

  • make more useful business decisions
  • improve employee productivity
  • generate better revenue
  • monitor business processes

As a programmer, it is crucial to consider IoT when choosing a programming language to learn. C is generally considered the best language for embedded IoT. C++ is the most common choice for complex Linux implementations. Python is well suited for data-intensive applications.

best-iot-langauge

It allows people to access information from anywhere at any time. What is more, IoT transfers data packets over a connected network by saving time and money. On the other hand, as the number of devices increases, the potential of someone stealing the information also increases. If there is a bug in the system, every connected device will also become corrupted.

arduino-mcThe embedded system that uses the devices for the operating system is based on the language platform, mainly where the real-time operation would be performed. Manufacturers build embedded software in cars, telephones, modems, appliances, etc.

The embedded system software can be as simple as lighting controls running using an 8-bit microcontroller. It can also be complicated software  process control systems, airplanes etc. A microcontroller is a compact integrated circuit designed to govern a specific operation in an embedded system.

Recent advancements in IoT have drawn the attention of researchers and developers worldwide. As the number of connected devices continues to rise, our environments will fill with smart products. Developers around the world learn new languages to get the skills needed to run with the current changing world.

Lesson Topics

In this tutorial we cover the following topics:
  • Internet of Things(IoT)
  • Embedded Systems
  • IoT Microcontrollers
  • Example of Working Arduino Microcontroller

Lesson Slides

The post What is Internet of Things (IoT)? [Dev Concepts #24] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/what-is-internet-of-things/feed/ 0
What You Need to Know about Back-End Technologies [Dev Concepts #23] https://softuni.org/dev-concepts/what-you-need-to-know-about-back-end-technologies/ https://softuni.org/dev-concepts/what-you-need-to-know-about-back-end-technologies/#respond Tue, 11 Jan 2022 06:10:00 +0000 https://softuni.org/?p=10418 In this video, we will get familiar with Back-End technologies and concepts like Databases, ORM and MVC Frameworks, Rest, Containers and Docker.

The post What You Need to Know about Back-End Technologies [Dev Concepts #23] appeared first on SoftUni Global.

]]>

In this lesson, we take a look at Back-End technologies in software development. That is a technical term that deals with server-side operations, including CRUD functions with database and server logic. Meanwhile, Front-End development is programming which focuses on the visual elements of a website or app that a user will interact with.iceberg-front-back-end

Back-End technologies are essential in the development of software projects. Whether you are a startup founder, or a corporate decision-maker, selecting the right Back-End technology is crucial to determine your project success. Choosing the correct Back-End technologies can guarantee scalability, functioning speed, and instant response to customers’ needs.

In our video, we explain foundation concepts that aspiring developers shouldn’t miss. Keep up with the videos, and you will learn about:

  • Databases: They are a place for storing our data but in an organized structure.  Data is organized and stored in the form of tables. A table contains rows and columns. Each row in a table is a record, and column a field that describes the row.  Read our article about them here.
  • ORM: This is short of Object Relational Mapping. It is the idea of writing queries using your favorite programming language. You interact with a database using your language of choice instead of SQL. Read our article about them here.

mvc-logo

  • MVC: The term stands for ModelViewController. It is a design pattern used to help us build frameworks for applications. The MVC splits the application into three different sections. Each section represents one word from the abbreviature. Each component has a specific responsibility and has a link to the others. Read our article about them here.
  • Web Services and APIsWeb Service is a network-based resource that fulfills a specific task. On the other hand, API is an interface that allows you to build on the data and functionality of another application. There is an overlap between the two. WEB services are APIs, but APIs can be offline. Many public APIs are transparent, with open documentation and self-service portals for quick developer onboarding. On the other hand, Web Services are not open source. Instead, they tend to offer specific data and functionality to partners.

web-vs-api

  • REST and RESTful Services: REST is a set of architectural constraints, not a protocol or a standard. API developers can implement REST in a variety of ways. When a client request is made via a RESTful API, it transfers a representation of the state of the resource to the requester or endpoint. This information, or representation, is delivered in one of several formats via HTTPRestful Web Services is a lightweight, maintainable, and scalable service built on the REST architecture. It also exposes API from your application in a stateless manner to the calling client. The calling client can perform predefined operations using the Restful service.rest-diagram
  • Virtualization, Containers, and Docker: Virtualization is a relatively new technology that allows creating a completely isolated machine from scratch, all in software. Nowadays, companies are starting to prefer Docker. It s a tool that uses containers to make the creation, deployment, and running of applications a lot easier. Read our article about them here.docker-image-vm

Hopefully, reading all this about Back-end technologies will help you in making the right decision. No matter what language you are using, all of those concepts are the same. For every aspiring programmer, it’s a must to know all of the topics. If you want to learn more about the differences between Front-End, Back-End, and Full-Stack technologies you can read our article here.

Lesson Topics

In this tutorial we cover the following topics:
  • Front-End and Back-End
  • Databases
  • ORM
  • MVC
  • ORM
  • Web Services and APIs
  • Rest and RESTful Services
  • Virtualization, Containers, and Docker

 

Lesson Slides

The post What You Need to Know about Back-End Technologies [Dev Concepts #23] appeared first on SoftUni Global.

]]>
https://softuni.org/dev-concepts/what-you-need-to-know-about-back-end-technologies/feed/ 0