Software Development

Software is the intangible side of computers. It includes programs and data.

Software development is the process of creating and deploying software.

This post covers some aspects of software development. It is somehow an index to other posts in the blog.

Programming Abstraction Levels

Machine language is a language that can be interpreted by a processor, and they are not human-friendly. The machine language is unique to each processor model.

The first computer programs were programmed in machine language, but nowadays this is very rare.

An assembly language is a low-level language that correlate each machine language instruction into another instruction that is more easily understood by a human.

You can read this post about assembly language.

An assembler is a software that converts the assembly language instructions into its corresponding machine language instructions.

A disassembler is software that converts the machine language instructions into assembly language instructions.

A programming language is a high-level human-friendly code that includes instructions for a program. Unlike assembly language, each instruction does not have one-to-one correspondence, and each programming language instructions may be translated into many assembly or machine language instructions. This is why it is called a high-level language.

You can read this post about programming languages.

A compiler is a software that converts code written in a programming language into machine code.

Machine code is rarely written or read by humans, as they usually use programming language or exceptionally assembly language if they need to work as such a low level of detail.

A cross compiler transforms the code written in a programming language into machine language code for a processor different to the one that the one used to execute the compiler.

An interpreter is a computer program that directly executes instructions written in a programming or scripting language, without requiring them previously to have been compiled into a machine language program.

The source code is the code that is written originally to create and modify a computer program. Source code is usually written in a programming language, but it might be written in assembly code (e.g. original Transport Tycoon).

A source-to-source compiler, transcompiler or transpiler that transform source code of a program into a an equivalent source code. This destination source code could be the same or a different programming language.

Software Engineering

Software engineering is the is the branch of computer science that deals with the design, development, testing, and maintenance of software applications. Software engineers apply engineering principles and knowledge of programming languages to build software solutions for end users.

Joint Requirement Planning (JRP) uses different roles in the team. One of them is the moderator.

Joint Application Design (JAD).

Software Design Concepts

Types of cohesion, ordered from most coherent to less:

  1. Functional
  2. Sequential
  3. Communicational
  4. Procedimental
  5. Temporal
  6. Logical
  7. Casual

Process Modeling

Process modeling is one aspect of software engineering.

Process modeling is performed through the use of process modeling languages. You can read this post about process modeling languages.

There are tools to aid and provide visuals for process modeling. You can read this post about process modeling software.

Software Design Patterns

There are software design patterns that can be used as templates for solutions to common problems found in software development. You can read more about this on this post.

Software Project Management

You can read more about software project management on this post.

Software estimation can be done using function points, that are assigned depending on the number and complexity of user cases.

Software Development Models

You can read a post about software development models, also known as software development lifecycles (SDLCs), such as waterfall and agile methodologies.

Software Implementation

Software implementation involves actually coding, programming or writing the source code.

Software Implementation with AI

Software implementation with AI make use of AI software engineer.

GitHub Copilot is an AI that helps you to develop.

Devin is self-named “the first AI Software engineer cognition”.

Devin official website

Devika is a FOSS version that aspires to compete with Devin.

Devika official website

OpenDevin is another FOSS version that aspire to compete with Devin.

OpenDevin code repository

Software Tracking Tools

You can find a list of software tracking tools or applications on this post.

Programming Environment

A programming environment needs to be set to perform software development. It is a set of tools that enables software development and collaborative work.

You can find more information about programming environments on this post.

You can read about how to set a software development environment on this post.

Software Testing

Software must be tested before it is released.

Software Testing is part of IT quality assurance (QA). You can read more about IT quality assurance and find a list of software testing tools on this post.

Software Deployment

Software deployment involves releasing software in a given environment, for instance test or production environment.

You can read this post about software deployment.

Software Maintenance

Software must be maintained after it is released.

Types of maintenance:

  • Adaptative
  • Corrective
  • Evolutive
  • Perfective
  • Preventive

Adaptive software maintenance is about changing software in response to changes in its environment.

Corrective software maintenance is unsurprisingly about correcting software defects, errors and faults.

Evolutive are necessary to cover product expansion or user requirements.

Only the three before are recognised on Métrica v3.

Perfective software maintenance focuses on features that improve the user experience through functional enhancements.

Preventive software maintenance is about software changes and adaptations that reduce the risk of deterioration and outdating.

Software Development Documentation

Standard ISO/IEC 26514 is about software development documentation.

DevOps

You can find more information about DevOps on this post.

Web Development

Web Development is a subset of software development that is focused on developing websites.

You can find more information about this on this post.

Software Development Security

You can read about software development security on this post.

You might also be interested in…

Leave a Reply

Your email address will not be published. Required fields are marked *