You are on page 1of 4

Name : Myo Thi Ha

Roll Number : EMCS – 981


Assignment : COMP 612 - Assignment 1
1. (a) Software engineering is an engineering discipline that is concerned with all
aspects of software production from the early stages of system specification to
maintaining the system after it has gone into use. Why it is important?

(b) Explain why system testing cost are particularly high for generic software
products which are sold to a very wide market.

 (c) Software engineering in the 21st century faces three key challenges:

 The legacy challenge  


 The heterogeneity challenge  
 The delivery challenge  

Discuss these challenges in detail and give your suggestions to face these.  

Answer:

1. (a)
Software engineering is an engineering discipline that is concerned with all aspects
of software production from the early stages of system specification to maintaining
the system after it has gone into use. Software engineering is important because it
enables us to build complex systems in a timely manner and with high quality.

Application programs from early years of computerization were quite small. They
are written by one person. Present-day programs are often very large and are being
developed by teams. The programmers are not the future users of the system they
develop and they have no expert knowledge of the application area. Many
programmers had not been formally educated in related field and they had learned
by doing. Software was often too late. Programs did not behave as the user
expected and many errors were detected after the software had been delivered to
the customer. This became known as the ‘software crisis’.

Software engineering is criticized as inadequate for modern software development.


Software engineering techniques help us to build larger, more complex systems,
the demands change. System have to be built and delivered more quickly, larger
even more complex systems are required. Many companies do not use software
engineering is often more expensive and less reliable than it should be. Early
experience in building these systems show that informal software development was
unreliable, difficult to maintain and performed poor.

So software engineering is important to get avoid software crisis, reliable, easy to


maintain, high quality and get in time for software development.

1 (b) When developing custom software, the developers will either know
specifically, or have an idea of what hardware systems will be running, as the
customer who is dictating how the software works will consult with the developers
regularly. Generic software has no specific customer, and thus must be made for
systems in a wide variety of configurations. Due to this, will never know what
configuration of systems the software will run on, and to determine minimum and
recommended requirements, a vast number of systems in drastically different
configurations must be tested in order to specifically determine which components
are necessary, and which components give significant boosts to performance.

A Generic software by definition should work across many different


systems. That's why it's call a Generic piece of software. Therefore, to have in
depth tests, one must test the software on as many different systems as possible.
Even if a piece of software is designed to run on windows, it needs to be tested on
different windows platform such as Windows 7, Windows 8, Windows 10, etc..
Then there's also different hardware systems. If it's a graphic intensive program it'll
have to be testing with many different graphic cards. If it's processor intensive you
would want to make sure that it runs efficiently on all of the latest and even not-so-
latest processors from AMD and Intel. Those are just a few examples.

One other thing is that you would want to test the user interface. if it's going
to be sold to a wide market, then you need to make sure everyone will be able to
use the software easily. Just because a program is easy for a computer guru doesn't
mean it's going to be easy for a novice. If it's a new version of an old program you
need to make sure both the users of the old software, and brand new users know
how to use it.

For long-lifetime software systems that may be used for 10 years or more,
these costs are likely to exceed the development costs. Products are usually
developed from an outline specification using an evolutionary development
approach. Specification costs are relatively low. However, because they are
intended for use on a range of different configurations, they must be extensively
tested. In figure shows the type of cost profile that might be expected for these
products.

So system testing cost are particularly high for generic software products which are
sold to a very wide market.

1. (c)

The legacy challenge


- the challenge of maintaining & updating legacy software in such a way that
excessive costs are avoided and essential business services continue to be
delivered.
- The majority of software systems which are in use today was developed many
years ago yet they perform critical business functions. The legacy challenge is the
challenge of maintaining and updating this software in such a way that excessive
costs are avoided and essential business services continue to be delivered.

The heterogeneity challenge  

- the challenge of developing techniques to build dependable software which is


flexible enough to cope with different types of computer & support systems
- Increasingly, systems are required to operate as distributed systems across
networks that include different types of computer and with different kinds of
support systems. It is often necessary to integrate new software with older legacy
systems written in different programming languages. The heterogeneity challenge
is the challenge of developing techniques to build dependable software which is
flexible enough to cope with this heterogeneity.
The delivery challenge  

- the challenge of shortening delivery times for large & complex system without
compromising system quality.
- Many traditional software engineering techniques are time-consuming. The time
they take is required to achieve software quality. However, businesses today must
be responsive and change very rapidly. Their supporting software must change
equally rapidly. The delivery challenge is the challenge of shortening delivery
times for large and complex systems without compromising system quality.

When we face these challenges, I would like to suggest these things:


- We will need new tools and techniques as well as innovative ways of combining
and using existing software engineering methods.
- Developing systems that are energy-efficient. This makes them more usable on
low power mobile devices and helps reduce the overall carbon footprint of IT
equipment.
- Developing validation techniques for simulation systems (which will be essential
in predicting the extent and planning for climate change).
- Developing systems for multicultural use
- Developing systems that can be adapted quickly to new business needs
- Designing systems for outsourced development
- Developing systems that are resistant to attack
- Developing systems that can be adapted and configured by end-users
- Finding ways of testing, validating and maintaining end-user developed systems.

You might also like