CPSC 4360 – Software Engineering

Spring 2023, Semester

Project Specifications and Instructions

Submission date: the last two weeks of the semester

Project Description (‘Finding the right word for the company’s phone’):

This project (‘Finding the right word for the company’s phone’) requires you to adopt a use-case-driven object-oriented approach to develop a system for finding the right word for the company’s phone. Businesses are investing a lot for advertising their company in many ways (source: https://smallbusiness.chron.com/ways-advertise-business-phone-contact-17049.html)


The United States phone numbers follow the following pattern (+1 is omitted for simplicity):



Area Core Present: Boolean value [ True or False ]

Area Code: 3-digit number [200 … 999] except 911

Prefix: 3-digit number not beginning with 0 or 1

Suffix: 4-digit number

The problem of finding the right word for the company’s phone is quite challenging but very beneficial from a business perspective.

The software’s purpose is to find or at least assist the user in finding the right word for the company’s phone. For example, the phone number 409-880-8748 can be viewed as the phone String: {g, h, i} {+} {w, x, y, z} – {t, u, v} {t, u, v} {+} – {t, u, v} {p, q, r, s} {g, h, i} {t, u, v}, where means the cartesian product of the previous sets.

According to [1], “In the ancient times, when there were no smartphones, the mobile phones used to have a keypad with digits ranging from 0–9 and some special characters like *, # and so on. Digits also had some alphabets along with them to give a messaging facility. Like here, if we want to type a, b, c we would need to press digit 2, one time, two times and three times respectively. So, we can type our whole message using the digits 2–9 as they cover whole range of character set i.e. from a-z. For example, if digits = “23”, then there are nine words generated by these two digits:
[“ad”,”ae”,”af”,”bd”,”be”,”bf”,”cd”,”ce”,”cf”]. This is because 2 corresponds to [“a”, “b”, “c”] and 3 to [“d”, “e”, “f”]. (source: [1] – https://medium.com/trick-the-interviwer/letter-combinations-of-a-phone-number-511284412c8e )

According to [2], “The leading letters of a central office name were used as the leading components of the telephone number representation so that each telephone number in an area was unique. These letters were mapped to digits, which were indicated visibly on a dial telephone.

Several systematic telephone numbering plans existed in various communities [3], typically evolving over time as the subscriber base outgrew older numbering schemes. A widely used numbering plan was a system of using two letters from the central office name with four or five digits, which was designated as 2L-4N or 2L-5N, or simply 2–4 and 2–5, respectively, but some large cities initially selected plans with three letters (3L-4N). In 1917, W. G. Blauvelt of AT&T proposed a mapping system that displayed three letters each with the digits 2 through 9 on the dial.

(sources: [2] – M. D. Fagen, ed. (1975). A History of Engineering and Science in the Bell System: The Early Years (1875-1925). Bell Telephone Laboratories. p. 578.

[3] – Nunn, W.H. (1952). “Nationwide Numbering Plan”. Bell System Technical Journal31 (5): 851. doi:10.1002/j.1538-7305.1952.tb01412.x)

Nowadays, the letters are used for advertising. For example, here is a small list of such eye-catching phone numbers:

1. 1-800-GO-FEDEX — FedEx, the go-to multinational delivery service’s contact uses a vanity toll free number with its name inserted in it.

2. 1-800-HURT-NOW — a toll free line for personal injury attorneys. Calling this number can help you get connected with a personal injury attorney best suited for your case.

3. 1-800-THRIFTY — Thrifty Car Rental’s customer service for online reservation help. Interestingly, their other toll free contact number is 1-800-FOR-CARS.

4. 800-GIANT-MEN — The Gentle Giant Moving Company inserts its name creatively in its business number to market its brand, emphasizing that they are giants of moving.

5. 1-800-DOG-POOP — This pooper scooper service’s vanity toll free number immediately grabs your attention!

6. 1-800-GOT-JUNK — You must have seen this vanity number displayed on vans and billboards across the street. This is a toll free number for the world’s largest junk removal service.

There are many websites selling phone numbers for a given company if they are willing to pay. Some are quite expensive, for example several thousand dollars as a search and acquisition fee (source: https://www.phonenumberexpert.com/?utm_medium=googleads_c&utm_campaign=&utm_source=&utm_term=how%20to%20get%20an%20800%20number&gclid=CjwKCAiA2fmdBhBpEiwA4CcHzUCcTfN0R85USDExjir1Ffg0SwTjZsnhMBSjYCfPbd3Junrt4RjP-hoCcLYQAvD_BwE)


Our project main job is to design and implement a software for finding several correct English words which best represent a company. For example, 409-880-7011 could be any word from the cartesian product{g, h, i} {_} ⨯ {w, x, y, z} ⨯ {t, u, v} ⨯ {t, u, v} ⨯ {_} ⨯ {p, q, r, s} ⨯ {_} ⨯ {/, ., @} ⨯ {/, ., @}.

The second challenge is to identify a proper dictionary with eye-catching words and present it to the company’s management.

The structure and the logic of the software:

The software should take into account the cartesian product of the sets formed by the phone digits (note that 0 and 1 are for special symbols). In addition, you need to have a database of short words (three or four letters) to be selected for the meaning of the advertising logo. For example, the words “call now” correspond to “2255 669”.

The software should include:

The mapping between the phone digits and the set of letters corresponding to these.

A database with meaningful words to be combined for forming the advertising phrase.

The ‘Finding the right word for the company’s phone’ Computer Support:

All services enumerated in the above structures should be accompanied by a computer. For example, the database could be maintained as files (text, DB2, EXCEL, or other formats). The software should also include a way to interact with the software administrator about solving the problem.

The ‘Finding the right word for the company’s phone’ Requirements:

1. To develop a system that will hold information about the data needed and their services.

1.1. To be able to find relevant words for the institution (three, four, seven-length words or so).

1.2. To be able to display relevant words and allow the user to select the most relevant ones.

1.3. To be able to assign a relevant word to an intended meaning (example, 1-800-FLO-WERS, 1-800-CON-TACT, etc).

1.4. To be able to interact with the System Administrator (a.k.a., Advisor) who will validate these choices.

1.5. To generate a report about the entire choices.

2. To provide a simulation of the process of finding words for advertising the business as described in the section about the logic and the structure.

3. The system must be able for future expansion to incorporate information about new words, as well as how to expand it in the future.

Your team will work together to perform Object-Oriented Analysis and design and implementation of the proposed System. If you find that certain important information about the requirements is missing or ambiguous, you may explore on your own and suggest additional requirements or refine given requirements. While doing so, make reasonable assumptions. Your assumptions must not conflict with each other or with the given requirements. The problem and solution space need to be decomposed among the classes. The system is to be modeled in UML and implemented in Java. It is not however compulsory to program in Java. You can choose other object-oriented programming languages: C++, Python, etc.


You are required to use Java (or another object-oriented programming language) to implement classes according to specific software requirements, especially the persistency requirement. You should be able to demonstrate the functionality of the system through a menu-driven interface. It can be a text-based menu, GUI or web-based interface. Type of interface does not have any impact on project evaluation.

You should make all functions very easy to use (user friendly). For example, you should not expect the user to enter all parameters required in one long string. You can use GUI, but you may have to bear the risk of having a system that does not work correctly with the test driver (see following paragraph).


You are required to perform black box testing on the functionality of classes and the interaction between them. To carry this out you may either implement a test driver or use JUnit to execute automated testing. Ideally the menu-driven interface and the test driver can be combined as one program. If you have difficulty in combining them, it is acceptable to separate them into 2 programs.

Data Persistency

You are allowed to use Java file system to retrieve and populate the data by using the object serialization to meet the persistency requirement.


I. Project Report:

Your report should include the following:

(a) A complete use-case diagram of the proposed system illustrating functionality to be developed by your team. A domain model is also requested for later refinement into the class diagram.

(b) A class diagram to illustrate design for the proposed system. The diagram should include classes, associations, multiplicities, attributes, and methods. You are required to use UML notation for drawing the class diagram. Please choose relevant and meaningful names for classes, attributes, associations, and methods. Level of details for class diagram e.g. how detailed method signature should be, is left to the team members’ decision.

(c) Any assumptions, interpretation, and limitations that you have included while developing the models. Please be concise. Write all these as a separate section at the beginning of your report or after the introductory note, if you have any.

(d) An interaction diagram of the most complex use case scenario chosen by your team; a state chart for any object from your design; and an activity diagram for the system you propose. If you find that drawing one activity diagram is difficult or not possible, you are allowed to provide multiple activity diagrams. However, a brief reasoning for the same should be included in the report.

(e) Test cases used for automated testing.

Important: The total page limit for report is 15 pages, single spaced letter report (include all diagrams, appendix and references if any). The report will be assessed for abstraction, completeness, clarity, correctness, structure and innovative design /discussion /presentation.

II Project Demonstration

Each team is required to demonstrate:

functionality of its system through a menu-driven interface;

testing of its system through an automated test driver.

Each team is to submit its project source code along with report. Upload the source code in Blackboard. The content of the source code should at least include the following:

a) Source code of the system. Put them in a subdirectory called “source”.

b) Test driver and test cases that team used for testing your system. Put them in a subdirectory called “testing”.

c) A “Readme.txt” file containing instructions on how to compile and run your system. Indicate important configuration information, e.g., the class-paths (if any) that need to be set. If any special requirements, e.g., a web server must be installed, or MySQL must be installed etc., should be indicated as well.

Note: As we will be using the source code on your Blackboard for demonstration, please ensure that all the required files in your Blackboard are not corrupted. You will not be allowed to use a fresh copy of your source code during the demonstration. Remember to label your Blackboard with your team members’ names (at least). All software project teammates must mention the project # and the names of all teammates.

The demonstration should include a recording of each team members presenting their part of the project. If we ask you to run your system on your laptop, ensure any third party software necessary for running your system is installed.

Important points to note:

Each team has about 10-15 minutes to do the demonstration during the last two weeks of the semester using Blackboard Discussion Board. You will be providing your own test data. Size and variety of data should be adequate to demonstrate the functionalities of your system. It is preferable that your system has a ‘bulk loading’ function to load all the test data in a single operation (say from text file(s) containing the test data), rather than adding all the test data one-by-one into your system (which can be painfully slow).