CPU Business and Information Technology College
Department of Computer Science
Course: Software Engineering.
Weight-20% Submitted to: Lecturer Nimomsa
Assignment I Submission Date: October 24, 2018
Name- Ayele Deribe Student Id – RCS/1624/09
Briefly Explain and provide detail examples for the following comprehensive
Software Engineering questions (4 points each). Please avoid copying content
from websites or each other)
1. What does, win-win mean in the context of negotiation during requirement
engineering activity (Explain in Detail).
2. Why quality is so important in software design?
3. Explain Level of Software Testing
4. How do associations and dependencies differ from one another in use case
diagram (show in diagram well)
5. Explain the difference between SSA and OOAD (Explain with Examples).
1. What does, win-win mean in the context of negotiation during requirement
engineering activity (Explain in Detail).
In requirements engineering, once after the requirements have been elicited and elaborated to a
certain level, negotiation might be needed to satisfy different stakeholders’ expectation within a
realistic possibility. Negotiation is needed because users’/customers’ need and requirements might
conflict with each other or might not be realistic to develop a software system considering the
resources that are hand like time, money, or technical people. Without negotiation both the system
developing team and the stakeholders won’t be able to get the functionality and performance they
have sought, because they were following unrealistic expectations. But by using the win-win
approach, they all can become successful by being realistic and increasing their communication.
If the software system has requirements that are doubtful in their feasibility and is complex enough
that they might conflict with each other, it is helpful to use an iterative approach so that different
requirements can be implemented with different iteration, while assessing the risk each poses in
each iteration. Rather than using a single customer communication, it is better to follow the
following steps.
1. Identify the stakeholders involved in the system and subsystems.
2. Determine each stakeholders’ expectation- meaning their ‘Win’ condition.
3. Negotiate all the stakeholder’s ‘Win’ condition, including the software developing teams’,
into a ‘Win-Win’ condition in which all parties involved feel like their desire is met within
realistic limitations.
Communication between the end-users/customers and the software developing team should be
done frequently while developing the requirements in a detailed and clear manner. Rather than
using the previous hands-off approach, in which the software team is not involved in the
requirements engineering process, it is much better to follow the handshaking approach. In the
handshaking approach, the software team proposes solutions, the overall impact of the
requirements proposed by the customer’s representative. And the customer representative looks at
the proposed ideas and solutions by the software team and adds missing features and ask for
clarification to compromise to have the best product at the end. Handshaking, meaning
bidirectional communication, makes all parties involved to win.
Win-Win Negotiation is a smart way of communicating and working together to have the best
software product under the existing resources.
2. Why quality is so important in software design?
While designing software, caring about the quality of the software is so important because of
benefits gained and the downsides avoided that might occur because of a poor-quality software
product. High quality software product is a useful product that provides measurable value for those
who produce it and those who use it. Caring about quality in software design provides a product
that delivers the content, functions and features that the end-user desires, but as important, it
delivers in a reliable, error-free way. A high quality software satisfies the requirements that are
explicitly stated by the stakeholders and it also satisfies the implicit requirements that are expected
of high-quality software like user-friendliness and intuitiveness.
Quality software provides benefit for the software organization and the end-user community.
Because of a reliable and robust product, the software organization is benefited by doing less
maintenance, customer-support and fewer bug fixes at the end. And the end-user community is
benefited because of a powerful product that enhances the execution of the business logic in a way
that increases profitability and providing additional information that is crucial for the business.
In general, quality is essential in software design because it increases the reliability, usability,
maintainability, functionality, and portability of the software product to be developed.
3. Explain Level of Software Testing
Software testing’s goal being to uncover the errors in the software and checking its healthy
interaction with other system elements, starts from the low-level of abstraction proceeding at last
to a high-level testing. Software testing starts right after coding and during coding, checking and
testing those specific codes(components) for their functionality during unit testing. After the
individual components are tested, integration testing is done, to test the components interworking
and their integration into a single software package. Once the low level tests are done
appropriately, testing moves to a more abstract high level tests. It starts with Validation test, by
testing if the software developed actually functions, performs and behaves in accordance to the
requirements stated in the analysis phase of the development. And at last system testing is done as
a higher abstraction level, to ensure the software developed works as desired when interacting with
other elements in the system. In System testing, the software developed is tested how well it fits
with the other system elements like hardware and database to give a desired system.
4. How do associations and dependencies differ from one another in use case
diagram (show in diagram well)
An association in Use Case Diagram is shown between the actor and the use case to show that the
actor interacts with the system through the use case. An association is represented by a solid line,
with no direction, or label.
The above diagram shows the association between an actor- the customer and the use cases in an
online auction system. A specific actor is associated with a specific use case that he interacts with.
There is no need of label or direction, only a solid line is enough in a Use Case Diagram.
Dependency occurs between use cases/ functions of the system and is shown by an arrow. If the
dependency of a use case is what is required for the normal functioning of another use case, that
will always be called when the primary use case is called, then it is appropriate to use the
<<includes>> arrow to the included use case. But if the dependency of a use case is in such a way
that it is called only during exceptional cares, as an alternative, using an arrow towards the
extended use case is the appropriate standard in the Unified Modeling language.
In an auction System, before bidding the customer will be asked to accept the terms and policies
of the Auction System, so Bidding for an item, includes another use case which is to accept the
terms and policies.
When logging, there could be an alternative that the Username or password or both might be
wrong, and there might come rejection from the System to the customer who is trying to login,
since this is an exception case it, is shown under <<extend>> dependency towards the extended
case.
5. Explain the difference between SSA and OOAD (Explain with Examples).
SSA – refers to Structured Systems Analysis where as OOAD refers to – Object Oriented Analysis
and Design.
SSA – Structured Systems Analysis focuses on the processes and procedures. SSA emphasizes on
data structures. Modeling techniques used are – Data Flow Diagram, Entity-Relationship Diagram,
Flowcharts. Related to SSA, Structured System Analysis and Design(SSAD) is a software life-
cycle methodology based on the waterfall life cycle model
OOAD – Object Oriented Analysis and Design is a software engineering approach that models
and designs how real world objects interact. Object refers to any real world entity that has its own
characteristics and behaviors, this object is modeled in OOAD and the entities and concepts behind
it are utilized. For the business analyst, these would be the real-world entities that arise within the
business (invoice, product, contract etc.).
During the object-oriented analysis(OOA) phase object-modeling techniques are used to analyze
the functional requirements for a system and create models which reflect the logical design of the
system. During the object-orient Design(OOD) phase of the system, models are elaborated upon
to include implementation specific details that show how the physical design of the system will
come together. OOA focuses on what the system does (its static structure and behavior), OOD on
how the system does it (it’s run-time implementation).
Example – considering the real world object laptop pc, that laptop has attributes that can be defined
with specific values such as,
- Make=Toshiba, model= …, color=black, year=2015, RAM size=4 Gb, etc.
Each of these attributes define the “state” of the laptop. They describe the laptop as it is at some
point in time. Additionally, the laptop has certain “behaviors” such as,
- Powering on () – Shutting Down () - Charging () – Executing program ()
In contrast with SSA, OOAD uses modeling techniques of UML (Unified modeling
Language) which includes Use-case Diagram, Class Diagram, Object Diagram, Sequence
Diagram, etc.
With respect to the implementation phase, SSA will be using strictly procedural
programming languages like Fortran, C, etc. Whereas OOAD uses Object Oriented
programming languages that are readily available now days like Java, C++, [Link], etc.
SSA approach is now frequently being replaced by OOAD. With reality based approach,
OOAD makes the system more maintainable and reusable