Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Software Engineering

AllenHeard
November 02, 2016

Software Engineering

CASE Tools Year 13 Lesson

AllenHeard

November 02, 2016
Tweet

More Decks by AllenHeard

Other Decks in Education

Transcript

  1. Software Engineering ▪ Software engineering is the term given to

    the process of developing software, including its testing, debugging, documentation and maintenance.
  2. 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:
  3. 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
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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.
  15. 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.
  16. 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
  17. 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!
  18. 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.
  19. 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.
  20. 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.
  21. 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.
  22. 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.