You are on page 1of 11

Submitted by:

Name: Atif Javed


Roll no: 20101001-126
Program: BS (Software Engineering)
Subject: Software Engineering

Submitted to:
Instructor:
Muhammad Asif Sir

Note:
----------------------------------------------
-

Date:05/03/2021

Pg. 1
Introduction to software engineering

Q1. Explain why professional software is not just the programs that
are developed for a customer?
Ans: - Proficient programming isn't only the projects produced for a client in
light of the fact that the product is quite often bundled with related documentation
like necessities, plan models, and client manuals. A decent or expert programming
goes past programming grew exclusively for a client. It is typically made out of
executable code combined with documentation and setup of information that is
needed to cause these projects to work accurately. For instance, a word handling
framework comprise of executable program, client manual and the report, for
example, necessities and the plan expected to deliver the executable program.

Q2. What is the most important difference between generic software


product development and custom software development? What
might this mean in practice for users of generic software products?

Ans: - The fundamental distinction is that in conventional programming item


advancement, the detail is possessed by the item designer. For custom item
advancement, the determination is possessed and constrained by the client. The
ramifications of this are huge – the engineer can rapidly choose to change the
determination because of some outside change in any case, when the client claims
the particular, changes must be haggled between the client and the designer and
may have authoritative ramifications. For clients of conventional items, this
implies they have no influence over the product detail so can't handle the
development of the item.

Q3. What are the four important attributes that all professional
software should have? Suggest four other attributes that may
sometimes be significant.
Ans: - Four important attributes of professional software are:

Pg. 2
1. Maintainability

2. Dependability and security

3. Efficiency

4. Acceptability/Usability

Other attributes that are also significant are:

1. Response time (non-functional attribute)

2. Interactivity

3. Reliable

4. Evolution

Q4. Apart from the challenges of heterogeneity, business and social


change, and trust and security, identify other problems and
challenges that software engineering is likely to face in the 21st
century (Hint: think about the environment).

Ans: - In the 21st century, the software engineering may face key challenges.
Those are:

1. The legacy challenge:

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.

2. Competence:

Engineers should not misrepresent their level of competence. They should not
knowingly accept work which is outwitting their competence.

3. The delivery challenge:

The delivery challenge is the challenge of shortening delivery times for large and
complex systems without compromising system quality. Here supporting software
must change equally rapidly.

Pg. 3
Q5. Based on your own knowledge of some of the application types
discussed in (book section 1.1.2), explain, with examples, why
different application types require specialized software engineering
techniques to support their design and development.
Ans: - Different application types require the use of different development
techniques for a number of reasons:
1. Costs and frequency of change. Some systems are extremely expensive
to change; others, must change frequently in response to changing
requirements. 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.
2. 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.
3. The software lifetime and delivery schedule. Some software systems
have a relatively short lifetime, others have a lifetime of tens of years.
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.

Q6. Explain why there are fundamental ideas of software


engineering that apply to all types of software systems.
Ans: - Because of all software systems have common quality attributes, including
availability, modifiability, performance, security and safety, testability and
usability, the fundamental software ideas provide common solutions or tactics to
support those qualities.

Pg. 4
Q 7. Explain how the universal use of the Web has changed software
systems.
Ans: - In the beginning, the web had very few certain effects on software systems,
unlike we have it today.
These days, the high use of web-based software development has highly affected
the software industry. The points to show this are as given below:
•In place of monolithic development most of the applications are developed for
web users.
• The updating and maintenance of web-based software is easy. Changes made at
one place will affect globally.
• Software is developed in parts. One part is developed at one place and second is
developed at any other place. By using web, it becomes easy to collect all parts to
make a working application.

Q8. Discuss whether professional engineers should be certified in the


same way as doctors or lawyers.

Ans: - This argument is favor for certification of engineering professionals in the


same way that lawyers and doctors are certified. 

If a lawyer screws up in his work, some people might suffer financially or one
person can suffer physical damage. If a doctor screws up, probably his patients will
suffer physical damage and maybe financially as well. The same reasoning may be
applied for engineers also. For example, while consider about civil engineer, the
damage caused by a collapsed bridge or skyscraper is reason enough. But a lot of
other areas of engineering have this very high capacity for damage (both financial
and personal).

Advantages of certification for engineers:

 Certification make the field more competitive. The source of certification


can ensure that the software engineer is trusted.
 The public opinion of the engineering profession will be better when some
form of certification is in place
 Certification signals to the potential employers a minimum level of
competence and this make is easy for them to screen only engineers that
meet the minimum requirement.

Pg. 5
Q 9. For each of the clauses in the ACM/IEEE Code of Ethics shown
in Figure 1.3, suggest an appropriate example that illustrates that
clause.
Ans: -
 Public > An example of acting in the public's interest is not to share any
private information that the software engineer is privy to while working on a
project.
 Client and Employer > A good software engineer will not let the needs of
the client or the wants of the employer harm the public.
 Product > A good software engineer would not allow software to be released
that they know is faulty and will crash.
 Judgement > An example of using good judgement is, if a software engineer
is approached by a client that wants them to build software that causes
airplanes to crash, the software engineer knows that they must decline since
although that may be in the client's interest, it is not in the publics.
 Management > For example, Software engineering managers and leaders
will not encourage employees to slack off when they are aware there is a
deadline coming up.
 Profession > For example, software engineers will not accept payment for
inadequate software that they have admitted will not work as intended. This
would reflect badly on other software engineers.
 Colleagues > An example of following this clause would be a software
engineer not stealing their coworkers code without permission.
 Self > For example, a good software engineer will keep up with changes in
technology and encourage others to do the same.

Q10. To help counter terrorism, many countries are planning or


have developed computer systems that track large numbers of their
citizens and their actions. Clearly this has privacy implications.
Discuss the ethics of working on the development of this type of
system.

Ans: - To help counter terrorism, computer systems are being developed to track
large number of citizens and their actions. The ethics of working on the
development of such system are:

Pg. 6
• It affects the privacy of the citizens.

• Sometimes disturbs the work of some citizens as they lack privacy.

• Confidential information may be leaked out.

• Provides inconvenience to people.

• It helps in avoiding evil acts of terrorism

• Though it sometimes affects the confidentiality and privacy, it helps in providing


social security to the citizens.

Q11. Giving reasons for your answer based on the type of system
being developed, suggest the most appropriate generic software
process model that might be used as a basis for managing the
development of the following systems:

Ans: -

 A system to control anti-lock braking in a car:


This is a safety-critical
system so requires a lot of up-front analysis before implementation. It
certainly needs a plan-driven approach to development with the
requirements carefully analyzed. A waterfall model is therefore the most
appropriate approach to use, perhaps with formal transformations between
the different development stages.

 A virtual reality system to support software maintenance:


This is a
system where the requirements will change and there will be an extensive
user interface component. Incremental development with, perhaps, some UI
prototyping is the most appropriate model. An agile process may be used.

 A university accounting system that replaces existing system:

Pg. 7
This is a
system whose requirements are fairly well-known and which will be used in
an environment in conjunction with lots of other systems such as a research
grant management system. Therefore, a reuse-based approach is likely to be
appropriate for this.

 An interactive travel planning system that helps users plan


journeys with the lowest environmental impact:
System with a
complex user interface but which must be stable and reliable. An
incremental development approach is the most appropriate as the system
requirements will change as real user experience with the system is gained.

Q12. Explain why incremental development is the most effective


approach for developing business software systems. Why is this
model less appropriate for real-time systems engineering?

Ans: - Business software systems usually complex, software intensive, and


frequently being changes when business goals or processes are changed. So
incremental development is better. Real-time systems usually involve many
hardware components which are not easy to change and cannot be incremental.
Also, real-time systems usually safety critical which needed be built based on well
planned process.

Q13. Consider the reuse-based process model shown in Figure 2.3.


Explain why it is essential to have two separate requirements
engineering activities in the process.

Ans: - Requirement’s specification is about determine the user and system


requirements of the software system. Requirement’s modification is to modify the
requirement specification based on the reusable components. The modification is
necessary because we usually don’t have full control over the reusable
components, therefore some work around is necessary.

Pg. 8
Q14. Suggest why it is important to make a distinction between
developing the user requirements and developing system
requirements in the requirements engineering process.

Ans: - There is a fundamental difference between the user and the system
requirements that mean they should be considered separately.

 The user requirements are intended to describe the system's functions and
features from a user perspective and it is essential that users understand
these requirements. They should be expressed in natural language and may
not be expressed in great detail, to allow some implementation flexibility.
The people involved in the process must be able to understand the user's
environment and application domain.

 The system requirements are much more detailed than the user requirements
and are intended to be a precise specification of the system that may be part
of a system contract. They may also be used in situations where
development is outsourced and the development team need a complete
specification of what should be developed. The system requirements are
developed after user requirements have been established.

Q15. Describe the main activities in the software design process and
the outputs of these activities. Using a diagram, show possible
relationships between the outputs of these activities.

Ans: -
 Specification                      User Requirements and System Requirements

 Development                     a well-documented functional software system

 Validation                          V&V report

 Evolution                            new version of software system

Pg. 9
Q16. Explain why change is inevitable in complex systems and give
examples (apart from prototyping and incremental delivery) of
software process activities that help predict changes and make the
software being developed more resilient to change.

Ans: - The requirements may change due to the change of the environment.
Sometimes a better solution to the old requirements is also necessary.

Develop software interactively can help predict changes, because the experts can
have better insight about the possible changes on the business domain in the future.

Use component-based architecture can restrict the impact of many changes within
some components but not the entire system.

Q17. Explain why systems developed as prototypes should not


normally be used as production systems.

Ans: - Models ordinarily can't manage the cost of legitimate documentation,


which makes it difficult to keep up later on. Codes of models for the most part
don't fulfill the authoritative quality guideline. Obliviousness of some non-practical
necessities like client the executives, security, memory the board, and execution
may not be satisfied. Thusly, models ought not typically be utilized as creation
frameworks.

Q18. Explain why Boehm’s spiral model is an adaptable model that


can support both change avoidance and change tolerance activities.
In practice, this model has not been widely used. Suggest why this
might be the case.

Ans: - This is a direct result of the unequivocal danger the board of Boehm's
winding model. By spotting and dealing with the dangers among arranging and
creating, numerous progressions can be stayed away from ahead of time and plans
for future changes can be made to improve change resilience.

Winding model can be over costly for most cases, that perhaps the motivation
behind why it isn't generally utilized. The other explanation is that actually like
gradual turn of events, without a total detail before the finish of the cycle makes it
difficult to work with the executives’ frameworks.

Pg. 10
Q19. What are the advantages of providing static and dynamic views of the
software process as in the Rational Unified Process?

Ans: - The Rational Unified Process perceives that a solitary cycle model presents
just a solitary view, so the RUP consolidated three viewpoints, two of them being
dynamic, that depicts the periods of the model as time advances, and static, that
portrays the exercises that are instituted. The strength in utilizing both is that
periods of the improvement interaction are not attached to any one explicit work
process, so the whole cycle can be perceived.

Q 20. Historically, the introduction of technology has caused


profound changes in the labor market and, temporarily at least,
displaced people from jobs. Discuss whether the introduction of
extensive process automation is likely to have the same consequences
for software engineers. If you don’t think it will, explain why not. If
you think that it will reduce job opportunities, is it ethical for the
engineers affected to passively or actively resist the introduction of
this technology?

Ans: - Interaction computerization most likely diminish open positions as is an


improvement of profitability which is absolutely moral. It is the obligation
regarding each living individual to battle against the changing scene and walk
towards new freedoms. At in the interim, the general public is dependable to help
individuals during their relocation.

Pg. 11

You might also like