240 likes | 363 Views
This document outlines the Software Requirements Specification (SRS) for the Replicated Navigation Data Store (RNDS) system, focusing on aviation usage. It describes the functionalities required for flight planning, editing waypoints, and interaction with GPS devices and communication layers. The RNDS consists of multiple systems operating concurrently, aiming to ensure data consistency, reliability, and interoperability. Key functionalities include the ability to create, edit, and delete waypoints, alongside real-time updates and information display to users via a graphical user interface.
E N D
RNDS: Use cases CS 236700: Software Design Winter 2004-2005/T3
Homework bonus program • Report a bug • Report a programming challenge
Problem description: RNDS (1/3) • RNDS: Replicated Navigation Data Store • A formation of Aircrafts + A ground station • A single flight plan (FP) made up of several way-points (WP) • A single steering point (SWP) • Requirements: • Allow flight-plan editing • Allow setting of the current SWP • Display Info • Distance to SWP • Heading to SWP • Heading correction to SWP
Problem description : RNDS (2/3) • Interoperability with existing systems • A GPS device • Provides: Position, time, speed, current heading • A communication layer (CL) • Supports various communication protocols • Broadcasting, Send-reply, … • Preconfigured with relevant “addresses”: • Formation’s aircrafts • Ground station
Problem description : RNDS (3/3) • More requirements • Human interaction thru GUI • Data (WPs, FP, SWP) should be consistent • Reliability (99% up time ?) • Software platform: Java/Embedded Windows NT • Hardware configuration is uniform • Same setup in the ground station and the aircrafts • Boundaries • A single RNDS system is the software components running on a single computer (either at the aircraft or at the ground station) • Other RNDS instances (reachable thru CL) are considered to be identical peers • => In the typical settings (four aircrafts + a ground station) there are five RNDS systems working concurrently.
The mission Write the use-case specifications for the SRS document • SRS = Software Requirements Specification • Describes the functionality the system will provide • Written from the client’s perspective • Defines the developer’s obligation to the client • Must be approved by the client • Who is the client ? • Many times someone from within the organization
SRS Document • SRS Template • Glossary • Primary actor • Principal actor that interacts with the system to fulfill a goal • Secondary actor • A non primary actor • Active actor • Initiates interaction with the system • Passive actor • A non-active actor • Function points
Actors • Who can interact with our system? • Pilots • Ground station operator • Is he really different than a pilot? • GPS • Communication Layer • Administrator? • Mission planner? • Flight commander? • Operating System? • File system?
“User Level Activities” • The key question: What can a user “do” with the RNDS? • Enter a new WP • Remove a WP • Change a WP • Add a WP to the FP • Remove a WP from the FP • Change the current SWP • The standard set of operations on a data item: • Create • Change • Delete • Lookup
Other activities • What about non-human actors? • The system communicates with its peers thru the CL • The system reads current position from the GPS
The list of use-cases (1/2) • Add a new WP • Delete a WP • Edit a WP • Add a WP to the FP • Remove a WP from the FP • Change SWP • Show Info • Read GPS data • Receive updates • Send updates
The list of use-cases (2/2) • Q: Can we have a “calculate-info” use case? • The answer depends on • The client • The description of the problem • The SRS author Anyway, it seems like an Implementation detail • The Use cases: • Add a new WP • Delete a WP • Edit a WP • Add a WP to the FP • Remove a WP from the FP • Change SWP • Show Info • Read GPS data • Receive updates • Send updates • The bottom line: • The client must understand the SRS document • The client must approve the SRS document
Use case diagram (2/2) • NavInfoChange can generalize 6 of the use cases
The list of use-cases - updated • Change Navigation Info • Add a new WP • Delete a WP • Edit a WP • Add a WP to the FP • Remove a WP from the FP • Change SWP • Show Info • Read GPS data • Receive updates • Send updates
“User Level Activities” – again (1/3) • The key question: what can a user “do” with the GUI ? • A picture worth 1000 words • He can start an action: New WP, Delete WP, Change SWP, … • These actions are already covered (see previous slide) • He can read the directions • This is the “ShowInfo” use case • He can scroll the WP list • He can scroll the FP list • He can show/hide various parts of the display Run RndsGui
“User Level Activities” – again (2/3) • …So, the user can also scroll the display • Q: Is it possible for the ShowInfo use-case to handle scrolling? • A: No • NavInfoChange uses ShowInfo for refreshing the display • “Refresh” and “scroll” are distinct • The same goes for showing/hiding parts of the display • The solution: • Rename ShowInfo to RefreshInfo • Add a ChangeVisibleInfo use-case • Will handle scrolling, showing/hiding, … • We can also define a generalization hierarchy: • ChangeVisibleInfo – The general use-case • Scroll, Show, Hide – More specific use-cases • Reflecting GUI interaction in the SRS document…
“User Level Activities” – again (3/3) • What about the order of the FP ? • We should add an up/down facility • => Adding a new specialization of NavInfoChange Run RndsGui
Final list of use-cases • Change Navigation Info • Add a new WP • Delete a WP • Edit a WP • Add a WP to the FP • Remove a WP from the FP • Change SWP • Change FP order • Refresh Info • Change visible info • Read GPS data • Receive updates • Send updates
UC Description • Name: “EditWP” • Actors: User, CL • Goal: Change the position an existing WP • Reference to requirements: … • Pre-conditions • Number of WPs >= 1 • System displays the list of WPs • Description • User selects a WP • System displays the WP’s details • User enters new details and submits • The system updates all peers by invoking the “SendUpdates” use-case • The display is refreshed by invoking the “RefreshInfo” use-case • Post-conditions • The position of the selected WP has changed in all RNDS systems. • Variations • 4,5 - The WP is removed by another RNDS system => Operation stops • 4,5 - The WP position is changed by another RNDS system => Operation stops • Excpetions • 6 -Not all peers could be updated => A partial success message is displayed
“Holes” (1/2) • Is it possible that the guy who described the problem was not doing a good job? • What did he forget to mention? • What definitions are missing? • What is WYSIWYG ? • What You See Is What You Get • What is IKIWISI ? • I’ll Know It When I See It
“Holes” (2/2) • IKIWISI is evil • Changes at an early stage are usually made by a combination of the “cut”, “copy”, and “paste” keys • Changes towards the end of the development cycle call for a major redesign-rewrite-retest process • Thus, the later the change the more it costs • Nonetheless, many times requirements do change in a very late stage • Sometimes, IKIWISI yields better result than careful pre-planning • Especially in the holy-land !! • The bottom line • Not everything can be predicted • An impeccable requirement document is a fairy-tale • Accept the change
Dealing with late changes • Some techniques • Understanding the client’s needs • Avoiding hard-coded values • Avoiding hard-coded decisions/assumptions • Deja vu reduction • Increased locality, modularity • Representing “things” as classes • Adding levels of abstractions • On the other hand, beware of over-engineering. • Anyway, these techniques are out of the scope of this lecture