Software Engineering Solution Set1
Software Engineering Solution Set1
1.Define Software Engineering. Illustrate the key challenges faced by Software Engineering.
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.
Key challenges:
2. List the attributes of good software system and key challenges faced by software engineering.
3) Illustrate the Professional and ethical responsibilities that Software Engineer should have.
1. Confidentiality You should normally respect the confidentiality of your employers or clients irrespective
of whether a formal confidentiality agreement has been signed.
2. Competence You should not misrepresent your level of competence. You should not knowingly accept
work that is outside your competence.
3. Intellectual property rights You should be aware of local laws governing the use of intellectual property
such as patents and copyright. You should be careful to ensure that the intellectual property of employers
and clients is protected.
4. Computer misuse You should not use your technical skills to misuse other people’s computers.
Computer misuse ranges from relatively trivial (gameplaying on an employer’s machine, say) to extremely
serious (dissemination of viruses).
4) Elizabeth is ready to sign a big new client to a contract worth over $50,000. Her manager is under a lot of pressure to
increase sales. He calls Elizabeth into his office and tells her that his job is on the line, and he asks Elizabeth to include the
revenue for her contract in the sales figures for the quarter that ends tomorrow. She knows the contract is a sure thing,
but the client is out of town and cannot possibly sign by tomorrow. What should Elizabeth do? Should she follow her
manager’s request and put the revenue in the sales figures for the quarter that ends tomorrow even though the client
won’t be able to sign the contract until after that, or should she wait until the contract is signed to include the revenue in
the sales figures (i.e. include it in next quarter, which will not help her manager’s sales numbers now). Fully explore both
sides of the issue before making a recommendation.
Discuss the ethical dilemmas that this request raises and the professional and ethical responsibilities. State Code of Ethics
and Professional Practice as specified by ACM/IEEE-CS joint task force.
o Elizabeth is the employee of the manager who asks her to to include the revenue for her contract in
the sales figures for the quarter that ends tomorrow but the problem is that she has not signed the
contract yet. so she is facing two conditions-
o In first condition, if she follow her manager’s request and put the revenue in the sales figures for the
quarter that ends tomorrow the she knew that contract would be sure and client would sign the
contract then it would increase the sales number of manager and saves his job.
o In second condition, if she does not follow then she could lost her job even though she knew that
contract would be signed after the client is back.
o So according to me, Elizabeth should follow the manager because of the two reason. first she would
be able to save the job of her manager and build a good reputation with him.second if does not
follow then she could endanger her job not following her manager's instructions.
o The main reason to follow the instruction is that she knew that contract is a sure thing.
ACM/IEEE-CS Joint Task Force on Software Engineering Ethics and Professional Practices
PUBLIC – Software engineers shall act consistently with the public interest.
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.
PRODUCT – Software engineers shall ensure that their products and related modifications meet
the highest professional standards possible.
JUDGMENT – Software engineers shall maintain integrity and independence in their
professional judgment.
PROFESSION – Software engineers shall advance the integrity and reputation of the profession
consistent with the public interest.
MANAGEMENT – Software engineering managers and leaders shall promote an ethical
approach to the management of software development and maintenance.
COLLEAGUES – Software engineers shall be fair to and supportive of their colleagues.
SELF – Software engineers shall participate in lifelong learning regarding an ethical approach to
the practice of the profession.
5) As an expert in computer security, you have been approached by an organization that campaigns for the rights of
torture victims and have been asked to help them gain unauthorized access to the computer systems of a British company.
This will help them confirm or deny that this company is selling equipment used directly in the torture of political
prisoners’. Discuss the ethical dilemmas that this request raises and the professional and ethical responsibilities of
software engineer that you would be violating. State Code of Ethics and Professional Practice as specified by ACM/IEEE-
CS joint task force.
This question has more than one correct answer; the point behind it is to learn how to argue your opinions.
The ideal answer should discuss both sides of the dilemma (that the prisoners might be tortured and that the
hacking is not an ethical act). After that you have to build your own reaction.
Computer science is concerned with the theories and methods that underlie computers and software systems.
7) 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:
1. 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.
2. Virtual reality system This is a system where the requirements will change and there will be
extensive user interface components. Incremental development with some UI prototyping is the
most appropriate model. An agile process may be used.
3. 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.
4. 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.
5. MIPS(x86) CPU emulator Maybe an exploratory software process model will be a good choice, as
we can build a half-baked system and use it, while the other parts are still in development.
6. Interactive railway The requirements might be a bit not clear for a computer scientist, so we might
use prototyping to understand the requirements.
Software processes
1. Requirements analysis and definition : The system’s services, constraints and goals are established
by consultation with system users. They are then defined in detail and serve as a system
specification.
2. System and software design : The systems design process partitions the requirements to either
hardware or software systems. It establishes an overall system architecture. Software design involves
identifying and describing the fundamental software system abstractions and their relationships.
3. Implementation and unit testing : During this stage, the software design is realised as a set of
programs or program units. Unit testing involves verifying that each unit meets its specification.
4. Integration and system testing : The individual program units or programs are integrated and tested
as a complete system to ensure that the software requirements have been met. After testing, the
software system is delivered to the customer.
5. Operation and maintenance : Normally (although not necessarily) this is the longest life-cycle
phase. The system is installed and put into practical use. Maintenance involves correcting errors that
were not discovered in earlier stages of the life cycle, improving the implementation of system units,
and enhancing the system’s services as new requirements are discovered.
In principle, the result of each phase is one or more documents that are approved.
The following phase should not start until the previous phase has finished.
In practice, these stages overlap and feed information to each other.
The software process is not a simple linear model.
Because of the costs of producing and approving documents, after a small number of iterations, it is
normal to freeze parts of the development.
This premature freezing of requirements may mean that the system won’t do what the user wants.
It may also lead to badly structured systems as design problems are circumvented by implementation
tricks.
Advantages: The advantages of the waterfall model are that documentation is produced at each phase and
that it fits with other engineering process models.
Disadvantages:
Its major problem is its inflexible partitioning of the project into distinct stages.
Commitments must be made at an early stage in the process, which makes it difficult to respond to
changing customer requirements.
Conclusion:
Therefore, the waterfall model should only be used when the requirements are well understood and unlikely
to change radically during system development. However, the waterfall model reflects the type of process
model used in other engineering projects. Consequently, software processes based on this approach are still
used for software development, particularly when the software project is part of a larger systems engineering
project.
Evolutionary development
1. Exploratory development : where the objective is to work with the customer to explore their
requirements and deliver a final system. The development starts with the parts of the system that are
understood. The system evolves by adding new features proposed by the customer.
2. Throwaway prototyping : where the objective is to understand the customer’s requirements and hence
develop a better requirements definition for the system. The prototype concentrates on experimenting with
customer requirements that are poorly understood.
Advantages:
An evolutionary approach to software development is often more effective than the waterfall
approach in producing systems that meet the immediate needs of customers.
The advantage of a software process that is based on an evolutionary approach is that the
specification can be developed incrementally.
As users develop a better understanding of their problem, this can be reflected in the software
system.
Explain why programs developed using evolutionary development are likely to be difficult to maintain
with neat diagram.
Disadvantages: However, from an engineering and management perspective, the evolutionary approach has
two problems:
1. 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.
2. Systems are often poorly structured Continual change tends to corrupt the software structure.
Incorporating software changes becomes increasingly difficult and costly.
3. This methodology may increase the complexity, time of the system to build and this leads to an
incomplete system that cannot be used as a full system.
Conclusion:
o For small and medium-sized systems (up to 500,000 lines of code), evolutionary approach is the best
approach to development.
o The problems of evolutionary development become particularly acute for large, complex, long-
lifetime systems, where different teams develop different parts of the system.
o It is difficult to establish a stable system architecture using this approach, which makes it hard to
integrate contributions from the teams.
For large systems, a mixed process that incorporates the best features of the waterfall and the
evolutionary development models is recommended.
This may involve developing a throwaway prototype using an evolutionary approach to resolve
uncertainties in the system specification.
The system can then be re-implemented using a more structured approach.
Parts of the system that are well understood can be specified and developed using a waterfall-based
process.
Other parts of the system, such as the user interface, which are difficult to specify in advance, should
always be developed using an exploratory programming approach.
This reuse-oriented approach relies on a large base of reusable software components and some
integrating framework for these components.
Sometimes, these components are
systems in their own right (COTS
or commercial off-the-shelf systems) that may provide specific functionality such as text formatting
or numeric calculation.
While the initial requirements specification stage and the validation stage are comparable with other
processes, the intermediate stages in a reuse-oriented process are different.
1. Component analysis :
o Given the requirements specification, a search is made for components to implement that
specification.
o Usually, there is no exact match, and the components that may be used only provide some of the
functionality required.
2. Requirements modification :
o During this stage, the requirements are analyzed using information about the components that
have been discovered.
o They are then modified to reflect the available components.
o Where modifications are impossible, the component analysis activity may be re-entered to search
for alternative solutions.
Advantages:
Component-based software engineering has the obvious advantage of reducing the amount of software to be
developed and so reducing cost and risks. It usually also leads to faster delivery of the software.
Disadvantages:
However, requirements compromises are inevitable and this may lead to a system that does not meet the real
needs of users. Furthermore, some control over the system evolution is lost as new versions of the reusable
components are not under the control of the organization using them.
Advantages Disadvantages
Customers do not have to wait until the entire It requires a good planning and designing.
system is delivered before they can gain value Increments should be relatively small (no more than
from it. The first increment satisfies their most 20,000 lines of code), and each increment should
critical requirements so they can use the deliver some system functionality.
software immediately
It is flexible and less expensive to change As requirements are not defined in detail until an
requirements and scope increment is to be implemented, it can be hard to
identify common facilities that are needed by all
increments.
Customers can use the early increments as Each iteration phase is rigid and does not overlap each
prototypes other
There is a lower risk of overall project failure. Rectifying a problem in one unit requires correction in all
Errors are easy to be identified the units and consumes a lot of time
A customer can respond to each building It can be difficult to map the customer’s
requirements onto increments of the right size.