Hide menu

Design and Architecture


Systems and Models and Definitions

  • A system can be seen to consist of activities and objects. What does this mean?
  • A model can be several things. What can the definition of a model be in the context of software systems?
  • What is a system? What does it consist of? Give examples.
  • A system can be viewed from both a static and dynamic perspective. What does this mean?
  • The concept of abstraction is central in SE. What does this mean? Give examples.
  • Why is standardization of notations important (e.g. UML)? Which problems can arise concerning misuse of notations?
  • What does coupling mean? Give examples. What do we want? Why?
  • What does cohesion mean? Give examples. What do we want? Why?

General about design and reuse

  • Why is software, code and system reuse important?
  • Why is reuse sometimes difficult to achive?
  • What do analyze and synthesis mean? Give examples. Are there any other names for this concept?

Architecture

  • What is architecture? Which other names exist for this?
  • Discuss the difference between system and module design. Which are the key differences?
  • Give at least three reasons for why we should document the architecture. Give examples.
  • Which stakeholders exist for the architecture document? How do they make use of it?
  • What is the difference between an architecture style and an architecture for a system?
  • Why should we design a system?
  • Describe the most important parts that should be explained and described in an architecture document.
  • Why should you give rational for rejected design alternatives in a design document?
  • Should the design process be an iterative or pure sequential process? Why, why not? Argue.
  • State the most useful kind of UML diagrams for architectural descriptions.
  • Describe how the process of architecture work fits into the whole software life-cycle.
  • Give an example of a box-and-line design diagram. Which are the most important concepts? Which are the drawbacks with such an architect picture?
  • How can a system be designed to be more testable?
  • Give example of business qualities which can affect the design process. Describe in what way it affects.
  • Give example of 5 architecture styles / patterns. Describe them and give pros and cons.
  • What is the pipe-and-filter architecture style? When is it useful? Give examples.
  • How can parallelization in pipe-and-filter architectures be achieved?
  • What is layered architecture?
  • Describe how a TCP-IP stack uses a layered architecture.
  • Can all layers in a layered architecture talk to each other? Why? Why not?
  • What is the client-server model? Give examples.
  • What is the difference between a two-tier and three-tier architecture?
  • What is a repository model? Which alternatives exists? Discuss pros and cons.
  • Well-defined interfaces between modules are very important. Explain why.
  • An architecture must be described from different views. Describe at least three such views.
  • Give example of quality factors that are important for system design. Explain why.
  • How can you design an architecture to meat performance requirements?
  • How can you design an architecture to be better suited for safety critical applications?
  • Describe the difference between testing and formal verification. Is always one approach better than the other? Why, why not? Give pros and cons.
  • What is the implementation view?
  • What is the execution view?
  • What is the deployment view?

Tools and Techniques

  • What is refactoring?
  • There are two major kinds of prototyping techniques. Which are they? What do they mean? Pros and cons?

UML

  • What does UML stand for?
  • What is UML? Why is it important? Why is it not always the solution to all design problems?
  • Which UML version is the current one?
  • Explain some practical problems by using UML in the industry.
  • There are many ways of using UML. Explain three main approaches.
  • What does round-trip engineering mean?
  • When can reverse-engineering be especially useful?
  • UML can be used as a programming language. Why could this be a good idea? Why can one be sceptic about this approach? Argue.
  • UML diagrams can be divided into two major categories. Which?
  • When can or should different UML diagrams be applied in the software life-cycle? Why? Argue.
  • What is a use case? What is the meaning? When should it be used?
  • Give an example of a use case. Explain how you can describe scenarios where an actor fails to do the main task of the use case.
  • What is MSS in a use case?
  • A square is often drawn around a use-case diagram? Why?
  • What is the difference between a use case and a use case diagram?
  • Explain the use of a "include" construct in a use case diagram.
  • Draw and explain the main components of a class diagram
  • What is a multiplicity in a UML diagram?
  • What is visibility in a UML diagram?
  • What is the difference between attributes and associations? What is the common name?
  • When should associations be used instead of attributes? Are there any expressive difference?
  • Describe the concept of bidirectional associations.
  • What is a verb phrase in a UML diagram? When is it useful?
  • How can you describe constraints in a UML diagram? Are there many possible ways?
  • Give examples of different kinds of relationships in a UML diagram?
  • What are the main differences between generalization and realization? Which are the similarities?
  • What is the difference between association and aggregation?
  • One can argue that one specific relationship is redundant. Which one? Why could it be argued that it should not be used?
  • Which are the key concepts of the relationship composition? Give examples.
  • Which are the main concepts of generalization?
  • What does polymorphism mean? Give examples. Why is it useful?
  • Explain what safe substituion in statically typed languages mean
  • What is the difference between generalization and realization? Both conceptually and how you draw it.
  • What is the difference and similarities between abstract classes and interfaces?
  • What is UML dependencies and where can it be useful?
  • Explain what you can use a state diagram for. Which are the main concepts?
  • When should an activity diagram be used? Give an example.
  • What is swimlanes? Another word for it?
  • What can you do with fork and join in an activity diagram? What is the difference to decision and merge?
  • Describe why we want acyclic, low coupling and high cohesion for packages. Give examples.
  • Why are not dependencies in package diagrams transitive?
  • Draw and describe a diagram of composite structure.
  • What does a providing and requiring interfaces mean? Give examples.
  • Draw and explain a deployment diagram.
  • When should we use deployment diagrams? What can it show?
  • What is the difference between a object diagram and a class diagram?
  • What is the difference between a sequence diagram and a class diagram? When should they be used?
  • Explain the main concepts of a sequence diagram, such as messages, life-lines, self-calls etc.

Design patterns

  • What is a design pattern?
  • What is the famous book about design patterns of object-oriented systems often called with a short name?
  • What is the strategy pattern? When is it useful? Which problems does it solve?
  • Draw the UML class diagram that shows the structure of the strategy pattern.
  • Give a detailed step-by-step description of how the strategy pattern works. Give an example.
  • What is the observer pattern? When is it useful? Which problems does it solve?
  • Draw the UML class diagram that shows the structure of the observer pattern.
  • Give a detailed step-by-step description of how the observer pattern works. Give an example.
  • What is the Façade pattern? When is it useful? Which problems does it solve?
  • Draw the UML class diagram that shows the structure of the Façade pattern.

Page responsible: Kristian Sandahl
Last updated: 2023-09-04