annotated-soft.doc

pdf

School

Troy University, Troy *

*We aren’t endorsed by this school

Course

3332

Subject

Information Systems

Date

Dec 6, 2023

Type

pdf

Pages

8

Uploaded by HighnessSquirrelMaster1003

Report
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.