%============================================================================== Individual Problem Specification Iteration Group Formalization: 1 Iteration Decomposition/Composition: 1 Iteration IndividualFormalization: 1 %============================================================================== %============================================================================== %============================================================================== %============================================================================== Organizational Aspects: ProjectName : LightHeating Authors : Kronenburg Status : ready for developer review Date : 11.11.1998 Referenced Document : BD : team3-BuildingDescription Referenced Document : PD : team3.2-ProblemDescription %============================================================================== %============================================================================== % GLOBAL SIGNATURE %============================================================================== %============================================================================== Global Signature Domain DT1Range < TIME NL : range of DT1 Intention : set of allowed values for the time DT1 References : PD/Par7 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie sieht der erlaubte Wertebereich aus? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Domain DT2Range < TIME NL : range of DT2 Intention : set of allowed values for the time DT2 References : PD/Par7 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie sieht der erlaubte Wertebereich aus? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Domain DT3Range < TIME NL : range of DT3 Intention : set of allowed values for the time DT3 References : PD/Par7 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie sieht der erlaubte Wertebereich aus? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Domain TempRange NL : range of temperatures Intention : set of allowed temperatures that can be entered References : PD/UH1, PD/FMH3 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie sieht der erlaubte Wertebereich aus? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Domain ComfortTempRange < TempRange NL : range of comfort temperatures Intention : set of allowed comfort temperatures References : PD/UH1, PD/FMH3 UsedBy : Comment : Dieser Wert kann unterschiedlich für jeden Typ von Raum sein. Dies kann evtl. über Vererbung bzw. Aggregation ausgedrückt werden. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie sieht der erlaubte Wertebereich aus? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Domain WorkingTimeRange NL : range of working times Intention : set of allowed working times References : PD/FMH3, PD/UH4 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie sieht der erlaubte Wertebereich aus? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Domain HolidayTimeRange NL : range of holiday times Intention : set of allowed holiday times References : PD/FMH3, PD/UH5 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie sieht der erlaubte Wertebereich aus? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Domain CalenderTime NL : calender time Intention : Domain of the possible calender times that can be used for expressing a date. References : PD/FMH4, PD/FMH5 UsedBy : Comment : Dieser Wertebereich verändert sich von Tag zu Tag, weil der Bereich stets vom aktuellen Tag bis ein Jahr später sein muß. DeveloperReq : Ist das ausreichend hier stets die Eingabe auf ein Jahr im voraus zu beschränken oder gibt es Ausnahmen? DeveloperReas: Sicherheits halber mal nachgefragt. DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Domain String NL : Intention : set of strings that cam be entered References : UsedBy : Comment : Hier stellt sich wieder die Frage, wo kann überhaupt etwas eingegeben werden? DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function currentCalenderTime () --> CalenderTime NL : current calender time Intention : This function represents the current calender time, i.e. the current day, month, and year. Scope : eh References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Kann man auf so eine Größe zugreifen? Sie wird ja offensichtlich benötigt. Deshalb ist sie zunächst als eh eingestuft. CustomerReas : Ergänzung zur PD CustomerResp : %------------------------------------------------------------------------------ Timed Predicate daytime NL : =1: daytime =0: nighttime Intention : true iff it is daytime Scope : eh References : PD/NFH4 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie kann die Maschine das feststellen? In PD/NFH4 ist von daytime und nighttime die Rede. Es wird davon ausgegangen, daß der eine Zustand genau dann vorliegt, wenn der andere nicht vorliegt, es also keine weiteren Zustände mehr gibt und daß immer genau einer vorliegt. Ist diese Annahme korrekt? CustomerReas : CustomerResp : %============================================================================== %============================================================================== % DIGITAL SENSOR %============================================================================== %============================================================================== Description Class DigitalSensor Intention: Class providing all entities and properties to describe a digital sensor. Comment: Since it is a general class, no explicit references are given here. Comment: Mit dieser Klasse wird die Bemerkung von Stefan Q. berücksichtigt, daß wir die Sensoren nicht berücksichtigt hätten. %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Signature %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Timed Predicate envEntity NL : Intention : value of the entity of the environment that is measured Scope : eh References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Predicate sensedEntity NL : Intention : measured value of the entity of the environment Scope : ev References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Constant reactionTime NL : Intention : reaction time of the sensor, i.e. the time between a change of the value of envEntity and a change of sensedEntity Scope : eh References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das die korrekte Erläuterung der Reaktionszeit bei digitalen Sensoren? CustomerReas : Entwickler kennt sich nicht aus. CustomerResp : %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ DomKnow %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Property Formal : []( envEntity <==>_reactionTime sensedEntity ) NL : References : PatternInst : DelayEquivalence Comment : Hier fehlt noch die NL! DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %============================================================================== %============================================================================== % ANALOG SENSOR %============================================================================== %============================================================================== Description Class AnalogSensor(Domain MEASURED_DOMAIN) Intention: Class providing all entities and properties to describe an analog sensor. Comment: Since it is a general class, no explicit references are given here. Comment: Mit dieser Klasse wird die Bemerkung von Stefan Q. berücksichtigt, daß wir die Sensoren nicht berücksichtigt hätten. Zur Zeit haben wir keine Werteparameter bei Klassenbeschreibungen, daher müssen die Werte für die Zeiten bei der Aggregation eines Objektes dieser Klasse noch explizit als Eigenschaft angegeben werden, aber das dürfte kein Problem sein. %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Signature %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Timed Function envEntity () --> MEASURED_DOMAIN NL : Intention : value of the entity of the environment that is measured Scope : eh References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function sensedEntity () --> MEASURED_DOMAIN NL : Intention : measured value of the entity of the environment Scope : eh References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function convertedDigitalEntity () --> MEASURED_DOMAIN NL : Intention : value of sensedEntity but converted to a digital value Scope : ev References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Constant reactionTime NL : Intention : reaction time of the sensor, i.e. the time between a change of the value of envEntity and the time point sensedEntity has reached 90 percent of the difference. Scope : eh References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das die korrekte Erläuterung der Reaktionszeit bei analogen Sensoren? CustomerReas : Entwickler kennt sich nicht aus. CustomerResp : %------------------------------------------------------------------------------ Timed Constant conversionTime NL : Intention : time needed to convert the analog value sensedEntity to the digital value convertedDigitalEntity Scope : References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function modifyReaction ( MEASURED_DOMAIN ) --> MEASURED_DOMAIN NL : Intention : Function representing the way in which the value envEntity is modified during the reaction of the sensor. Scope : References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das eine Timed Function oder eine Function? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function modifyConversion ( MEASURED_DOMAIN ) --> MEASURED_DOMAIN NL : Intention : Function representing the way in which the value sensedEntity is modified during the conversion into a digital value. Scope : References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das eine Timed Function oder eine Function? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ DomKnow %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Property Formal : []( envEntity \cp_reactionTime^modifyReaction sensedEntity ) NL : References : PatternInst : DelayCopy Comment : Hier fehlt noch die NL. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property Formal : []( sensedEntity \cp_conversionTime^modifyReaction convertedDigitalEntity ) NL : References : PatternInst : DelayCopy Comment : Hier fehlt noch die NL. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %============================================================================== %============================================================================== % DIGITAL ACTUATOR %============================================================================== %============================================================================== Description Class DigitalActuator Intention: Class providing all entities and properties to describe a digital actuator. Comment: Since it is a general class, no explicit references are given here. Comment: Mit dieser Klasse wird die Bemerkung von Stefan Q. berücksichtigt, daß wir die Sensoren nicht berücksichtigt hätten. %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Signature %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Timed Predicate envEntity NL : Intention : value of the entity of the environment that is adjusted Scope : eh References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Predicate adjustedEntity NL : Intention : value that should be adjusted for the entity of the environment Scope : mv References : UsedBy : Comment : Bessere Formulierung der Intention wünschenswert. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Constant reactionTime NL : Intention : reaction time of the actuator, i.e. the time between a change of the value of adjustedEntity and the time point envEntity changes its value. Scope : eh References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das die korrekte Erläuterung der Reaktionszeit bei digitalen Aktuatoren? CustomerReas : Entwickler kennt sich nicht aus. CustomerResp : %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ DomKnow %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Property Formal : []( adjustedEntity <==>_reactionTime envEntity ) NL : References : PatternInst : DelayEquivalence Comment : Hier fehlt noch die NL. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %============================================================================== %============================================================================== % ANALOG ACTUATOR %============================================================================== %============================================================================== Description Class AnalogActuator(Domain ADJUSTED_DOMAIN) Intention: Class providing all entities and properties to describe an analog actuator. Comment: Since it is a general class, no explicit references are given here. Comment: Mit dieser Klasse wird die Bemerkung von Stefan Q. berücksichtigt, daß wir die Sensoren nicht berücksichtigt hätten. %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Signature %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Timed Function envEntity () --> ADJUSTED_DOMAIN NL : Intention : value of the entity of the environment that is adjusted Scope : eh References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function adjustedEntity () --> ADJUSTED_DOMAIN NL : Intention : value that should be adjusted for the entity of the environment Scope : mv References : UsedBy : Comment : Bessere Formulierung der Intention wünschenswert. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Constant reactionTime NL : Intention : reaction time of the actuator, i.e. the time between a change of the value of adjustedEntity and the time point envEntity changes its value. Scope : eh References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das die korrekte Erläuterung der Reaktionszeit bei digitalen Aktuatoren? CustomerReas : Entwickler kennt sich nicht aus. CustomerResp : %------------------------------------------------------------------------------ Timed Function modifyReaction ( ADJUSTED_DOMAIN ) --> ADJUSTED_DOMAIN NL : Intention : Function representing the way in which the value adjustedEntity is modified during the reaction of the actuator. Scope : References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das eine Timed Function oder eine Function? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ DomKnow %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Property Formal : []( adjustedEntity \cp_reactionTime^modifyReaction envEntity ) NL : References : PatternInst : DelayCopy Comment : Hier fehlt noch die NL. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %============================================================================== %============================================================================== % THREE POINT ACTUATOR %============================================================================== %============================================================================== Description Class ThreePointActuator(Domain ADJUSTED_DOMAIN) Intention: Class providing all entities and properties to describe an three point actuator. Comment: Since it is a general class, no explicit references are given here. Comment: Mit dieser Klasse wird die Bemerkung von Stefan Q. berücksichtigt, daß wir die Sensoren nicht berücksichtigt hätten. Comment: Muß noch erstellt werden. %============================================================================== %============================================================================== % ENTERED AND CHECKED VALUE %============================================================================== %============================================================================== Description Class EnteredAndTransferValue(Domain enteredDom, Domain transferedDom) Intention: Class providing all entities and properties to describe the transference of an entered value. The first parameter is the domain of the value that can be entered and the second parameter is the domain of the value that is transfered to the machine. %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Signature %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Timed Function enteredValue () --> enteredDom NL : entered value Intention : This function represents the last value entered by a user. Scope : ev References : PD/UH6, FMH3 UsedBy : Comment : Es muß sichergestellt sein, daß die Größe für die Maschine sichtbar ist. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function transferedValue () --> transferedDom NL : transfered value Intention : This function represents the value decided by the machine to use. Scope : mh References : PD/UH6, FMH3 UsedBy : Comment : Diese Größe wird vom Kunden erwähnt. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function nearestValue : ( enteredDom ) --> transferedDom NL : Intention : This function returns the value which is the "nearest" one in the domain transferedDom w.r.t. the first argument. Scope : sh References : PD/FMH3 UsedBy : Comment : Diese Größe wird explizit vom Kunden erwähnt. Beachte, daß die angegebenen Bereiche sich verändern können, deshalb ist dies eine Timed Function und keine Function. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function transTime : () --> Time NL : time for transference Intention : Time needed to check and transfer a value entered by a user to the value transfered to the machine. Scope : eh References : UsedBy : Comment : Als Zeitfunktion und nicht als Zeitkonstante eingeführt, damit die Sache generischer ist. Die Zeiten für alle Eingabegrößen kann wohl vereinheitlicht werden. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Welche Zeit ist hier angemessen? CustomerReas : Ergänzung zur PD CustomerResp : %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ ReqSpec %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Property P1 Formal : []( enteredValue \cp_transTime^nearestValue transferedValue ) NL : The transfered value is equal w.r.t. to the entered value w.r.t. the function nearestValue and the time delay transTime. References : PatternInst : Comment : Hier brauchen wir wohl noch eine bessere und verständlichere Übersetzung. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie lange behält dieser Wert seine Gültigkeit? Durch welche Ereignisse kann er zurückgesetzt werden, z.B. wenn der Raum "lange" genug leer war? CustomerReas : Unklarheit in der PD CustomerResp : %============================================================================== %============================================================================== % INTERVAL %============================================================================== %============================================================================== Description Class Interval(Domain intDom) Intention: Class providing all entities and properties to describe an interval of values that can be entered by the user. The parameter is the domain the interval is a part of. %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Signature %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Object start : EnteredAndTransferValue( String, intDom ) Intention : starting point of the interval Scope : eh References : PD/FMH4 UsedBy : Comment : eingeführt, um die Darstellung übersichtlicher und kompakter zu machen DeveloperReq : Welchen Scope hat dieses Objekt? DeveloperReas: DeveloperResp: CustomerReq : Wie wird dieser Wert dem System bekannt gemacht? Daher ist dieser Wert noch als eh eingestuft. CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Object end : EnteredAndTransferValue( String, intDom ) Intention : end point of the interval Scope : eh References : PD/FMH4 UsedBy : Comment : eingeführt, um die Darstellung übersichtlicher und kompakter zu machen DeveloperReq : Welchen Scope hat dieses Objekt? DeveloperReas: DeveloperResp: CustomerReq : Wie wird dieser Wert dem System bekannt gemacht? Daher ist dieser Wert noch als eh eingestuft. CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Predicate smaller: intDom, intDom NL : $1 is smaller than $2 Intention : Is true if the first argument is "smaller" than second argument. Scope : sh References : UsedBy : Comment : eingeführt, um die Darstellung übersichtlicher und kompakter zu machen DeveloperReq : Ist dies sh? Wenn ja, muß es ausdrücklich vom Kunden gewünscht sein. Oder gehen wir schon zu sehr in die Tiefe? Siehe auch Properties P1 und P2. DeveloperReas: sh-Größe DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ ReqSpec %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Property P1 Formal : [](smaller( start, end ) \/ (start = end) ) NL : The starting point of the interval is always smaller than the end point of the interval or both values are equal. References : PatternInst : Comment : eingeführt, um die Darstellung übersichtlicher und kompakter zu machen DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das eine zulässige Ergänzung? CustomerReas : Ergänzung zur PD CustomerResp : %------------------------------------------------------------------------------ %============================================================================== %============================================================================== % CALENDER INTERVAL %============================================================================== %============================================================================== Description Class CalenderInterval derived from Interval(Domain CalenderTime) Intention: Class providing all entities and properties to describe an interval of calender times. Additionally a timed predicate indicates whether the current date is in this interval or not. Comment: Diese Klasse wird eingeführt, um die Beschreibungen übersichtlicher und kompakter gestalten zu können. %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Signature %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Timed Predicate actual NL : =1 : in calender interval =0 : not in calender interval Intention : indicates whether the current date is in the calender interval given by the start and end value of the inherited interval. Scope : sh References : PD/Par3, PD/FMH4 UsedBy : Comment : Solche Größen werden vom Kunden erwähnt. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Was für Auswirkungen hat der jeweilige Zustand? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ ReqSpec %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Property P1 Formal : [](actual <--> smaller( start, currentCalenderTime) /\ smaller( currentCalenderTime, end)) NL : actual is true if and only if the starting point of the calender interval is smaller than the current calender time and the current calender time is smaller than the end point of the calender interval. References : PatternInst : Comment : DeveloperReq : Ist das die intendierte Definition? DeveloperReas: Ergänzung zur PD DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %============================================================================== %============================================================================== % DOOR %============================================================================== %============================================================================== Description Class Door CustomerReq: In der BD wird im Fließtext stets gesagt (bei Rooms and Hallway), daß eine Tür nur einen closed contact enthalt. Bei der Beschreibung der Sensoren tauchen aber noch weitere Tür-Sensoren auf. Vermutlich gehören die auch noch dazu, oder? CustomerReq: Sind die Türen der Räume und des Flures gleich ausgestattet? Comment: Mit dieser Klasse wird die Bemerkung von Stefan Q. berücksichtigt, daß wir die Türen nicht berücksichtigt hätten. %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Signature %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Object doorClosedContact : DigitalSensor NL : Intention : representing the closed contact of a door. It is true iff if the door is completely closed. Scope : eh References : BD/Sensors UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Object doorOpenContact : DigitalSensor NL : Intention : representing the open contact of a door. It is true iff if the door is open for at least 30 degree. Scope : eh References : BD/Sensors UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Object doorLockContact : DigitalSensor NL : Intention : representing the lock contact of a door. It is true iff if the door is locked by a key. Scope : eh References : BD/Sensors UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ DomKnow %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Property Formal : []( doorClosedContact.reactionTime = 10 ) NL : The reaction time of a door closed contact is always 10 ms. References : BD/Sensors PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property Formal : []( doorOpenContact.reactionTime = 10 ) NL : The reaction time of a door open contact is always 10 ms. References : BD/Sensors PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property Formal : []( doorLockContact.reactionTime = 10 ) NL : The reaction time of a door lock contact is always 10 ms. References : BD/Sensors PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %============================================================================== %============================================================================== % FM ROOM TEMPERATURE SETTINGS %============================================================================== %============================================================================== Description Class FMRoomTemperatureSettings %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Signature %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Timed Function DT1Default () --> DT1Range NL : default value of time DT1 Intention : Default value of time DT1 set by the facility manager. Scope : eh References : PD/Par7 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie wird dieser Wert dem System bekannt gemacht? Wie kann der Facility Manager den Wert eingeben? Kann er den Wert ändern oder ist er konstant? Daher ist dieser Wert noch als eh eingestuft. CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Timed Function DT2Default () --> DT2Range NL : default value of time DT2 Intention : Default value of time DT2 set by the facility manager. Scope : eh References : PD/Par7 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie wird dieser Wert dem System bekannt gemacht? Wie kann der Facility Manager den Wert eingeben? Kann er den Wert ändern oder ist er konstant? Daher ist dieser Wert noch als eh eingestuft. CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Timed Function DT3Default () --> DT3Range NL : default value of time DT3 Intention : Default value of time DT3 set by the facility manager. Scope : eh References : PD/Par7 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie wird dieser Wert dem System bekannt gemacht? Wie kann der Facility Manager den Wert eingeben? Kann er den Wert ändern oder ist er konstant? Daher ist dieser Wert noch als eh eingestuft. CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Timed Function comfortTempDefault () --> ComfortTempRange NL : default value of comfort temperature Intention : Default value of comfort temperature set by the facility manager. Scope : eh References : PD/FMH3 UsedBy : Comment : Dieser Wert kann unterschiedlich für jeden Typ von Raum sein. Dies kann evtl. über Vererbung bzw. Aggregation ausgedrückt werden. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie wird dieser Wert dem System bekannt gemacht? Wie kann der Facility Manager den Wert eingeben? Kann er den Wert ändern oder ist er konstant? Daher ist dieser Wert noch als eh eingestuft. CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function workingTimeDefault () --> WorkingTimeRange NL : default value of working time Intention : Default value of working time set by the facility manager. Scope : eh References : PD/FMH3, PD/UH4 UsedBy : Comment : Dieser Wert kann unterschiedlich für jeden Typ von Raum sein. Dies kann evtl. über Vererbung bzw. Aggregation ausgedrückt werden. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie wird dieser Wert dem System bekannt gemacht? Wie kann der Facility Manager den Wert eingeben? Kann er den Wert ändern oder ist er konstant? Daher ist dieser Wert noch als eh eingestuft. CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function holidayTimeDefault () --> HolidayTimeRange NL : default value of holiday time Intention : Default value of holiday time set by the facility manager. Scope : eh References : PD/FMH3, PD/UH5 UsedBy : Comment : Dieser Wert kann unterschiedlich für jeden Typ von Raum sein. Dies kann evtl. über Vererbung bzw. Aggregation ausgedrückt werden. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie wird dieser Wert dem System bekannt gemacht? Wie kann der Facility Manager den Wert eingeben? Kann er den Wert ändern oder ist er konstant? Daher ist dieser Wert noch als eh eingestuft. CustomerReas : CustomerResp : %------------------------------------------------------------------------------ CustomerReq : Sind alle möglichen Werte, die der FM und der Benutzer angeben können erfaßt? %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ ReqSpec %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Property D1 Formal : DT1Default = 1 NL : The initial default value of time DT1 is 1 minute. References : PD/Par7 PatternInst : Comment : Beachte, daß hiermit nur ein Startwert festgelegt wird! DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das der korrekte Wert, siehe das Beispiel in der PD! CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property D2 Formal : DT2Default = 10 NL : The default value of time DT2 is 10 minutes. References : PD/Par7 PatternInst : Comment : Beachte, daß hiermit nur ein Startwert festgelegt wird! DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das der korrekte Wert, siehe das Beispiel in der PD! CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property D3 Formal : DT3Default = 30 NL : The default value of time DT3 is 30 minutes. References : PD/Par7 PatternInst : Comment : Beachte, daß hiermit nur ein Startwert festgelegt wird! DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das der korrekte Wert, siehe das Beispiel in der PD! CustomerReas : CustomerResp : %============================================================================== %============================================================================== % FM ROOM SETTINGS %============================================================================== %============================================================================== Description Class FMRoomSettings %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Signature %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Object OfficeTempSetting : FMRoomTemperatureSettings Intention : Settings of the temperature relevant entities for all offices. Object CompLabTempSetting : FMRoomTemperatureSettings Intention : Settings of the temperature relevant entities for all computer labs. Object PeriRoomTempSetting : FMRoomTemperatureSettings Intention : Settings of the temperature relevant entities for all peripheral rooms. Object MeetRoomTempSetting : FMRoomTemperatureSettings Intention : Settings of the temperature relevant entities for all meating rooms. %============================================================================== %============================================================================== % FACILITY MANAGER %============================================================================== %============================================================================== Description Class FacilityManager derived from FMRoomSettings %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Signature %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Object heatingPeriod : CalenderInterval Intention : representing the information of the heating period, i.e. start and end point and whether the actual date is within the heating period. Scope : eh References : PD/FMH4 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie werden die Werte dem System bekannt gemacht? Wie kann der Facility Manager sie eingeben? Kann er die Werte ändern? Daher ist dieses Objekt noch als eh eingestuft. CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Object nonHeatingPeriod : CalenderInterval Intention : representing the information of the non heating period, i.e. start and end point and whether the actual date is within the non heating period. Scope : eh References : PD/FMH4 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie werden die Werte dem System bekannt gemacht? Wie kann der Facility Manager sie eingeben? Kann er die Werte ändern? Daher ist dieses Objekt noch als eh eingestuft. CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Object buildingNonFreezePeriod : CalenderInterval Intention : representing the information of the period within which the non freeze mode is set for the whole building. Scope : eh References : PD/FMH5 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : In PD/FMH5 wird der Plural verwendet. Ist es wirklich gewünscht, daß mehrere solche Intervalle eingegeben werden können. Wenn ja, wieviele kann es denn maximal geben, oder unbegrenzt? Wie kann der Facility Manager die Werte eingeben? Daher ist dieses Objekt noch als eh eingestuft. CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Object nonFreezeTemperature : EnteredAndTransferValue( String, TempRange ) NL : non freeze temperature Intention : temperature set by the facility manager that should be applied if the non freeze auto operating mode is active. Scope : eh References : UsedBy : Comment : Wie wird dieser Wert eingegeben. Daher noch eh als scope. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist diese Temperatur variabel oder eine Konstante (in PD/FMH5 steht "preselected"). Wenn es mehrere Intervalle gitb, kann dann für jedes Intervall ein solcher Wert angegeben werden? Kann es für einzelne Räume andere Einstellungen dieses Wertes geben, bisher gehen wir davon aus, daß es einen für alle Räume gibt. CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Timed Predicate adaptiveDelayTimes NL : =1 : delay times are adapted =0 : delay times are not adapted Intention : indicates whether the facility manager has decided that the delay times for detecting occupancy have to be adapted by learning the typical user behavior or not. Scope : eh References : PD/FMH6 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie kann der FM diesen Wert einstellen? Deshalb ist er noch als eh gekennzeichnet. Kann der FM dies nur für alle Räume einheitlich vorgeben oder für jeden Raum getrennt. Zur Zeit wird von der ersten Variante ausgegangen. CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Timed Constant : informDelay NL : information delay Intention : delay between an the time an event occurs about the facility manager should be informed and the time the facility manager is informed. Scope : eh References : PD/FMH8 UsedBy : Comment : neu eingeführt DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wieviel Zeit darf verstreichen? CustomerReas : Ergänzung zur PD CustomerResp : %------------------------------------------------------------------------------ Timed Predicate unreasonableBehavior NL : unreasonable behavior Intention : is true if there is a repeated unreasonable user behavior Scope : eh References : PD/FMH8 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Was heißt das? Wie kann man das feststellen? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Timed Predicate fmInformed NL : facility manager is informed Intention : facility manager is informed Scope : eh References : PD/FMH8 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Was heißt das? Wie kann man dafür sorgen? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ ReqSpec %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Property P1 NonFormal : Important informations should be send to the facility manager. The facility manager is supported by the system in checking the reason before he goes to the location or take other actions. References : PD/FMH7 Comment : Fragen über Fragen! DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Was sind "important informations"? Wie sollen sie verschickt werden? Per Hauspost? Per Rauchsignale? Wobei soll der FM unterstützt werden? Gründe von was??? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property P2 Formal : []( unreasonableBehavior ==>_informDelay fmInformed ) NL : The facility manager is informed about repeated unreasonable user behaviour, which contradicts aspects of energy saving. References : PD/FMH8 PatternInst : delImp( unreasonableBehavior, fmInformed, informDelay) Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Auf welche Art und Weise wird der FM informiert? Kann die Vorbedingung noch genauer spezifiziert werden, d.h. was ist unvernünftig, wie oft muß dies vorgefallen sein (was heißt also "repeated)? Soll das nach Benutzern oder Räumen unterschieden werden? Wenn ja, wie können verschiedene Benutzer erkannt werden? Wie lange soll der FM informiert bleiben? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property P3 NonFormal : The control system provides basic energy saving procedures automatically for control comfort. If the facility manager deviates from such settings, the system provides a report on expected results. References : PD/FMH9 Comment : Nix kapiert. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Was ist hiermit gemeint? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property P4 NonFormal : The system warns against unreasonable inputs (input consistency). References : PD/FMH10 Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Auf welche Weise kann/soll die Maschine Warnungen veranlassen? Die unvernünftigen Eingaben werden doch bereits alle abgefangen und entsprechend korrigiert (siehe PD/FMH3). Bedeutet dies, daß in einem Korrekturfalle eine Warnungen gegeben werden soll? Bezieht sich das nur auf die Temperatursteuerung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property P5 NonFormal : The system provides reports on current and past energy consumption (cost reporting). References : PD/FMH11 Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Auf welche Art und Weise sollen die Berichet zur Verfügung gestellt werden? Was soll hier alles genau rein? Hier brauchen wir den Domänenexperten. Bezieht sich das nur auf die Temperatursteuerung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property P6 NonFormal : All malfunctions, alarms and unusual conditions are stored and reported on request. References : PD/FMH12 Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Was sind "malfunctions, alarms and unusual conditions"? Wie kann die Maschine sie feststellen? Wo werden sie gespeichert? Auf welche Art und Weise kann ein request erfolgen? Wo erfolgt dann die Ausgabe? Bezieht sich das nur auf die Temperatursteuerung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property P7 NonFormal : Malfunction of components that the system cannot detect, can be entered manually. References : PD/FMH13 Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Um welche malfunctions geht es konkret hier? Welche "components" werden betrachtet, Sensoren, Aktuatoren, Leitungen, User, ...? Was sind die gewünschten Reaktionen? Wie können die Fehlfunktionen wieder zurückgesetzt werden? Bezieht sich das nur auf die Temperatursteuerung? CustomerReas : Unklarheit in der PD CustomerResp : %============================================================================== %============================================================================== % ROOM TEMPERATURE %============================================================================== %============================================================================== Description Class RoomTemperature %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Signature %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Object DT1 : EnteredAndTransferValue( Time, DT1Range ) Intention : One of three times used for defining whether a room is said to be occupied or not. (see property D4) Scope : eh References : PD/Par7 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Auf welche Art und Weise wird dieser Wert eingegeben, d.h. über welchen "Sensor" kann die Maschine hierauf zugreifen? Wie kann der Benutzer diesen Wert verändern? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Object DT2 : EnteredAndTransferValue( Time, DT2Range ) Intention : One of three times used for defining whether a room is said to be occupied or not. (see property D4) Scope : eh References : PD/Par7 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Auf welche Art und Weise wird dieser Wert eingegeben, d.h. über welchen "Sensor" kann die Maschine hierauf zugreifen? Wie kann der Benutzer diesen Wert verändern? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Object DT3 : EnteredAndTransferValue( Time, DT3Range ) Intention : One of three times used for defining whether a room is said to be occupied or not. (see property D4) Scope : eh References : PD/Par7 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Auf welche Art und Weise wird dieser Wert eingegeben, d.h. über welchen "Sensor" kann die Maschine hierauf zugreifen? Wie kann der Benutzer diesen Wert verändern? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Timed Function appliedDT1 () --> DT1Range NL : applied time DT1 Intention : The current value of DT1 applied to determine occupancy in a room. Note that this need not correspond with the value entered. Scope : sh References : PD/FMH6 UsedBy : Comment : Diese Größe wird explizit vom Kunden erwähnt. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function appliedDT2 () --> DT2Range NL : applied time DT2 Intention : The current value of DT2 applied to determine occupancy in a room. Note that this need not correspond with the value entered. Scope : sh References : PD/FMH6 UsedBy : Comment : Diese Größe wird explizit vom Kunden erwähnt. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function appliedDT3 () --> DT3Range NL : applied time DT3 Intention : The current value of DT3 applied to determine occupancy in a room. Note that this need not correspond with the value entered. Scope : sh References : PD/FMH6 UsedBy : Comment : Diese Größe wird explizit vom Kunden erwähnt. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Object comfortTemperature : EnteredAndTransferValue(TempRange, ComfortTempRange) NL : current value of comfort temperature Intention : The value currently used as comfort temperature. It is either the default value set by the facility manager or a value entered by a user. Scope : eh References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie wird dieser Wert eingegeben und sichtbar gemacht für die Maschine? Daher die Einstufung als eh. CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Object nonFreezePeriod : CalenderInterval Intention : representing the information of the period within which the non freeze mode is set for this room Scope : eh References : PD/FMH5 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : In PD/FMH5 wird der Plural verwendet. Ist es wirklich gewünscht, daß mehrere solche Intervalle eingegeben werden können. Wenn ja, wieviele kann es denn maximal geben, oder unbegrenzt? Wie kann der Facility Manager die Werte eingeben? Daher ist dieses Objekt noch als eh eingestuft. CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Domain OpModes = {off, standby, comfort, nonFreeze} NL : set of possible operating modes off = off time standby = standby time comfort = comfort time nonFreeze = non freeze auto Intention : set of possible operating modes References : PD/Par4 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Sind diese modes nur für Räume relevant? Müssen die Flure nicht auch entsprechend warm gehalten werden, oder ergibt sich dies aus den geforderten Eigenschaften für die Räume? Sind diese modes nur für die Temperatursteuerung relevant? Werden die Anforderungen, die an nonFreeze gestellt werden, nicht bereits in den anderen Zuständen realisiert, d.h. was ist der entscheidende Unterschied zwischen nonFreeze und off? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Timed Function opMode () --> OpModes NL : current operating mode Intention : the current operating mode of a room Scope : eh References : PD/Par4 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Predicate occExpected NL : =1 occupancy expected =0 no occupancy expected Intention : Indicates whether occupancy of a room is expected or not Scope : eh References : PD/Par4 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Predicate roomOccupied NL : =1 room occupied =0 room not occupied Intention : Indicates whether a room is said to be occupied or not. Note that this predicate does not describe whether a person is in a room or not. See Timed Predicate roomEmpty. Scope : eh References : PD/Par4, PD/Par7 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Predicate roomEmpty NL : =1 a person is in the room =0 no person is in the room Intention : Indicates whether a person is in a room or not. See TimedPredicate roomOccupied. Scope : eh References : PD/Par7 UsedBy : Comment : This predicate is intended to represent the entity "OCC" used in the first figure in the PD. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function desiredTemperature () --> TempRange NL : desired temperature Intention : temperature that should currently be established in the room Scope : sh References : PD/FMH5 UsedBy : Comment : Diese Größe wird explizit vom Kunden erwähnt. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Constant : timeSmall NL : immediately Intention : small time delay between an event and an appropriate reaction Scope : eh References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Welche Wert darf diese Konstante annehmen? DeveloperReas: Ergänzung zur PD CustomerResp : %------------------------------------------------------------------------------ Timed Predicate malfunctionAllTempSens NL : all temperature sensors of a room doe not work correctly Intention : is true iff all temperature sensors of a room does not work correctly. Scope : eh References : PD/NFH3 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie kann das festgestellt werden? Deshalb: eh. Wie kann dieses Prädikat wieder zurückgesetzt werden? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Constant : malDelay NL : Intention : maximal delay to an appropriate reaction in the case of a malfunction of all temperature sensors of a room Scope : eh References : PD/NFH3 UsedBy : Comment : Ergänzung zur angegebenen Referenz DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Domain ValvePosRange NL : Intention : Set of possible positions of a radiator valve References : PD/NFH3 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function valvePos () --> ValvePosRange NL : Intention : current position of the radiator valve Scope : References : PD/NFH3 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Muß man bei der Ansteuerung der Radiatoren unterscheiden oder werden sie immer gleich eingestellt, was ist sinnvol? (Frage an den Domänenexperten) CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function malValPos ( TempRange, ValvePosRange ) --> ValvePosRange NL : Intention : In the case of a malfunction of the temperature sensors this function computes the position of the valves. Scope : mh References : PD/NFH3 UsedBy : Comment : Diese Größe wird vom Kunden erwähnt. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Bisher wird nur die Einstellung von einem Nachbarraum betrachtet, weil noch nicht klar ist, welche Nachbarräume betrachtet werden sollen. Insbesondere gibt es in den Räumen ja mehrere Heizungen. Welche davon ist relevant, oder haben sie immer dieselbe Einstellung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Timed Function outTemp () --> TempRange NL : Intention : value delivered by the outdoor temperature sensor Scope : ev References : PD/NFH3 UsedBy : Comment : Es gibt sicherlich noch weitere Referenzen. DeveloperReq : Gibt es nur einen Temperatursensor für draußen? DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function setNeighRooms () --> ValvePosRange NL : Intention : Current setting of a radiator valve in a neighbour room. Scope : mh References : PD/NFH3 UsedBy : Comment : Diese Größe wird vom Kunden erwähnt. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Bisher nur eine betrachtet, weil nicht klar ist, wieviele relevant sind. CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Predicate malMotDet NL : Intention : true iff the motion detector does not work correctly Scope : eh References : UsedBy : Comment : eh, weil noch nicht klar ist, wie dies festgestellt werden soll. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : In PD/NFH4 ist die Rede von "serious malfunction". Gibt es eine graduelle Abstufung zwischen dem Fehlverhalten eines Sensors. Wenn ja, welche Auswirkungen hat das? Ebenso ist dort von mehreren Detektoren die Rede, sichtbar ist aber doch nur einer, oder? Bezieht sich PD/NFH4 nur auf Räume oder auch auf den Flur? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Function occUsed NL : Intention : represents the value used by the machine concerning occupancy Scope : mh References : PD/NFH4 UsedBy : Comment : Ist vom Kunden eingeführt worden. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Predicate manualEnteredOcc NL : Intention : value concerning occupancy entered by a user Scope : eh References : PD/NFH4 UsedBy : Comment : eh, da noch nicht klar ist, wie die Eingabe erfolgen soll. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wann kann diese Eingabe erfolgen? In PD/NFH4 steht, daß das nur im Fehlerfalle der Bewegungsmelder erfolgen kann. Wie kann die Eingabe erfolgen? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Predicate stateManualEnteredOcc NL : Intention : true iff occupancy has been entered manually Scope : mh References : PD/NFH4 UsedBy : Comment : Ist vom Kunden eingeführt worden. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie lange bleibt eine solche Eingabe denn gültig? Kann sie erst im Fehlerfall gemacht werden und wird nach Beendigung des Fehlerfalls wieder auf false gesetzt? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Function () --> DefaultOccDaytime NL : Intention : default value for occupancy in case of a malfunction of the motion detectors during daytime Scope : mh References : PD/NFH4 UsedBy : Comment : Ist vom Kunden eingführt wurden. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Kann diese Größe geändert werden? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Function () --> DefaultOccNighttime NL : Intention : default value for occupancy in case of a malfunction of the motion detectors during nighttime Scope : mh References : PD/NFH4 UsedBy : Comment : Ist vom Kunden eingführt wurden. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Kann diese Größe geändert werden? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Timed Predicate occMal NL : Intention : indicates the status of occupancy in the case of a malfunction of the motion detectors Scope : mh References : UsedBy : Comment : Der Übersichtlichkeit halber eingeführt, sollte bei einer NLPS nicht berücksichtigt werden. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ ReqSpec %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Initialization %------------------------------------------------------------------------------ Property I1 Formal : DT1.enteredValue = \undef NL : References : PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie sieht der Initialwert aus? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property I2 Formal : DT2.enteredValue = \undef NL : References : PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie sieht der Initialwert aus? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property I3 Formal : DT3.enteredValue = \undef NL : References : PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Wie sieht der Initialwert aus? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Enf of Initialization %------------------------------------------------------------------------------ Property 41 Formal : []( appliedDT1 = DT1.transferedValue ) NL : References : PatternInst : Comment : Diese Anforderung ist nur aus Sicht dieser Klasse aufgestellt. Wird die Möglichkeit berücksichtigt, daß der Wert adaptiv ermittelt werden kann, kommt es hier zu Konflikten, die geeignet aufgelöst werden sollten. Dies könnte zu einer expliziten Änderung dieser Anforderung führen, sollte aber wohl besser im Rahmen einer Konfliktlösung an einer anderen Stelle erfolgen. (-> Kompositionsoperator) DeveloperReq : Ist das die gewünschte Einstellung, wenn man sich nicht im adaptiven Mode von PD/FMH6 befindet.? Es wird nämlich nichts darüber gesagt, welchen Wert DT1 haben soll, falls sich die Maschine nicht im adaptiven Modus befindet. DeveloperReas: Ergänzung zur PD DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property 42 Formal : []( appliedDT2 = DT2.transferedValue ) NL : References : PatternInst : Comment : Diese Anforderung ist nur aus Sicht dieser Klasse aufgestellt. Wird die Möglichkeit berücksichtigt, daß der Wert adaptiv ermittelt werden kann, kommt es hier zu Konflikten, die geeignet aufgelöst werden sollten. Dies könnte zu einer expliziten Änderung dieser Anforderung führen, sollte aber wohl besser im Rahmen einer Konfliktlösung an einer anderen Stelle erfolgen. DeveloperReq : Ist das die gewünschte Einstellung, wenn man sich nicht im adaptiven Mode von PD/FMH6 befindet.? Es wird nämlich nichts darüber gesagt, welchen Wert DT2 haben soll, falls sich die Maschine nicht im adaptiven Modus befindet. DeveloperReas: Ergänzung zur PD DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property 43 Formal : []( appliedDT3 = DT3.transferedValue ) NL : References : PatternInst : Comment : Diese Anforderung ist nur aus Sicht dieser Klasse aufgestellt. Wird die Möglichkeit berücksichtigt, daß der Wert adaptiv ermittelt werden kann, kommt es hier zu Konflikten, die geeignet aufgelöst werden sollten. Dies könnte zu einer expliziten Änderung dieser Anforderung führen, sollte aber wohl besser im Rahmen einer Konfliktlösung an einer anderen Stelle erfolgen. DeveloperReq : Ist das die gewünschte Einstellung, wenn man sich nicht im adaptiven Mode von PD/FMH6 befindet.? Es wird nämlich nichts darüber gesagt, welchen Wert DT3 haben soll, falls sich die Maschine nicht im adaptiven Modus befindet. DeveloperReas: Ergänzung zur PD DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property P11 Formal : []( nonFreezePeriod.actual --> opMode = nonFreeze ) NL : If the current calender time is within a nonFreezePeriod the operating mode is nonFreeze. References : PD/FMH5 PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property P21 Formal : []( opMode = nonFreeze ==>_timeSmall desiredTemperature = nonFreezeTemperature ) NL : References : PD/FMH5 PatternInst : Comment : Diese Anforderung hat stets Priorität. Siehe P22. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Was passiert, wenn die globale Vorgabe für non freeze auto mode und die Vorgabe für einen Raum nicht übereinstimmen, sowohl was die angegebenen Zeiten anbelangt als auch evtl. die vorgegebenen Werte, falls verschiedene angegeben werden können. CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property P22 NonFormal : Property P21 has always priority, i.e. as long as the non freeze auto operating mode is valid, the value of the desired temperature can not be changed. References : PD/FMH5 Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Kann der FM denn innerhalb dieser Zeit den Wert von nonFreezeTemperature ändern? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property P1 Formal : [](!occExpected /\ !roomOccupied --> opMode = off) NL : If no occupancy is expected and the room is not occupied then the operating mode is off time. References : PD/Par4 PatternInst : Comment : DeveloperReq : Ist das Domänenwissen oder eine Anforderung? DeveloperReas: DeveloperResp: CustomerReq : Was passiert wenn !roomOccupied und !occExpected gilt? Hier wurde entschieden, daß dann roomOccupied Priorität hat. CustomerReas : DomKnow-Inconsistence CustomerResp : %------------------------------------------------------------------------------ Property P2 Formal : [](occExpected /\ !roomOccupied --> opMode = standby) NL : If occupancy is expected and the room is not occupied then the operating mode is standby time. References : PD/Par4 PatternInst : Comment : DeveloperReq : Ist das Domänenwissen oder eine Anforderung? DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property P3 Formal : [](roomOccupied --> opMode = comfort) NL : If the room is occupied the operating mode is comfort time. References : PD/Par4 PatternInst : Comment : DeveloperReq : Ist das Domänenwissen oder eine Anforderung? DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property P4 Formal : []( roomOccupied <--> [-]_<=DT1 !roomEmpty \/ <*[[-]_<=DT1+DT2 !roomEmpty] ==>> [-]<->_<=DT3 !roomEmpty) NL : A room is defined to be occupied if and only if one of the following conditions holds: - during the past DT1 time units a person has continuously been in the room - there has already been a time span of length DT1+DT2 such that a person has continuously been in the room, and since this has been the case for the last time, periods where the room has continuously been empty were not longer than or equal to DT3. References : PatternInst : LazyReaction( roomOccupied, !roomEmpty, DT1, DT2, DT3 ) Comment : DeveloperReq : Ist das Domänenwissen oder eine Anforderung? DeveloperReas: DeveloperResp: CustomerReq : Gilt diese Definition von roomOccupied nur für die Temperatursteuerung oder auch für andere Steuerungen (Licht)? CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property Formal : [](malfunctionAllTempSens ==>_malDelay valvePos = malValPos( outTemp, setOfNeighRooms ) ) NL : Whenever all temperature sensors of a room do not work correctly for at least malDelay time units, then eventually within this time span, the position of the valves is determined depending on the outdoor temperature and the settings of the neighbour rooms. References : PD/NFH3 PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Steht diese Anforderung in Konflikt mit NFH2. Oder fällt diese Situation noch nicht unter "whole control system has a serious malfunction"? Sollte in die Berechnung von malValPos nicht auch der Aspekt "occupancy" berüchsichtigt werden? Welche Nachbarräume sollen mit berücksichtigt werden, auch die weiter entfernten oder die ein Stockwerk drüber oder drunter? CustomerReas : Unklarheit in der PD, Ergänzung zur PD CustomerResp : %------------------------------------------------------------------------------ Property Formal : []( occMal <--> (stateManualEnteredOcc --> manualEnteredOcc ) /\ (!stateManualEnteredOcc --> (daytime --> DefaultOccDaytime) /\ (!daytime --> DefaultOccNighttime))) NL : The malfunction case of the occupancy status is determined as follows: - If a value for occupancy is entered manually, then this value is valid. - If no value for occupancy is entered manually, then it is distinguished between daytime and nighttime: * if it is daytime then the default value for occupancy during daytime is valid * otherwise if it is nightime then the default value for occupancy during nighttime is valid References : PD/NFH4 PatternInst : Comment : Als Muster einführen, wie man eine Größe ausgehend von einer Fallunterscheidung definieren kann. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property Formal : []( malMotDet ==>_malDelay ( occUsed <--> occMal ) ) NL : Whenever there is a malfunction of the motion detector for at least malDelay time units, then eventually within this time span, the status assumed by the machine corresponds with status of the malfunction case and remains so at least as long as there is a malfunction of the motion detector. References : PD/NFH4 PatternInst : DelImp Comment : Die Formulierung ist noch verbesserungswürdig. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %============================================================================== %============================================================================== % ROOM %============================================================================== %============================================================================== Description Class Room derived from RoomTemperature %============================================================================== %============================================================================== % MAIN: FLOOR %============================================================================== %============================================================================== Main Description Class Floor %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Signature %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Object FM : FacilityManager Intention : represents the facility manager Scope : eh References : UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Object o435 : Office NL : office 435 Intention : the office in floor 32/4 with No 435 Scope : eh References : BD/Figure 1 UsedBy : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : % entsprechend für alle Räume aus Figure 1 von InAr: %------------------------------------------------------------------------------ % Object o433, o432, o429, o425, o423, o421, o419, o417, o415, o424 % o416, o414, o412 : Office % % Object m427, cl411, cl426, cl422, cl418, cl411 : NoOffice Domain Rooms = {O435, O433, O432, O429, O425, O423, O421, O419, O417, O415, O424, O416, O414, O412, P413, M427, CL411, CL426, CL422, CL418, CL411} Domain Offices = {O435, O433, O431, O429, O425, O423, O421, O419, O417, O415, O424, O416, O414, O412} Domain MeetingRooms = {M427} Domain ComputerLabs = {CL411, CL426, CL422, CL418, CL411} Domain PeripheralRooms = {P413} %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ ReqSpec %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ %------------------------------------------------------------------------------ Initialization %------------------------------------------------------------------------------ Property I1 Formal : \a o \in Offices : o.DT1 = FM.OfficesTempSetting.DT1Default NL : For all offices the initial value of DT1 is the default value of DT1 set by the facility manager for offices. References : PD/Par7 PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das die gewünschte Initialisierung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property I2 Formal : \a o \in Offices : o.DT2 = FM.OfficesTempSetting.DT2Default NL : For all offices the initial value of DT2 is the default value of DT2 set by the facility manager for offices. References : PD/Par7 PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das die gewünschte Initialisierung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property I3 Formal : \a o \in Offices : o.DT3 = FM.OfficesTempSetting.DT3Default NL : For all offices the initial value of DT3 is the default value of DT3 set by the facility manager for offices. References : PD/Par7 PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das die gewünschte Initialisierung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property I4 Formal : \a o \in MeetingRooms : o.DT1 = FM.MeetRoomTempSetting.DT1Default NL : For all meeting rooms the initial value of DT1 is the default value of DT1 set by the facility manager for meeting rooms. References : PD/Par7 PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das die gewünschte Initialisierung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property I5 Formal : \a o \in MeetingRooms : o.DT2 = FM.MeetRoomTempSetting.DT2Default NL : For all meeting rooms the initial value of DT2 is the default value of DT2 set by the facility manager for meeting rooms. References : PD/Par7 PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das die gewünschte Initialisierung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property I6 Formal : \a o \in MeetingRooms : o.DT3 = FM.MeetRoomTempSetting.DT3Default NL : For all meeting rooms the initial value of DT3 is the default value of DT3 set by the facility manager for meeting rooms. References : PD/Par7 PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das die gewünschte Initialisierung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property I7 Formal : \a o \in ComputerLabs : o.DT1 = FM.CompLabTempSetting.DT1Default NL : For all computer labs the initial value of DT1 is the default value of DT1 set by the facility manager for computer labs. References : PD/Par7 PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das die gewünschte Initialisierung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property I8 Formal : \a o \in ComputerLabs : o.DT2 = FM.CompLabTempSetting.DT2Default NL : For all computer labs the initial value of DT2 is the default value of DT2 set by the facility manager for computer labs. References : PD/Par7 PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das die gewünschte Initialisierung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property I9 Formal : \a o \in ComputerLabs : o.DT3 = FM.CompLabTempSetting.DT3Default NL : For all computer labs the initial value of DT3 is the default value of DT3 set by the facility manager for computer labs. References : PD/Par7 PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Ist das die gewünschte Initialisierung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property I10 Formal : \a o \in PeripheralRooms : o.appliedDT1 = FM.PeriRoomTempSetting.DT1Default NL : For all peripheral rooms the initial value of DT1 is the default value of DT1 set by the facility manager for peripheral rooms. References : PD/Par7 PatternInst : Comment : DeveloperReq : Dies impliziert aufgrund der Anforderungen in RoomTemperature, daß auch der initiale Wert von DT1.transfered entsprechend ist. Sollen wir dies hier auch noch explizit hinschreiben? Ich würde dies vorschlagen, da wir ja auch was zu den initialen Werten aller timed Größen sagen sollten. DeveloperReas: DeveloperResp: CustomerReq : Ist das die gewünschte Initialisierung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property I11 Formal : \a o \in PeripheralRooms : o.appliedDT2 = FM.PeriRoomTempSetting.DT2Default NL : For all peripheral rooms the initial value of DT2 is the default value of DT2 set by the facility manager for peripheral rooms. References : PD/Par7 PatternInst : Comment : DeveloperReq : Dies impliziert aufgrund der Anforderungen in RoomTemperature, daß auch der initiale Wert von DT2.transfered entsprechend ist. Sollen wir dies hier auch noch explizit hinschreiben? Ich würde dies vorschlagen, da wir ja auch was zu den initialen Werten aller timed Größen sagen sollten. DeveloperReas: DeveloperResp: CustomerReq : Ist das die gewünschte Initialisierung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property I12 Formal : \a o \in PeripheralRooms : o.appliedDT3 = FM.PeriRoomTempSetting.DT3Default NL : For all peripheral rooms the initial value of DT3 is the default value of DT3 set by the facility manager for peripheral rooms. References : PD/Par7 PatternInst : Comment : DeveloperReq : Dies impliziert aufgrund der Anforderungen in RoomTemperature, daß auch der initiale Wert von DT3.transfered entsprechend ist. Sollen wir dies hier auch noch explizit hinschreiben? Ich würde dies vorschlagen, da wir ja auch was zu den initialen Werten aller timed Größen sagen sollten. DeveloperReas: DeveloperResp: CustomerReq : Ist das die gewünschte Initialisierung? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Enf of Initialization %------------------------------------------------------------------------------ Property P44 Formal : []( buildingNonFreezePeriod.actual --> \a r \in Rooms r.opMode = nonFreeze ) NL : References : PD/FMH5 PatternInst : Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property P4 Formal : [](adaptiveDelayTimes --> \a r \in Rooms r.appliedDT1 = learnDT1( r ) ) NL : If the facility manager has decided that the delay times have to be learned the current applied value of DT1 is the one returned by the learning function learnDT1. References : PD/Par7, PD/FMH6 PatternInst : Comment : Beachte: diese Anforderung steht im Konflikt mit der Anforderung, die in RoomTemperature gestellt wird. Die Lösung dieses Konfliktes, nämlich daß die Lernerei Priorität hat, muß noch geeignet dokumentiert werden. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Kann man von einer gemeinsamen Lernfunktion für alle Räume ausgehen? Was sind die Parameter, von denen die Lernfunktion abhängen soll? Sind die Beispiele in der PD konkrete Vorgaben? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property P5 Formal : [](adaptiveDelayTimes --> \a r \in Rooms r.appliedDT2 = learnDT2( r ) ) NL : If the facility manager has decided that the delay times have to be learned the current applied value of DT2 is the one returned by the learning function learnDT2. References : PD/Par7, PD/FMH6 PatternInst : Comment : Beachte: diese Anforderung steht im Konflikt mit der Anforderung, die in RoomTemperature gestellt wird. Die Lösung dieses Konfliktes, nämlich daß die Lernerei Priorität hat, muß noch geeignet dokumentiert werden. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Kann man von einer gemeinsamen Lernfunktion für alle Räume ausgehen? Was sind die Parameter, von denen die Lernfunktion abhängen soll? Sind die Beispiele in der PD konkrete Vorgaben? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property P6 Formal : [](adaptiveDelayTimes --> \a r \in Rooms r.appliedDT3 = learnDT3( r ) ) NL : If the facility manager has decided that the delay times have to be learned the current applied value of DT3 is the one returned by the learning function learnDT3. References : PD/Par7, PD/FMH6 PatternInst : Comment : Beachte: diese Anforderung steht im Konflikt mit der Anforderung, die in RoomTemperature gestellt wird. Die Lösung dieses Konfliktes, nämlich daß die Lernerei Priorität hat, muß noch geeignet dokumentiert werden. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Kann man von einer gemeinsamen Lernfunktion für alle Räume ausgehen? Was sind die Parameter, von denen die Lernfunktion abhängen soll? Sind die Beispiele in der PD konkrete Vorgaben? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property P7 NonFormal : Energy consumption should be reduced as far as possible during maintaining of comfortable working conditions for all users. References : PD/FMH1 Comment : Mal sehen, wie man das konkretisieren kann! DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property P8 NonFormal : The use of solar radiation for heating during all times if heating is required or not disallowed, and the use of storage capacity of the building should always be preferred against the usage of the central heating unit. References : PD/FMH2 Comment : Mal sehen, wie man das konkretisieren kann! DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %============================================================================== %============================================================================== % NON FUNCTIONAL HEATING %============================================================================== %============================================================================== Comment: Beziehen sich diese non functional needs nur auf die Temperatursteuerung oder auch auf die Lichtsteuerung? Comment: Das hier muß noch "einsortiert werden". Property P1 NonFormal : If only one single sensor of a group is damaged, the other ones shall provide makeshift operation, otherwise default values respectively manually entered values shall be used. References : PD/NFH1 Comment : Aufgrund der Fülle der Fragen wird der Versuch einer Formalisierung unterlassen. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Um welche Sensoren geht es hier? Was ist hier mit "Gruppe" von Sensoren gemeint? Ich kann mir als Gruppe die Außenhelligkeitssensoren oder die Temperatursensoren in einem Raum vorstellen. Es ist auch die Rede von einer Gruppe von Bewegungsmeldern in einem Raum, aber auf die hat das Kontrollsystem ja nur gebündelt Zugriff. Was heißt "damaged"? Wie kann das System das feststellen, nur über die manuelle Eingabe oder sollen auch Plausibilitätstest gemacht werden? Wie könnten die aussehen? (Hierzu brauchen wir den Domänenexperten!) Es gibt keine Sensoren, die von sich aus mitteilen, daß etwas kaputt ist. Es werden drei mögliche Reaktionen auf das Erkennen eines "Schadens" angegeben: - makeshift operation - default values - manually entered values Was bedeutet "makeshift operation"? Wer kann die Werte wo eingeben? In welcher Relation stehen die drei Alternativen, d.h. welche ist wann anzuwenden. CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property P2 NonFormal : If the whole control system has a serious malfunction, complete manually operation should be possible. References : PD/NFH2 Comment : Aufgrund der Fülle der Fragen wird der Versuch einer Formalisierung unterlassen. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Was bedeutet "whole control system has a serious malfunction"? Wie kann dies festgestellt werden? Was bedeutet "complete manually operation", d.h. welche Sachen sollen auf welche Art noch gesteuert werden können? Ist eine manuelle Steuerung nur in einem solchen Fall möglich? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property P3 NonFormal : If only one sensor does not work correctly, the other ones shall be used to get an estimation. References : PD/NFH3 Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : In welchem Zusammenhang steht dieser Need mit NFH1? Besagen beide Needs dasselbe? Geht es hier nur um die indoor temp. sensors? Ist hier "estimation" nur eine andere Umschreibung für "makeshift operation" in NFH1? Wie kann das Fehlverhalten eines Sensors festgestellt werden? CustomerReas : Unklarheit in der PD CustomerResp : %------------------------------------------------------------------------------ Property NonFormal : All hardware connections have to be made according to DIN standards. References : PD/NFH5 Comment : In diesem Formalismus nicht weiter formalisierbar, da hier kein Verhalten des Systems beschrieben wird. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property NonFormal : No hazardous conditions for persons, inventory, or building is allowed. References : PD/NFH6 Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Dies muß konkretisiert werden; hierzu ist die Hilfe des Domänenexperten erforderlich. CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property NonFormal : The control panel should be easy and intuitive to use. References : PD/NFH7 Comment : In diesem Formalismus nicht weiter formalisierbar, da hier kein Verhalten des Systems beschrieben wird. Solche Anforderungen sollten wir an eigener Stelle sammeln. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property NonFormal : The control system shall be designed such that it can be easily changed and expanded. References : PD/NFH8 Comment : In diesem Formalismus nicht weiter formalisierbar, da hier kein Verhalten des Systems beschrieben wird. DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : CustomerReas : CustomerResp : %------------------------------------------------------------------------------ Property NonFormal : In the case of malfunctions the system shall provide stepwise degradation of functionality. The use of manually entered or default values should provide makeshift operation. References : PD/NFH9 Comment : DeveloperReq : DeveloperReas: DeveloperResp: CustomerReq : Dies muß konkretisiert werden. In welchem Zusammenhang stehen diese Needs mit denen in NFH1, NFH2, NFH3, NFH4. Besagen die nicht alle dasselbe, wenn man sie konkretisieren würde? CustomerReas : CustomerResp : ============================================================================ ============================================================================ ============================================================================ ============================================================================ ============================================================================ Bemerkungen allgemeiner Art: - bei allen Klassen eine Intention angeben - Startzustände, Initialwerte usw. festlegen - für jeden Wert, den der Benutzer/FM eingeben/verändern kann, muß es die folgenden Dinge geben: (Dies ist auch eine Art Muster!!!!) * ein Wertebereich * eine Timed Function f, die den aktuellen Wert widerspiegelt * eine Timed Function g, die den vom FM eingegebenen Default-Wert widerspiegelt * eine Property, die den initialen Wert von f auf den initialen Wert von g setzt * eine Property, die den initialen Wert von g auf einen festen Wert setzt, der vom Kunden zu erfragen ist. * wenn geklärt ist, auf welche Art und Weise die Eingabe durch den Benutzer und den FM erfolgt, muß auch noch die Anforderung berücksichtigt werden, nach der die eingegebenen Größen in dem erlaubten Intervall liegen müssen. (siehe FMH3) * bei der NLPS auf jeden Fall auch alle Prädikate und Funktionen drinlassen, über die Eingaben an das System getätigt werden. Dies ist für das Verständnis beim Entwickler wohl essentiell! * Aggregations- und Vererbungshierarchie am Ende mitangeben! - überprüfen, ob alle Größen, vor allem Funktionen und Konstanten einen Initialwert haben. - Sicherstellen, daß dieser Initialwert bei Konstanten nicht verändert werden kann. - bei der Projektion unterscheiden zwischen Eigenschaften, die den Initialwert einer Funktion oder eines Prädikats oder einer Konstante festlegen und anderen Eigenschaften, die sich nicht ausschließlich auf den Startpunkt beziehen. - zu überlegen ist, die drei Zeiten DT1, DT2, DT3 und alles, was damit zusammenhängt, als Instanzen einer Klasse zu definieren und dann bestimmte Sachen \a t \in {DT1, DT2, DT3} ... zu formalisieren. Dann würde man wohl einiges an Platz sparen. - es sollte irgendwo gebündelt (geeignet projeziert) dokumentiert werden, was für verschiedene Werte es für verschiedene Größen gibt, z.B. für die drei Zeiten DT1, DT2, DT3. Dies wäre wohl essentiell für das Verständnis. bei DT1,2,3: * entered * transfered * default vom FM * der adaptive (Lernerei) * der tatsächlich angewendete - Gedanken bzgl. der Vollständigkeit der Anforderungen machen. Es ist z.B. nichts (konkretes) erwähnt, wie die Temperatursteuerung im Sommer erfolgen soll, d.h. mit welchen Mitteln oder doch? - Bei der Projektion nach NLPS sollten bei den Größen der Signatur nur Intention, nicht NL ausgegeben werden - bei der Modellierung der Objekte unterscheiden zwischen Normalverhalten und Verhalten in einem Fehlerfall; hierfür jeweils eigene Klassen aufstellen. Zumindest aber bei den Größen und den geforderten Eigenschaften unterscheiden. - Bei den angegebenen Intentionen sollten wir evtl auch auf das Dictionary zurückgreifen, falls dort Begriffe angegeben sind, die mit Größen in unserer Signatur übereinstimmen. - Bei den Referenzen sollten wir versuchen vollstandig zu sein, d.h. erstmal sollte überall was stehen, oder es sollte explizit als Ergänzung gekennzeichnet sein; und es sollten alle Stellen angegeben sein, an denen auf die Größe oder Eigenschaft eingegangen wird. - Projektion erstellen, in der die Cust/Dev_sachen draußen sind, ebenso die Referenzen und die NL-Sachen bei den Größen der Signatur. Diese Projektion ist vor allem für die Entwicklung (auch schon für die Formalisierung sher günstig). - Eintrag für Cust/Dev-Change noch mitaufnehmen - immer dieselbe Bemerkung verwenden beim Hinweis, daß eine Größe vom Kunden eingeführt wurde. - insgesamt versuchen, die Bemerkungen etc. zu vereinheitlichen - Namenskonvetionen einführen; z.B. bei Domänen immer das Suffix "Range" verwenden oder Konstanten immer mit einem Großbuchstaben beginnen zu lassen, sonst alles Klein, Verzögerungszeiten immer mit Suffix Delay usw. Domains nur in Großbuchstaben angeben. - Auflisten, welche Größen zur Bestimmung von Occupancy verwendet werden. Hier vor allem auf die Unterschiedung zwischen Licht- und Tempeartursteuerung und Normalfall/Fehlerfall eingehen. - Es ist sehr fragwürdig, das Verhalten des Systems im Falle eines Fehlverhaltens eines Sensors als nonfunctional zu bezeichnen. - festhalten, welche verschiedenen "Statusse" es für dieses Dokument geben kann (bisher: start, ready for developer review) - am Anfang explizit sagen, wie wir die Zeit modellieren und was unsere Zeiteinheit ist. - am Anfang auch eine allgemeine Einführung geben, wie dieses Dokument zu lesen ist, also z.B. die Struktur erläutern, die Main Description Class erläutern, usw. Mögliche Fragen: - Welche Werte können vom FM bzw. dem Benutzer eines Raumes eingestellt/eingegeben werden? Dies ist sicher aus Entwicklersicht eine nicht uninteressante Frage! Ebenso aus der Sicht eines Benutzers!!!