Software Requirements Specification for GeoGebra Requirements for Version 3.0.0.0 Prepared by Arvanitopoulos Nikolaos Aristotle University of Thessaloniki 15/09/2008 Copyright © 2002 by Karl E. Wiegers. Permission is granted to use, modify, and distribute this document. Software Requirements Specification for GeoGebra Page ii Table of Contents 1. Introduction ......................................................................................................................................1 1.1 Purpose ................................................................................................................................................... 1 1.2 Document Conventions ........................................................................................................................... 1 1.3 Intended Audience and Reading Suggestions ......................................................................................... 1 1.4 Project Scope .......................................................................................................................................... 2 1.5 References ............................................................................................................................................... 3 2. Overall Description ..........................................................................................................................3 2.1 Product Perspective................................................................................................................................. 3 2.2 Product Features ..................................................................................................................................... 4 2.3 User Classes and Characteristics ............................................................................................................ 5 2.4 Operating Environment ........................................................................................................................... 5 2.5 Design and Implementation Constraints ................................................................................................. 5 2.6 User Documentation ............................................................................................................................... 6 2.7 Assumptions and Dependencies ............................................................................................................. 6 3. System Features................................................................................................................................7 3.1 System Feature 1 ..................................................................................................................................... 7 3.2 System Feature 2 ..................................................................................................................................... 9 3.3 System Feature 3 ................................................................................................................................... 11 3.4 System Feature 4 ................................................................................................................................... 12 3.5 System Feature 5 ................................................................................................................................... 23 4. External Interface Requirements .................................................................................................25 4.1 User Interfaces ...................................................................................................................................... 25 4.2 Hardware Interfaces .............................................................................................................................. 26 4.3 Software Interfaces ............................................................................................................................... 27 4.4 Communications Interfaces .................................................................................................................. 27 5. Other Nonfunctional Requirements .............................................................................................27 5.1 Performance Requirements ................................................................................................................... 27 5.2 Safety Requirements ............................................................................................................................. 27 5.3 Security Requirements .......................................................................................................................... 27 Software Requirements Specification for GeoGebra Page 1 1.Introduction 1.1Purpose GeoGebra is a dynamic mathematics software that combines geometry, algebra and calculus. It is developed for learning and teaching mathematics in schools. It is developed by Markus Hohenwarter at Florida Atlantic University. Its current stable is 3.0.0.0. GeoGebra is able to deal with many aspects of geometry (points, vectors, segments, lines etc.), algebra (matrices, fields etc.) and calculus (variables, derivatives, integrals etc.). These are the three characteristic views of GeoGebra. 1.2Document Conventions This document is based on IEEE Software Requirements Specification Template. The text editor MS Word 2003 is used for the creation of the specific document. The font of the chapters and sections is Times bold with size 18pt and 14 pt respectively. Arial is the font of the main text with size 11pt. Information regarding the content organization of the rest of the document can be found in the next section 1.3: Intended Audience and Reading Suggestions. Throughout the Requirements chapters (chapters 3, 4, 5, 6) there is no convention about the priorities of the requirements of the application. Every requirement statement is to have its own priority. 1.3Intended Audience and Reading Suggestions The Requirements Document is intended for the following types of readers: Role in a Software Development Project Development Project Leader Requirements Analyst Development Team Member QA Specialist User Documentation Specialist Maintenance Team Member Reason for using the Requirements Document Scope the project; divide the project in phases Track development progress Test the application against the requirements Design and code the application Verify that application conforms to requirements Produce user documentation Support users in production The rest of this Requirements Document consists of 5 chapters. In chapter 2 there is an overall description of the project GeoGebra. Chapter 3 describes the list of the system features. In chapter 4 there is a description of GeoGebra’s external interface requirements. Chapter 5 describes nonfunctional requirements and other requirements that do not belong to a specific category. Finally three appendices are provided in the end of the document: - Glossary (Appendix A) - Analysis Models (Appendix B) - Issues List (Appendix C) The suggestive reading of this document is to begin from chapters 1 and 2 and then to proceed through the sections that are the most pertinent to the reader’s profession. Software Requirements Specification for GeoGebra Page 2 1.4Project Scope As stated in section 1.1: Purpose, project GeoGebra is an education-oriented, dynamic geometry, algebra and calculus software. It provides a correspondence between the algebraic notations and the geometric objects in the main operational window of the project. The project GeoGebra has many benefits in comparison with other programs that deal with education of mathematics. Specifically: It is a mathematical product that contains high interaction elements. The user interface is very friendly and easy to use even for an amateur user. The software forms a dynamic learning environment. The fact that the shape of the geometrical figures can be changed while some of their properties remain the same provides extended flexibility. This dynamic character of the environment provides the capability of viewing infinite digital graphical representations of a geometrical figure. This infiniteness of the figures forms an equivalence class that contains all the figures with the same properties. Every figure which is constructed in the computer monitor is the representative of this class. The actions of the users (e.g. students) are often accompanied by graphical digital feedback. The role of the image in general is very supportive in the intellectual growth of the individual. The GeoGebra project is an open learning environment that provides tools to the student in order to solve mathematical problems. Software Requirements Specification for GeoGebra Page 3 The capability of recording the actions history is a very effective tool for the teacher, the student and the researcher in order to arrive at conclusions about the learning process that took place in the corresponding environment. The GeoGebra environment provides tools (they are defined as “new tools”) that the user can use as macros to solve problems easier and faster. The animation playback capability is also a way for the students to learn interactively the process of any geometrical construction. The benefits mentioned above are necessary prerequisites for the project to fulfill his goals, which are: Correct, helpful teaching of mathematics. Smooth and enjoyable learning from the side of the student, who can display initiative and critical thinking. 1.5References Here is a list of web links the Requirements Document refers to: The original GeoGebra web page: http://www.geogebra.org/ The original online introduction and documentation of GeoGebra: http://www.geogebra.org/book/intro-en/ http://www.geogebra.org/help/docuen/ Publications regarding the project GeoGebra: http://www.geogebra.org/en/wiki/index.php/Publications The GeoGebra user forum: http://www.geogebra.org/forum/ 2.Overall Description 2.1Product Perspective As stated in the previous chapter, GeoGebra is one among many programs who deal with geometry, such as Geometer’s Sketchpad (which is also designed for teaching), Cabri Geometry, Cinderella and others. However, a strong benefit of GeoGebra is that it also combines algebra and calculus. This characteristic makes it very powerful against its competitors, which focus only on geometry. GeoGebra also does not depend on other software to run, it is a completely standalone application. The only thing to be installed in the system is the Java virtual machine. Software Requirements Specification for GeoGebra Page 4 2.2Product Features In this section there is a summary of the main features of GeoGebra: 1. Geometrical figures construction: the user is able to construct a majority of geometric figures, such as circles, circular sectors and arcs, polygons, vectors, lines, segments and conics. 2. Primary and secondary elements and tools: the user can experiment with many tools, such as intersection points, angles, midpoints, perpendicular and parallel lines, angular and line bisectors, tangents, polar or diameter lines, relations and loci. The calculation of distances, areas and slope is also provided. Finally the user is able to create animations of construction processes. 3. Geometric transformations: the user can experiment with angles, midpoints, bisectors, meridians, tangents, relations and dilations. The calculation of distances and areas is also provided. 4. Commands and user-defined tools: the capability to create tools and execute a large number of commands is also provided. 5. Printing, export and general options: The user is able to print and export the drawing pad of the application as a picture. Furthermore, the global options provided increase the customization capabilities of the project. Software Requirements Specification for GeoGebra Page 5 2.3User Classes and Characteristics The GeoGebra project is designed basically for learning and teaching in schools. However, due to its user friendly interface and ease of use, it can also be equally easily used by students in the first years in University for learning the basics and by mathematicians who are interested in geometry, algebra and calculus. Students will find the use of GeoGebra very interesting due to its handy graphical interface. Everything a student or a mathematician needs is directly accessible from the main buttons and menus of the program. The range and completeness of the mathematical functions provided in GeoGebra satisfies even the most demanding and experienced user. Below is a table that displays a summary about the various user classes and their characteristics: User Class Frequency of use Students High Mathematicians High Product functions used Primarily geometric functions Geometry, algebra and calculus Technical expertise Educational level Experience Average Average or High Low or Average High High High The GeoGebra project is more important for mathematicians rather than students. Mathematicians can use GeoGebra as an educational tool to help students learn the basics (especially in geometry, which is a recalcitrant topic in Mathematics) in an interesting and positive way. 2.4Operating Environment The project GeoGebra is written in the Java programming language. As a result it is a platform independent application, which means that it runs in any operating environment as long as the Java virtual machine (version 1.4.2 or higher) is installed on the operating system. 2.5Design and Implementation Constraints The project is developed under the following licenses: 1. GeoGebra Installer, Language and Documentation Files License: Creative Commons Attribution-NonCommercial-NoDerivs 3.0 2. GeoGebra Application and Source Code License: GNU General Public License v2 Furthermore, there are not any hardware limitations regarding the application. The only limitation is the amount of memory the Java Virtual Machine is able to handle. The software does not use any interfaces or external databases. Finally, the GeoGebra is translated in 37 languages, so there are not any special language requirements. Software Requirements Specification for GeoGebra Page 6 2.6User Documentation The software is accompanied with detailed documentation as stated in section 1.5: References. There are also two GeoGebra books for sale in the GeoGebra site. The books are: Introduction to GeoGebra GeoGebra Help 2.7Assumptions and Dependencies The application runs on any platform (x86, x86_64 etc.). There is not any constraint regarding the operating system to be used. The software does not use any third-party or commercial components. Software Requirements Specification for GeoGebra Page 7 3.System Features In this requirements document a specific priority component rating is assumed. The features described below should have a Low, Medium or High priority in a scale from 1 to 9. 3.1System Feature 1 Geometrical figures construction 3.1.1 Description and Priority The user is able to construct a majority of geometric shapes. These shapes include: Lines Segments Rays Vectors Polygons and regular polygons Circles and circular sectors The feature is of High priority (9). 3.1.2 Stimulus/Response Sequences The construction of geometric figures is a very easy operation. The GUI provides the user with all the appropriate buttons. Each button in the user interface corresponds to a specific shape. When the button is selected, a help text appears which describes the sequence of actions the user should perform for the construction of the shape. After that the corresponding shape is displayed in the main window of the application and its properties (e.g. equation) on the left panel of the application. Specifically: Geometric shape Line Stimulus Selection of two points Selection of two points Segment Ray Selection of point and segment length selection of two points System response Line construction, points coordinates and equation display Segment construction, points coordinates and length display Ray construction, points coordinates and equation display selection of two points Vector Polygon selection of starting point and vector selection of vertices and starting point Vector construction and coordinates display Polygon construction, points coordinates, type Software Requirements Specification for GeoGebra Page 8 and area display Selection of two points and number of vertices Polygon construction, points coordinates, type and area display selection of center point and point on circle Circle construction, center and point on circle coordinates and equation display selection of center point and radius Circle construction, center coordinates and equation display selection of three points on circle Circle construction, points coordinates and equation display Semicircle selection of two points Semicircle construction, points coordinates and length display Circular arc selection of center point and two points on arc Circular arc construction, center and points coordinates and length display Circumcircular arc selection of three points on arc Circumcircular arc construction, points coordinates and length display Circular sector selection of center point and two points on sector Circular sector construction, points coordinates and area display Circumcircular sector Selection of three points on sector Circumcircular sector construction, points coordinates and area display Conic through five points Selection of five points on conic Conic construction, points coordinates and equation display Regular polygon Circle Software Requirements Specification for GeoGebra 3.1.3 Page 9 Functional Requirements REQ-1: REQ-2: REQ-3: REQ-4: REQ-5: REQ-6: After the initial construction, the basic properties of the geometric shape should not change. Objects that are selected from the tool box should stay active until another object is selected. The user should be able to select multiple objects at once. The objects should be manipulated as whole and not as the points that compose them. The application should provide the capability to rotate and move any object. The user should be able to modify the appearance and the characteristics of the geometric figures. 3.2System Feature 2 Primary and secondary elements and tools 3.2.1 Description and Priority The project provides the user with the capability to experiment with primary and secondary elements and tools. The tools at the user’s disposal are the following: Intersection between objects Angles between objects Midpoints or centers of objects Perpendicular and parallel lines Line and angle bisectors Tangents Polar or diameter lines Loci Calculation of distances and areas of objects Slope of a line Relation between two objects Slider Text and image Animation The feature is of High priority (8). 3.2.2 Stimulus/Response Sequences The tools provided by the application are very friendly and easy to use. For every tool there is a corresponding graphical button which performs the operation needed. When the tool is selected, a help text appears which describes the sequence of actions the user should perform in order to use the tool effectively. Specifically: Tool Stimulus System response Intersection Selection of two lines or click on intersection Coordinates of intersection point(s) Angle Selection of three points or two lines Angle value display Software Requirements Specification for GeoGebra Page 10 Angle with given size Selection of leg point, vertex and angle Angle display Midpoint or center Selection of two points, segment, circle or conic Midpoint and coordinates display Perpendicular line Selection of a point and perpendicular line Perpendicular line and equation display Parallel line Selection of a point and parallel line Parallel line and equation display Line bisector Selection of two points or one segment Bisector, equation and intersection point display Angular bisector Selection of three points or two lines Angular bisector and equation display Tangent Selection of a point, then circle, conic or function Tangent and equation display Polar of diameter line Selection of a point or line first, then circle or conic Line and equation display Locus Selection of locus point first, then point on line Locus and equation display Distance or length Selection of two points, segment, polygon or circle Distance or length display Area Selection of a polygon, circle or conic Area display Slope Selection of a line Slope display Relation Selection of two objects Dialog box that displays the relation Slider Click on drawing pad, then customize Slider creation Text and image Click on drawing pad, then select text or image Text or image insertion Animation Shape construction, then “play” button An animation that repeats the construction of a geometric shape Software Requirements Specification for GeoGebra 3.2.3 Page 11 Functional Requirements REQ-1: REQ-2: REQ-3: The identification of the elements and tools should be checked, in case they are constructed in a different way. Tools or elements that are selected from the tool box should stay active until another tool or element is selected. The user should be able to select multiple tools or elements at once. 3.3System Feature 3 Geometric transformations 3.3.1 Description and Priority Another important feature of GeoGebra is the large number of geometric transformations it provides to the user. These transformations are: Mirroring of objects Rotation of objects Translation of objects Dilation of objects The feature is of High priority (6). 3.3.2 Stimulus/Response Sequences Everything the user needs is accessible through the main window of the application. For every element and tool there is a corresponding graphical button. Again if any button is selected a help text appears next to the list of buttons which provides the user with information about how to use the specific button. After the use of the tool, the application behaves according to the tool used. Specifically: Transformation Stimulus Mirror object at line Selection of object to mirror, then line or reflection System response Mirrored object and equation (or coordinates) display Mirror object at point Selection of object to mirror, then center point Rotate object around point by angle Selection of object to rotate, then center point and angle Rotated object and equation (or coordinates) display Translate object by vector Selection of object to translate, then vector Translated object and equation (or coordinates) display Dilate object from point by factor Selection of object to dilate, then center point and factor Dilated object and equation (or coordinates) display Software Requirements Specification for GeoGebra 3.3.3 Page 12 Functional Requirements REQ-1: REQ-2: An error message should be shown in case the user has made an error in the sequence of transformation actions. The user should be able to produce successive transformations. 3.4System Feature 4 Commands and user-defined tools 3.4.1 Description and Priority The application provides the user with a majority of commands. The syntax of the commands is very easy. All the commands are written in a command line provided by the application. Instead of a built-in command, the user can also type direct input to the command line using arithmetic operations. Below there is a table that contains the direct input capabilities and the built-in commands: Direct input Built-in commands numbers and angles points and vectors line conic section function of x lists of objects arithmetic operations boolean variables boolean operations General commands Boolean commands Number Angle Point Vector Segment Ray Polygon Line Conic section Function Parametric curves Arc and sector Image Text Locus Sequence Geometric transformations The feature is of High priority (7). 3.4.2 Stimulus/Response Sequences Software Requirements Specification for GeoGebra Page 13 The command line and the command scroll-down menu are placed on the lower section of the application window. The only thing the user should do is select the appropriate command and press enter to activate it. Below there are two tables which show the available arithmetic and Boolean operations in GeoGebra: Arithmetic operation Input addition + subtraction - multiplication * or space key scalar product * or space key division / exponentiation ^ or 2 factorial ! Gamma function gamma() parentheses () x-coordinate x() y-coordinate y() absolute value abs() sign sgn() square root sqrt() cubic root cbrt() random number between 0 and 1 random() exponential function x Exp() or e logarithm (natural, of e) ln() of log() logarithm of 2 ld() logarithm of 10 lg() cosine cos() sine sin() tangent tan() arc cosine acos() arc sine asin() arc tangent atan() hyperbolic cosine cosh() hyperbolic sine sinh() hyperbolic tangent tanh() Software Requirements Specification for GeoGebra Page 14 antihyperbolic cosine acosh() antihyperbolic sine asinh() antihyperbolic tangent atanh() greatest integer less than or equal floor() least integer greater than or equal ceil() round round() Boolean operation Input Valid types equal == numbers, points, lines, conics unequal != numbers, points, lines, conics less than < numbers greater than > numbers less or equal than <= numbers greater or equal than >= numbers and ^ Booleans or v Booleans not ! Booleans parallel || lines perpendicular ⊥ lines Below there is a table that displays the available direct input the user can type: Direct input Syntax example numbers r 3.24 angles ( a 45 ) or ( a 0.79 ) points and vectors p (1,0) line 3x4y2 conic section y ^2 4x function f(x)3x2 lists of objects L { ( 1 ,0 ) ,( 2 ,1 ) ,(1 ,1 ) } Software Requirements Specification for GeoGebra Boolean variables Page 15 a true Below there is a description of all the commands available to the user: General commands Relation[object a, object b]: shows a message box that tells the relation between the two objects Delete[object a]: deletes an object a and all its dependants th Element[list L, number n]: n element of list L Boolean commands If[condition, a, b]: gives a copy of object a if condition evaluates to true , or a copy of object b if condition evaluates to false If[condition, a]: gives a copy of object a if condition evaluates to true , or an undefined copy if condition evaluates to false Number Length Length[vector a]: length of a vector a Length[point A]: length of the position vector of A Length[function f, number x1 , number x2 ]: length of the function graph of f between numbers x1 and x2 Length[function f, point A, point B]: length of the function graph of f between points A and B on the graph Length[curve c, number t1 , number t2 ]: length of a curve c between number t1 and t2 Length[curve c, point A, point B]: length of a curve c between points A and B on the curve Length[list L]: number of elements in the list L Area Area[point A, point B, point C, …]: are of the polygon defined by the given points A , B and C Area[conic c]: area of a conic section c Distance Distance[point A, point B]: distance between two points A and B Distance[point A, line g]: distance between a point A and a line g Distance[line g, line h]: distance between lines g and h . Note: distance between intersection lines is 0. Modulo function Mod[number a, number b]: remainder when number a is divided by number b Integer division Div[number a, number b]: integer quotient when number a is divided by number b Slope Software Requirements Specification for GeoGebra Page 16 Slope[line g]: slope of a line g . Note: This command also draws the slope triangle whose size may vary Curvature Curvature[point A, function f]: curvature of function f in point A Curvature[point A, curve c]: curvature of curve c in point A Radius Radius[circle c]: radius of a circle c Circumference Circumference[conic c]: returns the circumference of a conic section c (circle of ellipse) Perimeter Perimeter[polygon poly]: perimeter of a polygon poly Parameter Parameter[parabola p]: parameter of a parabola p (distance of directrix and focus) First Axis Length FirstAxisLength[conic c]: length of a conic section’s c principal axis Second Axis Length SecondAxisLength[conic c]: length of a conic section’s second axis Eccentricity Eccentricity[conic c]: eccentricity of a conic section c Integral Integral[function f, number a, number b]: definite integral of function f from number a to b . Note: this command also draws the area between the function graph of f and the x-axis Integral[function f, function g, number a, number b]: definite integral of the difference of the functions f g from number a to b . Note: this command also draws the area between the function graphs of f and g Lower Sum LowerSum[function f, number a, number b, number n]: lower sum of function f on the interval [a, b] with n rectangles. Note: this command draws the rectangles of the lower sum too Upper Sum UpperSum[function f, number a, number b, number n]: lower sum of function f on the interval [a, b] with n rectangles. Note: this command draws the rectangles of the upper sum too Iteration Iteration[function f, number x0 , number n]: iterates function f n times using the given start value x0 Minimum and Maximum Min[number a, number b]: minimum of the given numbers a and b Max[number a, number b]: maximum of the given numbers a and b Affine Ratio Software Requirements Specification for GeoGebra Page 17 AffineRatio[point A, point B, point C]: returns the affine ratio of three B collinear points A , B and C , where CA*A Cross Ratio CrossRatio[point A, point B, point C, point D]: cross ratio of four collinear points A , B , C and D , where A f f i n e R a t i o [ B , C , D ] / A f f i n e R a t i o [ A , C , D ] Angle Angle[vector v1 , vector v2 ]: angle between two vectors v1 and v2 (between 0 and 360 ) Angle[line g, line h]: angle between the direction vectors of two lines g and h (between 0 and 360 ) Angle[point A, point B, point C]: angle enclosed by BA and BC (between 0 and 360 ). Point B is the apex Angle[point A, point B, angle alpha]: angle of size alpha drawn from point A o ta te [A ,a lp h a ,B ]is created too with vertex B . Note: Point R Angle[conic c]: angle of twist of a conic section c ’s principal axis Angle[vector v]: angle between x-axis and vector v Angle[point A]: angle between x-axis and position vector of point A Angle[number n]: converts a number n into an angle (result between 0 and 2 ) Angle[polygon poly]: all inner angle of polygon poly Point Point Point[line g]: Point on line g . Point[conic c]: Point on conic section c (e.g. circle, ellipse, hyperbola) Point[function f]: Point on function f Point[polygon poly]: Point on polygon poly Point[vector v]: Point on vector v Point[point P, vector v]: Point P plus vector v Midpoint and Center Midpoint[point A, point B]: Midpoint of points A and B Midpoint[segment s]: Midpoint of segment s Center[conic c]: Center of a conic section c (e.g. circle, ellipse, hyperbola) Focus Focus[conic c]: (all) foci of a conic section c Vertex Vertex[conic c]: (all) vertices of a conic section c Centroid Centroid[polygon poly]: centroid of a polygon poly Intersect Intersect[line g, line h]: intersection point of lines g and h Intersect[line g, conic c]: all Intersection points of line g and conic section c (max. 2) th Intersect[line g, conic c, number n]: n intersection point of line g and conic c section Software Requirements Specification for GeoGebra Page 18 Intersect[conic c1 , conic c2 ]: all intersection points of conic sections c1 and c2 (max. 4) th Intersect[conic c1 , conic c2 , number n]: n intersection point of conic c c sections 1 and 2 Intersect[polynomial f1 , polynomial f 2 ]: all intersection points of polynomials f1 and f 2 th Intersect[polynomial f1 , polynomial f 2 , number n]: n intersection point of f f polynomials 1 and 2 Intersect[polynomial f, line g]: all intersection points of polynomial f and line g th n Intersect[polynomial f, line g, number n]: intersection point of polynomial f and line g Intersect[function f, function g, point A]: intersection point of functions f and g with initial point A (for Newton's method) Intersect[function f, line g, point A]: intersection point of function f and line g with initial point A (for Newton's method) Root Root[polynomial f]: all roots of polynomial f (as points) Root[function f, number a]: one root of function f with initial value a (Newton's method) Root[function f, number a, number b]: one root of function f on interval [a, b] (regula falsi) Extremum Extremum[polynomial f]: all local extrema of polynomial f (as points) InflectionPoint InflectionPoint[polynomial f]: all infection points of polynomial f Vector Vector Vector[point A, point B]: Vector from point A to point B Vector[point A]: Position vector of point A Direction Direction[line g]: direction vector of line g . Note: a line with equation axbyc has the direction vector (b, a) Unit Vector UnitVector[line g]: direction vector with length 1 of a line g UnitVector[vector v]: vector with length 1, same direction and orientation as the given vector v Perpendicular Vector PerpendicularVector[line g]: perpendicular vector of a line g . Note: A line with equation axbyc has the perpendicular vector (a, b) . PerpendicularVector[vector v]: perpendicular vector of a vector v . Note: A vector with coordinates (a, b) has the perpendicular vector (b, a ) . Unit Perpendicular Vector Software Requirements Specification for GeoGebra Page 19 UnitPerpendicularVector[line g]: perpendicular vector with length 1 of a line g UnitPerpendicularVector[vector v]: perpendicular vector with length 1 of a vector v Curvature Vector CurvatureVector[point A, function f]: curvature vector of function f in point A CurvatureVector[point A, curve c]: curvature vector of curve c in point A Segment Segment[point A, point B]: segment between two points A and B Segment[point A, number a]: segment with length a and starting point A . Note: The endpoint of the segment is created too. Ray Ray[point A, point B]: ray starting at point A through point B Ray[point A, vector v]: ray starting at point A with direction vector v Polygon Polygon[point A, point B, point C,...]: polygon defined by the given points A , B , C ,… Polygon[point A, point B, number n]: regular polygon with n vertices (including points A and B ) Line Line Line[point A, point B]: line through two points A and B Line[point A, line g]: line through point A parallel to line g Line[point A, vector v]: line through point A with direction vector v Perpendicular Perpendicular[point A, line g]: line through point A perpendicular to line g Perpendicular[point A, vector v]: line through point A perpendicular to vector v Line Bisector LineBisector[point A, point B]: line bisector of the line segment AB LineBisector[segment s]: line bisector of the segment s Angular Bisector AngularBisector[point A, point B, point C]: angular bisector of the angle defined by points A , B , and C . Note: Point B is apex of this angle AngularBisector[line g, line h]: both angular bisectors of lines g and h Tangent Tangent[point A, conic c]: (all) tangents through point A to conic section c Tangent[line g, conic c]: (all) tangents to conic section c that are parallel to line Tangent[number a, function f]: tangent to function f ( x) at x a Tangent[point A, function f]: tangent to function f ( x) at x x( A) Tangent[point A, curve c]: tangent to curve c in point A g Asymptote Software Requirements Specification for GeoGebra Page 20 Asymptote[hyperbola h]: both asymptotes of a hyperbola h Directrix Directrix[parabola p]: directrix of a parabola p Axes Axes[conic c]: principal and second axis of a conic section c First Axis FirstAxis[conic c]: principal axis of a conic section c Second Axis SecondAxis[conic c]: second axis of a conic section c Polar Polar[point A, conic c]: polar line of point A relative to conic section c Diameter Diameter[line g , conic c]: diameter parallel to line g relative to conic section c Diameter[vector v, conic c]: diameter with direction vector v relative to conic section c Conic Section Circle Circle[point M, number r]: circle with midpoint M and radius r Circle[point M, segment s]: circle with midpoint M and radius equal to Circle[point M, point A]: circle with midpoint M through point A Circle[point A, point B, point C]: circle through three points A , B and C Length[s] Osculating Circle OsculatingCircle[point A, function f]: osculating circle of function f in point A OsculatingCircle[point A, curve c]: osculating circle of curve c in point A Ellipse Ellipse[point F, point G, number a]: ellipse with focal points F and G and a D is ta n c e [ F ,G ] principal axis length a . Note: Condition: 2 Ellipse[point F, point G, segment s]: ellipse with focal points F and G where engths [ ]). the length of the principal axis equals the length of segment s (aL Hyperbola Hyperbola[point F, point G, number a]: hyperbola with focal points F and G aD i s t a n[, c e F G ] and principal axis length a . Note: Condition: 02 Hyperbola[point F, point G, segment s]: hyperbola with focal points F and G where the length of the principal axis equals the length of segment s (aL engths [ ]) Parabola Parabola[point F, line g]: parabola with focal point F and directrix g Conic Conic[point A, point B, point C, point D, point E]: conic section through five points A , B , C , D , and E . Note: No four of the points lie on one line. Software Requirements Specification for GeoGebra Page 21 Function Derivative Derivative[function f]: derivative of thfunction f ( x) Derivative[function f, number n]: n derivative of function f ( x) Integral Integral[function f]: indefinite integral for function f ( x) Polynomial Polynomial[function f]: expanded polynomial function f . Taylor Polynomial TaylorPolynomial[function f, number a, number n]: power series expansion for function f about the point x a to order n Function Function[function f, number a, number b]: function, that is equal to f on the interval [a, b] and not defined outside [a, b] Conditional Function You can use the Boolean command If in order to create a conditional function. Note: You can use derivatives and integrals of such functions and intersect them like “normal” functions. Parametric Curves Curve[expression e1 , expression e2 , parameter t, number a, number b]: Cartesian parametric curve for the given x-expression e1 and y-expression e2 (using parameter t ) within the given interval [a, b] Arc and Sector Semicircle Semicircle[point A, point B]: semicircle above the segment AB . Circular Arc CircularArc[point M, point A, point B]: circular arc with midpoint M between points A and B . Note: Point B does not have to lie on the arc. Circumcircular Arc CircumcircularArc[point A, point B, point C]: circular arc through three points A , B and C Arc Arc[conic c, point A, point B]: conic section arc between two points A and B on the conic section c (circle or ellipse) Arc[conic c, number t1 , number t2 ]: conic section arc between two parameter values t1 and t2 on the conic section c for the following parameter forms: o s t , rs in t where r is the circle's radius - Circle: rc a c o s t , b s i n t where a and b are the lengths of the first - Ellipse: and second axis Circular Sector Software Requirements Specification for GeoGebra Page 22 CircularSector[point M, point A, point B]: circular sector with midpoint M between two points A and B . Note: point B does not have to lie on the arc. Circumcircular Sector CircumcircularSector[point A, point B, point C]: circular sector through three points A , B and C Sector Sector[conic c, point A, point B]: conic section sector between two points A and B on the conic section c (circle or ellipse) Sector[conic c, number t1 , number t2 ]: conic section sector between two parameter values t1 and t2 on the conic section c for the following parameter forms: o s t , rs in t where r is the circle's radius - Circle: rc c o s t, b s in t where a and b are the lengths of the first - Ellipse: a and second axis Image Corner th Corner[image pic, number n]: n corner of an image pic with a maximum of 4 corners Text Name Name[object]: text showing the name of the given object. Note: Use this command in dynamic texts for objects that might be renamed Locus Locus[point Q, point P]: locus line of point Q that depends on point P . Note: Point P has to be a point on an object (e.g. line, segment, circle) Sequence Sequence Sequence[expression e, variable i, number a, number b]: list of objects created using expression e and index i that ranges from number a to number b . Sequence[expression e, variable i, number a, number b, number s]: list of objects created using expression e and index i that ranges from number a to number b with given step size s . Iteration IterationList[function f, number x0 , number n]: list L of length n 1 whose elements are iterations of function f starting with the value x0 . Tools and Toolbar Software Requirements Specification for GeoGebra Page 23 User defined tools Furthermore, the application gives the user the capability to create new tools based on an existing construction. After preparing the construction, the user can specify the input and output objects of the tool and choose names for the toolbar icon and command. The tool can be used both with the mouse and as a command in the command line. All tools are automatically saved in the current “.ggb” file. Moreover, the user is able to delete or modify a tool (its name or icon). The selected tools can be saved in a “.ggt” file. That way the tools can be loaded to another construction. 3.4.3 Functional Requirements REQ-1: REQ-2: An error message that describes the syntax of the command should be shown, in case the user has made an input error. The user should be able to add or remove elements from the created tools. 3.5System Feature 5 Printing, export and general options 3.5.1 Description and Priority At the user’s disposal is the capability to print and export the drawing pad as a picture. The supported image formats are: PNG – Portable Network Graphics EPS – Encapsulated Postscript SVG – Scalable Vector Graphics EMF – Enhanced Meta Format PSTricks – for LaTeX Furthermore, the user is able to copy the drawing pad to the clipboard in PNG format. A majority of global options is provided to the user by the application. These include: Point Capturing Angle Unit Decimal Places Continuity Point Style Right Angle Style Coordinates Labeling Font Size Language Drawing Pad Save Settings The feature is of Medium priority (4). Software Requirements Specification for GeoGebra 3.5.2 Page 24 Stimulus/Response Sequences The only thing the user should do to export and print the drawing pad of the application is click on the corresponding buttons in the “File” menu and experiment with the available options. Below there is a description of the available global options of the application: Point Capturing: Automatic, on , on (Grid), off Angle Unit: Degree, Radians Decimal Places: 0, 1, 2, 3, 4, 5 Continuity: on, off Point Style: ●, , ○ Right Angle Style: Coordinates: A=(x,y), A(x|y), A:(x,y) Labeling: Automatic, All new objects, No new objects, New points only Font Size: 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32 Language: - Arabic - Basque - Bosnian - Bulgarian - Catalan - Chinese - Croatian - Czech - Danish - Dutch - English - Estonian - Finnish - French - Galician - German - Greek - Hebrew - Hungarian - Italian - Japanese - Macedonian - Norwegian - Persian - Polish - Portuguese - Russian - Serbian - Slovak - Slovenian - Swedish - Spanish - Turkish - Vietnamese Drawing Pad: Several Axis and Grid options and customizations Save Settings Restore Default Settings Software Requirements Specification for GeoGebra 3.5.3 Page 25 Functional Requirements REQ-1: REQ-2: REQ-3: The user should be able to customize the appearance and characteristics of the drawing pad, an object or a tool. The user should be able to modify the resolution of the exporting drawing pad. The user should be able to preview the printing of the drawing pad. 4.External Interface Requirements 4.1User Interfaces The GUI of the application is developed using the Java swing Library. Below there is a screenshot which shows the initial application environment: Software Requirements Specification for GeoGebra Page 26 Below are the buttons of the GUI that are displayed every time the application starts: The following screenshot shows the command line interface: The table below provides all the available shortcuts keys and their functions: Function Shortcut New window Ctrl+N Open Ctrl+O Save Ctrl+S Save as … Ctrl+Shift+S Print preview Ctrl+P Dynamic Worksheet as Webpage (html) … Ctrl+Shift+W Drawing Pad as Picture (png, eps) … Ctrl+Shift+P Drawing Pad as PSTricks … Ctrl+Shift+T Drawing Pad to Clipboard Ctrl+Shift+C Close Alt+F4 Undo Ctrl+Z Redo Ctrl+Y Delete Delete Select all Ctrl+A Properties … Ctrl+E Algebra window Ctrl+Shift+A Refresh views Ctrl+F 4.2Hardware Interfaces There are not any known hardware interface requirements. Software Requirements Specification for GeoGebra Page 27 4.3Software Interfaces As stated in previous sections the GeoGebra project is a standalone Java application which runs on all operating systems that include the Java Virtual Machine (version 1.4.2 or higher). Furthermore the application provides the user with a JavaScript interface in order to experiment with HTML editing. More information about using JavaScript with GeoGebra applets can be found in GeoGebra Applets and JavaScript. 4.4Communications Interfaces The application does not use any communication protocols. As a result there are not any known requirements regarding the communication interfaces of the program. 5.Other Nonfunctional Requirements 5.1Performance Requirements There are not any known performance requirements. 5.2Safety Requirements There are not any known requirements regarding possible loss, damage or harm that could result from the use of the product. 5.3Security Requirements There are not any known requirements regarding security, privacy issues or protection of the data used or created by the product. Software Requirements Specification for GeoGebra Appendix A: Glossary Appendix B: Analysis Models Below there is a general use case diagram that combines all the features of the application: Appendix C: Issues List Page 28