Refer to the guide Setting up and getting started.
The Architecture Diagram given above explains the high-level design of the App.
Given below is a quick overview of main components and how they interact with each other.
Main components of the architecture
Main
(consisting of classes Main
and MainApp
) is in charge of the app launch and shut down.
The bulk of the app's work is done by the following four components:
UI
: The UI of the App.Logic
: The command executor.Model
: Holds the data of the App in memory.Storage
: Reads data from, and writes data to, the hard disk.Commons
represents a collection of classes used by multiple other components.
How the architecture components interact with each other
The Sequence Diagram below shows how the components interact with each other for the scenario where the user issues the command delete 1
.
Each of the four main components (also shown in the diagram above),
interface
with the same name as the Component.{Component Name}Manager
class (which follows the corresponding API interface
mentioned in the previous point.For example, the Logic
component defines its API in the Logic.java
interface and implements its functionality using the LogicManager.java
class which follows the Logic
interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component's being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.
The sections below give more details of each component.
The API of this component is specified in Ui.java
The UI consists of a MainWindow
that is made up of parts e.g.CommandBox
, ResultDisplay
, StartupListPanel
, StatusBarFooter
etc. All these, including the MainWindow
, inherit from the abstract UiPart
class which captures the commonalities between classes that represent parts of the visible GUI.
The UI
component uses the JavaFx UI framework. The layout of these UI parts are defined in matching .fxml
files that are in the src/main/resources/view
folder. For example, the layout of the MainWindow
is specified in MainWindow.fxml
The UI
component,
Logic
component.Model
data so that the UI can be updated with the modified data.Logic
component, because the UI
relies on the Logic
to execute commands.Model
component, as it displays Startup
object residing in the Model
.API : Logic.java
Here's a (partial) class diagram of the Logic
component:
The sequence diagram below illustrates the interactions within the Logic
component, taking execute("delete 1")
API call as an example.
Note: The lifeline for DeleteCommandParser
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.
How the Logic
component works:
Logic
is called upon to execute a command, it is passed to an AddressBookParser
object which in turn creates a parser that matches the command (e.g., DeleteCommandParser
) and uses it to parse the command.Command
object (more precisely, an object of one of its subclasses e.g., DeleteCommand
) which is executed by the LogicManager
.Model
when it is executed (e.g. to delete a startup).Model
) to achieve.CommandResult
object which is returned back from Logic
.Here are the other classes in Logic
(omitted from the class diagram above) that are used for parsing a user command:
How the parsing works:
AddressBookParser
class creates an XYZCommandParser
(XYZ
is a placeholder for the specific command name e.g., AddCommandParser
) which uses the other classes shown above to parse the user command and create a XYZCommand
object (e.g., AddCommand
) which the AddressBookParser
returns back as a Command
object.XYZCommandParser
classes (e.g., AddCommandParser
, DeleteCommandParser
, ...) inherit from the Parser
interface so that they can be treated similarly where possible e.g, during testing.API : Model.java
The Model
component,
Startup
objects (which are contained in a UniqueStartupList
object).Startup
objects (e.g., results of a search query) as a separate filtered list which is exposed to outsiders as an unmodifiable ObservableList<Startup>
that can be 'observed' e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.UserPref
object that represents the user’s preferences. This is exposed to the outside as a ReadOnlyUserPref
objects.Model
represents data entities of the domain, they should make sense on their own without depending on other components)Note: An alternative (arguably, a more OOP) model is given below. It has a Tag
list in the AddressBook
, which Startup
references. This allows AddressBook
to only require one Tag
object per unique tag, instead of each Startup
needing their own Tag
objects.
API : Storage.java
The Storage
component,
AddressBookStorage
and UserPrefStorage
, which means it can be treated as either one (if only the functionality of only one is needed).Model
component (because the Storage
component's job is to save/retrieve objects that belong to the Model
)Classes used by multiple components are in the seedu.addressbook.commons
package.
This section describes some noteworthy details on how certain features are implemented.
The find commands allows users to find the startups with matching names, funding stages, or industries.
There are three find commands in CapitalConnect: find n/
, find i/
, find f
. The implementation of these three commands are similar. Here we use the find n/
command to illustrate how they are executed.
The find n/
function allows users to find the startups that contain the names that users are interested in.
This function will display startup cards that have the same name as users provide. The startup card contains information other than the startup names, such as addresses, emails, phone numbers, etc..
To find the wanted startup, a NameContainsKeywordsPredicate
is created to test whether a startup has a name that matches the user's input keywords. Similarly, find f/
and find i/
will create FundingStageContainsKeywordsPredicate
and InudstryContainsKeywordsPredicate
respectively. These commands only change the displayed list of startups, stored as filteredStartups
in Model
, without affecting the data stored in CapitalConnect.
A typical program flow is as follows:
find n/Apple
.AddressbookParser
class which calls FindCommandParser
. FindCommandParser
attempts to parse the flags present, and in this case is n/
. Note that FindCommandParser
does not check invalid inputs like partial keywords. FindCommandParser
will only throw an exception if the keyword is empty.NameContainsKeywordsPredicate
is created to find the startups that contain the name Apple
.FindCommand
is created from the predicate and passed back to LogicManager
.filteredStartups
is updated with the predicate passed into the command.LogicManager
The following sequence diagram illustrates the execution process of a find by name command.
The addnote
, editnote
, and deletenote
commands enhance the ability of users to manage detailed annotations for each startup in CapitalConnect. These commands allow users to append notes, modify existing ones, or remove them from startups respectively. This section will delve into the implementations of these commands.
The addnote
command allows users to add a note to a specific startup.
Program Flow:
addnote 1 This is a new note.
The input is processed by AddNoteCommandParser
which parses the startup index and the note content.Note
object is created, and AddNoteCommand
is instantiated with the parsed index and Note
. When executed, the command retrieves the specified startup by index from Model
, adds the new note to the startup's notes list, and updates the model.Sequence Diagram for AddNote Command:
The editnote
command enables the modification of an existing note within a startup's note list.
Program Flow:
editnote 1 2 Updated content of the note.
where 1
is the startup index and 2
is the note index within that startup. EditNoteCommandParser
parses these indices and the new note content.Sequence Diagram for EditNote Command:
The deletenote
command allows users to remove a note from a startup.
Program Flow:
deletenote 1 1
, aiming to delete the first note of the first startup. DeleteNoteCommandParser
parses the indices.Sequence Diagram for DeleteNote Command:
Model
to either add, modify, or delete notes, ensuring that all changes are reflected.These commands collectively provide robust functionality for managing detailed annotations on startups, facilitating better information management within CapitalConnect.
The add person command allows users to add key employees' information into a startup.
The key employee information will be displayed in the people pane, next to the startup card view. Through this function, users can keep track of employees' name, email, and other related information.
A typical program flow is as follows:
add-p 1 pn/John pe/johndoe@example.com pd/founder
.AddressbookParser
class which calls AddPersonCommandParser
, and then the AddPersonCommandParser
parses the keywords from the user's input.AddPersonCommandParser
checks whether all required fields are entered and whether the index is valid. If all checks are passed, the program will move onto AddPersonCommand
.The following sequence diagram illustrates the process of execution of an add person command.
The edit person command allows users to edit key employees' information from a startup.
The key employee information will be displayed in the people pane, next to the startup card view. Through this function, users can keep track of employees' name, email, and other related information.
A typical program flow is as follows:
edit-p 1 1 pn/John pe/johndoe@example.com pd/founder
.AddressbookParser
class which calls EditPersonCommandParser
, and then the EditPersonCommandParser
parses the keywords from the user's input.EditPersonCommandParser
checks whether all required fields are entered and whether the both indexes are valid. If all checks are passed, the program will move onto EditPersonCommand
.The following activity diagram illustrates the process of execution of an edit person command.
Target user profile: A venture capital portfolio manager who
Value proposition: Venture capital firms manage diverse portfolios of startup investments across various industries. The app streamlines the management of startup investments, enabling VC firms to easily add, categorize, and track a diverse portfolio of investments in various industries and funding stages.
Priorities: High (must have) - * * *
, Medium (nice to have) - * *
, Low (unlikely to have) - *
Priority | As a … | I want to … | So that I can… |
---|---|---|---|
* * * | new user | see usage instructions | refer to instructions when I forget how to use the App |
* * * | user | view the startup investments in my portfolio | see the list of startup investments that I'm interested in |
* * * | user | add a new startup investment to my portfolio | save the details of the new startup investment |
* * * | user | delete a startup investment to my portfolio | remove the startup investment that I am no longer interested in |
* * | user | find a startup investment by names | locate a startup investment by its name without having to go through the entire list |
* * | user | find a startup investment by industries | locate a startup investment by its industry without having to go through the entire list |
* * | user | find a startup investment by funding stages | locate a startup investment by its funding stage without having to go through the entire list |
* * | user | edit a startup investment in my portfolio | update a startup information in my portfolio |
* * | intermediate user | add a note to the startups I'm interested in | know more about the startup investment when checking it through the app |
* * | intermediate user | edit a note of the startups I'm interested in | update the startup investment in the app |
* * | intermediate user | delete a note of the startups I'm interested in | get rid of redundant information |
* * | intermediate user | add key employee's information to startups | know more about the startup through its people |
* * | intermediate user | edit key employee's information from the startups | update the startups' employees' information |
* * | intermediate user | delete key employee's information from the startups | remove outdated employee information from a startup |
(For all use cases below, the System is the AddressBook
and the Actor is the user
, unless specified otherwise)
MSS
User requests to add a new startup investment to their portfolio.
CapitalConnect dashboard prompts the user to provide details including:
User provides the necessary details.
CapitalConnect verifies the input for validity.
CapitalConnect adds the new startup's profile to the user's portfolio in the dashboard.
Use case ends.
Extensions
4a. Invalid input or missing parameters.
4a1. CapitalConnect shows an error message.
Use case resumes at step 2.
4b. Startup name already exists in the portfolio.
4b1. CapitalConnect notifies the user about the duplicate entry.
Use case resumes at step 2.
MSS
User requests to search for startup investments by names.
CapitalConnect dashboard prompts the user to input the names of the startup.
User provides the names of the startup.
CapitalConnect verifies the input for validity.
CapitalConnect searches for startup investments matching the specified names in the user's portfolio.
CapitalConnect displays the startup investments matching the search criteria.
Use case ends.
Extensions
4a. Invalid input or missing parameters.
4a1. CapitalConnect shows an error message.
Use case resumes at step 2.
MSS
User requests to search for startup investments by industries.
CapitalConnect dashboard prompts the user to input the industries.
User provides the industries.
CapitalConnect verifies the input for validity.
CapitalConnect searches for startup investments matching the specified industries in the user's startup portfolio.
CapitalConnect displays the startup investments matching the search criteria.
Use case ends.
Extensions
4a. Invalid input or missing parameters.
4a1. CapitalConnect shows an error message.
Use case resumes at step 2.
MSS
User requests to search for startup investments by funding stages.
CapitalConnect dashboard prompts the user to input the funding stage.
User provides the funding stage.
CapitalConnect verifies the input for validity.
CapitalConnect searches for startup investments matching the specified funding stages in the user's startup portfolio.
CapitalConnect displays the startup investments matching the search criteria.
Use case ends.
Extensions
4a. Invalid input or missing parameters.
4a1. CapitalConnect shows an error message.
Use case resumes at step 2.
MSS
CapitalConnect automatically saves the state of the dashboard after every add and delete operation.
Use case ends.
Extensions
1a. Issue with saving the dashboard state.
1a1. CapitalConnect shows an error message indicating the issue with saving the dashboard state.
Use case ends.
MSS
User requests to delete a specific startup investment from their portfolio.
CapitalConnect dashboard prompts the user to input the index of the startup investment to be deleted.
User provides the index of the startup investment.
CapitalConnect verifies the input for validity.
CapitalConnect deletes the startup investment at the specified index from the user's portfolio.
CapitalConnect displays a confirmation message indicating successful deletion of the startup investment.
Use case ends.
Extensions
4a. Invalid input or missing parameters.
4a1. CapitalConnect shows an error message.
Use case resumes at step 2.
5a. Specified index is out of range or no startup investments at the specified index.
5a1. CapitalConnect shows an error message indicating the issue.
Use case ends.
MSS
User requests to edit a specific startup investment from their portfolio.
CapitalConnect dashboard prompts the user to input the index of the startup investment to be edited and updated details.
User provides the index of the startup investment and the updated details, where updated details must be one or more from the following:
CapitalConnect verifies the updated details for validity.
CapitalConnect verifies the index for validity.
CapitalConnect edits the startup investment at the specified index from the user's portfolio.
CapitalConnect displays a confirmation message indicating successful edit of the startup investment.
Use case ends.
Extensions
4a. Invalid input or missing parameters.
4a1. CapitalConnect shows an error message.
Use case ends.
5a. Specified index is out of range or no startup investments.
5a1. CapitalConnect shows an error message indicating the issue.
Use case ends.
MSS
Use case ends.
MSS
Use case ends.
MSS
Use case ends.
Extensions
4a. Invalid input or missing parameters.
5a. Specified index is out of range or no startup at the specified index.
MSS
Use case ends.
Extensions
4a. Invalid input or missing parameters.
5a. Specified startup index or note index is out of range or no such note exists.
MSS
Use case ends.
Extensions
4a. Invalid input or missing parameters.
5a. Specified startup index or note index is out of range or no such note exists.
MSS
Use case ends.
Extensions
4a. Invalid input or missing parameters.
4a1. CapitalConnect shows an error message.
Use case resumes at step 2.
4b. Person email already exists in the startup's person list.
4b1. CapitalConnect notifies the user about the duplicate entry.
Use case resumes at step 2.
MSS
Use case ends.
Extensions
4a. Invalid input or missing parameters.
4b. Edited person email already exists in the startup's person list.
4b1. CapitalConnect notifies the user about the duplicate entry.
Use case resumes at step 2.
MSS
Use case ends.
Extensions
11
or above installed.Given below are instructions to test the app manually.
Note: These instructions only provide a starting point for testers to work on; testers are expected to do more exploratory testing.
Initial launch
Download the jar file and copy into an empty folder
Double-click the jar file
Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.
Saving window preferences
Resize the window to an optimum size. Move the window to a different location. Close the window.
Re-launch the app by double-clicking the jar file.
Expected: The most recent window size and location is retained.
Get help message on the usage of CapitalConnect
Test case: help
Expected: A help box will pop up showing the link to the CapitalConnect user guide.
Test case: help 1234
Expected: A help box will pop up showing the link to the CapitalConnect user guide.
Adding a startup with valid inputs.
add n/Google p/999 e/sundarpichal@example.com v/100000 a/Menlo Park, block 123, #01-01 f/A i/tech
Adding a startup with missing / invalid inputs.
Test case: add n/ p/98765432 e/sundarpichal@example.com v/100000 a/Menlo Park, block 123, #01-01 f/A i/tech
Expected: No startup is added, message sent to user that name should not be blank.
Test case: add n/Google p/1 e/sundarpichal@example.com v/100000 a/Menlo Park, block 123, #01-01 f/A i/tech
Expected: No startup is added, message sent to user that phone number should be at least 3 digits long.
Test case: add n/Google p/98765432 e/sundarpichal@example.com v/100000 a/Menlo Park, block 123, #01-01 f/J i/tech
Expected: No startup is added, message sent to user on appropriate inputs for funding stages.
Test case: add n/Google p/98765432 e/sundarpichal@example.com v/-1 a/Menlo Park, block 123, #01-01 f/A i/tech
Expected: No startup is added, message sent to user on the valid inputs for company valuation.
Deleting a startup while all startups are being shown
Prerequisites: List all startups using the list
command. Multiple startups in the list.
Test case: delete 1
Expected: First startup is deleted from the list. Details of the deleted startup shown.
Test case: delete 0
Expected: No startup is deleted. Error details shown in the status message. Status bar remains the same.
Other incorrect delete commands to try: delete
, delete x
, ...
(where x is larger than the list size)
Expected: Similar to previous.
Deleting a startup after find
command is performed
Prerequisites: A startup with the name Apple
exists. Find the startup using the find n/apple
command.
Startups in the list are shown.
Test case: delete 1
Expected: First startup displayed on the list is deleted. Details of the deleted startup shown.
Test case: delete 0
Expected: No startup is deleted. Error details shown in the status message. Status bar remains the same.
Other incorrect delete commands to try: delete
, delete x
, ...
(where x is larger than the list size)
Expected: Similar to previous.
Prerequisites: One startup in CapitalConnect at the first position.
Editing startup with valid inputs
Test case: edit 1 n/test
Expected: The startup at position 1 has its name changed. Details of the edited startup is shown.
Test case: edit 1 v/9999
Expected: The startup at position 1 has its valuation changed, details of the edited startup is shown. The new valuation is displayed as 9.9k
.
Editing a startup with invalid inputs
Test case: edit 1 f/H
Expected: No edits made to any startups, users are informed on valid input for funding stages.
Test case: edit 1 i/
Expected: No edits made to any startups, users are informed on valid industry inputs.
Prerequisites: One startup named Apple
in tech
industry and with a funding stage A
is presented in CapitalConnect.
Finding a startup with valid inputs.
Test case: find n/Apple
Expected: The startup with the respective name has been successfully displayed in CapitalConnect.
Test case: find i/tech
Expected: The startup with the respective industry has been successfully displayed in CapitalConnect.
Test case: find f/A
Expected: The startup with the respective funding stage has been successfully displayed in CapitalConnect.
Finding a startup with missing / invalid inputs.
Test case: find n/
Expected: No startup is displayed, message of invalid command format is sent to user as names should not be blank.
Test case: find i/
Expected: No startup is displayed, message of invalid command format is sent to user as industries should not be blank.
Test case: find f/
Expected: No startup is displayed, message of invalid command format is sent to user as funding stages should not be blank.
Test case: find
Expected: No startup is displayed, message of invalid command format is sent to user as given keywords should not be blank.
Viewing all startups in CapitalConnect
Prerequisites: There are startups stored in CapitalConnect.
Test case: list
Expected: all previously saved startups will be shown only in the startup list. Success message is displayed.
Test case: list 1234
Expected: all previously saved contacts will be shown only in the startup list. Success message is displayed.
Prerequisites: One startup in CapitalConnect at the first position with 0 or more notes
Adding a note with valid inputs
addnote 1 Beautiful and Handsome
Adding a note with invalid inputs
Test case: addnote 1
Expected: No note is added to the Startup and Note Box, users are informed on valid input for the addnote command.
Test case: addnote No index given
Expected: No note is added to the Startup and Note Box, users are informed on valid input for the addnote command.
Prerequisites: A startup in CapitalConnect in position 1 with at least one note.
Editing a note with valid inputs
editnote 1 1 New content for the note
Expected: The first note of the startup at index 1 is edited to "New content for the note".
Details of the Note is shown in the Note Display Box when the startup card with index 1 is selected.Editing a note with invalid inputs
Test case: editnote
Expected: No note is edited. Error message about invalid command format is shown.
Test case: editnote 1
Expected: No note is edited. Error message about invalid command format is shown.
Test case: editnote 1 2
Expected: No note is edited. Error message about invalid command format is shown.
Test case: editnote 1 99 New content but invalid note index
Expected: No note is edited as the note index is out of range. Error message about invalid note index is shown.
Test case: editnote 99 1 New content but invalid startup index
Expected: No note is edited as the startup index is out of range. Error message about invalid startup index is shown.
Prerequisites: A startup in CapitalConnect in position 1 with at least one note.
Deleting a note with valid inputs
deletenote 1 1
Deleting a note with invalid inputs
Test case: deletenote
Expected: No note is deleted. Error message about invalid command format is shown.
Test case: deletenote 1
Expected: No note is deleted. Error message about invalid command format is shown.
Test case: deletenote 1 99
Expected: No note is deleted as the note index is out of range. Error message about invalid note index is shown.
Test case: deletenote 99 1
Expected: No note is deleted as the startup index is out of range. Error message about invalid startup index is shown.
Adding a person to a startup with valid input
Prerequisites: There must be at least one startup stored in CapitalConnect.
Test case (compulsory fields only): add-p 1 pn/John pe/johndoe@gmail.com
Expected: The startup at position 1 has a person added to it. Details of the Person
is shown in the key employee
box if the startup card with index 1 is selected
Test case (all fields specified): add-p 1 pn/Joe pe/joe@gmail.com pd/founder
Expected: The Startup
at position 1 has a Person
added to it. Details of the Person
is shown in the key employee
box if the startup card with index 1 is selected.
Test case (multiple descriptions specified): add-p 1 pn/James pe/james@gmail.com pd/Founder pd/Harvard graduate
Expected: The Startup
at position 1 has a Person
added to it. Details of the Person
is shown in the key employee
box if the startup card with index 1 is selected.
Test case (duplicate descriptions specified): add-p 1 pn/Jane pe/jane@gmail.com pd/Founder pd/Founder
Expected: The Startup
at position 1 has a Person
added to it. The added Person
should contain only one description Founder
, since the two inputted description are duplicate.
Details of the Person
is shown in the key employee box if the startup card with index 1 is selected.
Adding a person to a startup with invalid input
Prerequisites: There must be at least one startup stored in CapitalConnect. For our example we assume there are
less than 50 startups stored in CapitalConnect and a person with the email johndoe@gmail.com
is already stored inside
the startup with index 1.
Test case (missing compulsory field): add-p 1 pe/jane@gmail.com pd/founder
Expected: No Person
added to the Startup
. Error details shown in the status message. The key employee box remains unchanged.
Test case (invalid index): add-p 99 pn/Amy pe/amy@gmail.com pd/founder
Expected: No Person
added to the Startup
. Error details shown in the status message. The key employee box remains unchanged.
Test case (duplicate email): add-p 1 pn/Jess pe/johndoe@gmail.com pd/founder
Expected: No Person
added to the Startup
. Error details shown in the status message. The key employee box remains unchanged.
Test case (repeated single-valued fields): add-p 1 pn/Jess pn/James pe/johndoe@gmail.com pd/founder
Expected: No Person
added to the Startup
. Error details shown in the status message. The key employee box remains unchanged.
Test case (invalid format for one field): add-p 1 pn/Amy* pe/johndoe@gmail.com pd/founder
Expected: No Person
added to the Startup
. Error details shown in the status message. The key employee box remains unchanged.
Other incorrect add-p
commands to try: add-p 1 pn/
, add-p
Expected: similar to previous
Editing a person in a startup with valid input
Prerequisites: The startup at index 1 contains at least 1 person.
No person inside the startup at index 1 has the email josh@gmail.com
and jay@gmail.com
Test case (name specified): edit-p 1 1 pn/John
Expected: The name of the first person inside the startup at index 1 gets edited to John
. Details of the updated Person
is shown in the key employee
box if the startup card with index 1 is selected
Test case (email specified): edit-p 1 1 pe/josh@gmail.com
Expected: The email of the first person inside the startup at index 1 gets edited to josh@gmail.com
. Details of the updated Person
is shown in the key employee
box if the startup card with index 1 is selected
Test case (description specified): edit-p 1 1 pd/ceo
Expected: The description of the first Person
inside the Startup
at index 1 gets edited to ceo
. Details of the updated Person
is shown in the key employee
box if the startup card with index 1 is selected.
Test case (empty description specified): edit-p 1 1 pd/
Expected: The description of the first Person
inside the Startup
at index 1 is removed. Details of the updated Person
is shown in the key employee
box if the startup card with index 1 is selected.
Test case (multiple description specified): edit-p 1 1 pd/founder pd/new
Expected: The first Person
inside the Startup
at index 1 has two descriptions, which are founder
and new
. Details of the updated Person
is shown in the key employee
box if the startup card with index 1 is selected.
Test case (duplicate description specified): edit-p 1 1 pd/founder pd/founder
Expected: The first Person
inside the Startup
at index 1 only has one description founder
, since the specified tags are duplicate. Details of the updated Person
is shown in the key employee
box if the startup card with index 1 is selected.
Test case (all fields specified): edit-p 1 1 pn/Jay pe/jay@gmail.com pd/founder
Expected: The details of the first person inside the startup at index 1 gets edited. Details of the updated Person
is shown in the key employee
box if the startup card with index 1 is selected.
Editing a person in a startup with invalid input
Prerequisites: For our example, we assume there are less than 10 startups stored in CapitalConnect and less
than 10 person stored in the startup at index 1. We also assume a person with the email johndoe@gmail.com
is
already stored inside the startup with index 1.
Test case (missing person index): edit-p 1 pn/name pd/founder
Expected: No Person
gets edited. Error details shown in the status message.
Test case (invalid startup index): edit-p 99 1 pn/Amy pe/amy@gmail.com pd/founder
Expected: No Person
gets edited. Error details shown in the status message.
Test case (invalid person index): edit-p 1 50 pn/Amy pe/amy@gmail.com pd/founder
Expected: No Person
gets edited. Error details shown in the status message.
Test case (duplicate email): edit-p 1 1 pn/Jess pe/johndoe@gmail.com pd/founder
Expected: No Person
gets edited. Error details shown in the status message.
Test case (invalid format for one field): edit-p 1 1 pn/Amy* pe/johndoe@gmail.com pd/founder
Expected: No Person
gets edited. Error details shown in the status message.
Other incorrect edit-p
commands to try: edit-p 1 1 pn/
, edit-p
, edit-p 1 1 pe/email
Expected: similar to previous
Deleting a person from a startup with valid input
Prerequisites: The startup at index 1 contains at least 1 person.
Test case : delete-p 1 1
Expected: The first person inside the startup at index 1 gets deleted.
Details of the Person
is removed from the key employee box if the startup card with index 1 is selected
Deleting a person from a startup with invalid input
Prerequisites: For our example, we assume there are 10 startups stored in CapitalConnect and there are 10 person stored in the startup at index 1.
Test case (invalid startup index): delete-p 99 1
Expected: No Person
gets deleted. Error details shown in the status message.
Test case (invalid person index): delete-p 1 50
Expected: No Person
gets deleted. Error details shown in the status message.
Test case (missing person index): edit-p 1 pn/name pd/founder
Expected: No Person
gets deleted. Error details shown in the status message.
Test case (no index specified): delete-p
Expected: No Person
gets deleted. Error details shown in the status message.
Clearing all startups data in CapitalConnect
Prerequisites: There are startups stored in CapitalConnect.
Test case: clear
Expected: All previously saved startups will be removed from the startup list. Success message is displayed.
Test case: clear 1234
Expected: All previously saved startups will be removed from the startup list. Success message is displayed.
Saving startups data stored in CapitalConnect
Prerequisites: There are startups stored in CapitalConnect.
Close the program using the exit
command or by double-clicking the close button.
Reopen the app Expected: The app should display all previously stored startup data.
Team size: 4
Limit length of startup name: Currently we do not limit length of startup name user can input. This results in overflow. We plan to address this in the future by limiting length of startup names to 32 letters long.
Supporting country codes: Currently we do not allow users to specify country codes using "-", this makes it hard to track international numbers. We plan to allow for the user to add an optional country code field alongside the phone number in further iterations.
Limit phone numbers: Currently we do not limit the length of phone numbers users can input. This may result in a UI overflow. We plan to address this in the future by limiting the length of the phone number to 8 digits for the number and 3 digits for the country code after planned enhancement 2 has been completed.
Supporting non-alphanumerical characters in startup names: Some company names may contain non-alphanumerical characters. We plan to address this in the future by allowing for such characters to be in the name, but also changing the current regular expression rules to ensure that the input remains valid.
Supporting non-alphanumerical characters in tags: Currently tags must be in alphanumerical characters without spacings. This forces users to find alternative means to add tags, such as using camel case within their tags instead. For example,
US based
would not be an allowed tag, resorting in users tagging the startup as USBased
instead. We plan to address this in the future by allowing for such characters to be in the tag,
but also changing the current regular expression rules to ensure that the input remains valid.
Supporting Indexes for notes: Currently, notes displayed do not contain information about their indexes, making editing and deleting them not as straightforward and requires remembering their index or counting from the top. We plan to address this in a future iteration.
Supporting partial matching in find commands: We understand that you might want to use partial matching to find matching startups, but this feature is currently under development. This feature will be dropped soon!
Potential limitation in detecting duplicated persons: Note that duplicated persons in one startup are detected by pe/EMAIL
. We assume that email is unique for every person. In other words, we assume that it is possible to have 3 Johns in one company, and they all have different emails. Before adding a new person to the startup, always double-check their email to make sure that the person is not added already. Also take note that we allow one person to work in multiple startups.