Quiz Chapter5 8 Group3

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 9

Group 3 Class: ITE1125E.

A02E

Bui Duy Nghia


Dang Du Long
Nguyen Le Duy
Bui Dang Minh Quan
Pham Minh Hung

Quiz Chapter 5 – 8.
Chapter 5: System modeling
1. What perspectives may be used for system modelling?

Perspectives for system modeling may include structural perspective, behavioral


perspective, interaction perspective, and functional perspective among others. These
perspectives help in understanding different aspects of the system and can be used to
model various characteristics such as its structure, behavior, interactions, and
functionality.
2. What UML diagram types may be used to represent the essential features of a system?
 Class diagrams: Representing the static structure of the system, including classes,
attributes, operations, and relationships.
 Use case diagrams: Depicting the interactions between the system and its users or
external systems, focusing on the system's functionality from a user's perspective.
 Sequence diagrams: Illustrating the sequence of interactions between objects or
components in the system, showing the flow of messages over time.
 Activity diagrams: Modeling the flow of activities or processes within the system,
depicting actions, decisions, and control flows.
 State machine diagrams: Representing the states and state transitions of objects in the
system, particularly useful for modeling the behavior of reactive systems.

3. What is described in a context model?


A context model describes the environment in which a system operates, including the
entities, relationships, constraints, and external factors that influence the system. It helps
in understanding the boundaries and scope of the system by identifying its interactions
with external entities and systems.
4. How are activity diagrams used in describing the context of use of a system?
Activity diagrams can be used to describe the context of use of a system by modeling the
sequence of actions or tasks performed by users or external systems within a specific
scenario. They illustrate the flow of activities, decisions, and control flows involved in
achieving a particular goal or completing a process within the system's context.
5. What are the principal components of a textual use-case description?
 Title: Describing the overall goal or purpose of the use case.
 Actors: Identifying the primary actors involved in the use case.
 Preconditions: Listing any conditions that must be true before the use case can be
executed.
 Main flow: Describing the sequence of steps or interactions involved in the primary
scenario.
 Alternate flows: Documenting any alternative paths or variations in the main flow.
 Postconditions: Specifying the expected outcomes or conditions after the execution of
the use case.
6. What is illustrated in a UML sequence diagram?
In a UML sequence diagram, the interactions between objects or components of the
system are illustrated over time. It shows the sequence of messages exchanged between
objects, along with the lifelines representing the existence of objects during the
interaction. Sequence diagrams help in understanding the dynamic behavior and
communication patterns within the system.

7. How is generalization used to simplify the models of a system with many similar objects?
Generalization is used to simplify models of a system with many similar objects by
abstracting common characteristics into a superclass or higher-level abstraction. By
defining a general class with shared attributes and behaviors, specific classes can inherit
these properties, reducing redundancy and improving maintainability and scalability of the
system model.
8. What is the basic assumption that underlies event-driven modelling?
The basic assumption underlying event-driven modeling is that a system's behavior is
driven by external events or stimuli rather than following a predefined sequence of
operations. In event-driven modeling, the system responds to events such as user actions,
sensor inputs, or messages from other systems by triggering appropriate actions or
behaviors.

9. What are the claimed benefits of model-driven engineering?


 Improved productivity: MDE allows for higher-level abstractions and automation,
reducing the manual effort required in software development tasks.
 Enhanced maintainability: By separating concerns and using models as primary
artifacts, MDE facilitates easier maintenance and evolution of software systems.
 Higher quality: MDE promotes consistency, correctness, and reuse through model-
based analysis, verification, and validation techniques.
 Platform independence: Models in MDE are platform-independent representations of
system requirements and designs, enabling automatic generation of code for different
target platforms.
10. What are the three types of abstract system model that are recommended by the MDA
method?

 Computation-Independent Model (CIM): Describes system requirements and


functionality independently of implementation details, focusing on high-level business
concepts and user interactions.
 Platform-Independent Model (PIM): Represents system design and architecture in a
platform-neutral manner, specifying system behavior and structure using domain-
specific abstractions.
 Platform-Specific Model (PSM): Defines system implementation details tailored to a
specific target platform or technology, including hardware, software, and middleware
configurations.

Chapter 6: Architectural design


1. What are the advantage of explicitly designing and documenting a software architecture?
 Providing a clear understanding: It helps stakeholders understand the structure, behavior, and
interactions of the system, fostering communication and alignment of expectations.
 Facilitating analysis and evaluation: Architects can analyze the architecture for quality
attributes such as performance, scalability, and maintainability, allowing them to identify
potential risks and make informed design decisions.
 Supporting maintenance and evolution: Documented architecture serves as a reference for
future modifications, enhancements, and troubleshooting, aiding in the long-term
sustainability of the system.
 Enabling reuse: Well-documented architecture allows for the identification and extraction of
reusable components or patterns, promoting efficiency and consistency across projects.
2. What are the two ways in which an architectural model of a system may be used?
 Descriptive: It serves as a representation of the system's structure, behavior, and interactions,
providing a conceptual blueprint for understanding and communicating about the system.
 Prescriptive: It guides the design, implementation, and evolution of the system by defining
constraints, principles, and guidelines to achieve desired qualities such as performance,
scalability, and maintainability.

3. List 4 fundamental questions that should be addressed in architectural design?


 What are the major components or subsystems of the system?
 How do these components interact and communicate with each other?
 What are the key design decisions and trade-offs made to achieve desired system qualities?
 How does the architecture support the functional and non-functional requirements of the
system?
4. What are the fundamental architectural views proposed in Krutchenʼs 4+ 1 model?
 Logical view: Describes the key abstractions, modules, and relationships within the system
from a functional perspective.
 Process view: Illustrates the dynamic behavior and interactions between components or
processes during runtime.
 Development view: Focuses on the organization of the system's source code, modules, and
development environment to support development activities.
 Physical view: Represents the distribution and deployment of system components across
hardware nodes or environments.
 Scenarios or use cases view (the "+1"): Provides concrete examples or scenarios to illustrate
how the system functions within its architectural context.

5. What is an architectural pattern?


An architectural pattern is a reusable solution to a recurring design problem within a specific
context. It encapsulates a set of design decisions and best practices for structuring and organizing
software systems to address common architectural challenges. Examples include Model-View-
Controller (MVC), Layered Architecture, Microservices, and Publish-Subscribe.

6. What is the fundamental characteristic of a repository architecture?


The fundamental characteristic of a repository architecture is that it centralizes data management
and storage within a shared repository or database. This architecture typically involves a single,
unified data store that serves as the authoritative source for all data in the system. Components
within the system interact with the repository to access and manipulate data, promoting data
consistency and integrity.

7. What is the most important advantage of a client-server architecture?


The most important advantage of a client-server architecture is its scalability and flexibility. By
distributing processing tasks between client machines and server machines, client-server
architecture allows for efficient resource utilization and supports the addition of new clients or
servers to accommodate changing demands. It also facilitates centralized management, security,
and maintenance of resources and data.
8. Briefly describe pipe and filter architecture?
Pipe and filter architecture is a structural design pattern where data flows through a series of
processing components (filters) connected by channels (pipes). Each filter performs a specific
transformation or operation on the input data and passes the result to the next filter via the pipes.
This architecture promotes modularity, reusability, and composability of processing components,
enabling flexible data processing pipelines.

9. What are transaction-processing applications?


Transaction-processing applications are software systems designed to manage and execute
transactions, which are units of work that must be completed as a whole to maintain data integrity
and consistency. These applications typically handle multiple concurrent transactions, ensuring
properties such as atomicity, consistency, isolation, and durability (ACID) to maintain data integrity
and reliability.
10. What are the principal functions of the 4 layers in a generic information system architecture?
 Presentation layer: Handles user interaction and interface, presenting information to users
and receiving input from them.
 Application layer: Implements the business logic and functionality of the system, processing
and managing data according to business rules and requirements.
 Data layer: Manages data storage, retrieval, and manipulation, providing mechanisms for data
access, persistence, and integrity.
 Infrastructure layer: Supports the execution environment of the system, including hardware,
networking, and system software components necessary for system operation and
communication.
Chapter 7: Design and implementation
1. What are the 5 key activities in an object-oriented design process?
 Requirements analysis: Understanding and documenting the functional and non-functional
requirements of the system.
 System design: Defining the overall architecture and structure of the system, including
subsystems, components, and interfaces.
 Object design: Identifying and designing the objects and classes that implement the system's
functionality, including attributes, methods, and relationships.
 Implementation: Translating the design into executable code, following coding standards and
best practices.
 Testing and validation: Verifying that the implemented system meets the specified
requirements and functions correctly under various scenarios.
2. What do you understand by the system context and interaction model?
The system context model describes the external entities (actors) that interact with the system
and the nature of their interactions. It provides an overview of the system's environment,
including the relationships and dependencies between the system and its external entities. The
interaction model describes how these entities interact with the system to achieve specific goals
or perform tasks, typically represented using use case diagrams or sequence diagrams.

3. Briefly describe 3 approaches that may be used to identify object classes?


 Domain-driven design: Analyzing the problem domain to identify concepts, entities, and
relationships that naturally map to classes in the software system.
 Analysis of requirements: Extracting candidate classes from the functional and non-functional
requirements specified for the system, focusing on entities, behaviors, and interactions.
 Reuse of existing designs: Leveraging existing libraries, frameworks, or design patterns that
encapsulate reusable solutions to common design problems, adapting them to fit the current
system's requirements.
4. Why is it important to specify the interfaces of components that are being developed by a
software engineering team?

It is important to specify the interfaces of components being developed by a software engineering


team because interfaces define how components interact with each other and with external
systems. Specifying interfaces ensures clear communication and agreement between team
members regarding the expected behavior and usage of components. Interfaces also facilitate
modularity, allowing components to be developed, tested, and replaced independently,
promoting flexibility and maintainability of the system.

5. What do Gamma et al. suggest are the four essential elements of a design pattern?
 Pattern name: A descriptive name that conveys the purpose and intent of the pattern.
 Problem: A description of the design problem or challenge addressed by the pattern.
 Solution: A description of the design solution or structure that can be applied to solve the
problem in a specific context.
 Consequences: An explanation of the trade-offs, benefits, and implications of using the pattern
in terms of system qualities such as flexibility, extensibility, and performance.
6. How do design patterns contribute to reuse?
Design patterns contribute to reuse by encapsulating proven solutions to common design
problems in a reusable format. By applying design patterns, developers can leverage the expertise
and experience of others to address recurring challenges, avoiding the need to reinvent solutions
from scratch. This promotes efficiency, consistency, and maintainability in software development
by encouraging the reuse of established best practices and architectural principles.

7. What are the 4 levels at which software reuse is possible?


 Component-level reuse: Reusing individual software components or modules within a system
or across multiple systems.
 Object-level reuse: Reusing object-oriented classes, libraries, or frameworks that encapsulate
reusable functionality and behavior.
 Design-level reuse: Reusing design patterns, architectural styles, or system structures to
address common design challenges and promote consistency across projects.
 Process-level reuse: Reusing development processes, methodologies, or tools to streamline
and improve software development activities and outcomes.
8. What are the principal aims of software configuration management?
 Version control: Managing changes to software artifacts, including source code,
documentation, and configuration files, to ensure traceability, consistency, and integrity.
 Configuration management: Controlling the evolution of software configurations and ensuring
that systems are built from consistent and compatible components.
 Change management: Facilitating the management of changes to software artifacts, including
tracking, evaluating, approving, and implementing changes while minimizing disruptions and
risks.
 Baseline management: Establishing and maintaining baselines of software configurations,
providing stable reference points for development, testing, and release activities.

9. What are essential tools in a software development platform?


 Integrated Development Environment (IDE): Software tools that provide an integrated
environment for writing, debugging, and testing code, typically including features such as code
editors, compilers, and debuggers.
 Version control systems (VCS): Tools that enable tracking changes to source code and
coordinating work among team members, ensuring collaboration, and maintaining code
integrity.
 Build automation tools: Utilities that automate the process of compiling, testing, and
deploying software, improving efficiency and consistency in the development workflow.
 Issue tracking systems: Platforms for managing and tracking software issues, bugs, and feature
requests, facilitating communication and coordination among team members.
10. Briefly describe the idea of open-source development
Open-source development is a collaborative software development model where the source code
of a software project is made freely available and accessible to the public. Contributors from
around the world can inspect, modify, and enhance the codebase, typically following an open and
transparent development process. The idea behind open-source development is to promote
community-driven innovation, collaboration, and knowledge sharing, leading to the creation of
high-quality software that is accessible to all.
Chapter 8: Testing
1. What is the distinction between validation and verification?
Validation ensures that the product meets the customer's requirements and needs, whereas
verification ensures that the product is being built correctly according to specifications and
standards.
2. What are the advantages of inspections over testing?
 Early defect detection: Inspections can uncover defects in early development stages,
reducing the cost and effort required to fix them.
 Higher defect removal efficiency: Inspections typically find more defects per hour of effort
compared to testing, leading to higher quality software.
 Knowledge transfer: Inspections facilitate knowledge sharing among team members,
leading to improved understanding of the software and its requirements.
 Process improvement: Inspections provide feedback on development practices, helping
teams identify and address recurring issues and improve overall quality.
3. Briefly describe the three principal stages of testing for a commercial software system

Unit testing: Testing individual units or components of the software in isolation to ensure their
correctness and functionality.

Integration testing: Testing the interactions and interfaces between integrated components or
subsystems to verify their interoperability and compatibility.

System testing: Testing the complete and integrated software system as a whole to validate its
compliance with specified requirements and assess its overall quality and performance.

4. What tests should be included in object class testing?


Constructor tests: Validating the initialization and construction of object instances.
Method tests: Testing the behavior and functionality of methods associated with the object
class.
State-based tests: Verifying the state transitions and internal state consistency of objects.
Interaction tests: Testing the interactions and collaborations between objects of different
classes.
5. What guidelines does Whittaker suggest for defect testing?
 Test every code path: Ensure that tests exercise all possible execution paths through the
code.
 Test boundary conditions: Test inputs at the boundaries of valid and invalid ranges to
uncover boundary-related defects.
 Test negative cases: Test with invalid inputs or unexpected conditions to verify error
handling and robustness.
 Test for reliability: Assess the software's ability to perform consistently under varying
conditions and loads.
 Test for performance: Evaluate the software's response time, throughput, and resource
utilization under different usage scenarios.

6. What is an equivalence partition? Give an example.


An equivalence partition is a testing technique that divides the input domain of a software
system into partitions or classes of equivalent inputs, where each partition should exhibit
similar behavior from the system's perspective.
An example of an equivalence partition for a login form might include valid usernames and
passwords in one partition and invalid usernames and passwords in another partition.
7. What are the three important classes of interface errors?
 Parameter errors: Errors related to incorrect or invalid parameters passed to functions or
methods.
 Protocol errors: Errors in the communication protocols or message formats between
software components.
 Timing errors: Errors arising from synchronization issues or timing constraints between
interacting components.

8. What should be the principal concerns of system testing?


 Functional correctness: Ensuring that the system meets its functional requirements and
behaves as expected.
 Performance: Assessing the system's responsiveness, scalability, and resource usage under
normal and peak loads.
 Reliability: Verifying the system's stability, robustness, and fault tolerance under various
conditions and failure scenarios.
 Security: Evaluating the system's resistance to unauthorized access, data breaches, and
other security threats.
9. Briefly summarize the test-driven development process
 Write a failing test: Begin by writing a test that captures the desired behavior or
functionality.
 Write the implementation code: Implement the minimum code required to make the test
pass.
 Refactor: Refactor the code to improve its design, readability, and maintainability while
keeping all tests passing.
 Repeat: Iterate the process by writing additional tests and implementing corresponding
code in small, incremental steps.

10. What is scenario testing?


Scenario testing involves testing the software using real-world scenarios or usage scenarios
that simulate how end-users interact with the system. It focuses on validating the system's
behavior and functionality in typical usage situations, helping to uncover defects and assess
the software's usability and user satisfaction.
11. What is stress testing and why is it useful?
Stress testing is a type of testing that evaluates the system's behavior under extreme
conditions such as high loads, peak usage, or resource constraints. It is useful for assessing the
system's stability, reliability, and performance limits, as well as identifying bottlenecks,
vulnerabilities, and failure points under stress conditions.

12. What are the three types of user testing?


 Alpha testing: Testing performed by a selected group of users or testers within the
development organization, typically in a controlled environment.
 Beta testing: Testing performed by a larger group of external users or customers in a real-
world environment prior to the software's release.
 Acceptance testing: Testing performed by end-users or stakeholders to determine
whether the software meets their requirements and expectations, typically as a final step
before deployment.

You might also like