Vous êtes sur la page 1sur 6

CHAPTER 1 - INTRODUCTION

1. What is software?

Computer programs and associated documentation. Software products may be developed for a
particular customer or may be developed for a general market

2. What are the differences between generic software product development and custom
software product development?
Generic Software Development Customized Software development
The specification of what the software
should do is owned by the software
developer and decisions on software
change are made by the developer.

The specification of what the software
should do is owned by the customer for
the software and they make decisions on
software changes that are required.


3. What are the attributes of good software?
Good software should deliver the required functionality and performance to the user and should
be maintainable, dependable and usable.
4. What is software engineering?

Software engineering is an engineering discipline that is concerned with all aspects of software
production.

5. What is the difference between software engineering and computer science?

Software Engineering Computer Science
concerned with the
practicalities of developing and
delivering useful software
focuses on theory and
fundamentals

6. What is the difference between software engineering and system engineering?
Software Engineering System Engineering
part of these more general process. concerned with all aspects of computer-based
systems development including hardware, software
and process engineering



7. What are the fundamental software engineering activities?
i) Software specification
ii) software development
iii) software validation
iv) software evolution

8. What are the costs of software engineering?

Roughly 60% of software costs are development costs, 40% are testing costs. For custom
software, evolution costs often exceed development costs.

9. What are the best software engineering methods?
There is no best method. It is all depends to the project itself.

10. What are the key challenges facing software engineering?

Coping with increasing diversity, demands for reduced delivery times and developing trustworthy
software.

11. What differences has the web made to software engineering?
The web has led to the availability of software services and the possibility of developing highly
distributed service-based systems. Web-based systems development has led to important
advances in programming languages and software reuse.

12. List 8 principles in the IEEE Code of Ethics.

1. PUBLIC - Software engineers shall act consistently with the public interest.
2. CLIENT AND EMPLOYER - Software engineers shall act in a manner that is in the best
interests of their client and employer consistent with the public interest.
3. PRODUCT - Software engineers shall ensure that their products and related modifications
meet the highest professional standards possible.
4. JUDGMENT - Software engineers shall maintain integrity and independence in their
professional judgment.
5. MANAGEMENT - Software engineering managers and leaders shall subscribe to and
promote an ethical approach to the management of software development and maintenance.
6. PROFESSION - Software engineers shall advance the integrity and reputation of the
profession consistent with the public interest.
7. COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues.
8. SELF - Software engineers shall participate in lifelong learning regarding the practice of their
profession and shall promote an ethical approach to the practice of the profession


CHAPTER 2 SOFTWARE PROCESS
1. What is software process?
A structured set of activities required to develop a
software system.
2. What are the fundamental activities common to all software process?
a. Specification defining what the system should do;
b. Design and implementation defining the organization of the system and implementing
the system;
c. Validation checking that it does what the customer wants.
d. Evolution changing the system in response to changing customer needs.

3. What is a software process model?
Abstract representation of a process. It presents a description of a process from some particular
perspective.

4. Differentiate plan-driven processes and agile processes?
Plan Driven Processes Agile Processes
processes where all of the process activities are
planned in advance and progress is measured
against this plan.
planning is incremental and it is easier to
change the process to reflect changing customer
requirements.

5. State the phases in the Waterfall Model and discuss the advantages and disadvantages for
this model.
Phase
Requirements analysis and definition
System and software design
Implementation and unit testing
Integration and system testing
Operation and maintenance
Advantages
The waterfall model is mostly used for large systems engineering projects where a system is
developed at several sites.
In those circumstances, the plan-driven nature of the waterfall model helps coordinate the
work.


Disadvantages
Inflexible partitioning of the project into distinct stages makes it difficult to respond to
changing customer requirements.
Therefore, this model is only appropriate when the requirements are well-understood and
changes will be fairly limited during the design process.
Few business systems have stable requirements.
6. State the phases in the incremental development and discuss the advantages and
disadvantages for this model.

Phase : SDVE

Advantages
The cost of accommodating changing customer requirements is reduced.
The amount of analysis and documentation that has to be redone is much less than is
required with the waterfall model.
It is easier to get customer feedback on the development work that has been done.
Customers can comment on demonstrations of the software and see how much has been
implemented.
More rapid delivery and deployment of useful software to the customer is possible.
Customers are able to use and gain value from the software earlier than is possible with a
waterfall process

Diadvantages

The process is not visible.
Managers need regular deliverables to measure progress. If systems are developed
quickly, it is not cost-effective to produce documents that reflect every version of the
system.
System structure tends to degrade as new increments are added.
Unless time and money is spent on refactoring to improve the software, regular change
tends to corrupt its structure. Incorporating further software changes becomes
increasingly difficult and costly.
7. State the phases in the reuse-oriented software engineering and discuss the advantages and
disadvantages of this model.

Phases:
Component analysis;
Requirements modification;
System design with reuse;
Development and integration

Advantage: reduce cost
Disadvantage: hidden code in the line that didnt realize

8. What is the benefit of prototyping?
Give sample to the user, and get the feedback, get the cleaner explanation on their requirement
9. In spiral development, each loop is split into 4 sectors, state all of it.

Objective setting
Specific objectives for the phase are identified.
Risk assessment and reduction
Risks are assessed and activities put in place to reduce the key risks.
Development and validation
A development model for the system is chosen which can be any of the generic models.
Planning
The project is reviewed and the next phase of the spiral is planned.

10. Explain the phases in the RUP.
Rational unified process.
Inception
Establish the business case for the system.
Elaboration
Develop an understanding of the problem domain and the system architecture.
Construction
System design, programming and testing.
Transition
Deploy the system in its operating environment

11. Discuss the advantages of using RUP.

Advantages: make sure the software met the user requirement

Develop software iteratively
Plan increments based on customer priorities and deliver highest priority increments first.
Manage requirements
Explicitly document customer requirements and keep track of changes to these
requirements.
Use component-based architectures
Organize the system architecture as a set of reusable components.



12. Give some reasons for your answer based on the type of system being developed, suggest the
most appropriate generic software process that might be used as a basis for managing the
development of the following system:
a. A system to control anti-lock braking in a car

Anti-lock braking system: 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.

b. A virtual reality system to support software maintenance
Virtual reality system: This is a system where the requirements will change and there will be an
extensive user interface components. Incremental development with, perhaps, some UI
prototyping is the most appropriate model. An agile process may be used.
c. A university accounting software that replaces an existing system
University accounting system: 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.
d. An interactive system that allows railway passengers to find train times from
terminals installed in stations

Interactive travel planning system: 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.


1. Is it possible to scale agile methods for large system? Explain why.

Not possible.
You need to do more up-front design and system documentation
Cross-team communication mechanisms have to be designed and used. This should involve
regular phone and video conferences between team members and frequent, short electronic
meetings where teams update each other on progress.
Continuous integration, where the whole system is built every time any developer checks in a
change, is practically impossible. However, it is essential to maintain frequent system builds and
regular releases of the system.

Vous aimerez peut-être aussi