From aeab493a5619b578bd0f2ea8e1e968a30bceb35f Mon Sep 17 00:00:00 2001 From: ljfa Date: Mon, 27 Jul 2015 12:17:08 +0200 Subject: Rename Requirements.md to PRD.md --- PRD.md | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Requirements.md | 60 --------------------------------------------------------- 2 files changed, 60 insertions(+), 60 deletions(-) create mode 100644 PRD.md delete mode 100644 Requirements.md diff --git a/PRD.md b/PRD.md new file mode 100644 index 0000000000..f7b46f1a8a --- /dev/null +++ b/PRD.md @@ -0,0 +1,60 @@ +# libnbt++2 Product Requirements Document + +### Purpose +Provide a C++ interface for working with NBT data, particularly originating +from Minecraft. + +### Scope +External Minecraft utilities that read or manipulate parts of savefiles, +such as: +- (Graphical) NBT editors +- Inventory editors +- Tools for reading or changing world metadata +- Map editors and visualizers + +### Definitions, Acronyms and Abbreviations +- **libnbt++1:** The predecessor of libnbt++2. +- **Minecraft:** A sandbox voxel world game written in Java, developed by + Mojang. +- **Mojang's implementation:** The NBT library written in Java that Mojang + uses in Minecraft. +- **NBT:** Named Binary Tag. A binary serialization format used by Minecraft. +- **Tag:** A data unit in NBT. Can be a number, string, array, list or + compound. + +### Product Functions +- /RF10/ Reading and writing NBT data files/streams with or without + compression. +- /RF20/ Representing NBT data in memory and allowing programs to read or + manipulate it in all the ways that Mojang's implementation and libnbt++1 + provide. +- /RF30/ A shorter syntax than in libnbt++1 and preferrably also Mojang's + implementation. +- /RF35/ Typesafe operations (no possibly unwanted implicit casts), in case + of incompatible types exceptions should be thrown. +- /RF40/ The need for insecure operations and manual memory management should + be minimized; references and `std::unique_ptr` should be preferred before + raw pointers. +- /RF55/ A wrapper for tags that provides syntactic sugar is preferred + before raw `std::unique_ptr` values. +- /RF50/ Move semantics are preferred before copy semantics. +- /RF55/ Copying tags should be possible, but only in an explicit manner. +- /RF60/ Checked conversions are preferred, unchecked conversions may be + possible but discouraged. + +### Product Performance +- /RP10/ All operations on (not too large) NBT data should not be slower + than their counterparts in Mojang's implementation. +- /RP20/ The library must be able to handle all possible NBT data that + Mojang's implementation can create and handle. +- /RP30/ Often used operations on large Lists, Compounds and Arrays must + be of at most O(log n) time complexity if reasonable. Other operations + should be at most O(n). + +### Quality Requirements +- Functionality: good +- Reliability: normal +- Usability: very good +- Efficiency: good +- Changeability: normal +- Transferability: normal diff --git a/Requirements.md b/Requirements.md deleted file mode 100644 index f7b46f1a8a..0000000000 --- a/Requirements.md +++ /dev/null @@ -1,60 +0,0 @@ -# libnbt++2 Product Requirements Document - -### Purpose -Provide a C++ interface for working with NBT data, particularly originating -from Minecraft. - -### Scope -External Minecraft utilities that read or manipulate parts of savefiles, -such as: -- (Graphical) NBT editors -- Inventory editors -- Tools for reading or changing world metadata -- Map editors and visualizers - -### Definitions, Acronyms and Abbreviations -- **libnbt++1:** The predecessor of libnbt++2. -- **Minecraft:** A sandbox voxel world game written in Java, developed by - Mojang. -- **Mojang's implementation:** The NBT library written in Java that Mojang - uses in Minecraft. -- **NBT:** Named Binary Tag. A binary serialization format used by Minecraft. -- **Tag:** A data unit in NBT. Can be a number, string, array, list or - compound. - -### Product Functions -- /RF10/ Reading and writing NBT data files/streams with or without - compression. -- /RF20/ Representing NBT data in memory and allowing programs to read or - manipulate it in all the ways that Mojang's implementation and libnbt++1 - provide. -- /RF30/ A shorter syntax than in libnbt++1 and preferrably also Mojang's - implementation. -- /RF35/ Typesafe operations (no possibly unwanted implicit casts), in case - of incompatible types exceptions should be thrown. -- /RF40/ The need for insecure operations and manual memory management should - be minimized; references and `std::unique_ptr` should be preferred before - raw pointers. -- /RF55/ A wrapper for tags that provides syntactic sugar is preferred - before raw `std::unique_ptr` values. -- /RF50/ Move semantics are preferred before copy semantics. -- /RF55/ Copying tags should be possible, but only in an explicit manner. -- /RF60/ Checked conversions are preferred, unchecked conversions may be - possible but discouraged. - -### Product Performance -- /RP10/ All operations on (not too large) NBT data should not be slower - than their counterparts in Mojang's implementation. -- /RP20/ The library must be able to handle all possible NBT data that - Mojang's implementation can create and handle. -- /RP30/ Often used operations on large Lists, Compounds and Arrays must - be of at most O(log n) time complexity if reasonable. Other operations - should be at most O(n). - -### Quality Requirements -- Functionality: good -- Reliability: normal -- Usability: very good -- Efficiency: good -- Changeability: normal -- Transferability: normal -- cgit 0.0.5-2-1-g0f52