Project Plan
- Purpose
A software application is desired that can display a friendly greeting to the user.
- Background
This simple application that can be used to verify that the Java Virtual Machine is correctly installed, or similar system integration checks.
- Process
For such a small application, the traditional waterfall process will suffice, because all the requirements are known in advance and are not expected to change.
- Subsystems and planned releases
A single release is planned with full functionality.
- Risks and challenges
The only anticipated challenge is separating the user input/output from the domain model. Object oriented design will address this by putting the domain model in a separate class.
- Tasks
Create feasibility prototype.
Create SRS.
Create UI prototype.
Create Subversion Repository.
Configure individual development environment.
Create High Level Design.
Create Detailed Design.
Inspect Design.
Write system test cases.
Create system test scripts.
Write JUnit tests.
Configure defect tracking system.
Implement source code.
Write user documentation.
Write build and deploy scripts.
Run Tests.
Track and repair defects.
Deploy system.
Facilitate customer acceptance tests.
- Cost estimates
Work breakdown and estimates: Total 220 minutes
- Team
Single developer.
- Schedule and milestones
Day 1: Planning and Analysis
Day 2: Design
Day 3: Implementation and Testing
Day 4: Deployment
Feasibility Prototype
The key technical issue in this application is output to standard out. The prototype will demonstrate how to achieve that in Java.
/**
* Feasibility Prototype
*/
public class Prototype
{
public static void main(String[] args)
{
System.out.println("it works");
}
}
Software Requirements Specification (SRS)
- Problem
A software application is desired that can display a friendly greeting to the user.
- Background
It is likely that this application will be expanded in the future, so Java was selected for the implementation because it is easily ported from desktop to the web or mobile applications.
- Environment and System Models
The application will run on a consumer-grade desktop workstation and has no interfaces to any other systems.
- Functional Requirements
A. Inputs - There are no external inputs to the application.
B. Outputs - The phrase "Hello, World." is displayed on standard output.
C. Functions - Display "Hello, World.". - Quality, Platform, and process requirements
Maintainability is prioritized over efficiency. It is likely that the application will be enhanced for different display styles, so the design should be easy to modify to accommodate different user interfaces.
Choosing Java as implementation language allows for platform independence.
User Interface Prototype
When the application begins, a single phrase appears on the console.Hello, World. |
High Level Design
- Purpose
- General Priorities
Maintainability is prioritized over efficiency. It is likely that the application will be enhanced for different display styles, so the design should be easy to modify to accommodate different user interfaces. This is addressed by separating the user input/output from the domain model. - Design Overview
The application is comprised of two classes. FriendlyPhrase is the domain model that represents the underlying text. HelloWorldApp is the entry point for the application and also the user interface. FriendlyPhrase is then a reusable component that can easily be used in applications with different user interfaces.
- UML Class Diagram
- Javadoc for class skeletons.
- Design Issues
#1 Should we decompose the design into UI and domain model?
Pro: Makes it easier to unit test, makes it easier to use alternate UI in the future.
Con: Such a simple application doesn't need two classes.
Decision: #1 is chosen since this is a demonstration project.
Detailed Design
- Pseudocode is linked from the javadoc.
System Test Cases
Purpose:
- The application will display "Hello, World."
Requirement Traceability:
SRS 4C
Setup:
Open a terminal window.
Test Data:
Action | Input | Expected Output |
At the command prompt, type |
java HelloWorldApp | Hello, World. |