[RSS]
JavaFX Plugin - Debugger Feature Requirements

Document Status Initial Draft Top-level document JavaFXPlugin
This document partly uses recommendations of the IEEE Std 830-1998 "IEEE Recommended Practice for Software Requirements Specifications"
This is living document. Some parts of it are still unwritten.
Note: This document is a subject to changes.
If you are interested in changes in this document you might want to sign to this page RSS feed. You can find the feed icon for the page on the Page Info tab or use this link.

Introduction

Purpose

Purpose of this specification is to establish requirements for the JavaFX Debugger that is considered as a feature of the JavaFX Plugin for the NetBeans IDE. The intended audience for this document is the community involved in designing, developing, testing and managing a project of the JavaFX Plugin. This document is published for review by both communities JavaFX and NetBeans.

Scope

This specification is applicable for the JavaFX Debugger, version 1.0. The JavaFX Debugger (Debugger) is a set of the software modules that is included in the JavaFX Plugin for the NetBeans IDE (JavaFX Kit) to support the debugging functions for software designed with using the JavaFX Script Language. The Debugger provides functionality to debug the JavaFX Scripts, including the cases when it is part of the Rich Internet Application.

Definitions, acronyms, and abbreviations

Debugger

The JavaFX Debugger
User
The person, or persons, who operate or interact directly with the Debugger.
VM
a Java Virtual Machine
Debugger VM
the Java virtual machine that is used to start the debugger program.
Target VM
the Java virtual machine that is used to start the application under debug
JPDA
Java Platform Debugger Architecture
JDI
Java™ Debug Interface is a high level Java API providing information useful for debuggers and similiar systems needing access to the running state of a (usually remote) virtual machine. JDI of Java SE 5 JDI of Java SE 6
RIA
Rich Internet Application
IDE
the NetBeans IDE
stratum
A view of a class from a particular, named, programming language level. E.g. JavaFX stratum means a view of a class from the viewpoint of the JavaFX Script Language. Initially, the term stratum has been established by the JSR 45: Debugging Support for Other Languages.

References

The Debugger Core API module defines common structures for integration of debugger implementations into NetBeans IDE.
TODO Complete list of the referenced documents MUST be provided.

Overview

Requirements notation

This document occasionally uses terms that appear in capital letters. When the terms "MUST", "SHOULD", "MUST NOT", "SHOULD NOT", and "MAY" appear capitalized, they are being used to indicate particular requirements. A discussion of the meanings of these terms appears in RFC-2119.

Overall description

Product perspective

Requirements, solution and implementation of the Debugger SHOULD be follow up on both the JavaFX project and the NetBeans IDE project.

JavaFXDebuggerPackage.png

TODO: A component diagram that explains location of the Debugger and its relation to the NetBeans IDE.

System Interfaces

To provide portability of implementation and IDE the Debugger MUST NOT use system interfaces directly.

User Interfaces

Everywhere where it is possible, the Debugger SHOULD either use identical interfaces or reuse the user interfaces of the Java Debugger. The Debugger MAY extend user interfaces of the Java Debugger to display and/or control entities and features that are JavaFX specific.

Software Interfaces

The Debugger MAY use the Java SE API and the APIs of the NetBeans infrastructure.

Product functions

The Debugger SHOULD provide complete info about execution status of the JavaFX Script Program at any program point given by a User, including: TODO: Data Model, Goal Model (i.e. GUI Model), Execution Model and so on.

Debugger SHOULD determine a way how a JavaFX Script program has been started, including:

  • call of the main method of the script class.
  • call of a function/constructor of the JavaFX class from code of the JavaFX Script.
  • call of a function/constructor of the JavaFX class from code of the Java class.
  • start of the script with using the JSR 223: Scripting for the JavaTM Platform API
  • call of the eval method of the javafx.lang.FX class.
TODO: Java Reflective call, JavaFX Reflective call

User characteristics

There are the following categories of the Users:

JavaFX Script Developer

is a person developing whole RIA or its part by using the JavaFX Script Language.
Java Developer
is a person integrating classes developed by using the JavaFX Script Language into the RIA that includes both Java and JavaFX classes as a part of the application.

In the part of debugging in the context of the JavaFX Scripts all features of the Debugger SHOULD be adapted to be used by a JavaFX Script Developer with the beginner experience level.

In the part of debugging of interaction between Java and JavaFX modules the features of the Debugger SHOULD be adapted to be used by either a Java Developer or a JavaFX Script Developer with the intermediate experience level.

Constraints

Software Interfaces

Java Aspect
Id Synopsis Comments Since version
NB/JFX/Debugger/R1 The Java SE platform, version 5.0 supporting JPDA MUST be used as a minimal demonstrator.
NB/JFX/Debugger/R2 The Debugger SHOULD rely on the JDI for interacting with the JPDA.
NB/JFX/Debugger/R3 The Debugger MUST NOT use JVMDI. API deprecated since Java SE 5.0
NB/JFX/Debugger/R4 The Debugger MUST NOT use JVMTI directly. Native API
NB/JFX/Debugger/R5 The Debugger MUST NOT use JDWP directly. Native API
NB/JFX/Debugger/R6 The Debugger MAY rely on the JPDA Enhancements that have been added in Java SE 6 if a target platform under debug is Java SE 6.

Assumptions and dependencies

The Debugger depends on the solutions that are/will be made in the scope of :

  • the JavaFX project, including the JavaFX Script Language, the JavaFX run-time, and the JavaFX SDK.
  • the NetBeans IDE project, including the Debug API and the Java Plugin for the NetBeans IDE (Java Kit).

The Debugger MUST support debugging process on all platforms that are supported by the official version of the JavaFX SDK.

Apportioning of requirements

This subsection identifies requirements that may be delayed until future versions of the Debugger.

Specific requirements

External interface requirements

User interfaces

Data Model View

The Data Model View SHOULD be represented as a separate window. Note: The same window for the Java Debugger is named as the Local Variables, but it is misleading name for the JavaFX Script Language. The Data Model View SHOULD show:

  • The Script node as the container for all data entities of the script, including:
  • The Script Context node as the container for all data entities of the script environment, including:
    • All the pseudo-variables generated by the JavaFX Script compiler, including:
      • __DIR__
      • __FILE__
      • __ARGS__ It SHOULD be shown as container node with children that are numbered nodes (0, 1, 2 ...) of the actual script arguments.
    • If the script is started via JSR 223 then all actual data accessible through the interface javax.script.ScriptContext SHOULD be shown:
      • Attributes
      • Bindings
      • Error Writer - a Writer used to display error output.
      • Reader - a Reader to be used by the script to read input.
      • Writer - a Writer for scripts to use when displaying output.

Hardware interfaces

Software interfaces

Communications interfaces

System features

Performance requirements

Design constraints

Software system attributes

TODO: Reliability, Availability, Security (remote systems/servers?), Maintainability, Portability

Other requirements

Attachments