Final Assignment 2024 - Amanuel Tesfalem
Final Assignment 2024 - Amanuel Tesfalem
software
Development
Final Assignment-2024
Supervisor : Dr. Wanru Gao
1. When would you recommend the use of an agile method for developing a
software system? (5 marks)
Moreover, Agile methods are essential for projects that require extensive
collaboration among cross-functional teams and stakeholders. For example, in the
context of developing intricate critical control software for cruise management,
engaging stakeholders such as travel agency representatives, individual travelers,
and regulatory bodies in regular feedback loops is vital. Agile methodologies
facilitate this collaboration through regular meetings, sprint reviews, and
retrospectives. These practices ensure alignment among all parties involved and
enable timely resolution of any issues. This heightened level of engagement and
communication serves to mitigate the risk of misinterpreting requirements and
enhances the overall quality of the final product.
Details
Travel History: Keep a detailed log of previous journeys, including comprehensive
itineraries, booking dates, and feedback given. Ensure that this information is easily
accessible through the user's account.
Loyalty Program: Establish a loyalty scheme that monitors points accumulated for
every reservation and activity. Define different tiers with specific perks, such as
priority boarding, cabin upgrades, and exclusive discounts.
Tier Benefits: Clearly outline the advantages linked to each loyalty tier and provide a
progress tracker indicating the user's proximity to the next tier.
Details:
Feedback Forms: Offer post-voyage feedback forms for passengers to evaluate
different components of their journey, such as accommodations, dining options,
shore excursions, and customer service.
Review Platform: Introduce a system where passengers can submit thorough reviews
and share photos. Enable other users to access these reviews to assist in making
well-informed choices.
Incentives: Provide rewards, like loyalty points or discounts on upcoming
reservations, for passengers who submit comprehensive and helpful feedback.
Details
Activity Catalog: Present an extensive list of excursions, onboard activities, and
special events available for users. This should consist of detailed descriptions,
schedules, and pricing information.
Booking System: Enable users to make advance bookings for activities. The system
should display available slots and any prerequisites such as age restrictions or
physical requirements.
Updates and Changes: Permit users to make alterations to their itinerary until a
specified time before the activity. Notify users of any modifications or cancellations
initiated by the cruise company.
3. Design an agile approach for this project. Describe the activities in each stage.
(15 marks).
1. Project Kickoff and Initial Planning
Activities:
Stakeholder Identification and Engagement:
Identify all relevant stakeholders, including the cruise management company,
travel agencies, individual travelers, and regulatory bodies.
Conduct workshops and interviews to gather high-level requirements and
understand stakeholder expectations.
Collaborate with stakeholders to define the project vision, goals, and success
criteria.
Create a project charter that outlines the objectives, scope, and key deliverables.
Ensure that team members are onboarded effectively and have a clear
understanding of the project vision, goals, and agile methodologies to be
employed.
Activities:
Create an initial product backlog that includes prioritized user stories, epics, and
themes.
Define acceptance criteria for the highest priority user stories.
3. Sprint Planning
Activities:
Define a clear and achievable goal for the sprint based on the highest priority
user stories from the product backlog.
Ensure that the sprint goal aligns with the overall project objectives and
stakeholder expectations.
Activities:
Daily Stand-ups:
Hold daily stand-up meetings where team members discuss their progress from
the previous day, their plans for the current day, and any obstacles they may be
facing.
Promote open communication and facilitate prompt resolution of any issues
that arise.
Testing:
Conduct ongoing testing, including unit testing, integration testing, and user
acceptance testing.
Utilize automated testing tools whenever possible to ensure efficiency and
consistency.
Activities:
Feature Demonstration:
Collection of Feedback:
Refine the product backlog by adding new user stories, reprioritizing existing
ones, and updating acceptance criteria as needed.
Activities:
Reflection and Improvement:
Actionable Improvements:
Adjustment of Processes:
Adjust agile practices and processes based on the outcomes of the retrospective
to improve team efficiency and effectiveness.
Activities:
Release Planning:
Plan for incremental releases that provide value to users.
Define the scope, timeline, and deployment process.
Activities:
Incremental Release Planning:
Comprehensive Testing:
Execute thorough testing, including regression and performance testing, to
guarantee the software meets quality standards.
Verify that all features are fully operational and devoid of critical issues before
launching.
Offer training and documentation for end-users, such as travel agencies and
individual travelers.
Create user manuals, tutorials, and support materials to ensure efficient
utilization of the software.
Deployment and Monitoring:
Ongoing Iteration:
Performance Monitoring:
Monitor performance metrics and user satisfaction to evaluate the success of
the software.
Utilize metrics such as response time, user engagement, and error rates to
pinpoint areas for enhancement.
Plan for regular updates to maintain the software's security, relevance, and
alignment with user requirements.
Implement a structured maintenance schedule to address bugs, technical debt,
and performance optimizations.
Scalability Planning:
1. Use a case in this project to show the difference between task-parallelism and
data parallelism. (15 marks)
(A) The creation of a module dedicated to onboard activity management is underway.
This module encompasses a range of functionalities, including scheduling, booking,
and overseeing various activities such as dining, entertainment, excursions, and
fitness classes. It is crucial that this module is easily accessible to both travel
agencies and individual travelers. As we delve into the development and
optimization of this module, we can explore and highlight the disparities between
task parallelism and data parallelism through the execution of different tasks.
Task parallelism
Functional and Usability Testing:
Perform testing on the activity booking process for functionality and user-
friendliness, while a separate team works on creating user documentation and
instructional guides.
Gather user feedback on the activity management module and make iterative
improvements to enhance user experience based on the feedback received.
Execute marketing campaigns to heighten the visibility of onboard activities, all while
enhancing features within the module to drive user engagement.
The search functionality for activities will be implemented concurrently with the
setup of the notification system, which will serve as a reminder for users regarding
their bookings.
Data parallelism
Fraud Prevention:
Email Marketing:
User Authentication:
Data Synchronization:
Generating Reports:
Enhance the speed of report generation by dividing the necessary data for activity
booking reports into subsets and processing them concurrently.
Efficiently reduce loading time for users by loading activity details in parallel from
distinct segments of the database.
2. Discuss which part in this project would benefit from the use of parallel
computing. (10 marks)
Code Synthesis: If the system involves automated code generation from formal
specifications, parallelizing the generation process allows for the synthesis of
different modules simultaneously.
3. Suppose the serial runtime of a program A is Tserial = 30 seconds and we are able to
parallelize 90% of it. With 8 cores, what is the estimated overall parallel runtime?
Show the calculation process. (15 marks)
(A) To estimate the overall parallel runtime of the program , we should consider
using Amdahl’s law can follow these steps:
Details
Solution
Hence, the estimated overall parallel runtime with 8 cores is 6.375 s, seconds
4. Try to write pseudo-code for the tree-structured global sum illustrated in Figure 1.
Assume the number of cores is a power of two (1, 2, 4, 8, …). (10 marks)
(A) This Pseudo-Code impletend through the Bottom-Up Approach
n = length(A)
resultArray = [0] * n
for i = 0 to (n - 1) do
resultArray[i] = A[i]
end for
step = 1
end for
step = step * 2
end while
result = resultArray[0]
Explaination
2. Copy the Array: Create a new array, called resultArray, which initially holds the
same elements as array A. This array will be used to store the intermediate sums as
we progress through the steps.
3. Set Initial Step Size: Start with a step size of 1. This step size determines which
pairs of numbers will be summed together.
5.Compeletion: After completing a pass through the array with the current step size,
double the step size. This means that in the next iteration, you will sum pairs that are
further apart.
6. Continue Until Complete: Repeat the summation process, doubling the step size
each time, until the step size is equal to or larger than the length of the array. Each
iteration reduces the number of elements that need to be summed by half.
7. Final Sum: Once the step size becomes larger than the length of the array, the
global sum of all elements in the original array A will be stored in the first element of
resultArray.
By following this bottom-up approach, the sum of the array can be efficiently
calculated by gradually reducing the number of elements that need to be summed in
each iteration.
Question 3 Essay
Write an essay describing a research problem in your major that would benefit from
the use of parallel computing. Provide a rough outline of how parallelism would be
used. Would you use task- or data-parallelism? (15 marks).
In today's digital era, the rapid progress of technology continuously brings about
significant changes in various domains, including software development. Among
these transformative technologies, parallel computing stands out as a potential
game-changer in the field of Requirements Engineering (RE). RE, a critical phase in
software development, involves the collection, analysis, and specification of system
functionalities. Traditionally, this process has been time-consuming and prone to
errors. However, the integration of parallel computing presents substantial
advantages that can greatly enhance the efficiency, accuracy, and overall quality of
Requirements Engineering. This essay contends that parallel computing is an
indispensable asset for Requirements Engineering, offering noteworthy
enhancements in performance, scalability, accuracy, and innovation.
Modern software systems are growing more intricate and demanding, often
encompassing extensive projects with complex requirements. Conventional
sequential processing approaches face difficulties in meeting the scalability needs of
these projects. Parallel computing tackles this challenge by distributing tasks across
multiple processors, facilitating the management and processing of substantial data
volumes and intricate requirements. This scalability proves especially advantageous
for requirements engineering (RE), where the efficient processing and analysis of
vast amounts of information are paramount. Parallel computing guarantees that as
projects expand in size and complexity, the requirements can be effectively managed
without sacrificing performance or accuracy.
Key points the outlines of how Data Parallelism would be Enhancing Requirements
Engineering
2. Prioritizing Requirements
2. Detecting Conflicts
1. Documenting Requirements
2. Modeling Requirements
1. Requirement Traceability
Parallel processing of vast requirements data for trend analysis and valuable insights.
Conclusion