Software Engineering

This is the process of developing software, from testing, debugging and documentation to maintenance. 

This topic covers:

  • Types of software designed to assist the process

  • Program version management

  • Integrated Development Environment tools 

  • Debugging techniques

  • Software packages usage

Software Tools

Software tools provide many functions in order to assist with the design, development and testing of software. They all fall under 'Computer Aided Software Engineering', or CASE for short. Some example functions include:

  • Code generators

  • Data dictionaries

  • Version control

  • Prototyping tools

  • Project management tools

Software Packages

All CASE tools are split into 3 main groups, based off of which part of the life-cycle they are supporting:

Upper CASE - Planning, Analysis, Design

Lower CASE - Implementation, Testing, Maintenance

Integrated CASE - Useful throughout

 
.aa.png
.a.png
.b.png

CASE stage information

During analysis, the outcomes of fact checking and the recording of requirements has to be very carefully checked and managed. This means it can be a very complicated and time consuming process, however, must be taken seriously. An example tool is CaseComplete, where the recording and validating of requirements is made possible, ensuring that the requirements are correct.

 

Lower CASE tools also allow for different members of a development team to access all of the resources through collaboration features, helping maintain a streamlined management.

Design tools begin to allow for systems to be ready for implementation and look at how the code should be structured, as well as prototyping interfaces, called wireframing.

Integrated Development Environments (IDEs)

These are collections of tools that work to the programmers benefit. Many of them you will have met before. For example, when using a platform like visual basic, key words like 'if' and 'else' will be highlighted, or in a different colour in order to stand out. You may also see lines connecting the if statements to their code etc, all in order to make the programmers job clearer and simpler.

You can see the effectiveness of these simple tools by attempting to first write some code in Visual Basic and then Notepad - the efficiency and speed of typing and managing the code within a platform with IDE are very useful. They are also extremely useful when it comes to debugging, more on that below.

 
a.png
.aaa.png
c.png
Debugging Techniques

 

Debugging is finding 'bugs' (errors) within some code that means it isn't working as intended. IDEs provide a range of tools that can be useful for this, some of which we need to know about and are explained in detail below.

 
.1.png

Automatic Error Checking

Before the code is even ran, the IDE identifies any errors it can see within the code. They mainly check for misspellings, or the use of variables that have not been declared beforehand. These types of errors are caled syntax errors.  The IDE runs through the code, highlighting or underlining the errors, whilst also providing an error message to go alongside it. These are known to be fairly useless, but their main purpose is identifying and stating where the error has occurred.

The compiler is responsible for the translation of the chosen language to machine code and therefore responsible also for identifying these syntax errors. Missing a bracket also is regarded as a syntax error.

.2.png

Error Reports

An error report is produced when an attempt to run the program is failed due to the code being unable to be translated. The IDE produces this error log, which explains that an error as occurred and why. The report will usually include the name of the file, the line number it occurred on, the type of error and attempt to provide a solution.

Without these reports, debugging would take countless more hours, as it would require extreme care over each line to identify where the problem is yourself. It may seem a basic feature, but is a crucial one that is essential to all modern day programmers.

Breakpoints

These allow for the programmer to halt the execution of their program on a specified line of code. This is used so that they can find where a logic error is taking place within the program. The programmer is able to check the value of variables throughout each line, enabling them to see where and why the problem has happened. 

.3.png

Stepping Through

This works in a very similar way to breakpoints, but rather than stopping at a specified line, stops after each line. The programmer can see the impact this line of code has had after each break. This allows for them to see the value of variables after each step, as well as see where an if statement may be executed when it shouldn't have been. 

It is common for breakpoints to be used in conjunction with this, where the programmer can step through each line, up to the specified one.

.4.png
Program Version Management

 

During program development, multiple files containing large amounts of code are created. When compiled all together, the final program is produced.

As many people may work on the same code at any given time, methods must be put in place in order to manage any changes. Version management CASE tools ensure any changes are carefully controlled via the use of a process called checking in and out code.

 
.5.png

When a file is edited, it is 'checked out' by the developer. This means that the code cannot be edited by anyone else, and if they attempt to, they will be told who is currently editing, as well as the time it was checked out. Once edited, the file is 'checked in', and another user can access it again. As well as this, a new version of the file is created each time it is checked in, so that previous versions can be revisited should a problem arise. If a version does need to be revisited, the newer versions will be discarded in a process called 'rolling back'.

Once a milestone within the project is achieved, the files containing the stable code will be tagged so they can easily be returned to. This is how beta builds are released too, with the tagged files being released.

Having multiple versions of the same piece of software can also enable developers to release multiple versions of it at once, such as a trial and pro version.