Student number: Student name:
Assignment 1 Unique number: 170227
Question 1 (15)
Briefly discuss why it is usually cheaper in the long run to use software engineering methods and
techniques for software systems.
It all comes down to the maintenance.
• Understand what needs to deliver – the design, requirements and architecture.
• Make sure the software is easy to use.
• Make software that performs its task.
• Maintain a piece of software developed months or years ago and usually by someone else, where
you will need all the documentation on that software like variable names, function / section
comments and legal ranges, which no one might have.
The aim is to write a program well enough that the maintenance is limited and cost are reduced.
Question 2 (15)
Based on your own knowledge of some of the application types discussed in section 1.1.2 of your study
guide. Explain using examples, why different application types require specialized software engineering
techniques to support their design and development?
Different application types require the use of different development techniques for a number of reasons:
a) Costs and frequency of change. Some systems (such as embedded systems in consumer devices) are
extremely expensive to change; others, must change frequently in response to changing requirements (e.g.
business systems). Systems which are very expensive to change need extensive upfront analysis to ensure
that the requirements are consistent and extensive validation to ensure that the system meets its
specification. This is not cost effective for systems that change very rapidly.
b) The most important ‘non-functional’ requirements. Different systems have different priorities for
non-functional requirements. For example, a real-time control system in an aircraft has safety as its
principal priority; an interactive game has responsiveness and usability as its priority. The techniques used
to achieve safety are not required for interactive gaming; the extensive UI design required for games is not
needed in safety-critical control systems.
c) The software lifetime and delivery schedule. Some software systems have a relatively short lifetime
(many web-based systems), others have a lifetime of tens of years (large command and control systems).
Some systems have to be delivered quickly if they are to be useful. The techniques used to develop short-
lifetime, rapid delivery systems (e.g. use of scripting languages, prototyping, etc.) are inappropriate for
long-lifetime systems which require techniques that allow for long-term support such as design modelling.
Question 3 [10] Why is it important to make a distinction between developing user requirements and
developing system requirements in system engineering process?
There is a fundamental difference between the user and the system requirements that mean they should
be considered separately.
Assignment 1 Unique number: 170227
Question 1 (15)
Briefly discuss why it is usually cheaper in the long run to use software engineering methods and
techniques for software systems.
It all comes down to the maintenance.
• Understand what needs to deliver – the design, requirements and architecture.
• Make sure the software is easy to use.
• Make software that performs its task.
• Maintain a piece of software developed months or years ago and usually by someone else, where
you will need all the documentation on that software like variable names, function / section
comments and legal ranges, which no one might have.
The aim is to write a program well enough that the maintenance is limited and cost are reduced.
Question 2 (15)
Based on your own knowledge of some of the application types discussed in section 1.1.2 of your study
guide. Explain using examples, why different application types require specialized software engineering
techniques to support their design and development?
Different application types require the use of different development techniques for a number of reasons:
a) Costs and frequency of change. Some systems (such as embedded systems in consumer devices) are
extremely expensive to change; others, must change frequently in response to changing requirements (e.g.
business systems). Systems which are very expensive to change need extensive upfront analysis to ensure
that the requirements are consistent and extensive validation to ensure that the system meets its
specification. This is not cost effective for systems that change very rapidly.
b) The most important ‘non-functional’ requirements. Different systems have different priorities for
non-functional requirements. For example, a real-time control system in an aircraft has safety as its
principal priority; an interactive game has responsiveness and usability as its priority. The techniques used
to achieve safety are not required for interactive gaming; the extensive UI design required for games is not
needed in safety-critical control systems.
c) The software lifetime and delivery schedule. Some software systems have a relatively short lifetime
(many web-based systems), others have a lifetime of tens of years (large command and control systems).
Some systems have to be delivered quickly if they are to be useful. The techniques used to develop short-
lifetime, rapid delivery systems (e.g. use of scripting languages, prototyping, etc.) are inappropriate for
long-lifetime systems which require techniques that allow for long-term support such as design modelling.
Question 3 [10] Why is it important to make a distinction between developing user requirements and
developing system requirements in system engineering process?
There is a fundamental difference between the user and the system requirements that mean they should
be considered separately.