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