Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated NFR for maintainability to refer to code, not SRS: #3288 #3735

Merged
merged 18 commits into from
May 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
bc03b42
#3288: updated maintainability NFR for gamephysics example
BilalM04 May 9, 2024
482ecd9
#3288: updated maintainability NFR for glassbr example
BilalM04 May 9, 2024
d27f9f5
#3288: updated maintainability NFR for PDController example
BilalM04 May 9, 2024
0d54a81
#3288: updated maintainability NFR for Projectile example
BilalM04 May 9, 2024
a41ceba
#3288: updated maintainability NFR for SSP example
BilalM04 May 9, 2024
cd9a7ad
#3288: updated maintainability NFR for SWHS and NoPCM example
BilalM04 May 9, 2024
894f1d5
#3288: fixed maintainable label for some examples
BilalM04 May 13, 2024
2d6e1a2
#3288: updated stable to match NFR maintainable description fix
BilalM04 May 13, 2024
cc87090
#3288: added a function to create a common NFR for maintainability
BilalM04 May 22, 2024
e8b4c7d
#3288: updated drasil-example code for requirements to use mkMaintain…
BilalM04 May 22, 2024
5b927c9
#3288: updated stable to remove redundant percent text
BilalM04 May 22, 2024
49b2515
#3288: removed unused import
BilalM04 May 22, 2024
0212495
#3288: removed uneccessary EmptyS
BilalM04 May 22, 2024
ead67ef
#3288: removed uneccessary type declaration for constant
BilalM04 May 22, 2024
caafb13
#3288: modified the bound in the maintainability description
BilalM04 May 23, 2024
b5c4e5c
#3288: updated stable to match maintainability description change
BilalM04 May 23, 2024
372c282
#3288: changed function to export from Drasil.DocLang
BilalM04 May 23, 2024
fe933ef
#3288: updated function import to Drasil.DocLang
BilalM04 May 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions code/drasil-docLang/lib/Drasil/DocLang.hs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ module Drasil.DocLang (
unitTableRef, tunit, tunit', tunitNone,
-- ** Requirements
-- Drasil.Sections.Requirements
inReq, inTable, mkInputPropsTable, mkQRTuple, mkQRTupleRef, mkValsSourceTable, reqInputsRef,
inReq, inTable, mkInputPropsTable, mkQRTuple, mkQRTupleRef,
mkValsSourceTable, reqInputsRef, mkMaintainableNFR,
-- ** Specific System Description
-- Drasil.Sections.SpecificSystemDescription
auxSpecSent, termDefnF', inDataConstTbl, outDataConstTbl,
Expand Down Expand Up @@ -91,7 +92,7 @@ import Drasil.Sections.AuxiliaryConstants (tableOfConstants)
import Drasil.Sections.Introduction (purpDoc)
import Drasil.Sections.ReferenceMaterial (intro, emptySectSentPlu, emptySectSentSing)
import Drasil.Sections.Requirements (inReq, inTable, mkInputPropsTable,
mkQRTuple, mkQRTupleRef, mkValsSourceTable, reqInputsRef)
mkQRTuple, mkQRTupleRef, mkValsSourceTable, reqInputsRef, mkMaintainableNFR)
import Drasil.Sections.SpecificSystemDescription (auxSpecSent, termDefnF', inDataConstTbl, outDataConstTbl)
--import Drasil.Sections.Stakeholders
--import Drasil.Sections.TableOfAbbAndAcronyms
Expand Down
15 changes: 13 additions & 2 deletions code/drasil-docLang/lib/Drasil/Sections/Requirements.hs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ module Drasil.Sections.Requirements (
fullReqs, fullTables, inReq, inTable,
mkInputPropsTable, mkQRTuple, mkQRTupleRef, mkValsSourceTable,
-- * Non-functional Requirements
nfReqF
nfReqF, mkMaintainableNFR
) where

import Language.Drasil
Expand All @@ -17,7 +17,7 @@ import qualified Language.Drasil.Sentence.Combinators as S
import Drasil.Sections.ReferenceMaterial(emptySectSentPlu)
import Theory.Drasil (HasOutput(output))

import Data.Drasil.Concepts.Documentation (description, funcReqDom,
import Data.Drasil.Concepts.Documentation (description, funcReqDom, nonFuncReqDom,
functionalRequirement, input_, nonfunctionalRequirement, {-output_,-} section_,
software, symbol_, value, reqInput)
import Data.Drasil.Concepts.Math (unit_)
Expand Down Expand Up @@ -100,6 +100,17 @@ nfReqIntro :: [Contents] -> Contents
nfReqIntro [] = mkParagraph $ emptySectSentPlu [nonfunctionalRequirement]
nfReqIntro _ = mkParagraph $ reqIntroStart +:+. nfrReqIntroBody

-- | Common Non-Functional Requirement for Maintainability.
-- Takes in a Reference Address ('String'), a percent value ('Integer'),
-- and a label ('String').
mkMaintainableNFR :: String -> Integer -> String -> ConceptInstance
mkMaintainableNFR refAddress percent lbl = cic refAddress (foldlSent [
S "If a likely change is made" `S.toThe`
S "finished software, it will take at most", addPercent percent `S.ofThe`
S "original development time,",
S "assuming the same development resources are available"
]) lbl nonFuncReqDom

-- | Creates an Input Data Table for use in the Functional Requirments section. Takes a list of wrapped variables and something that is 'Referable'.
mkInputPropsTable :: (Quantity i, MayHaveUnit i, HasShortName r, Referable r) =>
[i] -> r -> LabelledContent
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import Language.Drasil.Chunk.Concept.NamedCombinators
import qualified Language.Drasil.Sentence.Combinators as S

import qualified Drasil.DocLang.SRS as SRS (solCharSpec)
import Drasil.DocLang (mkMaintainableNFR)
import Data.Drasil.Concepts.Documentation as Doc (body, funcReqDom, input_,
nonFuncReqDom, output_, physicalConstraint, physicalSim, property, solutionCharSpec)

Expand Down Expand Up @@ -131,8 +132,4 @@ understandability = cic "understandability" (foldlSent [
]) "Understandability" nonFuncReqDom

maintainability :: ConceptInstance
maintainability = cic "maintainability" (foldlSent [
S "development time for any" `S.the_ofTheC` S "likely changes should not exceed",
addPercent (10 :: Integer), S "percent of the original development time"
]) "Maintainability" nonFuncReqDom

maintainability = mkMaintainableNFR "maintainability" 10 "Maintainability"
balacij marked this conversation as resolved.
Show resolved Hide resolved
17 changes: 5 additions & 12 deletions code/drasil-example/glassbr/lib/Drasil/GlassBR/Requirements.hs
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,21 @@ module Drasil.GlassBR.Requirements (funcReqs, funcReqsTables, inReqDesc, nonfunc
import Control.Lens ((^.))

import Language.Drasil
import Drasil.DocLang (inReq, mkQRTuple, mkQRTupleRef, mkValsSourceTable)
import Drasil.DocLang (inReq, mkQRTuple, mkQRTupleRef, mkValsSourceTable, mkMaintainableNFR)
import Drasil.DocLang.SRS (datCon, propCorSol)
import Language.Drasil.Chunk.Concept.NamedCombinators
import qualified Language.Drasil.NounPhrase.Combinators as NP
import qualified Language.Drasil.Sentence.Combinators as S
import Theory.Drasil (DataDefinition)

import Data.Drasil.Concepts.Computation (inValue)
import Data.Drasil.Concepts.Documentation (assumption, characteristic, code,
condition, datumConstraint, environment, funcReqDom, likelyChg, message, mg,
mis, module_, nonFuncReqDom, output_, property, requirement, srs, system,
traceyMatrix, type_, unlikelyChg, value, vavPlan)
import Data.Drasil.Concepts.Documentation (characteristic, code,
condition, datumConstraint, environment, funcReqDom, message, mg,
mis, nonFuncReqDom, output_, property, system, type_, value, vavPlan)
import Data.Drasil.Concepts.Math (calculation)
import Data.Drasil.Concepts.PhysicalProperties (dimension)
import Data.Drasil.Concepts.Software (errMsg)

import Data.Drasil.TheoryConcepts (dataDefn, genDefn, inModel, thModel)

import Drasil.GlassBR.Assumptions (assumpSV, assumpGL, assumptionConstants)
import Drasil.GlassBR.Concepts (glass)
import Drasil.GlassBR.DataDefs (aspRat, glaTyFac, hFromt, loadDF, standOffDis)
Expand Down Expand Up @@ -116,11 +113,7 @@ reusable = cic "reusable" (foldlSent [
atStartNP (the code), S "is modularized"]) "Reusable" nonFuncReqDom

maintainable :: ConceptInstance
maintainable = cic "maintainable" (foldlSent [
S "The traceability between", foldlList Comma List [plural requirement,
plural assumption, plural thModel, plural genDefn, plural dataDefn, plural inModel,
plural likelyChg, plural unlikelyChg, plural module_], S "is completely recorded in",
plural traceyMatrix `S.inThe` getAcc srs `S.and_` phrase mg]) "Maintainable" nonFuncReqDom
maintainable = mkMaintainableNFR "maintainable" 10 "Maintainable"

portable :: ConceptInstance
portable = cic "portable" (foldlSent [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
module Drasil.PDController.Requirements where

import Data.Drasil.Concepts.Documentation (funcReqDom, nonFuncReqDom, datumConstraint)

import Drasil.DocLang.SRS (datCon)
import Drasil.DocLang (mkMaintainableNFR)

import Drasil.PDController.Concepts
import Drasil.PDController.IModel
Expand Down Expand Up @@ -60,14 +60,7 @@ security
nonFuncReqDom

maintainability :: ConceptInstance
maintainability
= cic "maintainability"
(foldlSent
[S "The dependencies among the instance models, requirements,",
S "likely changes, assumptions and all other relevant sections of",
S "this document shall be traceable to each other in the trace matrix"])
"Maintainable"
nonFuncReqDom
maintainability = mkMaintainableNFR "maintainability" 10 "Maintainable"

verifiability :: ConceptInstance
verifiability
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ import Language.Drasil
import Drasil.DocLang.SRS (datCon, propCorSol)
import Language.Drasil.Chunk.Concept.NamedCombinators
import qualified Language.Drasil.Sentence.Combinators as S
import Drasil.DocLang (mkMaintainableNFR)

import Data.Drasil.Concepts.Computation (inValue)
import Data.Drasil.Concepts.Documentation (assumption, code, datumConstraint,
environment, funcReqDom, likelyChg, mg, mis, module_, nonFuncReqDom, output_,
property, requirement, srs, traceyMatrix, unlikelyChg, value, vavPlan, propOfCorSol)
import Data.Drasil.Concepts.Documentation (code, datumConstraint,
environment, funcReqDom, mg, mis, nonFuncReqDom, output_,
property, value, vavPlan, propOfCorSol)
import Data.Drasil.Concepts.Math (calculation)
import Data.Drasil.Concepts.Software (errMsg)
import Data.Drasil.TheoryConcepts (dataDefn, genDefn, inModel, thModel)

import Drasil.Projectile.IMods (landPosIM, messageIM, offsetIM, timeIM)
import Drasil.Projectile.Unitals (flightDur, landPos, message, offset)
Expand Down Expand Up @@ -72,13 +72,10 @@ reusable :: ConceptInstance
reusable = cic "reusable" (foldlSent [atStartNP (the code), S "is modularized"]) "Reusable" nonFuncReqDom

maintainable :: ConceptInstance
maintainable = cic "maintainable" (foldlSent [
S "The traceability between", foldlList Comma List [plural requirement,
plural assumption, plural thModel, plural genDefn, plural dataDefn, plural inModel,
plural likelyChg, plural unlikelyChg, plural module_], S "is completely recorded in",
plural traceyMatrix, S "in the", getAcc srs `S.and_` phrase mg]) "Maintainable" nonFuncReqDom
maintainable = mkMaintainableNFR "maintainable" 10 "Maintainable"

portable :: ConceptInstance
portable = cic "portable" (foldlSent [
atStartNP (the code), S "is able to be run in different", plural environment])
"Portable" nonFuncReqDom
"Portable" nonFuncReqDom

16 changes: 5 additions & 11 deletions code/drasil-example/ssp/lib/Drasil/SSP/Requirements.hs
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,14 @@ import Language.Drasil
import Language.Drasil.Chunk.Concept.NamedCombinators
import qualified Language.Drasil.Sentence.Combinators as S

import Drasil.DocLang (mkInputPropsTable)
import Drasil.DocLang (mkInputPropsTable, mkMaintainableNFR)
import Drasil.DocLang.SRS (datCon, propCorSol)

import Data.Drasil.Concepts.Computation (inDatum)
import Data.Drasil.Concepts.Documentation (assumption, code,
datum, funcReqDom, input_, likelyChg, mg, mis, module_, name_, nonFuncReqDom,
output_, physicalConstraint, property, requirement, srs, symbol_,
traceyMatrix, unlikelyChg, user, value, propOfCorSol)
import Data.Drasil.Concepts.Documentation (code,
datum, funcReqDom, input_, mg, mis, name_, nonFuncReqDom,
output_, physicalConstraint, property, symbol_, user, value, propOfCorSol)
import Data.Drasil.Concepts.Physics (twoD)
import Data.Drasil.TheoryConcepts (dataDefn, genDefn, inModel, thModel)

import Drasil.SSP.Defs (crtSlpSrf, slope, slpSrf)
import Drasil.SSP.IMods (fctSfty, nrmShrFor, intsliceFs, crtSlpId)
Expand Down Expand Up @@ -125,8 +123,4 @@ reusable = cic "reusable" (foldlSent [
atStartNP (the code), S "is modularized"]) "Reusable" nonFuncReqDom

maintainable :: ConceptInstance
maintainable = cic "maintainable" (foldlSent [
S "The traceability between", foldlList Comma List [plural requirement,
plural assumption, plural thModel, plural genDefn, plural dataDefn, plural inModel,
plural likelyChg, plural unlikelyChg, plural module_], S "is completely recorded in",
plural traceyMatrix `S.inThe` getAcc srs `S.and_` phrase mg]) "Maintainable" nonFuncReqDom
maintainable = mkMaintainableNFR "maintainable" 10 "Maintainable"
23 changes: 5 additions & 18 deletions code/drasil-example/swhs/lib/Drasil/SWHS/Requirements.hs
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,20 @@ import qualified Language.Drasil.NounPhrase.Combinators as NP
import qualified Language.Drasil.Sentence.Combinators as S
import Theory.Drasil (InstanceModel, HasOutput(output))

import Drasil.DocLang (inReq)
import Drasil.DocLang (inReq, mkMaintainableNFR)
import Drasil.DocLang.SRS (datCon, propCorSol)

import Data.Drasil.Concepts.Computation (inValue)
import Data.Drasil.Concepts.Documentation (assumption, code, condition,
funcReqDom, input_, likelyChg, mg, mis, module_, nonFuncReqDom, output_,
physicalConstraint, property, propOfCorSol, requirement, srs, traceyMatrix,
unlikelyChg, value, vavPlan)
import Data.Drasil.Concepts.Documentation (code, condition,
funcReqDom, input_, mg, mis, nonFuncReqDom, output_,
physicalConstraint, property, propOfCorSol, value, vavPlan)
import Data.Drasil.Concepts.Math (parameter)
import Data.Drasil.Concepts.PhysicalProperties (materialProprty)
import Data.Drasil.Concepts.Thermodynamics as CT (lawConsEnergy, melting)

import Data.Drasil.Quantities.PhysicalProperties (mass)
import Data.Drasil.Quantities.Physics (energy, time)

import Data.Drasil.TheoryConcepts (dataDefn, genDefn, inModel, thModel)

import Drasil.SWHS.DataDefs (waterMass, waterVolume, tankVolume,
balanceDecayRate, balanceDecayTime, balanceSolidPCM, balanceLiquidPCM)
import Drasil.SWHS.Concepts (phsChgMtrl, tank)
Expand Down Expand Up @@ -159,14 +156,4 @@ reusable = cic "reusable" (foldlSent [
atStartNP (the code), S "is modularized"]) "Reusable" nonFuncReqDom

maintainable :: ConceptInstance
maintainable = cic "maintainable" (foldlSent [
S "The traceability between", foldlList Comma List [plural requirement,
plural assumption, plural thModel, plural genDefn, plural dataDefn, plural inModel,
plural likelyChg, plural unlikelyChg, plural module_], S "is completely recorded in",
plural traceyMatrix, S "in the", getAcc srs `S.and_` phrase mg]) "Maintainable" nonFuncReqDom

-- The second sentence of the above paragraph is repeated in all examples (not
-- exactly, but the general idea is). The first sentence is not always
-- repeated, but it is always either stating that performance is a priority or
-- performance is not a priority. This is probably something that can be
-- abstracted out.
maintainable = mkMaintainableNFR "maintainable" 10 "Maintainable"
2 changes: 1 addition & 1 deletion code/stable/gamephysics/SRS/HTML/GamePhysics_SRS.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion code/stable/gamephysics/SRS/JSON/GamePhysics_SRS.ipynb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion code/stable/gamephysics/SRS/PDF/GamePhysics_SRS.tex

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion code/stable/glassbr/SRS/HTML/GlassBR_SRS.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion code/stable/glassbr/SRS/JSON/GlassBR_SRS.ipynb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion code/stable/glassbr/SRS/PDF/GlassBR_SRS.tex

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion code/stable/pdcontroller/SRS/HTML/PDController_SRS.html

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion code/stable/pdcontroller/SRS/JSON/PDController_SRS.ipynb

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion code/stable/pdcontroller/SRS/PDF/PDController_SRS.tex

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading