diff --git a/code/drasil-example/template/app/Main.hs b/code/drasil-example/template/app/Main.hs index 704d3f8fb8a..7a6082167bf 100644 --- a/code/drasil-example/template/app/Main.hs +++ b/code/drasil-example/template/app/Main.hs @@ -1,12 +1,13 @@ module Main (main) where import GHC.IO.Encoding -import Language.Drasil.Generate (gen, DocSpec(DocSpec), DocType(SRS), - Format(..), docChoices, dumpEverything) +import Language.Drasil.Generate (gen, DocSpec(DocSpec), DocType(SRS), + Format(..), docChoices, dumpEverything, typeCheckSI) import Drasil.Template.Body (fullSI, srs, printSetting) main :: IO() main = do setLocaleEncoding utf8 dumpEverything fullSI printSetting ".drasil/" + typeCheckSI fullSI gen (DocSpec (docChoices SRS [HTML, TeX, Jupyter, MDBook]) "Template_SRS") srs printSetting diff --git a/code/drasil-example/template/lib/Drasil/Template/Body.hs b/code/drasil-example/template/lib/Drasil/Template/Body.hs index 0784c043a6b..ca550b6dbbb 100644 --- a/code/drasil-example/template/lib/Drasil/Template/Body.hs +++ b/code/drasil-example/template/lib/Drasil/Template/Body.hs @@ -7,7 +7,15 @@ module Drasil.Template.Body where import Language.Drasil import Drasil.SRSDocument -import Theory.Drasil (DataDefinition, GenDefn, InstanceModel, TheoryModel) +import Theory.Drasil + ( DataDefinition, + GenDefn, + InstanceModel, + TheoryModel, + tmNoRefs, + equationalModel', + imNoDerivNoRefs, + ddENoRefs ) import qualified Language.Drasil.Sentence.Combinators as S import Data.Drasil.Concepts.Documentation (doccon, doccon', srsDomains) import Data.Drasil.Concepts.Computation (inValue, algorithm) @@ -21,6 +29,7 @@ import Data.Drasil.TheoryConcepts import Data.Drasil.Citations import Drasil.DocumentLanguage.TraceabilityGraph import Drasil.DocLang (tunitNone) +import Language.Drasil.ShortHands (cP, lP, cS, cD, lL, lM, lB, cA) srs :: Document srs = mkDoc mkSRS (S.forGen titleize phrase) si @@ -31,6 +40,9 @@ fullSI = fillcdbSRS mkSRS si printSetting :: PrintingInformation printSetting = piSys fullSI Equational defaultConfiguration +stdFields :: Fields +stdFields = [DefiningEquation, Description Verbose IncludeUnits, Notes, Source, RefBy] + mkSRS :: SRSDecl mkSRS = [TableOfContents, RefSec $ --This creates the Reference section of the SRS @@ -63,10 +75,10 @@ mkSRS = [TableOfContents, ] -- This adds a goals section and goals input is defined for the preample of the goal. , SSDSolChSpec $ SCSProg [ Assumptions - , TMs [] [] + , TMs [] (Label : stdFields) , GDs [] [] HideDerivation - , DDs [] [] HideDerivation - , IMs [] [] HideDerivation + , DDs [] (Label : stdFields) HideDerivation + , IMs [] ([Label, Input, Output, InConstraints, OutConstraints] ++ stdFields) HideDerivation , Constraints EmptyS ([] :: [UncertQ]) , CorrSolnPpties ([] :: [UncertQ]) [] @@ -93,9 +105,9 @@ si = SI { _purpose = [], _motivation = [], _scope = [], - _quants = [] :: [QuantityDict], - _instModels = [] :: [InstanceModel], - _datadefs = [] :: [DataDefinition], + _quants = quantities, -- Odd: The Table of Symbols is mostly filled without this list!!!! Also, even though the table of symbols is being filled in, there is text "There are no symbols." placed above the table! + _instModels = instanceModels, -- Surprisingly, putting this here is not what triggers it to get rendered. + _datadefs = dataDefinitions, -- ^ _configFiles = [], _inputs = [] :: [QuantityDict], _outputs = [] :: [QuantityDict], @@ -105,13 +117,41 @@ si = SI { _usedinfodb = usedDB } +quantities :: [QuantityDict] +quantities = [ + equilibriumQ, priceQ, supplyQ, demandQ, -- abstract variables + applePriceQ, linearSupplyQ, linearDemandQ, -- concrete variables + mSQ, mDQ, bSQ, bDQ, equilibriumApplePriceLinearSDQ + ] + +dataDefinitions :: [DataDefinition] +dataDefinitions = [linearSupplyDD, linearDemandDD] + +instanceModels :: [InstanceModel] +instanceModels = [equilibriumPriceLinearSDQIM] + +theoryModels :: [TheoryModel] +theoryModels = [equilibriumTM] + +-- our theories are only rendered because they are added to this chunkDB, which is a problem. symbMap :: ChunkDB -symbMap = cdb ([] :: [QuantityDict]) (nw progName : nw inValue : [nw errMsg, - nw program] ++ map nw doccon ++ map nw doccon' ++ [nw algorithm] ++ - map nw prodtcon ++ map nw mathcon) srsDomains - ([] :: [UnitDefn]) ([] :: [DataDefinition]) ([] :: [InstanceModel]) - ([] :: [GenDefn]) ([] :: [TheoryModel]) ([] :: [ConceptInstance]) - ([] :: [LabelledContent]) ([] :: [Reference]) citations +symbMap = cdb + quantities + ideaDicts + srsDomains + ([] :: [UnitDefn]) + dataDefinitions + instanceModels + ([] :: [GenDefn]) + theoryModels + ([] :: [ConceptInstance]) + ([] :: [LabelledContent]) + ([] :: [Reference]) + citations + where + originalIdeaDicts = nw progName : nw inValue : [nw errMsg, nw program] ++ map nw doccon ++ map nw doccon' ++ [nw algorithm] ++ map nw prodtcon ++ map nw mathcon + addedIdeaDicts = map nw quantities + ideaDicts = originalIdeaDicts ++ addedIdeaDicts usedDB :: ChunkDB usedDB = cdb ([] :: [QuantityDict]) ([] :: [IdeaDict]) ([] :: [ConceptChunk]) @@ -141,3 +181,191 @@ progName = commonIdeaWithDict "progName" (pn "ProgName") "ProgName" [] -- MOVE TO DATA.PEOPLE authorName :: Person authorName = person "Author" "Name" + +{------------------------------------------------------------------------------- +- Equilibrium +-------------------------------------------------------------------------------} + +equilibrium :: IdeaDict +equilibrium = nc "equilibrium" $ nounPhrase "equilibrium" "equilibria" + +-- There is a generic copy between economics and physics, but we won't bother +-- with that. + +{------------------------------------------------------------------------------- +- Equilibrium (Economics) +-------------------------------------------------------------------------------} + +equilibriumQ :: QuantityDict +equilibriumQ = mkQuant' -- A somewhat odd variant of `mkQuant` that re-orders argument and adds staging to the `Symbol` + "inEquilibrium" + (nounPhrase "in equilibrium" "all equilibria") -- duplicates the IdeaDict + Nothing -- UnitDefn + Boolean + (autoStage $ label "inEquilibrium") + Nothing -- "abbreviation String" + +price :: IdeaDict -- I guess making this is completely unnecessary because the QuantityDict will make its own. +price = nc "price" $ cn "price" + +priceQ :: QuantityDict +priceQ = mkQuant' + "priceQuant" -- duplicates the IdeaDict + (cn "price") + Nothing -- UnitDefn // FIXME: Uh oh! There's seemingly no way we can define a new unit: $CAD.s + Real -- Not quite a "Real," more of a "dollar amount with two decimal places, or a tuple containing two integers, with the second capped at 100" + (autoStage cP) + Nothing -- Abbreviation + +supply :: IdeaDict +supply = nc "supply" $ cnIES "supply" + +supplyDemandFuncSpace :: Space +supplyDemandFuncSpace = mkFunction [Real] Integer -- Real should be Dollar, output should be strictly non-negative integers (Z^+) + +supplyQ :: QuantityDict +supplyQ = mkQuant' + "supplyQuant" + (cnIES "supply") + Nothing -- UnitDefn -- Should units be a part of expressions? Supply is a function, so it doesn't have a unit. However, the output of the function should have a unit. The input of the function should have units as well. + supplyDemandFuncSpace + (autoStage cS) + Nothing -- Abbreviation + +demand :: IdeaDict +demand = nc "demand" $ cnIES "demand" + +demandQ :: QuantityDict +demandQ = mkQuant' + "demandQuant" + (cnIES "demand") + Nothing -- UnitDefn + supplyDemandFuncSpace + (autoStage cD) + Nothing -- Abbreviation + +equilibriumQD :: QDefinition ModelExpr -- equilibrium = S(P) == D(P) +equilibriumQD = mkQuantDef equilibriumQ $ apply1 supplyQ priceQ $= apply1 demandQ priceQ + +equilibriumTM :: TheoryModel +equilibriumTM = tmNoRefs + (equationalModel' equilibriumQD) + [qw demandQ, qw supplyQ, qw priceQ] + ([] :: [ConceptChunk]) -- This looks like just a wart? IIRC, no tmNoRefs/tm constructor uses this parameter + [equilibriumQD] -- defined quantities + [] -- defined invariants + [] -- defined functions + "equilibriumTM" + [S "Equilibrium occurs when the supply and demand curves intersect at current price."] + +-- Note: In the above, the label for "equilibrium" (the QuantityDict) is only +-- assigned in the TheoryModel! + +applePriceQ :: QuantityDict +applePriceQ = mkQuant' + "applePriceQ" + (cn "apple price") + Nothing -- UnitDefn + Real -- Space + (autoStage $ sub lP cA) + Nothing -- Abbreviation + +linearSupplyQ :: QuantityDict +linearSupplyQ = mkQuant' + "linearSupplyQuant" + (pn "price-dependant apple supply") + Nothing -- UnitDefn + (mkFunction [Real] Integer) + (autoStage $ sub cS lL) + Nothing -- Abbreviation + +linearDemandQ :: QuantityDict +linearDemandQ = mkQuant' + "linearDemandQuant" + (pn "price-dependant apple demand") + Nothing -- UnitDefn + (mkFunction [Real] Integer) + (autoStage $ sub cD lL) + Nothing -- Abbreviation + +mSQ, mDQ, bSQ, bDQ :: QuantityDict +mSQ = mkQuant' + "ms" + (pn "marginal apple supply by price") -- proper noun? + Nothing -- UnitDefn + Real -- Should be UNITS/DOLLAR + (autoStage $ sub lM cS) + Nothing -- Abbreviation +mDQ = mkQuant' + "md" + (pn "marginal apple demand by price") -- proper noun? + Nothing -- UnitDefn + Real -- Should be UNITS/DOLLAR + (autoStage $ sub lM cD) + Nothing -- Abbreviation +bSQ = mkQuant' + "bs" + (pn "minimum supply of apples") -- proper noun? + Nothing -- UnitDefn + Real -- Should be UNITS + (autoStage $ sub lB cS) + Nothing -- Abbreviation +bDQ = mkQuant' + "bd" + (pn "maximum demand of apples") -- proper noun? + Nothing -- UnitDefn + Real -- Should be UNITS + (autoStage $ sub lB cD) + Nothing -- Abbreviation + +linearSupplyQD :: QDefinition Expr +-- TODO: Missing "Real -> Integer" truncation function for the below function +linearSupplyQD = mkFuncDefByQ linearSupplyQ [applePriceQ] $ sy mSQ $* sy applePriceQ $+ sy bSQ +-- ^ I'm deliberately choosing to use applePrice here because I want to use this +-- in an instance model, which (I believe) should mean that there are only +-- 'concrete' variables (i.e., problem-related variables, not the abstract ones +-- imported from the hypothetical library that would contain equilibrium) + +linearSupplyDD :: DataDefinition +linearSupplyDD = ddENoRefs + linearSupplyQD + Nothing -- Derivation + "linearSupplyDD" -- "ShortName" + [] -- Notes + +linearDemandQD :: QDefinition Expr +linearDemandQD = mkFuncDefByQ linearDemandQ [applePriceQ] $ sy mDQ $* sy applePriceQ $+ sy bDQ + +linearDemandDD :: DataDefinition +linearDemandDD = ddENoRefs + linearSupplyQD + Nothing -- Derivation + "linearDemandDD" -- "ShortName" + [] -- Notes + +equilibriumApplePriceLinearSDQ :: QuantityDict +equilibriumApplePriceLinearSDQ = mkQuant' + "equilibriumApplePriceQ" + (cn "equilibrium apple price") + Nothing -- UnitDefn + Real -- Space + (autoStage $ sub lP $ label "A,Eq") -- Hack because of lack of support for symbol "corners" in Drasil. + Nothing -- Abbreviation + +equilibriumApplePriceLinearSDQD :: QDefinition Expr +equilibriumApplePriceLinearSDQD = mkQuantDef equilibriumApplePriceLinearSDQ $ + (sy bDQ $- sy bSQ) $/ (sy mSQ $- sy mDQ) + +equilibriumPriceLinearSDQIM :: InstanceModel +equilibriumPriceLinearSDQIM = imNoDerivNoRefs + (equationalModel' equilibriumApplePriceLinearSDQD) + [] -- Inputs -- What are they? Why is this only here and not in the TM? + equilibriumApplePriceLinearSDQ -- Output -- not everything will have an output! + [UpFrom (Exc, int 0)] -- Output constraints: price > 0 -- why can't I put gtZerConstr + "equilibriumApplePriceIM" + [] -- Notes ([Sentence]) + +{------------------------------------------------------------------------------- +- Equilibrium (Physics) +-------------------------------------------------------------------------------} + diff --git a/code/drasil-lang/lib/Language/Drasil/Chunk/Eq.hs b/code/drasil-lang/lib/Language/Drasil/Chunk/Eq.hs index 093a93f8b4f..2ce2362dbb3 100644 --- a/code/drasil-lang/lib/Language/Drasil/Chunk/Eq.hs +++ b/code/drasil-lang/lib/Language/Drasil/Chunk/Eq.hs @@ -114,8 +114,14 @@ mkQDefSt u n s symb sp Nothing e = fromEqnSt' u n s symb sp e -- | Used to help make 'QDefinition's when 'UID', term, and 'Symbol' come from the same source. mkQuantDef :: (Quantity c, MayHaveUnit c) => c -> e -> QDefinition e -mkQuantDef c = mkQDefSt (c ^. uid) (c ^. term) EmptyS (symbol c) (c ^. typ) (getUnit c) - +mkQuantDef c = mkQDefSt (c ^. uid) (c ^. term) EmptyS (symbol c) (c ^. typ) (getUnit c) -- FIXME: Always EmptyS description? Seems dubious? + +{- + DefinedQuantityDict seems like a wart. It seems like it's only necessary when + we want to assert that a quantity has an English interpretation along with a + mathematical one (i.e., a variable). +-} + -- FIXME: See #2788. -- | Used to help make 'QDefinition's when 'UID' and 'Symbol' come from the same source, with the term separate. mkQuantDef' :: (Quantity c, MayHaveUnit c) => c -> NP -> e -> QDefinition e diff --git a/code/drasil-printers/lib/Language/Drasil/HTML/Print.hs b/code/drasil-printers/lib/Language/Drasil/HTML/Print.hs index 9ca4efa2312..8f6bad1a28b 100644 --- a/code/drasil-printers/lib/Language/Drasil/HTML/Print.hs +++ b/code/drasil-printers/lib/Language/Drasil/HTML/Print.hs @@ -293,7 +293,7 @@ makeColumns = vcat . map (td . pSpec) -- | Renders definition tables (Data, General, Theory, etc.). makeDefn :: L.DType -> [(String,[LayoutObj])] -> Doc -> Doc -makeDefn _ [] _ = error "L.Empty definition" +makeDefn _ [] _ = error "Definition table has no designated rows to render!" makeDefn dt ps l = refwrap l $ table [dtag dt] (tr (th (text "Refname") $$ td (bold l)) $$ makeDRows ps) where dtag L.General = "gdefn" diff --git a/code/stable/template/SRS/HTML/Template_SRS.html b/code/stable/template/SRS/HTML/Template_SRS.html index 3644a5d0784..b0bfab44a82 100644 --- a/code/stable/template/SRS/HTML/Template_SRS.html +++ b/code/stable/template/SRS/HTML/Template_SRS.html @@ -122,7 +122,76 @@

Table of Units

Table of Symbols

There are no symbols.

-

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SymbolDescriptionUnits
bDmaximum demand of apples--
bSminimum supply of apples--
DDemand--
Dlprice-dependant apple demand--
inEquilibriumIn equilibrium--
mDmarginal apple demand by price--
mSmarginal apple supply by price--
PPrice--
pAApple price--
pA,EqEquilibrium apple price--
SSupply--
Slprice-dependant apple supply--
+

Table of Symbols

+
@@ -249,7 +318,52 @@

Assumptions

Theoretical Models

-

There are no theoretical models.

+

+ This section focuses on the general equations and laws that ProgName is based on. +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RefnameTM:equilibriumTM
Label

In equilibrium

Equation\[\text{inEquilibrium}=S\left(P\right)=D\left(P\right)\]
Description +
    +
  • inEquilibrium is the in equilibrium (Unitless)
  • +
  • S is the supply (Unitless)
  • +
  • P is the price (Unitless)
  • +
  • D is the demand (Unitless)
  • +
+
Notes +

+ Equilibrium occurs when the supply and demand curves intersect at current price. +

+
Source

--

RefBy

+
@@ -261,13 +375,122 @@

General Definitions

Data Definitions

-

There are no data definitions.

+

+ This section collects and defines all the data needed to build the instance models. +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
RefnameDD:linearDemandDD
Label

price-dependant apple supply

Equation\[{S_{l}}\left({p_{A}}\right)={m_{S}}\,{p_{A}}+{b_{S}}\]
Description +
    +
  • + Sl is the price-dependant apple supply (Unitless) +
  • +
  • + mS is the marginal apple supply by price (Unitless) +
  • +
  • pA is the apple price (Unitless)
  • +
  • + bS is the minimum supply of apples (Unitless) +
  • +
+
Source

--

RefBy

+

Instance Models

-

There are no instance models.

+

+ This section transforms the problem defined in the problem description into one which is expressed in mathematical terms. It uses concrete symbols defined in the data definitions to replace the abstract symbols in the models identified in theoretical models and general definitions. +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
RefnameIM:equilibriumApplePriceIM
Label

Equilibrium apple price

Input

Output

pA,Eq

Input Constraints
Output Constraints\[{p_{\text{A,Eq}}}\gt{}0\]
Equation + \[{p_{\text{A,Eq}}}=\frac{{b_{D}}-{b_{S}}}{{m_{S}}-{m_{D}}}\] +
Description +
    +
  • + pA,Eq is the equilibrium apple price (Unitless) +
  • +
  • + bD is the maximum demand of apples (Unitless) +
  • +
  • + bS is the minimum supply of apples (Unitless) +
  • +
  • + mS is the marginal apple supply by price (Unitless) +
  • +
  • + mD is the marginal apple demand by price (Unitless) +
  • +
+
Source

--

RefBy

+
@@ -324,8 +547,96 @@

Unlikely Changes

Traceability Matrices and Graphs

- There are no traceability matrices or traceability graphs. + The purpose of the traceability matrices is to provide easy references on what has to be additionally modified if a certain component is changed. Every time a component is changed, the items in the column of that component that are marked with an "X" should be modified as well. Tab:TraceMatRefvsRef shows the dependencies of the data definitions, theoretical models, general definitions, and instance models on each other. +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
DD:linearDemandDDTM:equilibriumTM + IM:equilibriumApplePriceIM +
DD:linearDemandDD
TM:equilibriumTM
+ IM:equilibriumApplePriceIM +
+

+ Traceability Matrix Showing the Connections Between Items and Other Sections +

+
+

+ The purpose of the traceability graphs is also to provide easy references on what has to be additionally modified if a certain component is changed. The arrows in the graphs represent dependencies. The component at the tail of an arrow is depended on by the component at the head of that arrow. Therefore, if a component is changed, the components that it points to should also be changed. Fig:TraceGraphAvsA shows the dependencies of data definitions, theoretical models, general definitions, and instance models on each other. Fig:TraceGraphAvsAll shows the dependencies of dependencies of assumptions, models, definitions, requirements, goals, and changes with each other. +

+
+
+ TraceGraphAvsA +
Figure: TraceGraphAvsA
+
+
+
+
+ TraceGraphAvsAll +
Figure: TraceGraphAvsAll
+
+
+
+
+ TraceGraphRefvsRef +
Figure: TraceGraphRefvsRef
+
+
+
+
+ TraceGraphAllvsR +
Figure: TraceGraphAllvsR
+
+
+
+
+ TraceGraphAllvsAll +
Figure: TraceGraphAllvsAll
+
+
+

+ For convenience, the following graphs can be found at the links below:

+
diff --git a/code/stable/template/SRS/Jupyter/Template_SRS.ipynb b/code/stable/template/SRS/Jupyter/Template_SRS.ipynb index 1988465a260..794a0ae9e5a 100644 --- a/code/stable/template/SRS/Jupyter/Template_SRS.ipynb +++ b/code/stable/template/SRS/Jupyter/Template_SRS.ipynb @@ -74,6 +74,22 @@ "\n", "There are no symbols.\n", "\n", + "\n", + "\n", + "|Symbol|Description|Units|\n", + "|:--- |:--- |:--- |\n", + "|$b_D$|maximum demand of apples|--|\n", + "|$b_S$|minimum supply of apples|--|\n", + "|$D$|Demand|--|\n", + "|$D_l$|price-dependant apple demand|--|\n", + "|$inEquilibrium$|In equilibrium|--|\n", + "|$m_D$|marginal apple demand by price|--|\n", + "|$m_S$|marginal apple supply by price|--|\n", + "|$P$|Price|--|\n", + "|$p_A$|Apple price|--|\n", + "|$p_A,Eq$|Equilibrium apple price|--|\n", + "|$S$|Supply|--|\n", + "|$S_l$|price-dependant apple supply|--|\n", "\n", "\n", "## Abbreviations and Acronyms\n", @@ -170,7 +186,61 @@ "### Theoretical Models\n", "\n", "\n", - "There are no theoretical models.\n", + "This section focuses on the general equations and laws that ProgName is based on.\n", + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
Refname\n", + "TM:equilibriumTM\n", + "
Label\n", + "\n", + "In equilibrium\n", + "
Equation\n", + "$$\\text{inEquilibrium}=S\\left(P\\right)=D\\left(P\\right)$$\n", + "
Description\n", + "\n", + "
  • $inEquilibrium$ is the in equilibrium (Unitless)
  • \n", + "
  • $S$ is the supply (Unitless)
  • \n", + "
  • $P$ is the price (Unitless)
  • \n", + "
  • $D$ is the demand (Unitless)
  • \n", + "
    Notes\n", + "\n", + "Equilibrium occurs when the supply and demand curves intersect at current price.\n", + "
    Source\n", + "\n", + "--\n", + "
    RefBy\n", + "\n", + "\n", + "
    \n", "\n", "### General Definitions\n", "\n", @@ -180,12 +250,132 @@ "### Data Definitions\n", "\n", "\n", - "There are no data definitions.\n", + "This section collects and defines all the data needed to build the instance models.\n", + "
    \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
    Refname\n", + "DD:linearDemandDD\n", + "
    Label\n", + "\n", + "price-dependant apple supply\n", + "
    Equation\n", + "$${S_{l}}\\left({p_{A}}\\right)={m_{S}}\\,{p_{A}}+{b_{S}}$$\n", + "
    Description\n", + "\n", + "
  • $S_l$ is the price-dependant apple supply (Unitless)
  • \n", + "
  • $m_S$ is the marginal apple supply by price (Unitless)
  • \n", + "
  • $p_A$ is the apple price (Unitless)
  • \n", + "
  • $b_S$ is the minimum supply of apples (Unitless)
  • \n", + "
    Source\n", + "\n", + "--\n", + "
    RefBy\n", + "\n", + "\n", + "
    \n", "\n", "### Instance Models\n", "\n", "\n", - "There are no instance models.\n", + "This section transforms the problem defined in the [problem description](#Sec:ProbDesc) into one which is expressed in mathematical terms. It uses concrete symbols defined in the [data definitions](#Sec:DDs) to replace the abstract symbols in the models identified in [theoretical models](#Sec:TMs) and [general definitions](#Sec:GDs).\n", + "
    \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
    Refname\n", + "IM:equilibriumApplePriceIM\n", + "
    Label\n", + "\n", + "Equilibrium apple price\n", + "
    Input\n", + "\n", + "\n", + "
    Output\n", + "\n", + "$p_A,Eq$\n", + "
    Input Constraints\n", + "
    Output Constraints\n", + "$${p_{\\text{A,Eq}}}\\gt{}0$$\n", + "
    Equation\n", + "$${p_{\\text{A,Eq}}}=\\frac{{b_{D}}-{b_{S}}}{{m_{S}}-{m_{D}}}$$\n", + "
    Description\n", + "\n", + "
  • $p_A,Eq$ is the equilibrium apple price (Unitless)
  • \n", + "
  • $b_D$ is the maximum demand of apples (Unitless)
  • \n", + "
  • $b_S$ is the minimum supply of apples (Unitless)
  • \n", + "
  • $m_S$ is the marginal apple supply by price (Unitless)
  • \n", + "
  • $m_D$ is the marginal apple demand by price (Unitless)
  • \n", + "
    Source\n", + "\n", + "--\n", + "
    RefBy\n", + "\n", + "\n", + "
    \n", "\n", "### Data Constraints\n", "\n", @@ -225,7 +415,46 @@ "# Traceability Matrices and Graphs\n", "\n", "\n", - "There are no traceability matrices or traceability graphs.\n", + "The purpose of the traceability matrices is to provide easy references on what has to be additionally modified if a certain component is changed. Every time a component is changed, the items in the column of that component that are marked with an \"X\" should be modified as well. [Tab:TraceMatRefvsRef](#Table:TraceMatRefvsRef) shows the dependencies of the data definitions, theoretical models, general definitions, and instance models on each other.\n", + "\n", + "\n", + "\n", + "||[DD:linearDemandDD](#DD:linearDemandDD)|[TM:equilibriumTM](#TM:equilibriumTM)|[IM:equilibriumApplePriceIM](#IM:equilibriumApplePriceIM)|\n", + "|:--- |:--- |:--- |:--- |\n", + "|[DD:linearDemandDD](#DD:linearDemandDD)||||\n", + "|[TM:equilibriumTM](#TM:equilibriumTM)||||\n", + "|[IM:equilibriumApplePriceIM](#IM:equilibriumApplePriceIM)||||\n", + "\n", + "\n", + "The purpose of the traceability graphs is also to provide easy references on what has to be additionally modified if a certain component is changed. The arrows in the graphs represent dependencies. The component at the tail of an arrow is depended on by the component at the head of that arrow. Therefore, if a component is changed, the components that it points to should also be changed. [Fig:TraceGraphAvsA](#Figure:TraceGraphAvsA) shows the dependencies of data definitions, theoretical models, general definitions, and instance models on each other. [Fig:TraceGraphAvsAll](#Figure:TraceGraphAvsAll) shows the dependencies of dependencies of assumptions, models, definitions, requirements, goals, and changes with each other.\n", + "\n", + "
    \n", + "\"TraceGraphAvsA\"\n", + "
    \n", + "\n", + "
    \n", + "\"TraceGraphAvsAll\"\n", + "
    \n", + "\n", + "
    \n", + "\"TraceGraphRefvsRef\"\n", + "
    \n", + "\n", + "
    \n", + "\"TraceGraphAllvsR\"\n", + "
    \n", + "\n", + "
    \n", + "\"TraceGraphAllvsAll\"\n", + "
    \n", + "\n", + "For convenience, the following graphs can be found at the links below:\n", + "\n", + "- TraceGraphAvsA\n", + "- TraceGraphAvsAll\n", + "- TraceGraphRefvsRef\n", + "- TraceGraphAllvsR\n", + "- TraceGraphAllvsAll\n", "\n", "# Values of Auxiliary Constants\n", "\n", diff --git a/code/stable/template/SRS/PDF/Template_SRS.tex b/code/stable/template/SRS/PDF/Template_SRS.tex index 5b61192c740..a59915d5e3f 100644 --- a/code/stable/template/SRS/PDF/Template_SRS.tex +++ b/code/stable/template/SRS/PDF/Template_SRS.tex @@ -7,12 +7,26 @@ \usepackage{amssymb} \usepackage{mathtools} \usepackage{unicode-math} +\usepackage{tabularray} +\usepackage{tabularx} +\usepackage{booktabs} +\usepackage{caption} +\usepackage{adjustbox} +\usepackage{enumitem} +\usepackage{graphics} +\usepackage{svg} +\usepackage{float} \usepackage{filecontents} \usepackage[backend=bibtex]{biblatex} \usepackage{url} \setmathfont{Latin Modern Math} \newcommand{\gt}{\ensuremath >} \newcommand{\lt}{\ensuremath <} +\newlist{symbDescription}{description}{1} +\setlist[symbDescription]{noitemsep, topsep=0pt, parsep=0pt, partopsep=0pt} +\newcommand{\resizeExpression}[1]{ + \adjustbox{max width=\linewidth}{$#1$} +} \bibliography{bibfile} \title{Software Requirements Specification for ProgName} \author{Author Name} @@ -33,7 +47,36 @@ \subsection{Table of Symbols} \label{Sec:ToS} There are no symbols. - +\begin{longtblr} +[caption={Table of Symbols}] +{colspec={l l l}, rowhead=1, hline{1,Z}=\heavyrulewidth, hline{2}=\lightrulewidth} +\textbf{Symbol} & \textbf{Description} & \textbf{Units} +\\ +${b_{D}}$ & maximum demand of apples & -- +\\ +${b_{S}}$ & minimum supply of apples & -- +\\ +$D$ & Demand & -- +\\ +${D_{l}}$ & price-dependant apple demand & -- +\\ +$\text{inEquilibrium}$ & In equilibrium & -- +\\ +${m_{D}}$ & marginal apple demand by price & -- +\\ +${m_{S}}$ & marginal apple supply by price & -- +\\ +$P$ & Price & -- +\\ +${p_{A}}$ & Apple price & -- +\\ +${p_{\text{A,Eq}}}$ & Equilibrium apple price & -- +\\ +$S$ & Supply & -- +\\ +${S_{l}}$ & price-dependant apple supply & -- +\label{Table:ToS} +\end{longtblr} \subsection{Abbreviations and Acronyms} \label{Sec:TAbbAcc} There are no abbreviations and acronyms. @@ -110,7 +153,40 @@ \subsubsection{Assumptions} \subsubsection{Theoretical Models} \label{Sec:TMs} -There are no theoretical models. +This section focuses on the general equations and laws that ProgName is based on. + +\medskip +\noindent +\begin{minipage}{\textwidth} +\begin{tabular}{>{\raggedright}p{0.13\textwidth}>{\raggedright\arraybackslash}p{0.82\textwidth}} +\toprule \textbf{Refname} & \textbf{TM:equilibriumTM} +\phantomsection +\label{TM:equilibriumTM} +\\ \midrule +Label & In equilibrium + +\\ \midrule +Equation & \begin{displaymath} + \resizeExpression{\text{inEquilibrium}=S\left(P\right)=D\left(P\right)} + \end{displaymath} +\\ \midrule +Description & \begin{symbDescription} + \item{$\text{inEquilibrium}$ is the in equilibrium (Unitless)} + \item{$S$ is the supply (Unitless)} + \item{$P$ is the price (Unitless)} + \item{$D$ is the demand (Unitless)} + \end{symbDescription} +\\ \midrule +Notes & Equilibrium occurs when the supply and demand curves intersect at current price. + +\\ \midrule +Source & -- + +\\ \midrule +RefBy & +\\ \bottomrule +\end{tabular} +\end{minipage} \subsubsection{General Definitions} \label{Sec:GDs} @@ -118,11 +194,83 @@ \subsubsection{General Definitions} \subsubsection{Data Definitions} \label{Sec:DDs} -There are no data definitions. +This section collects and defines all the data needed to build the instance models. + +\medskip +\noindent +\begin{minipage}{\textwidth} +\begin{tabular}{>{\raggedright}p{0.13\textwidth}>{\raggedright\arraybackslash}p{0.82\textwidth}} +\toprule \textbf{Refname} & \textbf{DD:linearDemandDD} +\phantomsection +\label{DD:linearDemandDD} +\\ \midrule +Label & price-dependant apple supply + +\\ \midrule +Equation & \begin{displaymath} + \resizeExpression{{S_{l}}\left({p_{A}}\right)={m_{S}}\,{p_{A}}+{b_{S}}} + \end{displaymath} +\\ \midrule +Description & \begin{symbDescription} + \item{${S_{l}}$ is the price-dependant apple supply (Unitless)} + \item{${m_{S}}$ is the marginal apple supply by price (Unitless)} + \item{${p_{A}}$ is the apple price (Unitless)} + \item{${b_{S}}$ is the minimum supply of apples (Unitless)} + \end{symbDescription} +\\ \midrule +Source & -- + +\\ \midrule +RefBy & +\\ \bottomrule +\end{tabular} +\end{minipage} \subsubsection{Instance Models} \label{Sec:IMs} -There are no instance models. +This section transforms the problem defined in the \hyperref[Sec:ProbDesc]{problem description} into one which is expressed in mathematical terms. It uses concrete symbols defined in the \hyperref[Sec:DDs]{data definitions} to replace the abstract symbols in the models identified in \hyperref[Sec:TMs]{theoretical models} and \hyperref[Sec:GDs]{general definitions}. + +\medskip +\noindent +\begin{minipage}{\textwidth} +\begin{tabular}{>{\raggedright}p{0.13\textwidth}>{\raggedright\arraybackslash}p{0.82\textwidth}} +\toprule \textbf{Refname} & \textbf{IM:equilibriumApplePriceIM} +\phantomsection +\label{IM:equilibriumApplePriceIM} +\\ \midrule +Label & Equilibrium apple price + +\\ \midrule +Input & +\\ \midrule +Output & ${p_{\text{A,Eq}}}$ + +\\ \midrule +Input Constraints & +\\ \midrule +Output Constraints & \begin{displaymath} + \resizeExpression{{p_{\text{A,Eq}}}\gt{}0} + \end{displaymath} +\\ \midrule +Equation & \begin{displaymath} + \resizeExpression{{p_{\text{A,Eq}}}=\frac{{b_{D}}-{b_{S}}}{{m_{S}}-{m_{D}}}} + \end{displaymath} +\\ \midrule +Description & \begin{symbDescription} + \item{${p_{\text{A,Eq}}}$ is the equilibrium apple price (Unitless)} + \item{${b_{D}}$ is the maximum demand of apples (Unitless)} + \item{${b_{S}}$ is the minimum supply of apples (Unitless)} + \item{${m_{S}}$ is the marginal apple supply by price (Unitless)} + \item{${m_{D}}$ is the marginal apple demand by price (Unitless)} + \end{symbDescription} +\\ \midrule +Source & -- + +\\ \midrule +RefBy & +\\ \bottomrule +\end{tabular} +\end{minipage} \subsubsection{Data Constraints} \label{Sec:DataConstraints} @@ -154,8 +302,66 @@ \section{Unlikely Changes} \section{Traceability Matrices and Graphs} \label{Sec:TraceMatrices} -There are no traceability matrices or traceability graphs. - +The purpose of the traceability matrices is to provide easy references on what has to be additionally modified if a certain component is changed. Every time a component is changed, the items in the column of that component that are marked with an ``X'' should be modified as well. \hyperref[Table:TraceMatRefvsRef]{Tab:TraceMatRefvsRef} shows the dependencies of the data definitions, theoretical models, general definitions, and instance models on each other. + +\begin{longtblr} +[caption={Traceability Matrix Showing the Connections Between Items and Other Sections}] +{colspec={l l l l}, rowhead=1, hline{1,Z}=\heavyrulewidth, hline{2}=\lightrulewidth} +\textbf{} & \textbf{\hyperref[DD:linearDemandDD]{DD:linearDemandDD}} & \textbf{\hyperref[TM:equilibriumTM]{TM:equilibriumTM}} & \textbf{\hyperref[IM:equilibriumApplePriceIM]{IM:equilibriumApplePriceIM}} +\\ +\hyperref[DD:linearDemandDD]{DD:linearDemandDD} & & & +\\ +\hyperref[TM:equilibriumTM]{TM:equilibriumTM} & & & +\\ +\hyperref[IM:equilibriumApplePriceIM]{IM:equilibriumApplePriceIM} & & & +\label{Table:TraceMatRefvsRef} +\end{longtblr} +The purpose of the traceability graphs is also to provide easy references on what has to be additionally modified if a certain component is changed. The arrows in the graphs represent dependencies. The component at the tail of an arrow is depended on by the component at the head of that arrow. Therefore, if a component is changed, the components that it points to should also be changed. \hyperref[Figure:TraceGraphAvsA]{Fig:TraceGraphAvsA} shows the dependencies of data definitions, theoretical models, general definitions, and instance models on each other. \hyperref[Figure:TraceGraphAvsAll]{Fig:TraceGraphAvsAll} shows the dependencies of dependencies of assumptions, models, definitions, requirements, goals, and changes with each other. + +\begin{figure}[H] +\begin{center} +\includesvg[width=\textwidth, inkscapelatex = false]{../../../../traceygraphs/progname/avsa} +\caption{TraceGraphAvsA} +\label{Figure:TraceGraphAvsA} +\end{center} +\end{figure} +\begin{figure}[H] +\begin{center} +\includesvg[width=\textwidth, inkscapelatex = false]{../../../../traceygraphs/progname/avsall} +\caption{TraceGraphAvsAll} +\label{Figure:TraceGraphAvsAll} +\end{center} +\end{figure} +\begin{figure}[H] +\begin{center} +\includesvg[width=\textwidth, inkscapelatex = false]{../../../../traceygraphs/progname/refvsref} +\caption{TraceGraphRefvsRef} +\label{Figure:TraceGraphRefvsRef} +\end{center} +\end{figure} +\begin{figure}[H] +\begin{center} +\includesvg[width=\textwidth, inkscapelatex = false]{../../../../traceygraphs/progname/allvsr} +\caption{TraceGraphAllvsR} +\label{Figure:TraceGraphAllvsR} +\end{center} +\end{figure} +\begin{figure}[H] +\begin{center} +\includesvg[width=\textwidth, inkscapelatex = false]{../../../../traceygraphs/progname/allvsall} +\caption{TraceGraphAllvsAll} +\label{Figure:TraceGraphAllvsAll} +\end{center} +\end{figure} +For convenience, the following graphs can be found at the links below: + +\begin{itemize} +\item{\hyperref{../../../../traceygraphs/progname/avsa.svg}{}{}{TraceGraphAvsA}} +\item{\hyperref{../../../../traceygraphs/progname/avsall.svg}{}{}{TraceGraphAvsAll}} +\item{\hyperref{../../../../traceygraphs/progname/refvsref.svg}{}{}{TraceGraphRefvsRef}} +\item{\hyperref{../../../../traceygraphs/progname/allvsr.svg}{}{}{TraceGraphAllvsR}} +\item{\hyperref{../../../../traceygraphs/progname/allvsall.svg}{}{}{TraceGraphAllvsAll}} +\end{itemize} \section{Values of Auxiliary Constants} \label{Sec:AuxConstants} There are no auxiliary constants. diff --git a/code/stable/template/SRS/mdBook/.drasil-requirements.csv b/code/stable/template/SRS/mdBook/.drasil-requirements.csv index dbf8f33dd9d..c2ad460efbf 100644 --- a/code/stable/template/SRS/mdBook/.drasil-requirements.csv +++ b/code/stable/template/SRS/mdBook/.drasil-requirements.csv @@ -1 +1,6 @@ Original,Copy +../../../../traceygraphs/progname/allvsall.svg,src/assets/allvsall.svg +../../../../traceygraphs/progname/allvsr.svg,src/assets/allvsr.svg +../../../../traceygraphs/progname/avsa.svg,src/assets/avsa.svg +../../../../traceygraphs/progname/avsall.svg,src/assets/avsall.svg +../../../../traceygraphs/progname/refvsref.svg,src/assets/refvsref.svg diff --git a/code/stable/template/SRS/mdBook/src/SecDDs.md b/code/stable/template/SRS/mdBook/src/SecDDs.md index e183c11f8f9..a1da5d533f4 100644 --- a/code/stable/template/SRS/mdBook/src/SecDDs.md +++ b/code/stable/template/SRS/mdBook/src/SecDDs.md @@ -1,3 +1,17 @@ # Data Definitions {#Sec:DDs} -There are no data definitions. +This section collects and defines all the data needed to build the instance models. + +
    + +## price-dependant apple supply {#DD:linearDemandDD} + +
    + +|Refname |DD:linearDemandDD | +|:----------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +|Label |price-dependant apple supply | +|Equation |\\[{S\_{l}}\left({p\_{A}}\right)={m\_{S}}\\,{p\_{A}}+{b\_{S}}\\] | +|Description|
    • \\({S\_{l}}\\) is the price-dependant apple supply (Unitless)
    • \\({m\_{S}}\\) is the marginal apple supply by price (Unitless)
    • \\({p\_{A}}\\) is the apple price (Unitless)
    • \\({b\_{S}}\\) is the minimum supply of apples (Unitless)
    | +|Source |-- | +|RefBy | | diff --git a/code/stable/template/SRS/mdBook/src/SecIMs.md b/code/stable/template/SRS/mdBook/src/SecIMs.md index c79de2f6679..9f053f2ce7f 100644 --- a/code/stable/template/SRS/mdBook/src/SecIMs.md +++ b/code/stable/template/SRS/mdBook/src/SecIMs.md @@ -1,3 +1,21 @@ # Instance Models {#Sec:IMs} -There are no instance models. +This section transforms the problem defined in the [problem description](./SecProbDesc.md#Sec:ProbDesc) into one which is expressed in mathematical terms. It uses concrete symbols defined in the [data definitions](./SecDDs.md#Sec:DDs) to replace the abstract symbols in the models identified in [theoretical models](./SecTMs.md#Sec:TMs) and [general definitions](./SecGDs.md#Sec:GDs). + +
    + +## Equilibrium apple price {#IM:equilibriumApplePriceIM} + +
    + +|Refname |IM:equilibriumApplePriceIM | +|:-----------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +|Label |Equilibrium apple price | +|Input | | +|Output |\\({p\_{\text{A,Eq}}}\\) | +|Input Constraints | | +|Output Constraints|\\[{p\_{\text{A,Eq}}}\gt{}0\\] | +|Equation |\\[{p\_{\text{A,Eq}}}=\frac{{b\_{D}}-{b\_{S}}}{{m\_{S}}-{m\_{D}}}\\] | +|Description |
    • \\({p\_{\text{A,Eq}}}\\) is the equilibrium apple price (Unitless)
    • \\({b\_{D}}\\) is the maximum demand of apples (Unitless)
    • \\({b\_{S}}\\) is the minimum supply of apples (Unitless)
    • \\({m\_{S}}\\) is the marginal apple supply by price (Unitless)
    • \\({m\_{D}}\\) is the marginal apple demand by price (Unitless)
    | +|Source |-- | +|RefBy | | diff --git a/code/stable/template/SRS/mdBook/src/SecTMs.md b/code/stable/template/SRS/mdBook/src/SecTMs.md index 3daad77c609..30a8cd0f9a8 100644 --- a/code/stable/template/SRS/mdBook/src/SecTMs.md +++ b/code/stable/template/SRS/mdBook/src/SecTMs.md @@ -1,3 +1,18 @@ # Theoretical Models {#Sec:TMs} -There are no theoretical models. +This section focuses on the general equations and laws that ProgName is based on. + +
    + +## In equilibrium {#TM:equilibriumTM} + +
    + +|Refname |TM:equilibriumTM | +|:----------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +|Label |In equilibrium | +|Equation |\\[\text{inEquilibrium}=S\left(P\right)=D\left(P\right)\\] | +|Description|
    • \\(\text{inEquilibrium}\\) is the in equilibrium (Unitless)
    • \\(S\\) is the supply (Unitless)
    • \\(P\\) is the price (Unitless)
    • \\(D\\) is the demand (Unitless)
    | +|Notes |
    • Equilibrium occurs when the supply and demand curves intersect at current price.
    | +|Source |-- | +|RefBy | | diff --git a/code/stable/template/SRS/mdBook/src/SecToS.md b/code/stable/template/SRS/mdBook/src/SecToS.md index 968930d86aa..ff7cbedfb52 100644 --- a/code/stable/template/SRS/mdBook/src/SecToS.md +++ b/code/stable/template/SRS/mdBook/src/SecToS.md @@ -2,4 +2,21 @@ There are no symbols. +
    +|Symbol |Description |Units| +|:-------------------------|:-----------------------------|:----| +|\\({b\_{D}}\\) |maximum demand of apples |-- | +|\\({b\_{S}}\\) |minimum supply of apples |-- | +|\\(D\\) |Demand |-- | +|\\({D\_{l}}\\) |price-dependant apple demand |-- | +|\\(\text{inEquilibrium}\\)|In equilibrium |-- | +|\\({m\_{D}}\\) |marginal apple demand by price|-- | +|\\({m\_{S}}\\) |marginal apple supply by price|-- | +|\\(P\\) |Price |-- | +|\\({p\_{A}}\\) |Apple price |-- | +|\\({p\_{\text{A,Eq}}}\\) |Equilibrium apple price |-- | +|\\(S\\) |Supply |-- | +|\\({S\_{l}}\\) |price-dependant apple supply |-- | + +**

    Table of Symbols

    ** diff --git a/code/stable/template/SRS/mdBook/src/SecTraceMatrices.md b/code/stable/template/SRS/mdBook/src/SecTraceMatrices.md index 7c1c62928d9..bf0ef167950 100644 --- a/code/stable/template/SRS/mdBook/src/SecTraceMatrices.md +++ b/code/stable/template/SRS/mdBook/src/SecTraceMatrices.md @@ -1,3 +1,63 @@ # Traceability Matrices and Graphs {#Sec:TraceMatrices} -There are no traceability matrices or traceability graphs. +The purpose of the traceability matrices is to provide easy references on what has to be additionally modified if a certain component is changed. Every time a component is changed, the items in the column of that component that are marked with an "X" should be modified as well. [Tab:TraceMatRefvsRef](./SecTraceMatrices.md#Table:TraceMatRefvsRef) shows the dependencies of the data definitions, theoretical models, general definitions, and instance models on each other. + +
    + +| |[DD:linearDemandDD](./SecDDs.md#DD:linearDemandDD)|[TM:equilibriumTM](./SecTMs.md#TM:equilibriumTM)|[IM:equilibriumApplePriceIM](./SecIMs.md#IM:equilibriumApplePriceIM)| +|:-------------------------------------------------------------------|:-------------------------------------------------|:-----------------------------------------------|:-------------------------------------------------------------------| +|[DD:linearDemandDD](./SecDDs.md#DD:linearDemandDD) | | | | +|[TM:equilibriumTM](./SecTMs.md#TM:equilibriumTM) | | | | +|[IM:equilibriumApplePriceIM](./SecIMs.md#IM:equilibriumApplePriceIM)| | | | + +**

    Traceability Matrix Showing the Connections Between Items and Other Sections

    ** + +The purpose of the traceability graphs is also to provide easy references on what has to be additionally modified if a certain component is changed. The arrows in the graphs represent dependencies. The component at the tail of an arrow is depended on by the component at the head of that arrow. Therefore, if a component is changed, the components that it points to should also be changed. [Fig:TraceGraphAvsA](./SecTraceMatrices.md#Figure:TraceGraphAvsA) shows the dependencies of data definitions, theoretical models, general definitions, and instance models on each other. [Fig:TraceGraphAvsAll](./SecTraceMatrices.md#Figure:TraceGraphAvsAll) shows the dependencies of dependencies of assumptions, models, definitions, requirements, goals, and changes with each other. + +
    + +![TraceGraphAvsA](./assets/avsa.svg) + +**Figure: TraceGraphAvsA** + +
    + +
    + +![TraceGraphAvsAll](./assets/avsall.svg) + +**Figure: TraceGraphAvsAll** + +
    + +
    + +![TraceGraphRefvsRef](./assets/refvsref.svg) + +**Figure: TraceGraphRefvsRef** + +
    + +
    + +![TraceGraphAllvsR](./assets/allvsr.svg) + +**Figure: TraceGraphAllvsR** + +
    + +
    + +![TraceGraphAllvsAll](./assets/allvsall.svg) + +**Figure: TraceGraphAllvsAll** + +
    + +For convenience, the following graphs can be found at the links below: + +- [TraceGraphAvsA](../../../../traceygraphs/progname/avsa.svg) +- [TraceGraphAvsAll](../../../../traceygraphs/progname/avsall.svg) +- [TraceGraphRefvsRef](../../../../traceygraphs/progname/refvsref.svg) +- [TraceGraphAllvsR](../../../../traceygraphs/progname/allvsr.svg) +- [TraceGraphAllvsAll](../../../../traceygraphs/progname/allvsall.svg)