Software Development and Web Technologies: Key Concepts

Software License

A software license is a contract between the developer of a software, subject to intellectual property and copyright, and the user. It precisely defines the rights and duties of both parties. The developer, or the party to whom the developer has assigned the exploitation rights, chooses the license under which they distribute the software.

  • Free Software: Software in which the author grants a series of basic freedoms to the user, within the framework of a license.
  • Proprietary Software: Software that is usually distributed in binary format, without the possibility of accessing the source code under a license.
  • Public Domain Software: Software for which there is no license or no way to determine a license because the author is unknown.

Cascade Model

  • Analysis: Understand and identify problems that need to be solved. The requirements or capabilities that the system must have are analyzed and specified.

System requirements are divided into:

  • Functional: Describe in detail the functions that the system performs.
  • Non-functional: Describe characteristics of the system, such as reliability, maintainability, operating system, etc.
  • Design: Functional and non-functional requirements are translated into a software representation without going into detail. A functional-structural model of the overall system requirements must be created to deal with the parts separately.
  • Codification: The programmer receives the design specifications and transforms them into a set of instructions written in a programming language, called source code. Clear and homogeneous coding and style standards should be established to facilitate program correction and maintenance.
  • Tests: The software is available, and the aim is to find errors, not only in coding but also in the design. The goal is to plan and design tests that systematically uncover different kinds of bugs.

There are two types of tests:

  • Unit Testing: Test each part of the software and its functionality individually.
  • Integration Testing: Test the program under normal operating conditions.
  • Documentation:
  • For customers: Must contain complete and high-quality information on how to use the application with appropriate resources.
  • For the development team: Technical documentation that explains how the program works, program coding, how each table works, and the relationship between them.
  • For managers: Includes debugging, operation, and security of the system.
  • Exploitation: The phase in which users start using the software. It comprises the phases of installation, tuning, and operation of other applications on the client’s equipment. This phase is called beta testing and is carried out on the customer’s equipment under normal operation.
  • Maintenance: There are four types of maintenance:
  • Adaptive: Aims to modify the product according to changes in the hardware and software environment in which the product operates.
  • Corrective: Corrects errors or defects that were not identified and corrected during the testing phase.
  • Perfective: The software product undergoes changes to incorporate performance or maintenance improvements.
  • Preventive: Improves and simplifies the task without changing the specifications.

Virtual Machines: Java Virtual Machine (JVM)

The process of compiling and running a Java program consists of the following steps:

  1. The source code of the program is written in a plain text file with the extension .java.
  2. Compiling this file using the Java compiler (javac) generates one (or more) files with the extension .class (if there are no errors).
  3. A .class file contains an intermediate language code that is close to the machine language but is independent of the computer and operating system on which it is running, called bytecode.
  4. The virtual machine takes the bytecode and converts it into binary code for the processor used to run the program.
  5. .class files can run on different platforms.

Scrum

Scrum is an agile framework based on incremental iteration and delivery of product or service development.

  • Sprint: A short, time-boxed period when a scrum team works to complete a set amount of work.
  • Work Cycle:
  1. Customer requirements gathering. For each main requirement, a work block is created, called a story.
  2. The customer orders the work blocks in a product stack according to their delivery priority.
  3. The work team takes a group of stories, with which they work during an iteration or sprint.
  4. Once a sprint is finished, they deliver the result of the work to the client. It goes back to point 2 until the product stack is finished.
  • Roles: Each person involved in the process of creating a product or service has a specific role in Scrum.
  • Customer: Defines the initial requirements.
  • Product Owner: Takes note of what the customer wants and divides the project into stories that make up a product stack.
  • Scrum Master: Communicates and manages the needs of the product owner and the sprint stack, providing an estimated cost.
  • Customer: Once the quotation is approved, reorders the product stack so that the team can work based on their priority.
  • Team: Begins its work by breaking down the first story of the product stack to create the sprint stack, breaking up the work of a 15-day period into smaller tasks that take at most two days.
  • Product Owner: These tasks are placed in a stack based on the customer’s desires. Once the sprint is finished, before starting the following one, it is shown to the customer for approval.

Installing a Plugin in NetBeans

Open the plugins window from the Tools -> Plugins menu. In this window, go to the “Downloaded” tab and press the “Add Plugins” button, which will open a window for file selection. Select the .nbm file.

Programming Languages

A programming language is a language that allows us to communicate with computer hardware. It is artificially created and consists of a set of symbols and rules that are applied over an alphabet to produce code.

  • High-Level Programming Language: Designed to abstract the complexities of hardware, allowing developers to write code that is closer to human language. These languages emphasize readability and ease of use. They handle many low-level operations like memory management automatically, and the code is usually portable.
  • Medium-Level Programming Language: Offer abstractions for convenient coding but still provide access to hardware and memory management. These languages are often used for system-level programming and applications requiring performance and hardware interaction.
  • Low-Level Programming Language: Operate close to the hardware, with minimal abstraction. They allow precise control over system resources and are hardware-specific. These languages are used for tasks where performance and resource efficiency are critical, such as operating systems and embedded systems.
  • Compiled Languages: Languages translated through a translator program called a compiler. This program translates the entire program into machine language, generating a new executable file, which contains the same information as the original file (source code) but written in machine language. If there are changes in the original file, the translation will have to be redone.
  • Interpreted Languages: A program written in an interpreted language requires translating the program every time you run it. The programs that perform this translation are called interpreters. These programs do not generate an executable file, so it is necessary to perform the translation each time the program is executed.

Virtual Machines

A virtual machine is a special type of software whose mission is to separate the operation of the computer from the installed hardware components. It acts as a bridge between the application and the specific hardware of the computer where it is installed.

  • System Virtual Machine: Provides a complete emulation of a physical computer system, allowing an entire operating system to run as if it were on dedicated hardware.
  • Process Virtual Machine: Provides an abstraction layer for running a single application or process, rather than an entire operating system. It acts as a runtime environment for programs, offering platform independence.

HTML

HTML (HyperText Markup Language) is a markup language used to structure the content of web pages. It defines the organization of text, images, links, forms, tables, and other elements that are displayed in a browser.

  • <!DOCTYPE html>: Declares the document type as HTML5.
  • <html>: Root element that contains all the content of the page.
  • <head>: Contains meta information, such as the page title, links to style sheets, etc.
  • <title>: Title that appears in the browser tab.
  • <body>: Contains the visible content of the page.

Main HTML Tags and Their Functions

Headers

  • <h1> to <h6>: Represent header levels.

Paragraphs and Text

  • <p>: Defines a paragraph.
  • <br>: Line break.
  • <hr>: Horizontal line.

Images

  • <img>: Inserts an image. It is a self-contained tag (does not require closing).
  • alt: Alternative text if the image does not load.
  • width and height: Image dimensions.

Tables

  • <table>: Creates a table.
  • <tr>: Defines a row.
  • <th>: Defines a header cell.
  • <td>: Defines a data cell.

Attributes

  • border: Border thickness.
  • cellpadding: Internal cell spacing.
  • cellspacing: Space between cells.

Links

  • <a>: Creates a hyperlink.
  • href: The link itself.

Example: <a href=”https://www.google.com“>Go to Google</a>

Text Formatting

  • <b>: Bold.
  • <i>: Italic.
  • <u>: Underline.
  • <em>: Emphasis (semantic italic).
  • <strong>: Importance (semantic bold).
  • <mark>: Highlights text.
  • <del>: Strikethrough text.
  • <sup> and <sub>: Superscript and subscript.