annotated-soft.doc
pdf
keyboard_arrow_up
School
Troy University, Troy *
*We aren’t endorsed by this school
Course
3332
Subject
Information Systems
Date
Dec 6, 2023
Type
Pages
8
Uploaded by HighnessSquirrelMaster1003
Q6.1: When describing a system, explain why you ay have to start the design of the system
architecture before the requirements specification is complete (3 points)
Iterative and Agile Development: In modern software development methodologies, such as Agile
or iterative approaches, it is common to begin with a high-level understanding of the project
goals and constraints.
Faster Time-to-Market: Starting the system architecture early can help accelerate the
development process. It allows developers to begin building the foundational components of the
system while the requirements are still being refined. This can be crucial when there's pressure
to deliver a minimum viable product (MVP) or meet tight deadlines.
Resource Allocation: Building the architectural framework early can help allocate resources
effectively
Continuous Feedback: By starting architecture early, you create opportunities for feedback loops.
Q6.2: You have been asked to prepare and deliver a presentation to a nontechnical manager to
justify the hiring of a system architect for a new project. Write a list of bullet points setting out
the key points in your presentation in which you explain the importance of software architecture
(3 points)
Introduction
Start with a brief overview of the project and its significance to the organization.
What is Software Architecture
Explain that software architecture is like the blueprint of a building; it defines the structure
and relationships of the software components.
The Role of a System Architect
Clarify the role of a system architect: to design the overall structure of the software system.
Ensuring Project Success
Why Hire a System Architect
Expertise: They bring specialized knowledge and experience in system design.
Efficiency: They help prevent costly errors and rework.
Risk Management: They mitigate technical risks and ensure the project stays on track.
Quality Assurance: They help ensure a robust, maintainable, and scalable system
Key Benefits of Software Architecture
Stakeholder Communication: It provides a clear visual representation of the project's structure
for effective communication.
Adaptability: It allows for easy incorporation of changes in requirements.
Resource Allocation: Helps in allocating resources optimally.
Performance: Ensures the system will meet performance and scalability requirements.
Risks of Not Having a System Architect
Highlight potential pitfalls:
Increased Costs: Rework and delays are costly.
Quality Issues: Without a solid architecture, the system may have reliability and
maintainability problems.
Highlight that a system architect plays a pivotal role in ensuring the project's success.
Q6.3: Explain why design conflicts might arise when designing an architecture for which both
availability and security requirements are the most important non-functional requirements (3
points)
Logging and Monitoring vs. Privacy:
Availability: Extensive logging and monitoring are crucial for diagnosing issues and ensuring
high availability.
Security: However, logging sensitive information can introduce privacy concerns and security
risks if not managed carefully.
Resource Overhead vs. Efficiency:
Availability: To maximize availability, you may need to design redundant systems, which can
require additional hardware, infrastructure, and operational resources.
Security: Security measures, such as encryption and authentication, can introduce resource
overhead, which can impact system performance and availability.
Access Control vs. Accessibility:
Availability: An architecture that allows for wide accessibility and ease of use may grant more
users access, potentially increasing availability.
Security: However, strict access control and authentication measures are often necessary for
security, which can restrict accessibility and potentially reduce availability for unauthorized
users.
Q6.4: Draw diagrams showing a conceptual view and a process view of the architectures of the
following systems: (3 points)
-- A ticket machine used by passengers at a railway station
-- A computer-controlled video conferencing system that allows video, audio, and
computer data to be visible to several participants at the same
time
-- A robot floor-cleaner that is intended to clean relatively clear spaces such as
corridors. The cleaner must be able to sense walls and other obstructions.
Q6.6: Suggest an architecture for a system (such as iTunes) that is used to sell and distribute
music on the internet. What Architectural patters are the basis for your proposed architecture?
(4 points)
Client-Server Architecture:
Description: The system employs a classic client-server architecture, where clients interact
with a central server to access music, make purchases, and manage their libraries.
Components:
Client (iTunes Application): This is the user-facing application responsible for user
authentication, browsing music, purchasing, and library management.
Server (Music Distribution Server): The central server hosts the music catalog, user accounts,
purchase history, and handles content delivery and transactions.
Content Delivery Network (CDN):
Description: To ensure efficient and fast content distribution, leverage a CDN for storing and
serving music files to reduce latency and improve the user experience.
CDN Servers: These servers are strategically located around the world to cache and serve
music
content to users.
Database Architecture:
Description: Use a combination of relational and NoSQL databases to store user data,
transaction records, music metadata, and user preferences.
Components:
Relational Database: Stores structured data such as user accounts, purchase history, and
transaction records.
NoSQL Database: Stores semi-structured data like music metadata and user-generated
content (e.g., playlists and reviews).
- Q 7.3. Using the UML graphical notation for object classes, design the following object classes,
identifying attributes and operations. Use your own experience to decide on the attributes and
operations that should be associated with these objects (3 points).
a messaging system on a mobile (cell) phone or tablet
a printer for a personal computer
a personal music system
Object Class: Message
Attributes:
messageID: int (Unique identifier for the message)
sender: User (The sender of the message)
recipient: User (The recipient of the message)
timestamp: DateTime (Timestamp indicating when the message was sent)
content: string (The text or multimedia content of the message)
Operations:
send(content: string, recipient: User): Message (Send a message to a recipient)
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
- Access to all documents
- Unlimited textbook solutions
- 24/7 expert homework help
read(): void (Mark the message as read)
delete(): void (Delete the message)
Object Class: User
Attributes:
userID: int (Unique user identifier)
username: string (User's username or display name)
contacts: List<User> (List of user's contacts)
inbox: List<Message> (List of received messages)
outbox: List<Message> (List of sent messages)
Operations:
addContact(user: User): void (Add a user to the contact list)
removeContact(user: User): void (Remove a user from the contact list)
sendMessage(content: string, recipient: User): Message (Compose and send a new message)
2. Object Classes for a Printer for a Personal Computer:
Object Class: Printer
Attributes:
printerID: int (Unique identifier for the printer)
status: string (Current status of the printer, e.g., "Ready" or "Printing")
printQueue: List<PrintJob> (List of print jobs in the queue)
Operations:
print(document: Document): PrintJob (Initiate a new print job)
cancelPrintJob(job: PrintJob): void (Cancel a print job)
getStatus(): string (Get the current status of the printer)
Object Class: PrintJob
Attributes:
jobID: int (Unique identifier for the print job)
document: Document (The document to be printed)
status: string (Status of the print job, e.g., "Queued," "Printing," "Completed")
Operations:
getStatus(): string (Get the current status of the print job
)
Object Class: Document
Attributes:
documentID: int (Unique identifier for the document)
title: string (Title or name of the document)
content: string (Text or content to be printed
)
Object Class: MusicSystem
Attributes:
player: MusicPlayer (The music player component)
library: MusicLibrary (The music library component)
user: User (The user of the music system)
Operations:
play(song: Song): void (Play a selected song)
pause(): void (Pause the currently playing song)
skipNext(): void (Skip to the next song)
skipPrevious(): void (Skip to the previous song)
Object Class: MusicPlayer
Attributes:
status: string (Current status, e.g., "Playing" or "Paused")
currentSong: Song (The song currently playing)
Operations:
play(song: Song): void (Play a selected song)
pause(): void (Pause the music player)
stop(): void (Stop playback)
Object Class: MusicLibrary
Attributes:
songs: List<Song> (List of songs in the library)
playlists: List<Playlist> (List of user-created playlists)
Operations:
addSong(song: Song): void (Add a song to the library)
createPlaylist(name: string): Playlist (Create a new playlist)
addToPlaylist(song: Song, playlist: Playlist): void (Add a song to a playlist)
Object Class: Song
Attributes:
songID: int (Unique identifier for the song)
title: string (Title of the song)
artist: string (Artist or band name)
duration: int (Duration of the song in seconds)
genre: string (Music genre)
Object Class: Playlist
Attributes:
playlistID: int (Unique identifier for the playlist)
name: string (Name or title of the playlist)
songs: List<Song> (List of songs in the playlist)
Operations:
addSong(song: Song): void (Add a song to the playlist)
removeSong(song: Song): void (Remove a song from the playlist)
-Q 7.4. Using the weather station objects identified in Figure 7.6 as a starting point, identify
further objects that may be used in this system. Design an inheritance hierarchy for the objects
that you have identified. (3 points)
Sensor
Attributes: sensorID, sensorType, sensorModel
Operations: calibrate(), measure()
TemperatureSensor (inherits from Sensor)
Additional Attributes: temperatureUnit
Additional Operations: convertTemperature()
HumiditySensor (inherits from Sensor)
Additional Attributes: accuracy
Additional Operations: adjustHumidity()
PressureSensor (inherits from Sensor)
Additional Attributes: pressureUnit
Additional Operations: convertPressure()
DisplayDevice
Attributes: displayID, displayType, displaySize
Operations: showTemperature(), showHumidity(), showPressure()
DataLogger
Attributes: loggerID, storageCapacity
Operations: logData(), retrieveData()
- Q 7.9. Using examples, explain why configuration management is important when a team of
people developing a software product (4 points)
Version Control:
Example: Consider a team of developers working on a project. Without version control,
different team members might work on the same codebase simultaneously. This can lead to
conflicts and difficulties in merging changes. If there's no clear version history, it's
challenging to track when a specific bug was introduced or when a feature was
implemented.
Importance: Version control systems like Git provide a structured way to track changes, merge
contributions, and maintain a clear history of code versions. This promotes collaboration,
prevents code conflicts, and allows developers to revert to previous versions if necessary.
Change Management:
Example: Imagine a scenario where a critical bug is reported in a released software version.
Without proper configuration management, there might be confusion about which code
changes were included in that version, making it difficult to identify the cause of the bug
and release a patch.
Importance: Configuration management provides a clear process for managing changes,
including bug fixes and updates. It ensures that changes are documented, tracked, and
applied systematically, making it easier to manage and release software updates.
Your preview ends here
Eager to read complete document? Join bartleby learn and gain access to the full version
- Access to all documents
- Unlimited textbook solutions
- 24/7 expert homework help
Consistency in Development Environments:
Example: In a team, developers may use different development environments, libraries, and
tools. Without proper configuration management, it's challenging to ensure that everyone is
working in a consistent environment. This can lead to issues where code works on one
developer's machine but not on another's.
Importance: Configuration management can define and maintain a standardized development
environment, making it easier for team members to work together and reducing
compatibility issues.
Traceability and Auditability:
Example: In regulated industries like healthcare or finance, it's essential to maintain
traceability and auditability for software changes. Without configuration management, it's
challenging to provide evidence of how and when specific changes were made to the
software.
Importance:
Configuration
management
systems
can
provide
audit
trails,
enabling
organizations to demonstrate compliance with industry regulations and quality standards.
This is critical for accountability and risk management.
- Q 7.10.
A small company has developed a specialized product that it configures especially for
each customer. New customers usually have specific requirements to be incorporated into their
system, and they pay for these to be developed. The company has an opportunity to bid for a
new contract, which would more than double its customer base. The new customer also wishes
to have some involvement in the configuration of the system. Explain why, in these
circumstances, it might be a good idea for the company owning the software to make it open
source. (4 points)
Community Collaboration:
Open sourcing the software can encourage a wider community of users, developers, and
contributors to get involved in its development. This can lead to a more diverse range of
expertise and ideas, potentially enhancing the product's features and quality.
Faster Development Cycles:
With a larger community of contributors, the development cycles can be faster, allowing the
company to respond more rapidly to customer needs and industry changes.
Attracting New Business:
Offering an open source version can attract more potential customers who are interested in
having a level of control over the software's configuration. This can lead to new contracts and
opportunities for revenue growth.
Enhanced Market Positioning:
An open source approach can enhance the company's reputation as a forward-thinking and
collaborative organization. This can be appealing to potential customers and partners.
Rapid Feedback and Improvement:
Open source software tends to receive rapid feedback from users and contributors. This
feedback can help identify and fix issues quickly, making the software more robust and
reliable.