SlideShare a Scribd company logo
1 of 14
Download to read offline
Chapter 16: The project




Chapter 16: The project
 Introduction
     For this unit you are expected to undertake an individual software-
     engineering project and to submit a project report to London. You should
     take some care in selecting a project topic and preparing for this substantial
     task. To achieve good results in this unit you will need to devote substantial
     time to this project and ensure that you work on your project consistently
     over the year. In past years some students have failed their project because
     they started work on it too late or failed to keep work up throughout the
     year. There is no way that you can ‘rush’ the project at the last
     moment.
     You should also understand that the idea of the project is to demonstrate
     an understanding of the software engineering process and professional
     practices. It is not intended to be about producing computer programs for
     their own sake. In fact, you are not required to deliver a fully
     running computer program with your project. The crucial part of
     your project is the description of the development process which is a
     model-based task. You are merely required to implement parts of your
     system in order to demonstrate that the design you have created can
     actually be translated into program code, and to undertake some testing of
     the crucial parts.
     The time you devote to your project will be of benefit to you when it comes
     to sitting the examination. The experience of developing your own project
     will show through in the examination, and will provide you with important
     examples of how systems development works in practice. You will know
     what you are talking about. Indeed the problems, frustrations, moments of
     breakthrough, difficulties and joy you will feel undertaking this work are
     the same as those experienced by software engineers in their daily work.
     In a section below, I provide some ideas of possible projects that you might
     like to consider. You are, however, encouraged to develop your own project
     idea for small and medium scale software systems. In general, you should
     understand that we are looking for a system that allows you to carry out a
     software engineering process which leads to a model of a complete system.
     At the end of the project these models should be capable of being easily
     developed as software code. This should also include some small coded
     elements of the significant parts of the project – for example to
     demonstrate and test how a crucial algorithm is performed.
     Students coming to this unit are expected to have some experience of
     various package environments including databases and spreadsheets. You
     are also expected to have a general understanding of programming and
     some programming skills (through the units Elements of information
     and communication technologies and/or Introduction to
     Programming). While you will probably undertake some programming,
     and so develop these skills, you should understand that the main emphasis
     of this unit is not to teach you more programming, but rather to
     concentrate on the intellectual work that leads up to and surrounds the
     coding activity.
     Details on how to submit the project and the date by which the entire
     project must be in London are given in the booklet Completing and
     submitting coursework and projects which all students taking this unit


                                                                                                       113
Software engineering: theory and application


            should receive. This booklet is revised each year, and you should make sure
            that you have the most recent edition. The booklet contains the exact
            deadlines for each year, the forms required to accompany your project and
            details of how to submit the project.


    Overview
            The project, which counts for 40 per cent of the final mark, is intended to:
            • take you through the process of developing a sophisticated piece of
              software, tackling a realistic problem
            • provide practical demonstrations of the key issues discussed in the
              subject guide. It is when doing the project that you will come to
              realise the importance of good requirements analysis and design, the
              benefits of setting up a proper testing process and the problems of
              keeping to deadlines and managing projects
            • be an enjoyable experience where you can make the mistakes that you
              will learn from.
            In order to complete the project you are required to produce a number of
            documents. It is very important that you maintain coherence
            between the documents you create.
            In addition to these documents, you are expected to write a final project
            report. The main section of the final project report provides a summary of
            the lessons you learned, what went well and what you would do differently
            next time.
            You should note that the focus of the project is not on the system produced,
            but on the quality of the process undertaken, the coherence of the
            documents presented, and how successful the documents would be in
            developing a software system.
            One way to think of the project is as an attempt to produce a set of
            documents which could be sent to an outsourcing company to ask them to
            produce a system for you. Your aim is to produce a set of documents which
            would enable the outsourcer to understand what was needed, and go
            ahead and produce the complete software system.


    The project as a development process
            The aim of the project is to give you the experience of the processes and
            practices of software engineering. As such, we intend you to undertake the
            process of analysing and designing a software product, and submit to us
            the documents you used in this process. This means that the documents
            should be the practical documents you would use to develop the system.
            Before you hand in your project, you could of course go back over your
            individual documents again and edit them. However, although you could
            go back and change, for example, an initial system requirement so that
            they match exactly (and surprisingly) your final design, this is not what the
            examiners are looking for. We are much more interested in how you
            progressed through the various stages of your project than in the final
            result.
            In the past many students have achieved a poor mark in their project,
            because they have paid too much attention to one part of the process
            (usually coding the software) and far too little attention to the coherence of
            their development process overall. A project that has many problems
            throughout its development process may be rated as highly as one where
            everything went well. What is important is that the project documents

114
Chapter 16: The project


    demonstrate how problems faced were addressed. Examiners are much
    more interested in seeing a genuine learning effort that uses the methods
    and techniques of software engineering than a running system. Remember
    that even professionally produced software regularly fails – we are looking
    for the professional approach to software design.

    Examiners would be happy to see a page in the later stages of design which said
    something like ‘The initial user requirement for XYZ was unachievable as it conflicted
    with the other requirement for ABC. It is therefore decided that XYZ is to be dropped
    from the design.’ This is the kind of thing seen in real software engineering projects all
    the time, so why should your project be any different?

    When you write and edit your project, remember Brook’s comment (1995):
    ‘Most documentation fails in giving too little overview; the trees are
    described, the bark and leaves are commented, but there is no map of the
    forest. To write a useful prose description, stand way back and come in
    slowly’.
    It is essential that your documents form a coherent project in which the
    examiners can see how the individual development stages have been
    carried out and how they relate to the previous and the following stages.
    Finally, remember we are very unlikely to reward the ‘software hacker’ who
    works through the night to come up with a wonderful piece of software
    without bothering to undertake requirements analysis or design properly,
    by faking the testing, and by ignoring proper planning. Yes, this person
    might produce something which looks impressive, but do not expect marks
    for producing a system in a way that does not take into account
    requirements, and which is likely to be unreliable and dangerous.


Choosing your development tool
    You are encouraged to make use of development tools in your project;
    however, this is not a formal requirement so do not feel you have to. You
    may want to use modelling tools, design tools etc. In addition you will need
    to produce small amounts of software to demonstrate how aspects of the
    design will operate. For this you may either want to choose a programming
    language, like for example Pascal, Visual Basic, C++ or Delphi.
    Alternatively, you may want to choose a spreadsheet or database package.
    Although programming languages offer the greatest flexibility, some
    application areas may be best suited to, for example, a database package.
    Your choice should depend on the kind of application you are designing
    and the development tool you have access to. If you choose the object-
    oriented development approach for your project you will probably want to
    use an object-oriented language to undertake any coding.
    Although the project does not require you to write the program
    code for a fully running system, you will have to do some
    programming of some of the important parts. It is essential that you start to
    acquire the necessary programming skills as soon as possible. The unit
    Elements of information and communication technologies and
    possibly Introduction to programming has given you an introduction
    to the component parts of a program. You should be able to use these
    concepts within the programming language you have chosen.
    You are not expected to write the code for a fully running and
    complete system. You must, however, deliver sufficient coding to
    demonstrate how a small number of complex elements of your design can
    be translated into code. As such you are only expected to produce
    programming stubs rather than a complete system.

                                                                                                                  115
Software engineering: theory and application


            A programming stub is a small section of code which a developer uses to
            demonstrate a principle or idea, and to test that it works. A programming
            stub might implement a single Class, or even just one of a class’s methods,
            if that method undertakes complex processing (for example an Order class
            might have a method GetPrice() which calculates the prices by processing a
            range of inputs. You could produce a programme stub to test that you
            understand how this would work, and that your design is correct).
            This is not the same as pseudocode as a programming stub must be written
            in a programming language so that it can be tested. They are usually pretty
            short (at most a couple of pages in length) and implement the most
            difficult parts of the system (so the developer can test and verify the
            important parts of the system before we waste time on the easy parts). It is
            also usual to develop some kind of interface to interact with the
            programming stub (for example a way of reading a file of attributes, of
            calling the program stub with these attributes, and of displaying or saving
            the returned parameters).
            Examples of other things you might implement are:
            • some user interface screens, since these may be needed to produce
              your user manual
            • if you use a database you will need to provide most of the database
              schema
            • if you are using data files you will need to describe their format.
            Additionally, you should remember that it is very important that you
            explain any programming stubs etc. you provide. They should be written
            with sensible variable names, and plenty of comments in the code. You
            should describe how they would be used within the complete system, and
            how they relate to the design activity. Finally, you should provide details of
            what components require further implementation.
            You are required to provide a printed copy of the source code you produce
            as an appendix to your project. In addition, you should submit a disk
            containing executable versions of the parts of the system which have been
            coded. These do not necessarily need a user interface (you could just ask
            for input from the command line, or by reading a file), but must be
            relatively easy for the examiner to try.
            Those students who are very keen to implement a complete system rather
            than just programming stubs can do so. Such students should however
            remember that only a small proportion of the marks is allocated for the
            programming component of the project, and therefore it is not likely to
            drastically improve their marks and could damage their marks by diverting
            their attention from the important tasks.


    Reuse
            Reuse is an important part of software development, and you are
            encouraged to reuse code or models and patterns, and auto-generated
            code, to aid you in your development of the programming stubs. However,
            to avoid charges of plagiarism you must make it clear which
            elements of your project constitute reuse. All that we ask is that
            you indicate to us the pieces of code that you did not write (or alternatively
            highlight the pieces you did) and tell us where the code you are reusing
            came from (by referencing its source). You should do this on the source-
            code that you submit as part of your report; for example, why not put all
            your own code in bold or italic, or you could put comments into the code
            where the auto-generated or reused part starts and ends. This allows you to

116
Chapter 16: The project


     download small sections of code from the Internet and use them as long as
     you highlight to us that you are reusing the code. If you fail to do this
     you could be accused of plagiarism (cheating), rather than
     being rewarded for taking advantage of reuse.


Suggested projects
     You are expected to choose your own project to work on. A suitable project
     will probably have most of the following characteristics: It will:
     • handle some real world data of non-trivial complexity
     • require a user-interface tailored to some defined user (who should not
       be you)
     • undertake some processing/calculation/selection on the data it
       contains.
     Conceptually a project does not have to be very big to present a real
     challenge – as the examples below show, a database type application
     tailored to some particular domain is a good starting point.
     Projects that do not contain a substantial software analysis and design
     component are not suitable. For example developing a computer game is
     not appropriate as it does not have specific user requirements (other than
     perhaps being enjoyable for users!).
     When choosing a topic, remember that you need a project that will enable
     you to demonstrate your understanding of the whole software engineering
     process. Below is a list of projects you may choose from if you wish:

A personal data management system
     This would consist of a small database management system used to record
     personal information such as details of records and books, information
     about recipes and so on. There may be a diversity of information recorded,
     and the system should be easily used by people without a computer
     background.

A photograph library sales system
     This records and retrieves information about photographs in a library and
     the worldwide sales of these photographs. It should support keyword
     classification and retrieval requests for different types of photographs. It
     should maintain details of fees received and due for each photograph that
     is published. Again, the system should be designed for use by people who
     are not familiar with computing aspects.

An online recipe and meal planner
     This could compute the overall nutritional value of a meal, summarise the
     necessary ingredients, and estimate costs. It might also be able to suggest a
     meal given ‘I want to use up this corned beef’ or ‘I’m out of eggs and
     lettuce’.

A personal organiser for a university lecturer
     This would schedule the lecturer’s teaching, send reminders when
     necessary (possibly through an e-mail system), perhaps co-ordinate with
     other lecturers’ (or even students’) calendars for scheduling meetings, and
     so on. Printing parts of the calendar on demand is a must. Questions that
     such an organiser should be able to answer include ‘What’s up for today?’


                                                                                                      117
Software engineering: theory and application


            or ‘Let’s see next week at a glance’ or ‘What in the world was I doing last
            Tuesday?’ or ‘On what day of the week for the next four weeks is there an
            hour free starting at 10:00?’.

    A terminal reservation system for a computer terminal room
            This would be an automated sign-up sheet for a collection of terminals
            (and possibly other resources). People should be able to express
            preferences for various times. The system should include facilities for
            administrators to collect and print statistics on usage as well as a
            scheduling algorithm to ensure fair distribution of resources among users.
            It should be easy to change the scheduling algorithm. (Ignore the fact that
            you need to use a terminal to sign up for a terminal. For example, assume
            that one is reserved for this purpose.)

    An online holiday planning system for a busy department
            This allows staff to choose and book when they are on holiday. It might
            also need details such as who is taking over the person on holiday’s work,
            where they can be contacted etc, and maybe make sure that important
            people are not off at the same time.

    An online system for managing bookings
            This might be for a cruise liner or railway.


    Deliverables
            The deliverables are split into three sections. The first section involves
            planning how you will approach the software engineering project. The
            second section contains all the documents you produce in undertaking the
            project (the models etc). The third section asks you to assess your project
            critically, and reflect on the learning it has given you.

    Deliverables section 1: project description and planning
            This section is an important task as you need to ensure that you can
            complete all the necessary documents on time. You should not take it
            lightly, and should use project management techniques to help you plan.
            You should ensure that you produce a timetable for undertaking the
            project, including plenty of contingency time should things go wrong and
            including time off, holidays etc. It is important that you balance the
            demands of this project with the need to study the subject and
            relax. Remember that the project accounts for 40 per cent of
            your mark, and should therefore constitute no more than 40
            per cent of the time you put to study software engineering. The
            project can expand to fill the time available, so make sure you
            limit this by planning your activity well and sticking to your
            timetable. Indeed, it is better to decide to cut your project
            down (for example by ignoring certain requirements) so that
            you can finish it than to hand in a half-completed project. If
            you need to do this you must explain why you took this
            decision in your document.
            It is essential that you stick to your timetable in order to avoid severe time
            pressure towards the end of the project and to get maximum benefit from
            the project. Remember that you will be marked on the entire development
            process and not only on the end product. If you start your project too late



118
Chapter 16: The project


     you will not have enough time to carry out all the stages that are part of
     software development.
     In no less than two pages you should summarise the project you propose to
     work on:
     • Give your system a name.
     • Describe what the system will do and who its users will be. What
       needs will your system satisfy? How will it help the users?
     • Outline the most important features of your system.
     • Describe the physical environment in which your system will be used
       including any other systems with which the new system will interface.
     • Are there any important performance goals for your system: time or
       space efficiency, security or reliability?
     On another two to three pages you should describe the software
     engineering process you intend to employ, and how this is relevant to the
     system you describe:
     • Outline the basic principle of the chosen approach (including
       references to relevant literature on this approach). You should also
       establish the software development paradigm you have chosen (i.e.
       structured or object-oriented).
     • Discuss why this process is suited to the problem previously described.
     • Provide a very detailed timetable for the activity you are going to
       undertake and a detailed plan of the documents you will be providing
       and how they will address the need for requirements analysis, design
       and elaboration, approaches to implementation, documentation of the
       system, and testing. You can use diagrams such as Gannt charts for
       this if you wish.
     • Consider any problems you might envisage encountering and how you
       intend to manage such risk.
     You can also use this section to plan how you will manage the
     development project and keep to your timetable.

Deliverables section 2: the software engineering practice documents
     In the next section of your project you must provide documents which
     outline how the software engineering process was undertaken in terms of
     analysing the user’s requirements, undertaking design, elaborating that
     design, approaching implementation, documenting the system and
     undertaking testing. The format for this section depends on the software
     engineering processes you have decided to follow (as detailed in section
     1).

     Examples of the documents you might produce for different software
     engineering processes:
     Pressman chapter 2 provides a good description of various software
     development processes and the types of documents which might be
     produced. Below we provide examples of the different sections which
     might be produced for projects following different development
     processes.




                                                                                                   119
Software engineering: theory and application


            For a project following the software development lifecycle the contents of
            the section may look like this:
                1. Requirements analysis.
                          (a) Introduction.
                          (b) Functional requirements and conceptual model.
                          (c) Non-functional requirements.
                          (d) Hardware.
                2. Detailed requirements analysis.
                3. Design.
                4. User manual and maintenance manual.
                5. Coding of key algorithms and database schema.
                6. Testing document.
            In contrast, a student trying to follow the Rapid Application Development
            approach (clearly without the team working elements) might have a
            document of this form (or similar):
                1. Cycle 1
                          (a) Business modelling.
                          (b) Data modelling.
                          (c) Process modelling.
                          (d) Stub application generation using Visual Basic.
                          (e) Testing and turnover.
                2. Cycle 2
                          (a) Further business modelling using feedback.
                          (b) Further data modelling.
                          (c) Further process modelling.
                          (d) Application elaboration and changes.
                          (e) Testing and turnover.
                3. Cycle 3
                4. User manual of the final system.
            Finally, a project which is following the spiral model might have the
            following sections (or similar):
                1. Spiral 1
                          (a) Customer communication.
                          (b) Planning documents – construction of task sets.
                          (c) Risk analysis.
                          (d) Engineering (including analysis and design) of tasks.
                          (e) Construction and release of algorithms central to the problem and
                              considered of high risk. Construction and release of prototype user
                              interface.
                          (f) Requirements planning.
                2. Spiral 2
                          (a) Risk analysis.
                          (b) Prototype 2 construction (including simulations of a small user
                              interface).
                          (c) Detailed requirements and requirements validation.
                          (d) Development planning.



120
Chapter 16: The project


   3. Spiral 3
           (a) Risk analysis.
           (b) Prototype 3 construction (including simulation and benchmarking of
               core algorithms).
           (c) Design of the complete software product.
           (d) Validation of the design.
           (e) Test planning.
   4. Spiral 4
           (a) Risk analysis.
           (b) Further design activity to elaborate section 3(c).
           (c) Implementation of core algorithm code.
           (d) Unit testing.
           (e) Acceptance testing.
   5. User documentation of system.
Note that just because some of these projects have many more sections, it
does not mean that they should be longer in length, nor involve more
work. You should also try to avoid unnecessary repetition in your
documents. For example you do not need to include every test case you
undertook.
Note that each of these examples differs in some way from the way
textbooks describe the processes. This is expected as it is unlikely that a
project that is undertaken by one developer who has little experience will
precisely follow a formal software development project. You should decide
which sections you need.
Whatever form your documents take, they must include descriptions of
how you undertook the following activities:

You must document how you captured requirements and turned these
into design
This should include some description of the need for the system and place
the system into context, briefly describing its functions and presenting a
rationale for the software system.

Functional requirements – the conceptual model
Your documents should describe the functions that the system will perform
(i.e. it should present the conceptual model of the requirements of your
system). This means that you will have to model your functional
requirements applying (for example) levelled data flow diagrams, entity-
relationship diagrams if you are following the structured approach, and you
will have to produce use-case diagrams and class diagrams if you opt for
object orientation.
It is very important that you document your modelling processes very
carefully. You are expected to explain how they support the further analysis
of your particular problem domain. However, keep in mind that you are not
supposed to give an explanation of how exactly certain modelling
techniques such as, for example, data flow diagrams work.

Non-functional requirements
You should state all non-functional requirements, such as technical
constraints or security requirements, your system might have.




                                                                                                     121
Software engineering: theory and application


            Hardware
            If the system is to be implemented on special hardware, this hardware and
            its interfaces should be described. If off-the-shelf hardware is to be used,
            the minimal and optimal configuration on which the system may execute
            should be set out here.

            You must document how you approach the design of the system
            You must outline the top level decisions you have made, and how these
            decisions were broken down into components, how these components are
            linked, etc.
            The overall design within structural software development, for example, is
            concerned with determining the modules and how the modules are linked
            and interact with each other. For this purpose you would have to apply
            structured design and create structure charts from your data flow diagrams.
            The overall design within an object-oriented approach requires you to
            model interaction and object behaviour using sequence diagrams and
            statecharts.
            After this you will need to describe how you elaborated these designs,
            adding sufficient detail to them so that it can be used as a reference from
            which any competent software engineer can produce code, set up the
            testing process, and write a user manual and a system maintenance guide.
            The detailed design should include answers to all of the questions for as
            many levels as possible.
            The detailed design within structured development, for example, will have
            to provide the details of the algorithms used within the individual modules.
            The detailed design within an object-oriented approach involves the exact
            definition of classes (with their attributes and operations) and the messages
            sent between objects. You may want to use pseudocode (an outline of
            programming code) in order to represent the details required within
            detailed design.
            During the design process you should focus on the parts of the design that
            are essential to producing a core system. You only need to outline the
            extensions to a more complete system. Also, do not waste time and energy
            repeating the details for parts that have a similar structure. Instead you
            should give one design example and explain which parts (and why) follow
            the same or a similar design pattern. One of your major goals is to develop
            a model that is complete by the deadline. This is not expected to be the full
            system. It is essential that you review the entire design process to ensure
            that everything has been covered, that the parts of the documents hang
            together, and that the design can be related to the requirements.

            The user manual
            This document should be a self-contained description of how to use your
            system. A user manual should be a polished, professional piece of technical
            prose that a software company is proud to have accompanying one of their
            products. (Also, it is a handy accomplishment to show off at job
            interviews.)
            The document should have a structure that is evident both to someone
            reading it straight through and to someone looking for a particular topic or
            fact. A table of contents is required, and the organisation it reflects should
            be considered carefully. An index and appendices might also be helpful.




122
Chapter 16: The project


Remember, the document should be completely self-explanatory. Do not
assume the reader has seen your functional specification. You may, of
course, edit in sections of prose from your previous documents. Do not
discuss any implementation unless it directly affects the user’s interface to
the system.
Your document ought to cover the list of topics below. The exact order in
which you present material and whether certain topics are combined
should be dictated by your particular project and your own style of writing.
• Introduction: a concise statement of what your program does, possibly
  including motivation and philosophy.
• How to use your system: an overall description of the style of user
  interaction, device constraints, and any arbitrary design choices you
  made that the user ought to know about.
• Detailed system operations: an organised list of all the user commands
  and when they are appropriate. Some examples (preferably with
  screenshots) might be helpful. Also, it is often appropriate to divide
  the user manual into a novice section and an expert section.
• Error recognition and handling: what are the errors that might occur,
  and how can they be handled?
• An extended example: show exactly what the user may have to type or
  what buttons he might have to press (and why) and how the system
  responds (and why).
• A list of known ‘features’ and deficiencies: everyone complains about
  how cryptic current computer manuals are. This is your chance to
  show us what a good manual looks like.

Outline of the programming stubs/examples you have produced as part
of your design activity
You do not need to implement the complete software; however, you do
need to produce some of the key algorithms – for example, you may need
to implement a couple of classes or models to demonstrate how they would
be achieved. These should be included in your documents along with a
description of what they are for and how they work. You should also
highlight any code-reuse, and ensure that the code is commented and
consistent with the design and requirements.

A description of the testing you undertook as part of the software
engineering process
Testing is an important part of a software project. Testing needs to
accommodate both system verification and validation. The software team
must carefully plan the different testing stages, develop a schedule of when
they are to be carried out, design the test cases that are needed and
eventually collect and evaluate the test results. Accordingly, the software
team must document the order in which modules or classes are to be
integrated and the order in which the individual modules or classes are to
be tested in isolation. Testing and debugging methods must also be agreed
upon, documented, and eventually carried out.
The purpose of a testing document is to convince the management (in this
case, the examiners) that a feasible testing approach has been designed and
undertaken. You are expected to schedule several stages of your tests.
Scheduling is required for unit testing, integration testing, and validation




                                                                                                 123
Software engineering: theory and application


            testing. You should note that the schedule of testing, and the tests
            undertaken, will vary depending on the software development process you
            have chosen.
            In documenting your testing you should include an introductory section
            that summarises how testing was undertaken. This should include a
            description of how testing was planned and undertaken in detail.
            Remember that this description is intended for several audiences. The
            document should be organised so that it is easy to find schedule summaries
            and monitoring plans.
            Your description of the testing should contain the following components:
            • a statement of the objectives and success criteria
            • an integration plan
            • a plan of the testing techniques and test cases used
            • a testing schedule
            • a summary of the test results and debugging procedures applied.
            These components are described in more detail below.

            Objectives and success criteria
            The testing document should contain a statement of the overall testing
            objectives and the objectives of the individual tests that are planned.

            Integration plan
            It is important to decide the order in which modules or classes are to be
            combined and therefore the order in which they will be tested individually.
            You must plan for individual module tests, the combination of modules
            during integration testing, and a validation test that tests the functionality
            of your system.
            The testing document should describe and justify your integration method.
            The ‘big bang’ method of integration is not acceptable, but many variants
            or combinations of top down and bottom up integration (or an appropriate
            alternative within an object-oriented approach) are acceptable if
            convincingly defended.

            Testing techniques and test cases
            You should design a plan to test all of the modules (or classes) of your
            system. Your testing document should state what kind of testing technique
            is applied to test the components of your system, and it should explain why
            a particular technique has been chosen. It is very important that you
            establish the test cases you will use. Keep in mind that a test case includes
            the test input and the expected output against which the actual test output
            will be compared. You do not need to carry out your tests for all
            components. However, you will want to employ some basic testing
            techniques to test the main algorithms within your system (those
            implemented as programming stubs). The purpose of this is that you
            demonstrate that you are able to select and employ some relevant testing
            techniques.

            Schedule
            The testing document should provide a schedule describing the dates of the
            different tests to be carried out within your chosen software engineering
            process. First, determine an order in which to perform integration and
            validation (functional) tests. This order should be used to determine the


124
Chapter 16: The project


     order in which the individual modules (components) are to be tested.
     Determine the dates by which tests are to be completed. Finally, you must
     define a monitoring procedure to ensure that tests are designed and carried
     out on schedule. There must also be a procedure for reporting and
     correcting bugs. Note that if you are following a evolutionary approach
     your schedule may include many cycles of activity.

     Test results and debugging procedures
     Finally, you should interpret the outcome of your tests and report on the
     errors that have been found and the action taken to locate and correct
     them.

Deliverables section 3: the final project report
     The purpose of the final report is to give an overview and evaluation of
     your entire project. This is an important document for the markers as it is
     used to evaluate what you have learnt from your project and from the
     process you have chosen. The document should be around two pages long.
     The document provides an opportunity to step back and put things in
     perspective and appreciate how much you have accomplished. In your
     report you should cover the following issues.
     • What changed: You should discuss how well your project satisfied
       the users. Did it do what they wanted? What did you leave out and
       why?
     • The software process: Were you satisfied with the chosen
       approach? What problems did you encounter? Where did you break
       from the usual approach to the process?
     • Developing the system: Do you think your document could really
       be used to develop a software system? What is missing? What is going
       to be difficult for someone to follow? Note you will not lose marks for
       highlighting problems with your system.
     • Management: Compare the actual time spent on the project with
       your predicted times. Have your learned anything that will help you
       make better predictions next time?
     • Lessons learnt: Here you should list the things you have learnt
       from doing the project.
     • Final comments: If there is anything that you really want to get off
       your chest about the way you did the project that would be valuable
       for other students, you should put them into this section.
     Finally, on a separate set of pages you should include the following:
     • Bibliography: You should list the books and papers which you used
       to help you develop your system. These should not be the standard
       textbooks and can include manuals, web sites and journal articles.
     • Software used: List the software you used in developing your
       system.




                                                                                                    125
Software engineering: theory and application


    Marking the project:
            In marking the project the examiners will be looking explicitly for the
            following main elements:
            1. The completeness and correctness of the report (around 50 per cent of
               the marks). In particular, they will ensure that you have chosen a
               relevant process, that you have followed your outlined process well
               with requirements being captured, design undertaken, the design
               elaborated, a user manual being written, a small amount of relevant
               programming stubs being produced which reflect the design, and that
               relevant and appropriate testing was undertaken. A project which is
               problematic can gain some marks for correctness by reflecting on the
               problems in the final report.
            2. The coherence and structure of the report (around 30 per cent of the
               marks). Examiners will give marks on how coherent the development
               paradigm and process are, how well they are followed, and that the
               project holds together as a complete system. For example, marks will
               be lost if the data structures in the coding stubs are not related to the
               initial designs, ER diagrams or Class diagrams.
            3. Sophistication (around 20 per cent). Examiners will award some
               marks for how sophisticated the project is – this is not simply in terms
               of how complex the problem addressed is, but also how sophisticated
               the process is, how well the techniques are applied and how well the
               document is written and presented.




126

More Related Content

What's hot

SIP SBI Project Report
SIP SBI Project ReportSIP SBI Project Report
SIP SBI Project ReportYogesh Rathod
 
Fundamental analysis of banking sector SBI AND HDFC BANK
Fundamental analysis of banking sector SBI AND HDFC BANKFundamental analysis of banking sector SBI AND HDFC BANK
Fundamental analysis of banking sector SBI AND HDFC BANKJeetu Matta
 
Financial Statement Analysis With The Help of Ratios (Suyesh Metel Pressing p...
Financial Statement Analysis With The Help of Ratios (Suyesh Metel Pressing p...Financial Statement Analysis With The Help of Ratios (Suyesh Metel Pressing p...
Financial Statement Analysis With The Help of Ratios (Suyesh Metel Pressing p...Avinash Labade
 
Project report-on-india-bulls- satya
Project report-on-india-bulls- satyaProject report-on-india-bulls- satya
Project report-on-india-bulls- satyasatya pal
 
Study of working capital management
Study of working capital managementStudy of working capital management
Study of working capital managementVinayak Gupta
 
Icici bank personal loan
Icici bank personal loanIcici bank personal loan
Icici bank personal loanjoy kodali
 
Fundamental Analysis- HDFC Bank
Fundamental Analysis- HDFC BankFundamental Analysis- HDFC Bank
Fundamental Analysis- HDFC BankEnactus NM College
 
Sociale relevance project
Sociale relevance projectSociale relevance project
Sociale relevance projectdhirajramji
 

What's hot (13)

SIP SBI Project Report
SIP SBI Project ReportSIP SBI Project Report
SIP SBI Project Report
 
Fundamental analysis of banking sector SBI AND HDFC BANK
Fundamental analysis of banking sector SBI AND HDFC BANKFundamental analysis of banking sector SBI AND HDFC BANK
Fundamental analysis of banking sector SBI AND HDFC BANK
 
Financial Statement Analysis With The Help of Ratios (Suyesh Metel Pressing p...
Financial Statement Analysis With The Help of Ratios (Suyesh Metel Pressing p...Financial Statement Analysis With The Help of Ratios (Suyesh Metel Pressing p...
Financial Statement Analysis With The Help of Ratios (Suyesh Metel Pressing p...
 
Synopsis
SynopsisSynopsis
Synopsis
 
Reliance offer letter
Reliance offer letterReliance offer letter
Reliance offer letter
 
Project mba
Project mbaProject mba
Project mba
 
Project report-on-india-bulls- satya
Project report-on-india-bulls- satyaProject report-on-india-bulls- satya
Project report-on-india-bulls- satya
 
Study of working capital management
Study of working capital managementStudy of working capital management
Study of working capital management
 
Icici bank personal loan
Icici bank personal loanIcici bank personal loan
Icici bank personal loan
 
A ...
                                               A                             ...                                               A                             ...
A ...
 
Fundamental Analysis- HDFC Bank
Fundamental Analysis- HDFC BankFundamental Analysis- HDFC Bank
Fundamental Analysis- HDFC Bank
 
Summer Training Project PPT on Working Capital Finance to MSMEs
Summer Training Project PPT on Working Capital Finance to MSMEsSummer Training Project PPT on Working Capital Finance to MSMEs
Summer Training Project PPT on Working Capital Finance to MSMEs
 
Sociale relevance project
Sociale relevance projectSociale relevance project
Sociale relevance project
 

Similar to Project demonstrates software engineering process

IT 700 Final Project Guidelines and RubricOverviewAs the fin.docx
IT 700 Final Project Guidelines and RubricOverviewAs the fin.docxIT 700 Final Project Guidelines and RubricOverviewAs the fin.docx
IT 700 Final Project Guidelines and RubricOverviewAs the fin.docxADDY50
 
Chen's second test slides again
Chen's second test slides againChen's second test slides again
Chen's second test slides againHima Challa
 
A simple test paper from Chen
A simple test paper from ChenA simple test paper from Chen
A simple test paper from Chentechweb08
 
Chen's second test slides
Chen's second test slidesChen's second test slides
Chen's second test slidesHima Challa
 
A simple test paper from Chen
A simple test paper from ChenA simple test paper from Chen
A simple test paper from Chentechweb08
 
A simple test paper from Chen
A simple test paper from ChenA simple test paper from Chen
A simple test paper from Chentechweb08
 
CMGT 410 Week 1 Project Plan DraftA project plan is a docume.docx
CMGT 410 Week 1 Project Plan DraftA project plan is a docume.docxCMGT 410 Week 1 Project Plan DraftA project plan is a docume.docx
CMGT 410 Week 1 Project Plan DraftA project plan is a docume.docxmary772
 
Planning and writing your documents - Software documentation
Planning and writing your documents - Software documentationPlanning and writing your documents - Software documentation
Planning and writing your documents - Software documentationRa'Fat Al-Msie'deen
 
Software engineering
Software engineeringSoftware engineering
Software engineeringsweetysweety8
 
CMGT 410 HOMEWORK Education Planning--cmgt410homework.com
CMGT 410 HOMEWORK Education Planning--cmgt410homework.comCMGT 410 HOMEWORK Education Planning--cmgt410homework.com
CMGT 410 HOMEWORK Education Planning--cmgt410homework.comcampfort8
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)FarjanaAhmed3
 
Software Engineering Basics.pdf
Software Engineering Basics.pdfSoftware Engineering Basics.pdf
Software Engineering Basics.pdfPriyajit Sen
 
Introduction to Agile Software Development & Python
Introduction to Agile Software Development & PythonIntroduction to Agile Software Development & Python
Introduction to Agile Software Development & PythonTharindu Weerasinghe
 
Software Engineering in a Quick and Easy way - v1.pdf
Software Engineering in a Quick and Easy way - v1.pdfSoftware Engineering in a Quick and Easy way - v1.pdf
Software Engineering in a Quick and Easy way - v1.pdfKAJAL MANDAL
 
Cmgt 410(new) Inspiring Innovation--tutorialrank.com
Cmgt 410(new) Inspiring Innovation--tutorialrank.comCmgt 410(new) Inspiring Innovation--tutorialrank.com
Cmgt 410(new) Inspiring Innovation--tutorialrank.comPrescottLunt376
 
(Fall2016)Lecture1.pptx
(Fall2016)Lecture1.pptx(Fall2016)Lecture1.pptx
(Fall2016)Lecture1.pptxgarkapifye
 

Similar to Project demonstrates software engineering process (20)

IT 700 Final Project Guidelines and RubricOverviewAs the fin.docx
IT 700 Final Project Guidelines and RubricOverviewAs the fin.docxIT 700 Final Project Guidelines and RubricOverviewAs the fin.docx
IT 700 Final Project Guidelines and RubricOverviewAs the fin.docx
 
Chen's second test slides again
Chen's second test slides againChen's second test slides again
Chen's second test slides again
 
A simple test paper from Chen
A simple test paper from ChenA simple test paper from Chen
A simple test paper from Chen
 
Chen's second test slides
Chen's second test slidesChen's second test slides
Chen's second test slides
 
A simple test paper from Chen
A simple test paper from ChenA simple test paper from Chen
A simple test paper from Chen
 
A simple test paper from Chen
A simple test paper from ChenA simple test paper from Chen
A simple test paper from Chen
 
CMGT 410 Week 1 Project Plan DraftA project plan is a docume.docx
CMGT 410 Week 1 Project Plan DraftA project plan is a docume.docxCMGT 410 Week 1 Project Plan DraftA project plan is a docume.docx
CMGT 410 Week 1 Project Plan DraftA project plan is a docume.docx
 
Planning and writing your documents - Software documentation
Planning and writing your documents - Software documentationPlanning and writing your documents - Software documentation
Planning and writing your documents - Software documentation
 
Ch05
Ch05Ch05
Ch05
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
CMGT 410 HOMEWORK Education Planning--cmgt410homework.com
CMGT 410 HOMEWORK Education Planning--cmgt410homework.comCMGT 410 HOMEWORK Education Planning--cmgt410homework.com
CMGT 410 HOMEWORK Education Planning--cmgt410homework.com
 
Unit 1 OOSE
Unit 1 OOSEUnit 1 OOSE
Unit 1 OOSE
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
 
Software Engineering Basics.pdf
Software Engineering Basics.pdfSoftware Engineering Basics.pdf
Software Engineering Basics.pdf
 
Poor Man's Kanban
Poor Man's KanbanPoor Man's Kanban
Poor Man's Kanban
 
Introduction to Agile Software Development & Python
Introduction to Agile Software Development & PythonIntroduction to Agile Software Development & Python
Introduction to Agile Software Development & Python
 
Project Scheduling
Project SchedulingProject Scheduling
Project Scheduling
 
Software Engineering in a Quick and Easy way - v1.pdf
Software Engineering in a Quick and Easy way - v1.pdfSoftware Engineering in a Quick and Easy way - v1.pdf
Software Engineering in a Quick and Easy way - v1.pdf
 
Cmgt 410(new) Inspiring Innovation--tutorialrank.com
Cmgt 410(new) Inspiring Innovation--tutorialrank.comCmgt 410(new) Inspiring Innovation--tutorialrank.com
Cmgt 410(new) Inspiring Innovation--tutorialrank.com
 
(Fall2016)Lecture1.pptx
(Fall2016)Lecture1.pptx(Fall2016)Lecture1.pptx
(Fall2016)Lecture1.pptx
 

More from jkmaster

Measures location
Measures locationMeasures location
Measures locationjkmaster
 
Measures dispersion
Measures dispersionMeasures dispersion
Measures dispersionjkmaster
 
Knowledge based systems -- introduction
Knowledge based systems -- introductionKnowledge based systems -- introduction
Knowledge based systems -- introductionjkmaster
 
06 organisational behaviour txt
06 organisational behaviour txt06 organisational behaviour txt
06 organisational behaviour txtjkmaster
 
05 economic principles txt
05 economic principles txt05 economic principles txt
05 economic principles txtjkmaster
 
The internal audit¡¯s role in the core stakeholder corporate governance
The internal audit¡¯s role in the core stakeholder corporate governanceThe internal audit¡¯s role in the core stakeholder corporate governance
The internal audit¡¯s role in the core stakeholder corporate governancejkmaster
 

More from jkmaster (6)

Measures location
Measures locationMeasures location
Measures location
 
Measures dispersion
Measures dispersionMeasures dispersion
Measures dispersion
 
Knowledge based systems -- introduction
Knowledge based systems -- introductionKnowledge based systems -- introduction
Knowledge based systems -- introduction
 
06 organisational behaviour txt
06 organisational behaviour txt06 organisational behaviour txt
06 organisational behaviour txt
 
05 economic principles txt
05 economic principles txt05 economic principles txt
05 economic principles txt
 
The internal audit¡¯s role in the core stakeholder corporate governance
The internal audit¡¯s role in the core stakeholder corporate governanceThe internal audit¡¯s role in the core stakeholder corporate governance
The internal audit¡¯s role in the core stakeholder corporate governance
 

Recently uploaded

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 

Recently uploaded (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

Project demonstrates software engineering process

  • 1. Chapter 16: The project Chapter 16: The project Introduction For this unit you are expected to undertake an individual software- engineering project and to submit a project report to London. You should take some care in selecting a project topic and preparing for this substantial task. To achieve good results in this unit you will need to devote substantial time to this project and ensure that you work on your project consistently over the year. In past years some students have failed their project because they started work on it too late or failed to keep work up throughout the year. There is no way that you can ‘rush’ the project at the last moment. You should also understand that the idea of the project is to demonstrate an understanding of the software engineering process and professional practices. It is not intended to be about producing computer programs for their own sake. In fact, you are not required to deliver a fully running computer program with your project. The crucial part of your project is the description of the development process which is a model-based task. You are merely required to implement parts of your system in order to demonstrate that the design you have created can actually be translated into program code, and to undertake some testing of the crucial parts. The time you devote to your project will be of benefit to you when it comes to sitting the examination. The experience of developing your own project will show through in the examination, and will provide you with important examples of how systems development works in practice. You will know what you are talking about. Indeed the problems, frustrations, moments of breakthrough, difficulties and joy you will feel undertaking this work are the same as those experienced by software engineers in their daily work. In a section below, I provide some ideas of possible projects that you might like to consider. You are, however, encouraged to develop your own project idea for small and medium scale software systems. In general, you should understand that we are looking for a system that allows you to carry out a software engineering process which leads to a model of a complete system. At the end of the project these models should be capable of being easily developed as software code. This should also include some small coded elements of the significant parts of the project – for example to demonstrate and test how a crucial algorithm is performed. Students coming to this unit are expected to have some experience of various package environments including databases and spreadsheets. You are also expected to have a general understanding of programming and some programming skills (through the units Elements of information and communication technologies and/or Introduction to Programming). While you will probably undertake some programming, and so develop these skills, you should understand that the main emphasis of this unit is not to teach you more programming, but rather to concentrate on the intellectual work that leads up to and surrounds the coding activity. Details on how to submit the project and the date by which the entire project must be in London are given in the booklet Completing and submitting coursework and projects which all students taking this unit 113
  • 2. Software engineering: theory and application should receive. This booklet is revised each year, and you should make sure that you have the most recent edition. The booklet contains the exact deadlines for each year, the forms required to accompany your project and details of how to submit the project. Overview The project, which counts for 40 per cent of the final mark, is intended to: • take you through the process of developing a sophisticated piece of software, tackling a realistic problem • provide practical demonstrations of the key issues discussed in the subject guide. It is when doing the project that you will come to realise the importance of good requirements analysis and design, the benefits of setting up a proper testing process and the problems of keeping to deadlines and managing projects • be an enjoyable experience where you can make the mistakes that you will learn from. In order to complete the project you are required to produce a number of documents. It is very important that you maintain coherence between the documents you create. In addition to these documents, you are expected to write a final project report. The main section of the final project report provides a summary of the lessons you learned, what went well and what you would do differently next time. You should note that the focus of the project is not on the system produced, but on the quality of the process undertaken, the coherence of the documents presented, and how successful the documents would be in developing a software system. One way to think of the project is as an attempt to produce a set of documents which could be sent to an outsourcing company to ask them to produce a system for you. Your aim is to produce a set of documents which would enable the outsourcer to understand what was needed, and go ahead and produce the complete software system. The project as a development process The aim of the project is to give you the experience of the processes and practices of software engineering. As such, we intend you to undertake the process of analysing and designing a software product, and submit to us the documents you used in this process. This means that the documents should be the practical documents you would use to develop the system. Before you hand in your project, you could of course go back over your individual documents again and edit them. However, although you could go back and change, for example, an initial system requirement so that they match exactly (and surprisingly) your final design, this is not what the examiners are looking for. We are much more interested in how you progressed through the various stages of your project than in the final result. In the past many students have achieved a poor mark in their project, because they have paid too much attention to one part of the process (usually coding the software) and far too little attention to the coherence of their development process overall. A project that has many problems throughout its development process may be rated as highly as one where everything went well. What is important is that the project documents 114
  • 3. Chapter 16: The project demonstrate how problems faced were addressed. Examiners are much more interested in seeing a genuine learning effort that uses the methods and techniques of software engineering than a running system. Remember that even professionally produced software regularly fails – we are looking for the professional approach to software design. Examiners would be happy to see a page in the later stages of design which said something like ‘The initial user requirement for XYZ was unachievable as it conflicted with the other requirement for ABC. It is therefore decided that XYZ is to be dropped from the design.’ This is the kind of thing seen in real software engineering projects all the time, so why should your project be any different? When you write and edit your project, remember Brook’s comment (1995): ‘Most documentation fails in giving too little overview; the trees are described, the bark and leaves are commented, but there is no map of the forest. To write a useful prose description, stand way back and come in slowly’. It is essential that your documents form a coherent project in which the examiners can see how the individual development stages have been carried out and how they relate to the previous and the following stages. Finally, remember we are very unlikely to reward the ‘software hacker’ who works through the night to come up with a wonderful piece of software without bothering to undertake requirements analysis or design properly, by faking the testing, and by ignoring proper planning. Yes, this person might produce something which looks impressive, but do not expect marks for producing a system in a way that does not take into account requirements, and which is likely to be unreliable and dangerous. Choosing your development tool You are encouraged to make use of development tools in your project; however, this is not a formal requirement so do not feel you have to. You may want to use modelling tools, design tools etc. In addition you will need to produce small amounts of software to demonstrate how aspects of the design will operate. For this you may either want to choose a programming language, like for example Pascal, Visual Basic, C++ or Delphi. Alternatively, you may want to choose a spreadsheet or database package. Although programming languages offer the greatest flexibility, some application areas may be best suited to, for example, a database package. Your choice should depend on the kind of application you are designing and the development tool you have access to. If you choose the object- oriented development approach for your project you will probably want to use an object-oriented language to undertake any coding. Although the project does not require you to write the program code for a fully running system, you will have to do some programming of some of the important parts. It is essential that you start to acquire the necessary programming skills as soon as possible. The unit Elements of information and communication technologies and possibly Introduction to programming has given you an introduction to the component parts of a program. You should be able to use these concepts within the programming language you have chosen. You are not expected to write the code for a fully running and complete system. You must, however, deliver sufficient coding to demonstrate how a small number of complex elements of your design can be translated into code. As such you are only expected to produce programming stubs rather than a complete system. 115
  • 4. Software engineering: theory and application A programming stub is a small section of code which a developer uses to demonstrate a principle or idea, and to test that it works. A programming stub might implement a single Class, or even just one of a class’s methods, if that method undertakes complex processing (for example an Order class might have a method GetPrice() which calculates the prices by processing a range of inputs. You could produce a programme stub to test that you understand how this would work, and that your design is correct). This is not the same as pseudocode as a programming stub must be written in a programming language so that it can be tested. They are usually pretty short (at most a couple of pages in length) and implement the most difficult parts of the system (so the developer can test and verify the important parts of the system before we waste time on the easy parts). It is also usual to develop some kind of interface to interact with the programming stub (for example a way of reading a file of attributes, of calling the program stub with these attributes, and of displaying or saving the returned parameters). Examples of other things you might implement are: • some user interface screens, since these may be needed to produce your user manual • if you use a database you will need to provide most of the database schema • if you are using data files you will need to describe their format. Additionally, you should remember that it is very important that you explain any programming stubs etc. you provide. They should be written with sensible variable names, and plenty of comments in the code. You should describe how they would be used within the complete system, and how they relate to the design activity. Finally, you should provide details of what components require further implementation. You are required to provide a printed copy of the source code you produce as an appendix to your project. In addition, you should submit a disk containing executable versions of the parts of the system which have been coded. These do not necessarily need a user interface (you could just ask for input from the command line, or by reading a file), but must be relatively easy for the examiner to try. Those students who are very keen to implement a complete system rather than just programming stubs can do so. Such students should however remember that only a small proportion of the marks is allocated for the programming component of the project, and therefore it is not likely to drastically improve their marks and could damage their marks by diverting their attention from the important tasks. Reuse Reuse is an important part of software development, and you are encouraged to reuse code or models and patterns, and auto-generated code, to aid you in your development of the programming stubs. However, to avoid charges of plagiarism you must make it clear which elements of your project constitute reuse. All that we ask is that you indicate to us the pieces of code that you did not write (or alternatively highlight the pieces you did) and tell us where the code you are reusing came from (by referencing its source). You should do this on the source- code that you submit as part of your report; for example, why not put all your own code in bold or italic, or you could put comments into the code where the auto-generated or reused part starts and ends. This allows you to 116
  • 5. Chapter 16: The project download small sections of code from the Internet and use them as long as you highlight to us that you are reusing the code. If you fail to do this you could be accused of plagiarism (cheating), rather than being rewarded for taking advantage of reuse. Suggested projects You are expected to choose your own project to work on. A suitable project will probably have most of the following characteristics: It will: • handle some real world data of non-trivial complexity • require a user-interface tailored to some defined user (who should not be you) • undertake some processing/calculation/selection on the data it contains. Conceptually a project does not have to be very big to present a real challenge – as the examples below show, a database type application tailored to some particular domain is a good starting point. Projects that do not contain a substantial software analysis and design component are not suitable. For example developing a computer game is not appropriate as it does not have specific user requirements (other than perhaps being enjoyable for users!). When choosing a topic, remember that you need a project that will enable you to demonstrate your understanding of the whole software engineering process. Below is a list of projects you may choose from if you wish: A personal data management system This would consist of a small database management system used to record personal information such as details of records and books, information about recipes and so on. There may be a diversity of information recorded, and the system should be easily used by people without a computer background. A photograph library sales system This records and retrieves information about photographs in a library and the worldwide sales of these photographs. It should support keyword classification and retrieval requests for different types of photographs. It should maintain details of fees received and due for each photograph that is published. Again, the system should be designed for use by people who are not familiar with computing aspects. An online recipe and meal planner This could compute the overall nutritional value of a meal, summarise the necessary ingredients, and estimate costs. It might also be able to suggest a meal given ‘I want to use up this corned beef’ or ‘I’m out of eggs and lettuce’. A personal organiser for a university lecturer This would schedule the lecturer’s teaching, send reminders when necessary (possibly through an e-mail system), perhaps co-ordinate with other lecturers’ (or even students’) calendars for scheduling meetings, and so on. Printing parts of the calendar on demand is a must. Questions that such an organiser should be able to answer include ‘What’s up for today?’ 117
  • 6. Software engineering: theory and application or ‘Let’s see next week at a glance’ or ‘What in the world was I doing last Tuesday?’ or ‘On what day of the week for the next four weeks is there an hour free starting at 10:00?’. A terminal reservation system for a computer terminal room This would be an automated sign-up sheet for a collection of terminals (and possibly other resources). People should be able to express preferences for various times. The system should include facilities for administrators to collect and print statistics on usage as well as a scheduling algorithm to ensure fair distribution of resources among users. It should be easy to change the scheduling algorithm. (Ignore the fact that you need to use a terminal to sign up for a terminal. For example, assume that one is reserved for this purpose.) An online holiday planning system for a busy department This allows staff to choose and book when they are on holiday. It might also need details such as who is taking over the person on holiday’s work, where they can be contacted etc, and maybe make sure that important people are not off at the same time. An online system for managing bookings This might be for a cruise liner or railway. Deliverables The deliverables are split into three sections. The first section involves planning how you will approach the software engineering project. The second section contains all the documents you produce in undertaking the project (the models etc). The third section asks you to assess your project critically, and reflect on the learning it has given you. Deliverables section 1: project description and planning This section is an important task as you need to ensure that you can complete all the necessary documents on time. You should not take it lightly, and should use project management techniques to help you plan. You should ensure that you produce a timetable for undertaking the project, including plenty of contingency time should things go wrong and including time off, holidays etc. It is important that you balance the demands of this project with the need to study the subject and relax. Remember that the project accounts for 40 per cent of your mark, and should therefore constitute no more than 40 per cent of the time you put to study software engineering. The project can expand to fill the time available, so make sure you limit this by planning your activity well and sticking to your timetable. Indeed, it is better to decide to cut your project down (for example by ignoring certain requirements) so that you can finish it than to hand in a half-completed project. If you need to do this you must explain why you took this decision in your document. It is essential that you stick to your timetable in order to avoid severe time pressure towards the end of the project and to get maximum benefit from the project. Remember that you will be marked on the entire development process and not only on the end product. If you start your project too late 118
  • 7. Chapter 16: The project you will not have enough time to carry out all the stages that are part of software development. In no less than two pages you should summarise the project you propose to work on: • Give your system a name. • Describe what the system will do and who its users will be. What needs will your system satisfy? How will it help the users? • Outline the most important features of your system. • Describe the physical environment in which your system will be used including any other systems with which the new system will interface. • Are there any important performance goals for your system: time or space efficiency, security or reliability? On another two to three pages you should describe the software engineering process you intend to employ, and how this is relevant to the system you describe: • Outline the basic principle of the chosen approach (including references to relevant literature on this approach). You should also establish the software development paradigm you have chosen (i.e. structured or object-oriented). • Discuss why this process is suited to the problem previously described. • Provide a very detailed timetable for the activity you are going to undertake and a detailed plan of the documents you will be providing and how they will address the need for requirements analysis, design and elaboration, approaches to implementation, documentation of the system, and testing. You can use diagrams such as Gannt charts for this if you wish. • Consider any problems you might envisage encountering and how you intend to manage such risk. You can also use this section to plan how you will manage the development project and keep to your timetable. Deliverables section 2: the software engineering practice documents In the next section of your project you must provide documents which outline how the software engineering process was undertaken in terms of analysing the user’s requirements, undertaking design, elaborating that design, approaching implementation, documenting the system and undertaking testing. The format for this section depends on the software engineering processes you have decided to follow (as detailed in section 1). Examples of the documents you might produce for different software engineering processes: Pressman chapter 2 provides a good description of various software development processes and the types of documents which might be produced. Below we provide examples of the different sections which might be produced for projects following different development processes. 119
  • 8. Software engineering: theory and application For a project following the software development lifecycle the contents of the section may look like this: 1. Requirements analysis. (a) Introduction. (b) Functional requirements and conceptual model. (c) Non-functional requirements. (d) Hardware. 2. Detailed requirements analysis. 3. Design. 4. User manual and maintenance manual. 5. Coding of key algorithms and database schema. 6. Testing document. In contrast, a student trying to follow the Rapid Application Development approach (clearly without the team working elements) might have a document of this form (or similar): 1. Cycle 1 (a) Business modelling. (b) Data modelling. (c) Process modelling. (d) Stub application generation using Visual Basic. (e) Testing and turnover. 2. Cycle 2 (a) Further business modelling using feedback. (b) Further data modelling. (c) Further process modelling. (d) Application elaboration and changes. (e) Testing and turnover. 3. Cycle 3 4. User manual of the final system. Finally, a project which is following the spiral model might have the following sections (or similar): 1. Spiral 1 (a) Customer communication. (b) Planning documents – construction of task sets. (c) Risk analysis. (d) Engineering (including analysis and design) of tasks. (e) Construction and release of algorithms central to the problem and considered of high risk. Construction and release of prototype user interface. (f) Requirements planning. 2. Spiral 2 (a) Risk analysis. (b) Prototype 2 construction (including simulations of a small user interface). (c) Detailed requirements and requirements validation. (d) Development planning. 120
  • 9. Chapter 16: The project 3. Spiral 3 (a) Risk analysis. (b) Prototype 3 construction (including simulation and benchmarking of core algorithms). (c) Design of the complete software product. (d) Validation of the design. (e) Test planning. 4. Spiral 4 (a) Risk analysis. (b) Further design activity to elaborate section 3(c). (c) Implementation of core algorithm code. (d) Unit testing. (e) Acceptance testing. 5. User documentation of system. Note that just because some of these projects have many more sections, it does not mean that they should be longer in length, nor involve more work. You should also try to avoid unnecessary repetition in your documents. For example you do not need to include every test case you undertook. Note that each of these examples differs in some way from the way textbooks describe the processes. This is expected as it is unlikely that a project that is undertaken by one developer who has little experience will precisely follow a formal software development project. You should decide which sections you need. Whatever form your documents take, they must include descriptions of how you undertook the following activities: You must document how you captured requirements and turned these into design This should include some description of the need for the system and place the system into context, briefly describing its functions and presenting a rationale for the software system. Functional requirements – the conceptual model Your documents should describe the functions that the system will perform (i.e. it should present the conceptual model of the requirements of your system). This means that you will have to model your functional requirements applying (for example) levelled data flow diagrams, entity- relationship diagrams if you are following the structured approach, and you will have to produce use-case diagrams and class diagrams if you opt for object orientation. It is very important that you document your modelling processes very carefully. You are expected to explain how they support the further analysis of your particular problem domain. However, keep in mind that you are not supposed to give an explanation of how exactly certain modelling techniques such as, for example, data flow diagrams work. Non-functional requirements You should state all non-functional requirements, such as technical constraints or security requirements, your system might have. 121
  • 10. Software engineering: theory and application Hardware If the system is to be implemented on special hardware, this hardware and its interfaces should be described. If off-the-shelf hardware is to be used, the minimal and optimal configuration on which the system may execute should be set out here. You must document how you approach the design of the system You must outline the top level decisions you have made, and how these decisions were broken down into components, how these components are linked, etc. The overall design within structural software development, for example, is concerned with determining the modules and how the modules are linked and interact with each other. For this purpose you would have to apply structured design and create structure charts from your data flow diagrams. The overall design within an object-oriented approach requires you to model interaction and object behaviour using sequence diagrams and statecharts. After this you will need to describe how you elaborated these designs, adding sufficient detail to them so that it can be used as a reference from which any competent software engineer can produce code, set up the testing process, and write a user manual and a system maintenance guide. The detailed design should include answers to all of the questions for as many levels as possible. The detailed design within structured development, for example, will have to provide the details of the algorithms used within the individual modules. The detailed design within an object-oriented approach involves the exact definition of classes (with their attributes and operations) and the messages sent between objects. You may want to use pseudocode (an outline of programming code) in order to represent the details required within detailed design. During the design process you should focus on the parts of the design that are essential to producing a core system. You only need to outline the extensions to a more complete system. Also, do not waste time and energy repeating the details for parts that have a similar structure. Instead you should give one design example and explain which parts (and why) follow the same or a similar design pattern. One of your major goals is to develop a model that is complete by the deadline. This is not expected to be the full system. It is essential that you review the entire design process to ensure that everything has been covered, that the parts of the documents hang together, and that the design can be related to the requirements. The user manual This document should be a self-contained description of how to use your system. A user manual should be a polished, professional piece of technical prose that a software company is proud to have accompanying one of their products. (Also, it is a handy accomplishment to show off at job interviews.) The document should have a structure that is evident both to someone reading it straight through and to someone looking for a particular topic or fact. A table of contents is required, and the organisation it reflects should be considered carefully. An index and appendices might also be helpful. 122
  • 11. Chapter 16: The project Remember, the document should be completely self-explanatory. Do not assume the reader has seen your functional specification. You may, of course, edit in sections of prose from your previous documents. Do not discuss any implementation unless it directly affects the user’s interface to the system. Your document ought to cover the list of topics below. The exact order in which you present material and whether certain topics are combined should be dictated by your particular project and your own style of writing. • Introduction: a concise statement of what your program does, possibly including motivation and philosophy. • How to use your system: an overall description of the style of user interaction, device constraints, and any arbitrary design choices you made that the user ought to know about. • Detailed system operations: an organised list of all the user commands and when they are appropriate. Some examples (preferably with screenshots) might be helpful. Also, it is often appropriate to divide the user manual into a novice section and an expert section. • Error recognition and handling: what are the errors that might occur, and how can they be handled? • An extended example: show exactly what the user may have to type or what buttons he might have to press (and why) and how the system responds (and why). • A list of known ‘features’ and deficiencies: everyone complains about how cryptic current computer manuals are. This is your chance to show us what a good manual looks like. Outline of the programming stubs/examples you have produced as part of your design activity You do not need to implement the complete software; however, you do need to produce some of the key algorithms – for example, you may need to implement a couple of classes or models to demonstrate how they would be achieved. These should be included in your documents along with a description of what they are for and how they work. You should also highlight any code-reuse, and ensure that the code is commented and consistent with the design and requirements. A description of the testing you undertook as part of the software engineering process Testing is an important part of a software project. Testing needs to accommodate both system verification and validation. The software team must carefully plan the different testing stages, develop a schedule of when they are to be carried out, design the test cases that are needed and eventually collect and evaluate the test results. Accordingly, the software team must document the order in which modules or classes are to be integrated and the order in which the individual modules or classes are to be tested in isolation. Testing and debugging methods must also be agreed upon, documented, and eventually carried out. The purpose of a testing document is to convince the management (in this case, the examiners) that a feasible testing approach has been designed and undertaken. You are expected to schedule several stages of your tests. Scheduling is required for unit testing, integration testing, and validation 123
  • 12. Software engineering: theory and application testing. You should note that the schedule of testing, and the tests undertaken, will vary depending on the software development process you have chosen. In documenting your testing you should include an introductory section that summarises how testing was undertaken. This should include a description of how testing was planned and undertaken in detail. Remember that this description is intended for several audiences. The document should be organised so that it is easy to find schedule summaries and monitoring plans. Your description of the testing should contain the following components: • a statement of the objectives and success criteria • an integration plan • a plan of the testing techniques and test cases used • a testing schedule • a summary of the test results and debugging procedures applied. These components are described in more detail below. Objectives and success criteria The testing document should contain a statement of the overall testing objectives and the objectives of the individual tests that are planned. Integration plan It is important to decide the order in which modules or classes are to be combined and therefore the order in which they will be tested individually. You must plan for individual module tests, the combination of modules during integration testing, and a validation test that tests the functionality of your system. The testing document should describe and justify your integration method. The ‘big bang’ method of integration is not acceptable, but many variants or combinations of top down and bottom up integration (or an appropriate alternative within an object-oriented approach) are acceptable if convincingly defended. Testing techniques and test cases You should design a plan to test all of the modules (or classes) of your system. Your testing document should state what kind of testing technique is applied to test the components of your system, and it should explain why a particular technique has been chosen. It is very important that you establish the test cases you will use. Keep in mind that a test case includes the test input and the expected output against which the actual test output will be compared. You do not need to carry out your tests for all components. However, you will want to employ some basic testing techniques to test the main algorithms within your system (those implemented as programming stubs). The purpose of this is that you demonstrate that you are able to select and employ some relevant testing techniques. Schedule The testing document should provide a schedule describing the dates of the different tests to be carried out within your chosen software engineering process. First, determine an order in which to perform integration and validation (functional) tests. This order should be used to determine the 124
  • 13. Chapter 16: The project order in which the individual modules (components) are to be tested. Determine the dates by which tests are to be completed. Finally, you must define a monitoring procedure to ensure that tests are designed and carried out on schedule. There must also be a procedure for reporting and correcting bugs. Note that if you are following a evolutionary approach your schedule may include many cycles of activity. Test results and debugging procedures Finally, you should interpret the outcome of your tests and report on the errors that have been found and the action taken to locate and correct them. Deliverables section 3: the final project report The purpose of the final report is to give an overview and evaluation of your entire project. This is an important document for the markers as it is used to evaluate what you have learnt from your project and from the process you have chosen. The document should be around two pages long. The document provides an opportunity to step back and put things in perspective and appreciate how much you have accomplished. In your report you should cover the following issues. • What changed: You should discuss how well your project satisfied the users. Did it do what they wanted? What did you leave out and why? • The software process: Were you satisfied with the chosen approach? What problems did you encounter? Where did you break from the usual approach to the process? • Developing the system: Do you think your document could really be used to develop a software system? What is missing? What is going to be difficult for someone to follow? Note you will not lose marks for highlighting problems with your system. • Management: Compare the actual time spent on the project with your predicted times. Have your learned anything that will help you make better predictions next time? • Lessons learnt: Here you should list the things you have learnt from doing the project. • Final comments: If there is anything that you really want to get off your chest about the way you did the project that would be valuable for other students, you should put them into this section. Finally, on a separate set of pages you should include the following: • Bibliography: You should list the books and papers which you used to help you develop your system. These should not be the standard textbooks and can include manuals, web sites and journal articles. • Software used: List the software you used in developing your system. 125
  • 14. Software engineering: theory and application Marking the project: In marking the project the examiners will be looking explicitly for the following main elements: 1. The completeness and correctness of the report (around 50 per cent of the marks). In particular, they will ensure that you have chosen a relevant process, that you have followed your outlined process well with requirements being captured, design undertaken, the design elaborated, a user manual being written, a small amount of relevant programming stubs being produced which reflect the design, and that relevant and appropriate testing was undertaken. A project which is problematic can gain some marks for correctness by reflecting on the problems in the final report. 2. The coherence and structure of the report (around 30 per cent of the marks). Examiners will give marks on how coherent the development paradigm and process are, how well they are followed, and that the project holds together as a complete system. For example, marks will be lost if the data structures in the coding stubs are not related to the initial designs, ER diagrams or Class diagrams. 3. Sophistication (around 20 per cent). Examiners will award some marks for how sophisticated the project is – this is not simply in terms of how complex the problem addressed is, but also how sophisticated the process is, how well the techniques are applied and how well the document is written and presented. 126