You are on page 1of 5

Personal Notes on Programming

Some math, some machine learning, and some software processes

☰ Menu

Exercises for Chapter 2 Pg.54


Raphael the Second Day Software Processes December 5, 2017December 6, 2017
4 Minutes
Somerville’s Software Engineering Chapter 2. Software Processes

2.1. 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:

A system to control anti-lock braking in a car


waterfall + formal transformations

A virtual reality system to support software maintenance


Incremental development

A university accounting system that replaces an existing system


Reuse-based approach can be the best choice, because the requirements are well-known and will
be used in conjunction with lots of other systems.

An interactive travel planning system that helps users plan journeys with the lowest
environmental impact
incremental

2.2. Explain why incremental development is the most effective approach for
developing business software systems.

First, incremental development allow early access to the most valuable functionality. Early access
not only gains value early, but also gives the most important component of the system the most
testing.

Second, incremental development can handle requirement changes well, which is necessary for
business software systems whose requirements have to change when the business changes.
Incremental development reduces rework on analysis and documentation when change happens.

Advertisements
REPORT THIS AD

Third, incremental development don’t need a complete specification in advance. This is important
to business software because the detailed requirement may not be spotted until part of the
functionalities are implemented.

Why is this model less appropriate for real-time systems engineering?

This is because the computing time may suffer without a complete plan for the whole system.
Real-time system is time-critical, therefore can not start without a complete plan.

2.3. 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.

Requirements specification is about determine the user and system requirements of the software
system. Requirements 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.

2.4. Suggest why it is important to make a distinction between developing the


user
requirements and developing system requirements in the requirements
engineering
process.

This is because requirement engineering is about establishing an agreement between the customer
and the developer. The customer knows about business language while the developer need highly
detailed instruction to start work. Therefore, both a high-level specification as user requirements
and a detailed technical specification as system requirement are necessary.

System requirements are also important as part of the contract.

2.5. 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.

1. Specification ———> User Requirements and System Requirements


2. Development ———> a well documented functional software system
3. Validation ———> V&V report
4. Evolution ———> new version of software system
2.6. 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.

The requirements may change due to the change of the market/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.

More from the solution manual:

Recording of requirement rationale so that the reasons behind the requirements is known. This
helps with future change.
Requirement traceability that shows the dependencies between the requirements.
Design modeling helps the structure of the software remain clear even after changes.
Code refactoring that improves code quality and organization and so makes it robust enough
to take few more changes.

2.7. Explain why systems developed as prototypes should not normally be used
as production systems.

First, prototypes usually can’t afford proper documentation, which makes it hard to maintain in
the future.

Second, codes of prototypes usually don’t meet the organizational quality standard.

Third, ignorance of some non-functional requirements like user management, security, memory
management, and performance may not be fulfilled.

2.8. 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.

This is because of the explicit risk management of Boehm’s spiral model. By spotting and handling
the risks between planing and developing, many changes can be avoided in advance and plans for
future changes can be made to improve change tolerance.
Spiral model can be over expensive for most cases, that maybe the reason why it is not widely
used. The other reason is that just like incremental development, lacking a complete specification
before the end of the process makes it hard to work with management systems.

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

In reality, the software process contains both static and dynamic patterns. Requirements,
development, testing are common activities, while iterations of these static activities can be
different from phase to phase and from project to project.

2.10. 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?

Process automation surely reduce job opportunities and so is an improvement of productivity


which is totally ethical. It is the responsibility for every living person to fight against the changing
world and march towards new opportunities. At meanwhile, the society is responsible to help the
people during their migration.

Advertisements

REPORT THIS AD

Published by Raphael the Second Day


Enterprise Application Developer View all posts by Raphael the Second Day

Website Powered by WordPress.com.

You might also like