1. Difference between well-defined, ill-defined, and wicked problems. How can these problems affect
software design?
• In well-defined problems there is a clear problem statement, ill-defined have ambiguous problem
statements and wicked problems have complex problem statements.
• Most of the well-defined problems have single and clear solution path, in ill-defined problems we
have to interpret and formulate the problems to arrive at the solution path, whereas in wicked
problems the solution is defined based on good or bad rather than correct or incorrect.
• Well-defined problems have structured approaches, and we can get to the solution by following that
process.
• Ill-defined problems require time to analyze and formulate the solution.
• Wicked problems take more time to arrive a solution concept and this solution can be distinguished
as good or bad.
2. Major activities of the Software Design Phase
and difference between them.
• Architecture Design:
Architecture design is used to organize the software system and it also deals with the architectural
styles and patterns.
• Detailed Design:
Detailed design focuses on the structure and behavior of the components and on the internal structure
of the interfaces.
• Construction Design.
Works on designing the code and the specific libraries or frameworks that are to be used in the
specific systems and it also focus the software components.
3. Roles of software engineers and how do they differ?
Systems Engineer: Systems engineer uses a way to design the systems which makes use of the software,
hardware, and the people to work together towards achieving the systems goal.
Software Architect: Software Architect works on organizing the software system. They focus on designing the
system’s architecture, its components, and the modules.
Component Designer: They focus on the internal design which is they work on how software components
should be designed internally. They also define how the components that are internally designed are behaved.
They use their coding skills to implement their design in the code.
User Interface Designer: These work on the user interface, their layout, and elements to make the user
interface attractive to the users and they make sure it is user friendly.
4. What do completeness and sufficiency mean?
Sufficiency: It deals with the
interface of the abstraction on
capturing the enough
characteristics so that there can
be a meaningful interaction
between the user and the
interface.
Completeness: It is making sure
that the interface captures all
the essential characteristics of
the abstraction that can be
useful for various users
5. Classification of UML
diagrams and difference
between them:
• Structural diagram: A Structural
diagram depicts the static
composition of the software system.
These diagrams provide the details of
the components and their
relationships among them at this
point of time.
• Behavioral diagram: Behavioral
diagram depicts the dynamic
behavior of the system. It is about
how the system behaves and interact
with its components over the period.
6. Explain the mechanisms for extending UML.
Notes: Notes are used as a mechanism to add information to the UML elements
and diagrams.
Stereotypes: This mechanism extends the UML and gives a different semantic
meaning to the class or the attribute to which it is applied.
Tagged values: It a mechanism that can be used to add additional properties to
the stereotypes.
Constraints: These are the mechanisms that describe some conditions or
requirements with the elements in the UML.
7. UML artifact? How is it
different from components
• UML artifact: An artifact is a classifier that is used
represent physical units of information in a software
system.
• Artifacts consists of the files, executable documents,
or the scripts. Components consists of the elements
such as classes and interfaces.
• Artifacts are used to represent the physical units of
information in the software system. Components are
the part of software’s logical system.
• Artifacts are used in the deployment diagrams.
Components are used in the class diagrams and the
component diagrams.
8. Manifestation of software components in UML.
• Deployment diagrams are used to model the software components in a deployed
environment is UML.
• Deployment diagrams make use of the nodes, artifacts, and association lines to
show the relationship between the nodes and artifacts in the runtime environment.
9. How concurrency issues can be addressed using
UML.
• Concurrency is the functionality or the ability of the system to execute multiple tasks
simultaneously.
• Concurrency issues can be addressed using UML through various UML diagrams.
• Sequence diagram uses the lines to represent the threads and processes. These lines are used to
depict the flow control.
• Activity diagrams uses join nodes to depict the flow parallelly. Other diagrams such as the state
chart diagrams, and the collaboration diagrams uses different ways to address the concurrency
issues.