Slide 1

Slide 1 text

SOFTWARE ENGINEERING

Slide 2

Slide 2 text

Software Engineering ■ Software engineering is the term given to the process of developing software, including its testing, debugging, documentation and maintenance.

Slide 3

Slide 3 text

Software Engineering ■ Computer-aided software engineering (CASE) is the name of a software tool that provides a number of functions which assist with the design, development and testing of software. ■ Some of these functions are as follows:

Slide 4

Slide 4 text

CASE – Provides a data dictionary ■ This is a database that stores every item of data, size of the data, the data types and a comment to explain what that data means – Provides a graphics/diagram production feature ■ To aid drawing of data flow diagrams / flow charts – Code Generator ■ Translate the computer language code into the required source code

Slide 5

Slide 5 text

CASE – Provides repositories of reusable code ■ Also known as libraries of code – Provides project management tools ■ Including scheduling of each stage of the system analysis / people management – Incorporates version control – Carries out report generation – Includes a prototyping tool ■ Allow quick prototyping of dialogue screens, menus, reports etc.

Slide 6

Slide 6 text

Software Tools ■ CASE tools can be split into three main categories depending on what part of the lifecycle they are supporting. ■ Upper CASE tools are used to support analysis. ■ Lower CASE during development. ■ Integrated CASE are useful throughout.

Slide 7

Slide 7 text

Analysis and Planning Tools ■ The most obvious tool required in this section is one that helps to produce diagrams. These tools have templates, a range of system components, intelligent connectors and other useful functions. Flow chart creators, such as Gliffy, will focus on allowing the user to quickly generate diagrams. ■ Features such as intelligent connectors speed up the diagram creation process and improve accuracy.

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Analysis and Planning Tools ■ Analysis is a very complex and involved process and it is not just diagrams where CASE tools can help. ■ The results of fact finding and the recording of requirements must be managed carefully and checked. ■ Tools such as CaseComplete allow the recording and validating of requirements. In CaseComplete, requirements are recorded as use cases and described in detail. They can include test cases to validate that the requirements are correct.

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Analysis and Planning Tools ■ Lower CASE tools will also feature collaboration features so that different members of the team can access all of the resources. This makes management of what could be potentially hundreds of documents much more streamlined. ■ Design tools allow systems to be modularised ready for implementation. This goes beyond simply creating diagrams, but will look at how the code will be structured. ■ Additionally, the user experience (or UX design) will have tools to help prototype interfaces. This type of design is sometimes known as wire framing.

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Analysis and Planning Tools ■ Finally, system testing can be supported though CASE tools and automated tests. ■ Test plans and runs are recorded using these tools which can then link in with bug tracking software. ■ A very popular free bug-tracking tool is Launchpad. This tool allows bugs to be reported, assigned and processed through the use of a web app. Launchpad also offers other features such as code reviews and translations.

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Integrated Development Environment (Revision from unit 1) ■ Integrated development environments or IDEs are really just collections of tools that make a programmer’s life easier. There are thousands of different IDEs, some are free, some cost money, some support many languages (some just one), but there is some functionality that is common to all. ■ Most provide simple colouring that highlights key words like if or def. They also provide automatic line numbering and some even draw lines to show which constructs (for example, IF and ELSE) match each other. All these simple tools help make code easy to read.

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

Debugging ■ As well as tools for helping to develop code, most IDEs also provide a range of tools that are useful for debugging (finding errors). ■ Error messages in IDEs are notoriously inaccurate but they do at least show you where the error is likely to occur. ■ Due to the way syntax analysis occurs it could be that more than one rule of the language is broken when the coder makes an error. In these situations the compiler will have to make a choice about which one to use. That may or may not be informative to the developer.

Slide 18

Slide 18 text

Error Reports ■ On trying to run the program the IDE then produces an error log explaining that the program cannot be compiled and why. ■ Notice that the error report tells the programmer the name of the file and the line number on which the error occurred as well as having a guess at what the error was. ■ On large projects detailed error reports like this can save programmers lots of time.

Slide 19

Slide 19 text

Break Points ■ Breakpoints allow a programmer to stop the execution of a program on a specific line of code. This can be useful for finding out exactly where a logic error is taking place or checking the value of variables at a specific point in the code.

Slide 20

Slide 20 text

Program version management ■ During development, large amounts of code will be produced in multiple files. ■ This code will be compiled together in order to produce the final program. ■ As there are numerous people working on the code base at any given time, formal methods must be employed to manage changes. ■ Version management CASE tools will ensure that changes are carefully controlled through the use of a process of checking in and out code.

Slide 21

Slide 21 text

Program version management ■ When a file needs to be edited it can be checked out by a developer. ■ When code is checked out no one else can edit the file and they will be informed who has the code and when it was checked out. ■ When the changes have been made, the code will be checked back in. ■ When code is checked in, a new version will be made. ■ This means that the code before and after will be recorded.

Slide 22

Slide 22 text

Program version management ■ In the diagram below, three versions of the same file exist with version 3 marked as the current file. code.py v1 code.py v2 code.py v3 Current file

Slide 23

Slide 23 text

Program version management ■ As each change when checked in is recorded, this means that changes can be rolled back. ■ Rolling back a change means that one or more versions of the file will be discarded to go back to a more stable version. ■ Also, the differences between versions can be shown to see exactly what new code has been added. This is crucial if a bug has been introduced!

Slide 24

Slide 24 text

Program version management ■ When a project milestone is reached, all files can be typically ‘tagged’ with that milestone. That way specific stable builds of the software can be released without impacting new development. Beta builds tend to be released in this way. ■ Also, versioning allows software to branch. When software branches a milestone is created, but two new code repositories are set up. This allows, for example, the easy creating of trial and pro versions of software without impacting the code they have in common.

Slide 25

Slide 25 text

Program version management ■ A popular version control system is the open source Git, as shown in the screenshot. In some projects, new features are developed in their own branches in order then merged back to the master branch once ready. This way developers can have more autonomy over the feature in question without worrying about impacting other developers.

Slide 26

Slide 26 text

Summary ■ Software development can be supported by using CASE tools; Computer-aided software engineering. ■ Analysis and planning tools enable the developer to create diagrams quickly, such as UML, validate requirements and collaborate on every part of analysis. ■ Design tools allow mock ups of software to be produced for verification purposes. ■ Test plans and bug repositories have CASE tools, which help large- scale projects keep track of which tests were run and what bugs were produced.

Slide 27

Slide 27 text

Summary ■ Integrated development environments (IDEs) offer additional tools to the developer such as debugging, coding frameworks and the ability to manage larger code projects. ■ Version management will monitor changes to code and will manage how code files are merged back into the master branch to avoid conflicts.

Slide 28

Slide 28 text

Questions 1. State what CASE stands for in software development. 2. State one analysis or planning CASE tool. 3. State two features of a modern IDE. 4. Describe how program version management is used during the development of software.