From 343d250fb2d91fdc51fd8a593b52ba632c7575c7 Mon Sep 17 00:00:00 2001 From: Daniel Cortes Pichardo Date: Wed, 19 Apr 2017 19:19:13 -0500 Subject: [PATCH] fist version of the project --- mvnw | 233 ++++++++++++++++++ mvnw.cmd | 145 +++++++++++ pom.xml | 67 +++++ .../dads/essence/EssenceImplApplication.java | 12 + .../SEAbstractActivity.java | 91 +++++++ .../activityspaceandactivity/SEAction.java | 134 ++++++++++ .../SEActionKind.java | 66 +++++ .../activityspaceandactivity/SEActivity.java | 121 +++++++++ .../SEActivityAssociation.java | 118 +++++++++ .../SEActivitySpace.java | 84 +++++++ .../activityspaceandactivity/SEApproach.java | 98 ++++++++ .../SECompletionCriterion.java | 55 +++++ .../activityspaceandactivity/SECriterion.java | 116 +++++++++ .../SEEntryCriterion.java | 59 +++++ .../package-info.java | 13 + .../model/alphaandworkproduct/SEAlpha.java | 172 +++++++++++++ .../SEAlphaAssociation.java | 144 +++++++++++ .../SEAlphaContainment.java | 111 +++++++++ .../alphaandworkproduct/SELevelOfDetail.java | 180 ++++++++++++++ .../model/alphaandworkproduct/SEState.java | 158 ++++++++++++ .../alphaandworkproduct/SEWorkProduct.java | 114 +++++++++ .../SEWorkProductManifest.java | 134 ++++++++++ .../alphaandworkproduct/package-info.java | 15 ++ .../model/competency/SECompetency.java | 82 ++++++ .../model/competency/SECompetencyLevel.java | 140 +++++++++++ .../model/competency/package-info.java | 12 + .../model/diagraminterchange/SECard.java | 97 ++++++++ .../diagraminterchange/SEDetailCard.java | 96 ++++++++ .../model/diagraminterchange/SEDiagram.java | 51 ++++ .../diagraminterchange/SEDiagramElement.java | 36 +++ .../model/diagraminterchange/SELabel.java | 36 +++ .../model/diagraminterchange/SELink.java | 94 +++++++ .../model/diagraminterchange/SENode.java | 60 +++++ .../model/diagraminterchange/SEText.java | 36 +++ .../diagraminterchange/package-info.java | 7 + .../model/foundation/SEBasicElement.java | 122 +++++++++ .../model/foundation/SECheckpoint.java | 136 ++++++++++ .../model/foundation/SEElementGroup.java | 190 ++++++++++++++ .../foundation/SEEndeavorAssociation.java | 86 +++++++ .../model/foundation/SEEndeavorProperty.java | 145 +++++++++++ .../model/foundation/SEExtensionElement.java | 109 ++++++++ .../essence/model/foundation/SEKernel.java | 122 +++++++++ .../model/foundation/SELanguageElement.java | 197 +++++++++++++++ .../essence/model/foundation/SELibrary.java | 68 +++++ .../model/foundation/SEMergeResolution.java | 107 ++++++++ .../essence/model/foundation/SEMethod.java | 100 ++++++++ .../essence/model/foundation/SEPattern.java | 80 ++++++ .../foundation/SEPatternAssociation.java | 104 ++++++++ .../essence/model/foundation/SEPractice.java | 210 ++++++++++++++++ .../model/foundation/SEPracticeAsset.java | 62 +++++ .../essence/model/foundation/SEResource.java | 92 +++++++ .../dads/essence/model/foundation/SETag.java | 87 +++++++ .../dads/essence/model/foundation/SEType.java | 90 +++++++ .../model/foundation/package-info.java | 14 ++ .../userdefinedtypes/SETypedPattern.java | 74 ++++++ .../userdefinedtypes/SETypedResource.java | 74 ++++++ .../model/userdefinedtypes/SETypedTag.java | 74 ++++++ .../userdefinedtypes/SEUserDefinedType.java | 142 +++++++++++ .../model/userdefinedtypes/package-info.java | 9 + .../model/view/SEFeatureSelection.java | 105 ++++++++ .../essence/model/view/SEViewSelection.java | 146 +++++++++++ .../dads/essence/model/view/package-info.java | 20 ++ src/main/resources/application.properties | 0 .../essence/EssenceImplApplicationTests.java | 16 ++ 64 files changed, 5968 insertions(+) create mode 100755 mvnw create mode 100644 mvnw.cmd create mode 100644 pom.xml create mode 100644 src/main/java/mx/infotec/dads/essence/EssenceImplApplication.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEAbstractActivity.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEAction.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActionKind.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActivity.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActivityAssociation.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActivitySpace.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEApproach.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SECompletionCriterion.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SECriterion.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEEntryCriterion.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/package-info.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEAlpha.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEAlphaAssociation.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEAlphaContainment.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SELevelOfDetail.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEState.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEWorkProduct.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEWorkProductManifest.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/package-info.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/competency/SECompetency.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/competency/SECompetencyLevel.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/competency/package-info.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SECard.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEDetailCard.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEDiagram.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEDiagramElement.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SELabel.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SELink.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SENode.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEText.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/diagraminterchange/package-info.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SEBasicElement.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SECheckpoint.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SEElementGroup.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SEEndeavorAssociation.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SEEndeavorProperty.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SEExtensionElement.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SEKernel.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SELanguageElement.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SELibrary.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SEMergeResolution.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SEMethod.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SEPattern.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SEPatternAssociation.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SEPractice.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SEPracticeAsset.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SEResource.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SETag.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/SEType.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/foundation/package-info.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SETypedPattern.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SETypedResource.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SETypedTag.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SEUserDefinedType.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/package-info.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/view/SEFeatureSelection.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/view/SEViewSelection.java create mode 100644 src/main/java/mx/infotec/dads/essence/model/view/package-info.java create mode 100644 src/main/resources/application.properties create mode 100644 src/test/java/mx/infotec/dads/essence/EssenceImplApplicationTests.java diff --git a/mvnw b/mvnw new file mode 100755 index 0000000..a1ba1bf --- /dev/null +++ b/mvnw @@ -0,0 +1,233 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # + # Look for the Apple JDKs first to preserve the existing behaviour, and then look + # for the new JDKs provided by Oracle. + # + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then + # + # Oracle JDKs + # + export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then + # + # Apple JDKs + # + export JAVA_HOME=`/usr/libexec/java_home` + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + local basedir=$(pwd) + local wdir=$(pwd) + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + wdir=$(cd "$wdir/.."; pwd) + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 0000000..2b934e8 --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,145 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +set MAVEN_CMD_LINE_ARGS=%* + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar"" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS% +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..fda4a6c --- /dev/null +++ b/pom.xml @@ -0,0 +1,67 @@ + + + 4.0.0 + + mx.infotec.dads.essence + essence-impl + 0.0.1-SNAPSHOT + jar + + essence-impl + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 1.5.2.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + + + + infotec-repo + INFOTEC Repository + http://207.249.20.133/artifactory/infotec + + + + + + org.omg + essence + 0.1 + + + org.springframework.boot + spring-boot-starter-data-mongodb + + + + org.springframework.boot + spring-boot-starter-test + test + + + de.flapdoodle.embed + de.flapdoodle.embed.mongo + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + diff --git a/src/main/java/mx/infotec/dads/essence/EssenceImplApplication.java b/src/main/java/mx/infotec/dads/essence/EssenceImplApplication.java new file mode 100644 index 0000000..62827ba --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/EssenceImplApplication.java @@ -0,0 +1,12 @@ +package mx.infotec.dads.essence; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class EssenceImplApplication { + + public static void main(String[] args) { + SpringApplication.run(EssenceImplApplication.class, args); + } +} diff --git a/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEAbstractActivity.java b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEAbstractActivity.java new file mode 100644 index 0000000..d723829 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEAbstractActivity.java @@ -0,0 +1,91 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.activityspaceandactivity; + +import java.util.Collection; + +import org.omg.essence.model.activityspaceandactivity.AbstractActivity; +import org.omg.essence.model.activityspaceandactivity.ActivityAssociation; +import org.omg.essence.model.activityspaceandactivity.Criterion; + +import mx.infotec.dads.essence.model.foundation.SEBasicElement; + +/** + *
+ * Description: 
+ * 
+ * + * The Class AbstractActivity. An abstract activity is either a placeholder for + * something to be done or a concrete activity to be performed. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Abstract activities serve as a super class for activity spaces and activities. Each abstract activity has to have completion 
+ * criteria, telling the practitioner when the abstract activity can be considered completed.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public abstract class SEAbstractActivity extends SEBasicElement implements AbstractActivity { + + /** The activity association. */ + private Collection activityAssociation; + + /** + * The criterion. A collection of criteria that have to be fulfilled for + * entering the activity or considering the activity completed + */ + private Collection criterion; + + public Collection getActivityAssociation() { + return activityAssociation; + } + + public void setActivityAssociation(Collection activityAssociation) { + this.activityAssociation = activityAssociation; + } + + public Collection getCriterion() { + return criterion; + } + + public void setCriterion(Collection criterion) { + this.criterion = criterion; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEAction.java b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEAction.java new file mode 100644 index 0000000..f6c7b86 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEAction.java @@ -0,0 +1,134 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.activityspaceandactivity; + +import java.util.Collection; + +import org.omg.essence.model.activityspaceandactivity.Action; +import org.omg.essence.model.activityspaceandactivity.ActionKind; +import org.omg.essence.model.activityspaceandactivity.Activity; +import org.omg.essence.model.alphaandworkproduct.Alpha; +import org.omg.essence.model.alphaandworkproduct.WorkProduct; + +import mx.infotec.dads.essence.model.foundation.SELanguageElement; + +/** + *
+ * Description: 
+ * 
+ * + * The Class Action. An operation performed by an activity on a particular work + * product. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- The action touches either alphas or work products, but not both nor nothing
+ * (self.alpha->isEmpty() implies self.workProduct->notEmpty()) and (self.alpha
+ * ->notEmpty() implies self.workProduct->isEmpty())
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Activities may involve work products in different ways. In an action, one of four possible operations can be specified that
+ * an activity performs on a work product:
+ * 
+ *
    + *
  • “create”: The activity creates the work product. It is likely to + * use this kind of operation in activities that set up an environment or create + * initial version of work products.
  • + *
  • “read”: The activity reads the work product but does not change + * it. This kind of operation assumes that the work product needs to be present + * to be successful in this activity. It is likely to use this kind of operation + * in activities that transform contents from one work product into other work + * products.
  • + *
  • “update”: The activity possibly modifies the work product. In an + * actual endeavor, there may be cases in which no modification is necessary, + * but there is at least one case in which the work product has changed after + * performing the activity. This kind of operation assumes that the work product + * needs to be present to be successful in this activity.
  • + *
  • “delete”: The activity deletes the work product. This kind of + * operation assumes that the work product no longer exists if the activity is + * completed successfully. Note that deleted work products cannot be covered by + * completion criteria. It is likely to use this kind of operation in activities + * that finalize an endeavor and thus remove intermediate results for privacy or + * security reasons.
  • + *
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEAction extends SELanguageElement implements Action { + + /** The activity. */ + private Activity activity; + + /** The alpha. */ + private Collection alpha; + + /** The work product. */ + private Collection workProduct; + + /** The kind. */ + private ActionKind kind; + + public Activity getActivity() { + return activity; + } + + public void setActivity(Activity activity) { + this.activity = activity; + } + + public Collection getAlpha() { + return alpha; + } + + public void setAlpha(Collection alpha) { + this.alpha = alpha; + } + + public Collection getWorkProduct() { + return workProduct; + } + + public void setWorkProduct(Collection workProduct) { + this.workProduct = workProduct; + } + + public ActionKind getKind() { + return kind; + } + + public void setKind(ActionKind kind) { + this.kind = kind; + } + +} \ No newline at end of file diff --git a/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActionKind.java b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActionKind.java new file mode 100644 index 0000000..3b145b2 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActionKind.java @@ -0,0 +1,66 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.activityspaceandactivity; + +import org.omg.essence.model.activityspaceandactivity.Action; + +/** + *
+ * Description: 
+ * 
+ * + * The Enum ActionKind. Enumeration of all supported Actions.

+ * + * create: Indicates a create Action
+ * read: Indicates a read Action
+ * update: Indicates an update Action
+ * delete: Indicates a delete Action + *
+ * 
+ * Semantics:
+ * 
+ * See clause 9.3.4.3 Action for a details on the indicated Actions.
+ * 
+ * 
+ * + * @see Action for a details on the indicated Actions. + * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public enum SEActionKind { + + /** Indicates a delete Action */ + DELETE, + + /** Indicates a create Action */ + CREATE, + + /** Indicates a read Action */ + READ, + + /** Indicates an update Action */ + UPDATE +} \ No newline at end of file diff --git a/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActivity.java b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActivity.java new file mode 100644 index 0000000..6c5b84f --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActivity.java @@ -0,0 +1,121 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.activityspaceandactivity; + +import java.util.Collection; + +import org.omg.essence.model.activityspaceandactivity.Action; +import org.omg.essence.model.activityspaceandactivity.Activity; +import org.omg.essence.model.activityspaceandactivity.Approach; +import org.omg.essence.model.competency.CompetencyLevel; + +/** + *
+ * Description: 
+ * 
+ * + * The Class Activity. An Activity defines one or more approaches for carrying + * out some work to be performed and can recommend actions on alphas and/or work + * products in order to perform this work. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * An activity describes some work to be performed. It is considered completed if all its completion criteria are fulfilled;
+ * whether or not this completion was because of performance of the activity or for some other reason. Performing an
+ * activity can normally be expected to result in its completion criteria being fulfilled, but this is not guaranteed.
+ * 
+ * An activity can recommend to perform actions on alphas and/or work products. There is no specific relation between the
+ * actions recommended by an activity and its completion criteria. For example, an activity for a Sprint Retrospective
+ * according to Scrum will have alpha “Way of Working” as subject for action “modify”, because it is possible that the team
+ * decides to change the way of working based on the results of the retrospective. However, there is no specific relationship
+ * indicating that the Sprint Retrospective can only be considered complete if the alpha “Way of Working” has reached a
+ * certain state, so it will not be listed among the completion criteria. In turn, an activity for monitoring a team’s
+ * performance can be considered complete if the team is abandoned, but the activity will never imply any action on the
+ * “team” alpha.
+ * 
+ * The activity is a manifestation of (part of) an activity space through an activity association. The activities filling the same
+ * activity space jointly contribute to the achievement of the completion criteria of the activity space. Activities may define
+ * different approaches to reach a goal which may imply restrictions on how different activities may be combined. One 
+ * activity may be bound to multiple activity spaces within a practice.
+ * 
+ * The activity may be related to other activities via an activity association. The association indicates a relationship between
+ * the activities, such as a work breakdown structure. Activity associations do not constrain the completion of the associated
+ * activities.
+ * 
+ * To be likely to succeed with the activity, the performer(s) of the activity must have at least the competencies required by
+ * the activity to be able to perform that activity with a satisfactory result.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEActivity extends SEAbstractActivity implements Activity{ + + /** The approach. */ + private Collection approach; + + /** The action. */ + private Collection action; + + /** The required competency level. */ + private Collection requiredCompetencyLevel; + + public Collection getApproach() { + return approach; + } + + public void setApproach(Collection approach) { + this.approach = approach; + } + + public Collection getAction() { + return action; + } + + public void setAction(Collection action) { + this.action = action; + } + + public Collection getRequiredCompetencyLevel() { + return requiredCompetencyLevel; + } + + public void setRequiredCompetencyLevel(Collection requiredCompetencyLevel) { + this.requiredCompetencyLevel = requiredCompetencyLevel; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActivityAssociation.java b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActivityAssociation.java new file mode 100644 index 0000000..4115b48 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActivityAssociation.java @@ -0,0 +1,118 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.activityspaceandactivity; + +import org.omg.essence.model.activityspaceandactivity.AbstractActivity; +import org.omg.essence.model.activityspaceandactivity.ActivityAssociation; + +import mx.infotec.dads.essence.model.foundation.SELanguageElement; + +/** + *
+ * Description: 
+ * 
+ * + * The Class ActivityAssociation. Activity association is used to represent a + * relationship or dependency between activities. Generally these dependencies + * are defined by the practice that defines the activities. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- Activity spaces can only be part of other activity spaces
+ * (self.end2.oclIsKindOf(ActivitySpace) and self.kind = “part-of”) implies
+ * self.end1.oclIsKindOf(ActivitySpace)
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Activities can be related to each other via activity associations. They define relationships or dependencies between
+ * activities, but do not constrain their completion.
+ * 
+ * If the kind of the association is “part-of”, the first member of the association is considered to be part of the second
+ * member in a work breakdown structure. A usual way of using this kind is to assign activities to an activity space they
+ * populate.
+ * 
+ * If the kind of the association is “start-before-start”, it is suggested to start the first member before starting the second
+ * member.
+ * 
+ * If the kind of the association is “start-before-end”, it is suggested to start the first member before finishing the second
+ * member.
+ * 
+ * If the kind of the association is “end-before-start”, it is suggested to finish the first member before starting the second
+ * member. This may imply that the second member cannot be started before the first member is finished.
+ * 
+ * If the kind of the association is “end-before-end”, it is suggested to finish the first member before finishing the second
+ * member. This may imply that the second member cannot be finished before the first member is finished.
+ * 
+ * However, in any case a member is considered complete if its completion criteria are met, independent of the completion
+ * of its associated activities.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEActivityAssociation extends SELanguageElement implements ActivityAssociation{ + + /** The first member of the association. */ + private AbstractActivity end2; + + /** The second member of the association. */ + private AbstractActivity end1; + + /** The kind of the association. */ + private String kind; + + public AbstractActivity getEnd2() { + return end2; + } + + public void setEnd2(AbstractActivity end2) { + this.end2 = end2; + } + + public AbstractActivity getEnd1() { + return end1; + } + + public void setEnd1(AbstractActivity end1) { + this.end1 = end1; + } + + public String getKind() { + return kind; + } + + public void setKind(String kind) { + this.kind = kind; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActivitySpace.java b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActivitySpace.java new file mode 100644 index 0000000..82f7c56 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEActivitySpace.java @@ -0,0 +1,84 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.activityspaceandactivity; + +import java.util.Collection; + +import org.omg.essence.model.activityspaceandactivity.ActivitySpace; +import org.omg.essence.model.alphaandworkproduct.Alpha; + +/** + *
+ * Description: 
+ * 
+ * + * The Class ActivitySpace. A placeholder for something to be done in the + * software engineering endeavor. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * An activity space is a high-level abstraction representing “something to be done”. It uses a (possibly empty) collection of
+ * alphas as input to the work. When the work is concluded a collection of alphas (possibly some of the alphas used as
+ * input) has been updated. The update may cause a change of the alpha’s state. When the update and the state change of an
+ * alpha takes place is not defined; only that it has been done when the activity space is completed.
+ * 
+ * What should have been accomplished when the work performed in the activity space is completed, i.e., the activity
+ * space’s completion criteria, is expressed in terms of which states the output alphas should have reached. Using the
+ * checkpoints for the states of alphas, it is at the discretion of the team to decide when a state change has occurred and thus
+ * the completion criteria of the activity space have been met.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEActivitySpace extends SEAbstractActivity implements ActivitySpace { + + /** + * A collection of alphas that have to be present to be successful in + * fulfilling the objectives of this activity space. + */ + private Collection input; + + public Collection getInput() { + return input; + } + + public void setInput(Collection input) { + this.input = input; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEApproach.java b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEApproach.java new file mode 100644 index 0000000..44f4c6a --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEApproach.java @@ -0,0 +1,98 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.activityspaceandactivity; + +import org.omg.essence.model.activityspaceandactivity.Activity; +import org.omg.essence.model.activityspaceandactivity.Approach; + +import mx.infotec.dads.essence.model.foundation.SELanguageElement; + +/** + *
+ * Description: 
+ * 
+ * + * The Class Approach. An Approach defines one way to accomplish some work. An + * approach is specified in the context of a specific activity. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * The Approach element defines or describes how a particular Activity is accomplished. Multiple Approaches may be
+ * associated with a single Activity. Also, an Approach, if generic enough, may be associated with multiple Activities.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEApproach extends SELanguageElement implements Approach { + + /** The activity */ + private Activity activity; + + /** The name of the Approach */ + private String name; + + /** + * Contains the detailed description or definition of the Approach. + */ + private String description; + + public Activity getActivity() { + return activity; + } + + public void setActivity(Activity activity) { + this.activity = activity; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SECompletionCriterion.java b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SECompletionCriterion.java new file mode 100644 index 0000000..5f3d0d4 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SECompletionCriterion.java @@ -0,0 +1,55 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.activityspaceandactivity; + +import org.omg.essence.model.activityspaceandactivity.CompletionCriterion; +import org.omg.essence.model.activityspaceandactivity.Criterion; + +/** + *
+ * Description: 
+ * 
+ * + * The Class CompletionCriterion. CompletionCriterion specializes Criterion and + * must be satisfied to consider work of an activity as complete. + * + *
+ * Invariant:
+ * see {@link Criterion}
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * The work of an activity or activity space is considered complete when its completion criteria are fulfilled, i.e., when the
+ * alpha states or work product levels of detail defined by the completion criteria are reached.
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SECompletionCriterion extends SECriterion implements CompletionCriterion { +} \ No newline at end of file diff --git a/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SECriterion.java b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SECriterion.java new file mode 100644 index 0000000..3582bf7 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SECriterion.java @@ -0,0 +1,116 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.activityspaceandactivity; + +import org.omg.essence.model.activityspaceandactivity.AbstractActivity; +import org.omg.essence.model.activityspaceandactivity.Criterion; +import org.omg.essence.model.alphaandworkproduct.LevelOfDetail; +import org.omg.essence.model.alphaandworkproduct.State; + +import mx.infotec.dads.essence.model.foundation.SELanguageElement; + +/** + *
+ * Description: 
+ * 
+ * + * The Class Criterion. A condition that can be tested as true or false that + * contributes to the determination of whether an activity or an activity space + * may be entered or is complete. A criterion is expressed in terms of the state + * of an alpha or the level of detail of a work product. The abstract Criterion + * must be specialized by EntryCriterion or Completion Criterion. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- A criterion addresses either a state or a level of detail 
+ * (self.state<> null and levelOfDetail = null) or (self.state = null and
+ * levelOfDetail<> null)
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Criterion specifies a condition that must be met to enter an activity or activity space; or to consider the work in an
+ * activity or activity space complete. Criterion must be specialized by either EntryCriterion or CompletionCriterion. The
+ * work of an activity or activity space is considered complete when its completion criteria are fulfilled, i.e., when the alpha
+ * states or work product levels of detail defined by the completion criteria are reached.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public abstract class SECriterion extends SELanguageElement implements Criterion { + + /** The activity. */ + private AbstractActivity activity; + + /** A state to be reached. */ + private State state; + + /** A level of detail to be reached. */ + private LevelOfDetail levelOfDetail; + + /** The description of the Criterion */ + private String description; + + public AbstractActivity getActivity() { + return activity; + } + + public void setActivity(AbstractActivity activity) { + this.activity = activity; + } + + public State getState() { + return state; + } + + public void setState(State state) { + this.state = state; + } + + public LevelOfDetail getLevelOfDetail() { + return levelOfDetail; + } + + public void setLevelOfDetail(LevelOfDetail levelOfDetail) { + this.levelOfDetail = levelOfDetail; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEEntryCriterion.java b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEEntryCriterion.java new file mode 100644 index 0000000..8c16315 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/SEEntryCriterion.java @@ -0,0 +1,59 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.activityspaceandactivity; + +import org.omg.essence.model.activityspaceandactivity.Criterion; +import org.omg.essence.model.activityspaceandactivity.EntryCriterion; + +/** + *
+ * Description: 
+ * 
+ * + * The Class EntryCriterion. EntryCriterion specializes Criterion and must be + * satisfied before work of an activity can be started. + * + *
+ * 
+ * Invariant: 
+ * see {@link Criterion}
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * An entry criterion is fulfilled when the alpha state or work product level of detail defined by the entry criterion is
+ * reached. The work of an activity may be started when all its entry criteria are fulfilled. The work of an activity space may
+ * be started when one or more of its entry criteria are fulfilled; the work started (by activities in the activity space) can only
+ * be done in relation to the alphas that fulfill the entry criteria.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEEntryCriterion extends SECriterion implements EntryCriterion { +} \ No newline at end of file diff --git a/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/package-info.java b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/package-info.java new file mode 100644 index 0000000..6d3669a --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/activityspaceandactivity/package-info.java @@ -0,0 +1,13 @@ +/** + * ActivitySpaceAndActivity, contains elements to enrich practices by expressing + * activities. + * + *

+ * The intention of the ActivitySpaceAndActivity package is to provide + * additional elements to deal with more advanced practices. The elements and + * their relationships are presented in the diagrams shown below. A detailed + * definition of each of the elements is found below. + * + * @since 1.1 + */ +package mx.infotec.dads.essence.model.activityspaceandactivity; diff --git a/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEAlpha.java b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEAlpha.java new file mode 100644 index 0000000..67302b7 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEAlpha.java @@ -0,0 +1,172 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.alphaandworkproduct; + +import java.util.Collection; + +import org.omg.essence.model.activityspaceandactivity.Action; +import org.omg.essence.model.activityspaceandactivity.ActivitySpace; +import org.omg.essence.model.alphaandworkproduct.Alpha; +import org.omg.essence.model.alphaandworkproduct.AlphaAssociation; +import org.omg.essence.model.alphaandworkproduct.AlphaContainment; +import org.omg.essence.model.alphaandworkproduct.State; +import org.omg.essence.model.alphaandworkproduct.WorkProductManifest; + +import mx.infotec.dads.essence.model.foundation.SEBasicElement; + +/** + *

+ * Description: 
+ * 
+ * + * The Class Alpha. An essential element that is relevant to an assessment of + * the progress and health of a software engineering endeavor. + * + * An alpha represents and holds the state of some element, aspect, or + * abstraction in an endeavor that has a discernible state and knowledge of + * whose state is required to understand the state of progress and/or health of + * the endeavor. + * + * The instances of alphas in an endeavor form acyclic graphs. These graphs show + * how the states of lower level, more granular instances, contribute to and + * drive the states of the higher level, more abstract, alphas. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- All states of an alpha must have different names.
+ * self.states->forAll(s1, s2 | s1 <> s2 implies s1.name <> s2.name)
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Alpha is an acronym that means “Abstract-Level Progress Health Attribute.”
+ * 
+ * Alphas are subjects whose evolution we want to understand, monitor, direct, and control. The major milestones of a
+ * software engineering endeavor can be expressed in terms of the states of a collection of alphas. Thus, alpha state
+ * progression means progression towards achieving the objectives of the software engineering endeavor.
+ * 
+ * An alpha has well-defined states, defining a controlled evolution throughout its lifecycle – from its creation to its
+ * termination state. Each state has a collection of checkpoints that describe what the alpha should fulfill in this particular
+ * state. Hence it is possible to accurately plan and control their evolution through these states. However, these states are not
+ * just one-way linear progressions. Each time you reassess a state, if you do not meet all the checklist items, you can go
+ * back to a previous state. You can also iterate through the states multiple times depending on your choice of practices.
+ * The linear ordering of states just denotes the usual way of progression.
+ * 
+ * An alpha may be used as input to an activity space in which the content of the alpha is used when performing the work of
+ * the activity space. The alpha (and its state) may be created or updated during the performance of activities in an activity
+ * space.
+ * 
+ * An alpha is often manifested in terms of a collection of work products. These work products are used for documentation
+ * and presentation of the alpha. The shape of these work products may be used for concluding the state of the alpha.
+ * 
+ * Different practices may use different collections of work products to document the same alpha. For example, one practice
+ * may document all kinds of requirements in one document, while other practices may use different types of documents.
+ * One practice may document both the flow and the presentation of a use case in one document, while another practice may
+ * separate the specification of the flow from the specification of the user interface and write them in different documents.
+ * 
+ * An alpha may contain a collection of other alphas. Together, these sub-alphas contribute to the state of the superordinate
+ * alpha. However, there is no explicit relationship between the states of the subordinate alphas and the state of their
+ * superordinate alpha.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEAlpha extends SEBasicElement implements Alpha { + + /** The states of the alpha. */ + private Collection states; + + /** The action. */ + private Collection action; + + /** The activity space. */ + private ActivitySpace activitySpace; + + /** The alpha containment. */ + private Collection alphaContainment; + + /** The alpha association. */ + private Collection alphaAssociation; + + /** The work product manifest. */ + private Collection workProductManifest; + + public Collection getStates() { + return states; + } + + public void setStates(Collection states) { + this.states = states; + } + + public Collection getAction() { + return action; + } + + public void setAction(Collection action) { + this.action = action; + } + + public ActivitySpace getActivitySpace() { + return activitySpace; + } + + public void setActivitySpace(ActivitySpace activitySpace) { + this.activitySpace = activitySpace; + } + + public Collection getAlphaContainment() { + return alphaContainment; + } + + public void setAlphaContainment(Collection alphaContainment) { + this.alphaContainment = alphaContainment; + } + + public Collection getAlphaAssociation() { + return alphaAssociation; + } + + public void setAlphaAssociation(Collection alphaAssociation) { + this.alphaAssociation = alphaAssociation; + } + + public Collection getWorkProductManifest() { + return workProductManifest; + } + + public void setWorkProductManifest(Collection workProductManifest) { + this.workProductManifest = workProductManifest; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEAlphaAssociation.java b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEAlphaAssociation.java new file mode 100644 index 0000000..64c051e --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEAlphaAssociation.java @@ -0,0 +1,144 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.alphaandworkproduct; + +import org.omg.essence.model.alphaandworkproduct.Alpha; +import org.omg.essence.model.alphaandworkproduct.AlphaAssociation; + +import mx.infotec.dads.essence.model.foundation.SELanguageElement; + +/** + *
+ * Description: 
+ * 
+ * + * The Class AlphaAssociation. Alpha association is used to represent a + * relationship between alphas. Generally these associations are defined by a + * practice. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Unlike a relationship between alphas defined using alpha containment, which is used for the Essence “sub-alpha”
+ * relationship, a relationship between alphas defined using alpha association has no defined semantics in Essence. An
+ * example would be between a Risk and the Team Member who identified the Risk. While Risk Management practice
+ * might recommend that this relationship be tracked, it is not a sub-alpha relationship.
+ * 
+ * A relationship modeled by an alpha association can, in general, be many-to-many.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEAlphaAssociation extends SELanguageElement implements AlphaAssociation { + + /** Lower bound of association endpoint 1. */ + private int end1lowerBound; + + /** Upper bound of association endpoint 1. */ + private int end1upperBound; + + /** Lower bound of association endpoint 2. */ + private int end2lowerBound; + + /** Upper bound of association endpoint 2. */ + private int end2upperBound; + + /** Name of the alpha association. */ + private String name; + + /** The alpha endpoint 1 of the association. */ + private Alpha end1; + + /** The alpha endpoint 2 of the association. */ + private Alpha end2; + + public int getEnd1lowerBound() { + return end1lowerBound; + } + + public void setEnd1lowerBound(int end1lowerBound) { + this.end1lowerBound = end1lowerBound; + } + + public int getEnd1upperBound() { + return end1upperBound; + } + + public void setEnd1upperBound(int end1upperBound) { + this.end1upperBound = end1upperBound; + } + + public int getEnd2lowerBound() { + return end2lowerBound; + } + + public void setEnd2lowerBound(int end2lowerBound) { + this.end2lowerBound = end2lowerBound; + } + + public int getEnd2upperBound() { + return end2upperBound; + } + + public void setEnd2upperBound(int end2upperBound) { + this.end2upperBound = end2upperBound; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Alpha getEnd1() { + return end1; + } + + public void setEnd1(Alpha end1) { + this.end1 = end1; + } + + public Alpha getEnd2() { + return end2; + } + + public void setEnd2(Alpha end2) { + this.end2 = end2; + } +} diff --git a/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEAlphaContainment.java b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEAlphaContainment.java new file mode 100644 index 0000000..69af74c --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEAlphaContainment.java @@ -0,0 +1,111 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.alphaandworkproduct; + +import org.omg.essence.model.alphaandworkproduct.Alpha; +import org.omg.essence.model.alphaandworkproduct.AlphaContainment; + +import mx.infotec.dads.essence.model.foundation.SELanguageElement; + +/** + *
+ * Description: 
+ * 
+ * + * The Class AlphaContainment. Alpha association is used to represent a + * sub(ordinate)-alpha relationship between alphas. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * The sub-alpha relationships define the graphs that show how the states of lower level, more granular alpha instances
+ * contribute to and drive the states of the higher level, more abstract, alpha instances.
+ * 
+ * The relationship between a sub(ordinate)-alpha and a super-alpha can, in general, be many-to-many. The ends of the
+ * relationship are modeled separately to indicate which is the sub(ordinate)-alpha and which is the super-alpha of the
+ * relationship.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEAlphaContainment extends SELanguageElement implements AlphaContainment { + + /** Lower bound for the number of instances of the sub(ordinate)-alpha. */ + private int lowerBound; + + /** Upper bound for the number of instances of the sub(ordinate)-alpha. */ + private int upperBound; + + /** The super alpha */ + private Alpha superAlpha; + + /** The subordinate alpha. */ + private Alpha subordinateAlpha; + + public int getLowerBound() { + return lowerBound; + } + + public void setLowerBound(int lowerBound) { + this.lowerBound = lowerBound; + } + + public int getUpperBound() { + return upperBound; + } + + public void setUpperBound(int upperBound) { + this.upperBound = upperBound; + } + + public Alpha getSuperAlpha() { + return superAlpha; + } + + public void setSuperAlpha(Alpha superAlpha) { + this.superAlpha = superAlpha; + } + + public Alpha getSubordinateAlpha() { + return subordinateAlpha; + } + + public void setSubordinateAlpha(Alpha subordinateAlpha) { + this.subordinateAlpha = subordinateAlpha; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SELevelOfDetail.java b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SELevelOfDetail.java new file mode 100644 index 0000000..388f7fc --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SELevelOfDetail.java @@ -0,0 +1,180 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.alphaandworkproduct; + +import java.util.Collection; + +import org.omg.essence.model.activityspaceandactivity.Criterion; +import org.omg.essence.model.alphaandworkproduct.LevelOfDetail; +import org.omg.essence.model.alphaandworkproduct.WorkProduct; +import org.omg.essence.model.foundation.Checkpoint; + +import mx.infotec.dads.essence.model.foundation.SELanguageElement; + +/** + *
+ * Description: 
+ * 
+ * + * The Class LevelOfDetail. A specification of the amount of detail or range of + * content in a work product. The level of detail of a work product is + * determined by evaluating checklist items. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- All checkpoints of a level of detail must have different names
+ * self.checkListItem->forAll(i1, i2 | i1 <> i2 implies i1.name <> i2.name)
+ * 
+ * -- A level of detail may not be its own direct or indirect successor
+ * self.allSuccessors()->excludes(self)
+ * }
+ * 
+ * + *
+ * 
+ * Additional Operation:
+ * 
+ * {@code
+ * -- All successors of a level of detail
+ * context LevelOfDetail::allSuccessors : Set(LevelOfDetail)
+ * body: Set{self.successor}->union(self.successor.allSuccessors())
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Levels of detail describe the amount and granularity of information that is present in a work product. For example, they
+ * allow to distinguish between a sketch of a system architecture, a formally modeled system architecture, and an annotated
+ * system architecture which is ready for code generation. It depends on the practice which of these levels is considered
+ * sufficiently detailed.
+ * 
+ * It is important to note that levels of detail are not concerned with the completeness of a work product. A work product
+ * can be considered complete for the purpose of the endeavor without being in the most advanced level of detail. In turn, a
+ * work product can be in the most advanced level of detail, but not yet been completed.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SELevelOfDetail extends SELanguageElement implements LevelOfDetail { + + /** A description of the level of detail. */ + private String description; + + /** + * Boolean value determined by the practice (author) to indicate the + * sufficient level of detail. Name of the level of detail. + */ + private boolean isSufficientLevel; + + /** Name of the level of detail. */ + private String name; + + /** Checklist items to determine if the level of detail has been reached. */ + private Collection checkListItem; + + /** Next level of detail. */ + private SELevelOfDetail successor; + + /** The criterion. */ + private Collection criterion; + + /** The predecessor. */ + private SELevelOfDetail predecessor; + + /** The work product. */ + private WorkProduct workProduct; + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public boolean isSufficientLevel() { + return isSufficientLevel; + } + + public void setSufficientLevel(boolean isSufficientLevel) { + this.isSufficientLevel = isSufficientLevel; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Collection getCheckListItem() { + return checkListItem; + } + + public void setCheckListItem(Collection checkListItem) { + this.checkListItem = checkListItem; + } + + public SELevelOfDetail getSuccessor() { + return successor; + } + + public void setSuccessor(SELevelOfDetail successor) { + this.successor = successor; + } + + public Collection getCriterion() { + return criterion; + } + + public void setCriterion(Collection criterion) { + this.criterion = criterion; + } + + public SELevelOfDetail getPredecessor() { + return predecessor; + } + + public void setPredecessor(SELevelOfDetail predecessor) { + this.predecessor = predecessor; + } + + public WorkProduct getWorkProduct() { + return workProduct; + } + + public void setWorkProduct(WorkProduct workProduct) { + this.workProduct = workProduct; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEState.java b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEState.java new file mode 100644 index 0000000..0962dab --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEState.java @@ -0,0 +1,158 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.alphaandworkproduct; + +import java.util.Collection; + +import org.omg.essence.model.activityspaceandactivity.Criterion; +import org.omg.essence.model.alphaandworkproduct.Alpha; +import org.omg.essence.model.alphaandworkproduct.State; +import org.omg.essence.model.foundation.Checkpoint; + +import mx.infotec.dads.essence.model.foundation.SELanguageElement; + +/** + *
+ * Description: 
+ * 
+ * + * The Class State. A specification of the state of progress of an alpha. The + * state of an alpha is determined by evaluating checklist items. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- All checkpoints of a state must have different names
+ * self.checkListItem->forAll(i1, i2 | i1 <> i2 implies i1.name <> i2.name)
+ * 
+ * -- A state may not be its own direct or indirect successor
+ * self.allSuccessors()->excludes(self)
+ * }
+ * 
+ * + *
+ * 
+ * Additional Operation:
+ * 
+ * {@code
+ * -- All successors of a state
+ * context State::allSuccessors : Set(State)
+ * body: Set{self.successor}->union(self.successor.allSuccessors())
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * A state expresses a situation in which all its associated checklist items are fulfilled. It is considered to be an important
+ * and remarkable step in the lifecycle of an alpha.
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEState extends SELanguageElement implements State { + + /** The name of the state. */ + private String name; + + /** Some additional information about the state. */ + private String description; + + /** A collection of checkpoints associated with the state. */ + private Collection checkListItem; + + /** The successor state. */ + private SEState successor; + + /** The criterion. */ + private Collection criterion; + + /** The alpha. */ + private Alpha alpha; + + /** The predecessor. */ + private SEState predecessor; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Collection getCheckListItem() { + return checkListItem; + } + + public void setCheckListItem(Collection checkListItem) { + this.checkListItem = checkListItem; + } + + public SEState getSuccessor() { + return successor; + } + + public void setSuccessor(SEState successor) { + this.successor = successor; + } + + public Collection getCriterion() { + return criterion; + } + + public void setCriterion(Collection criterion) { + this.criterion = criterion; + } + + public Alpha getAlpha() { + return alpha; + } + + public void setAlpha(Alpha alpha) { + this.alpha = alpha; + } + + public SEState getPredecessor() { + return predecessor; + } + + public void setPredecessor(SEState predecessor) { + this.predecessor = predecessor; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEWorkProduct.java b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEWorkProduct.java new file mode 100644 index 0000000..0c7c993 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEWorkProduct.java @@ -0,0 +1,114 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.alphaandworkproduct; + +import java.util.Collection; + +import org.omg.essence.model.activityspaceandactivity.Action; +import org.omg.essence.model.alphaandworkproduct.LevelOfDetail; +import org.omg.essence.model.alphaandworkproduct.WorkProduct; +import org.omg.essence.model.alphaandworkproduct.WorkProductManifest; + +import mx.infotec.dads.essence.model.foundation.SEBasicElement; + +/** + *
+ * Description: 
+ * 
+ * + * The Class WorkProduct. A work product is an artifact of value and relevance + * for a software engineering endeavor. A work product may be a document or a + * piece of software, but also other created entities such as:
+ *
+ * - Creation of a test environment
+ * - Delivery of a training course
+ * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- All levels of detail of a work product must have different names
+ * self.levelOfDetail->forAll(l1, l2 | l1 <> l2 implies l1.name <> l2.name)
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * A work product is a concrete representation of an alpha. It may take several work products to describe the alpha from all
+ * different aspects.
+ * 
+ * A work product can be of many different types such as models, documents, specifications, code, tests, executables,
+ * spreadsheets, as well as other types of artifacts. In fact, some work products may even be tacit (conversations, memories,
+ * and other intangibles).
+ * 
+ * Work products may be created, modified, used, or deleted during an endeavor. Some work products constitute the result
+ * of (the deliverables from) the endeavor and some are used as input to the endeavor.
+ * 
+ * A work product could be described at different levels of details, like overview, user level, or all details level.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEWorkProduct extends SEBasicElement implements WorkProduct { + + /** The level of details defined for the work product. */ + private Collection levelOfDetail; + + /** The action. */ + private Collection action; + + /** The work product manifest. */ + private Collection workProductManifest; + + public Collection getLevelOfDetail() { + return levelOfDetail; + } + + public void setLevelOfDetail(Collection levelOfDetail) { + this.levelOfDetail = levelOfDetail; + } + + public Collection getAction() { + return action; + } + + public void setAction(Collection action) { + this.action = action; + } + + public Collection getWorkProductManifest() { + return workProductManifest; + } + + public void setWorkProductManifest(Collection workProductManifest) { + this.workProductManifest = workProductManifest; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEWorkProductManifest.java b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEWorkProductManifest.java new file mode 100644 index 0000000..08e473a --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/SEWorkProductManifest.java @@ -0,0 +1,134 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.alphaandworkproduct; + +import org.omg.essence.model.alphaandworkproduct.Alpha; +import org.omg.essence.model.alphaandworkproduct.WorkProduct; +import org.omg.essence.model.alphaandworkproduct.WorkProductManifest; + +import mx.infotec.dads.essence.model.foundation.SELanguageElement; + +/** + *
+ * Description: 
+ * 
+ * + * The Class WorkProductManifest. A work product manifest binds a work product + * to an alpha. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Work product manifest represents a tri-nary relationship. It is a relationship from a practice to a work product which is
+ * used for describing an alpha. Several work products may be bound to the same alpha, i.e., there may be multiple alpha
+ * manifests within a practice binding a specific alpha to different work products.
+ * 
+ * For each work product manifest, there is a multiplicity stating how many instances there should be of the associated work
+ * product describing one instance of the alpha.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEWorkProductManifest extends SELanguageElement implements WorkProductManifest { + + /** + * Lower bound for the number of instances of the work product associated to + * one instance of the alpha. + */ + private int lowerBound; + + /** + * Upper bound for the number of instances of the work product associated to + * one instance of the alpha. + */ + private int upperBound; + + /** The alpha bound by this manifest. */ + private Alpha alpha; + + /** The work product bound by this manifest. */ + private WorkProduct workProduct; + + public int getLowerBound() { + return lowerBound; + } + + public void setLowerBound(int lowerBound) { + this.lowerBound = lowerBound; + } + + public int getUpperBound() { + return upperBound; + } + + public void setUpperBound(int upperBound) { + this.upperBound = upperBound; + } + + public Alpha getAlpha() { + return alpha; + } + + public void setAlpha(Alpha alpha) { + this.alpha = alpha; + } + + public WorkProduct getWorkProduct() { + return workProduct; + } + + public void setWorkProduct(WorkProduct workProduct) { + this.workProduct = workProduct; + } + + @Override + public Alpha alpha() { + return this.alpha; + } + + @Override + public int upperBound() { + return this.upperBound; + } + + @Override + public WorkProduct workProduct() { + return this.workProduct; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/package-info.java b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/package-info.java new file mode 100644 index 0000000..a05de6e --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/alphaandworkproduct/package-info.java @@ -0,0 +1,15 @@ +/** + * AlphaAndWorkProduct, contains the base elements to form minimal practices. A + * domain model for software engineering endeavors can be created. No activities + * can be expressed using this layer, but concrete work products can be related + * to abstract domain elements + * + *

+ * The intention of the AlphaAndWorkProduct package is to provide the basic + * elements needed for the simplest form of practices. The elements and their + * relationships are presented in the diagrams below. A detailed definition of + * each of the elements is found below. + * + * @since 1.1 + */ +package mx.infotec.dads.essence.model.alphaandworkproduct; diff --git a/src/main/java/mx/infotec/dads/essence/model/competency/SECompetency.java b/src/main/java/mx/infotec/dads/essence/model/competency/SECompetency.java new file mode 100644 index 0000000..06847e5 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/competency/SECompetency.java @@ -0,0 +1,82 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.competency; + +import java.util.Collection; + +import org.omg.essence.model.competency.Competency; +import org.omg.essence.model.competency.CompetencyLevel; + +import mx.infotec.dads.essence.model.foundation.SEBasicElement; + +/** + *

+ * Description: 
+ * 
+ * + * The Class Competency. A competency encompasses the abilities, capabilities, + * attainments, knowledge, and skills necessary to do a certain kind of work. It + * is assumed that for each team member a level of competency for each + * individual competency can be named or determined. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- The possible levels are distinct
+ * self.possibleLevel->forAll (l1, l2 | l1 <> l2 implies (l1.level <> l2.level and
+ * l1.name <> l2.name))
+ * }
+ * 
+ * + *
+ * Semantics:
+ * 
+ * A competency is used for defining a capability of being able to work in a
+ * specific area. In the same way as an Alpha is an abstract thing to monitor
+ * and control and an Activity Space is an abstraction of what to do, a
+ * Competency is an abstract collection of knowledge, abilities, attitudes, and
+ * skills needed to perform a certain kind of work.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SECompetency extends SEBasicElement implements Competency { + + /** A collection of levels defined for this competency. */ + private Collection possibleLevel; + + public Collection getPossibleLevel() { + return possibleLevel; + } + + public void setPossibleLevel(Collection possibleLevel) { + this.possibleLevel = possibleLevel; + } + +} \ No newline at end of file diff --git a/src/main/java/mx/infotec/dads/essence/model/competency/SECompetencyLevel.java b/src/main/java/mx/infotec/dads/essence/model/competency/SECompetencyLevel.java new file mode 100644 index 0000000..480c78f --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/competency/SECompetencyLevel.java @@ -0,0 +1,140 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.competency; + +import java.util.Collection; + +import org.omg.essence.model.activityspaceandactivity.Activity; +import org.omg.essence.model.competency.Competency; +import org.omg.essence.model.competency.CompetencyLevel; +import org.omg.essence.model.foundation.Checkpoint; + +import mx.infotec.dads.essence.model.foundation.SELanguageElement; + +/** + *
+ * Description: 
+ * 
+ * + * The Class CompetencyLevel. A competency level defines a level of how + * competent or able a team member is with respect to the abilities, + * capabilities, attainments, knowledge, or skills defined by the respective + * competency. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Competency levels are used to create a range of abilities from poor to excellent or small scale to large scale. While a
+ * competency describes what capabilities are needed (such as “Analyst” or “Developer”), a competency level adds a
+ * qualitative grading to them. Typically, the levels range from 0 – no competence to 5 – expert. (such as “basic”,
+ * “advanced”, or “excellent”).
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SECompetencyLevel extends SELanguageElement implements CompetencyLevel { + + /** The name of the competency level */ + private String name; + + /** A short description of what the competency level is */ + private String briefDescription; + + /** + * A numeric indicator for the level, where a higher number means + * more/better competence. + */ + private int level; + + /** The activity. */ + private Collection activity; + + /** The competency. */ + private Competency competency; + + /** The checklist item. */ + private Collection checklistItem; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getBriefDescription() { + return briefDescription; + } + + public void setBriefDescription(String briefDescription) { + this.briefDescription = briefDescription; + } + + public int getLevel() { + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public Collection getActivity() { + return activity; + } + + public void setActivity(Collection activity) { + this.activity = activity; + } + + public Competency getCompetency() { + return competency; + } + + public void setCompetency(Competency competency) { + this.competency = competency; + } + + public Collection getChecklistItem() { + return checklistItem; + } + + public void setChecklistItem(Collection checklistItem) { + this.checklistItem = checklistItem; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/competency/package-info.java b/src/main/java/mx/infotec/dads/essence/model/competency/package-info.java new file mode 100644 index 0000000..596f5d6 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/competency/package-info.java @@ -0,0 +1,12 @@ +/** + * Competency, contains elements to support the specification of competencies. + * + *

+ * The intention of the Competency package is to provide facilities to add + * competencies to practices. The elements and their relationships are presented + * in the diagrams shown below. A detailed definition of each of the elements is + * found below. + * + * @since 1.1 + */ +package mx.infotec.dads.essence.model.competency; diff --git a/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SECard.java b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SECard.java new file mode 100644 index 0000000..bf7c239 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SECard.java @@ -0,0 +1,97 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.diagraminterchange; + +import org.omg.essence.model.diagraminterchange.Card; +import org.omg.essence.model.diagraminterchange.Diagram; +import org.omg.essence.model.diagraminterchange.Label; +import org.omg.essence.model.diagraminterchange.Node; +import org.omg.essence.model.diagraminterchange.Text; +import org.omg.essence.model.foundation.BasicElement; + +/** + * The Class Card. + * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SECard implements Card { + + /** The model element. */ + private BasicElement modelElement; + + /** The right header side. */ + private Label rightHeaderSide; + + /** The left header side. */ + private Node leftHeaderSide; + + /** The left body side. */ + private Diagram leftBodySide; + + /** The right body side. */ + private Text rightBodySide; + + public BasicElement getModelElement() { + return modelElement; + } + + public void setModelElement(BasicElement modelElement) { + this.modelElement = modelElement; + } + + public Label getRightHeaderSide() { + return rightHeaderSide; + } + + public void setRightHeaderSide(Label rightHeaderSide) { + this.rightHeaderSide = rightHeaderSide; + } + + public Node getLeftHeaderSide() { + return leftHeaderSide; + } + + public void setLeftHeaderSide(Node leftHeaderSide) { + this.leftHeaderSide = leftHeaderSide; + } + + public Diagram getLeftBodySide() { + return leftBodySide; + } + + public void setLeftBodySide(Diagram leftBodySide) { + this.leftBodySide = leftBodySide; + } + + public Text getRightBodySide() { + return rightBodySide; + } + + public void setRightBodySide(Text rightBodySide) { + this.rightBodySide = rightBodySide; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEDetailCard.java b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEDetailCard.java new file mode 100644 index 0000000..2798379 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEDetailCard.java @@ -0,0 +1,96 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.diagraminterchange; + +import org.omg.essence.model.diagraminterchange.DetailCard; +import org.omg.essence.model.diagraminterchange.Label; +import org.omg.essence.model.diagraminterchange.Node; +import org.omg.essence.model.diagraminterchange.Text; +import org.omg.essence.model.foundation.BasicElement; + +/** + * The Class DetailCard. + * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEDetailCard implements DetailCard { + + /** The left header side. */ + private Node leftHeaderSide; + + /** The footer. */ + private Label footer; + + /** The header. */ + private Node header; + + /** The body. */ + private Text body; + + /** The model element. */ + private BasicElement modelElement; + + public Node getLeftHeaderSide() { + return leftHeaderSide; + } + + public void setLeftHeaderSide(Node leftHeaderSide) { + this.leftHeaderSide = leftHeaderSide; + } + + public Label getFooter() { + return footer; + } + + public void setFooter(Label footer) { + this.footer = footer; + } + + public Node getHeader() { + return header; + } + + public void setHeader(Node header) { + this.header = header; + } + + public Text getBody() { + return body; + } + + public void setBody(Text body) { + this.body = body; + } + + public BasicElement getModelElement() { + return modelElement; + } + + public void setModelElement(BasicElement modelElement) { + this.modelElement = modelElement; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEDiagram.java b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEDiagram.java new file mode 100644 index 0000000..a0fe6a1 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEDiagram.java @@ -0,0 +1,51 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.diagraminterchange; + +import java.util.Collection; + +import org.omg.essence.model.diagraminterchange.Diagram; +import org.omg.essence.model.diagraminterchange.DiagramElement; + +/** + * The Class Diagram. + * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEDiagram implements Diagram { + + /** The diagram element. */ + private Collection diagramElement; + + public Collection getDiagramElement() { + return diagramElement; + } + + public void setDiagramElement(Collection diagramElement) { + this.diagramElement = diagramElement; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEDiagramElement.java b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEDiagramElement.java new file mode 100644 index 0000000..fc6b867 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEDiagramElement.java @@ -0,0 +1,36 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.diagraminterchange; + +import org.omg.essence.model.diagraminterchange.DiagramElement; + +/** + * The Class DiagramElement. + * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEDiagramElement implements DiagramElement { +} diff --git a/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SELabel.java b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SELabel.java new file mode 100644 index 0000000..90e72d9 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SELabel.java @@ -0,0 +1,36 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.diagraminterchange; + +import org.omg.essence.model.diagraminterchange.Label; + +/** + * The Class Label. + * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SELabel implements Label { +} diff --git a/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SELink.java b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SELink.java new file mode 100644 index 0000000..a29c7cb --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SELink.java @@ -0,0 +1,94 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.diagraminterchange; + +import org.omg.essence.model.diagraminterchange.Label; +import org.omg.essence.model.diagraminterchange.Link; +import org.omg.essence.model.diagraminterchange.Node; + +/** + * The Class Link. + * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SELink extends SEDiagramElement implements Link { + + /** The end 1 bounds. */ + private Label end1bounds; + + /** The target. */ + private Node target; + + /** The source. */ + private Node source; + + /** The name. */ + private Label name; + + /** The end 2 bounds. */ + private Label end2bounds; + + public Label getEnd1bounds() { + return end1bounds; + } + + public void setEnd1bounds(Label end1bounds) { + this.end1bounds = end1bounds; + } + + public Node getTarget() { + return target; + } + + public void setTarget(Node target) { + this.target = target; + } + + public Node getSource() { + return source; + } + + public void setSource(Node source) { + this.source = source; + } + + public Label getName() { + return name; + } + + public void setName(Label name) { + this.name = name; + } + + public Label getEnd2bounds() { + return end2bounds; + } + + public void setEnd2bounds(Label end2bounds) { + this.end2bounds = end2bounds; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SENode.java b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SENode.java new file mode 100644 index 0000000..2309cfb --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SENode.java @@ -0,0 +1,60 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.diagraminterchange; + +import org.omg.essence.model.diagraminterchange.Label; +import org.omg.essence.model.diagraminterchange.Node; + +/** + * The Class Node. + * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SENode extends SEDiagramElement implements Node { + + /** The bottom right label. */ + private Label bottomRightLabel; + + /** The name. */ + private Label name; + + public Label getBottomRightLabel() { + return bottomRightLabel; + } + + public void setBottomRightLabel(Label bottomRightLabel) { + this.bottomRightLabel = bottomRightLabel; + } + + public Label getName() { + return name; + } + + public void setName(Label name) { + this.name = name; + } + +} \ No newline at end of file diff --git a/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEText.java b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEText.java new file mode 100644 index 0000000..7ad86e7 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/SEText.java @@ -0,0 +1,36 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.diagraminterchange; + +import org.omg.essence.model.diagraminterchange.Text; + +/** + * The Class Text. + * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEText implements Text { +} diff --git a/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/package-info.java b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/package-info.java new file mode 100644 index 0000000..4adcde2 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/diagraminterchange/package-info.java @@ -0,0 +1,7 @@ +/** + * DiagramInterchange, contains elements to support the specification of diagram + * interchange. + * + * @since 1.1 + */ +package mx.infotec.dads.essence.model.diagraminterchange; diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SEBasicElement.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SEBasicElement.java new file mode 100644 index 0000000..ae11418 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SEBasicElement.java @@ -0,0 +1,122 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import org.omg.essence.model.GraphicalElement; +import org.omg.essence.model.foundation.BasicElement; + +/** + *

+ * Description: 
+ * 
+ * + * The Class BasicElement. Abstract superclass for all main concepts in Essence + * other than Element groups. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Basic elements are considered to represent the small set of main concepts within Essence. Basic elements are most likely
+ * the first elements of Essence a user interacts with.
+ * 
+ * Elements of Essence which are no basic elements (and no element groups) are considered to be auxiliary elements used
+ * to detail or connect basic elements.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public abstract class SEBasicElement extends SELanguageElement implements BasicElement { + + /** The name of the element. */ + private String name; + + /** + * The icon to be used when presenting the elements. + * + * @see GraphicalElement + */ + private GraphicalElement icon; + + /** + * A short and concise description of what the element is. It is discouraged + * to use rich formatting and structuring elements like section headings in + * the brief description. The content of this attribute should be a summary + * of the content fiven in attribute "description". + */ + private String briefDescription; + + /** + * A more detailed description of the element. The content of this attribute + * may be written in a markup language to allow for rich descriptions. It + * may include section headings, formatting information, hyperlinks, or + * similar to ease structured reading and navigation. + */ + private String description; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public GraphicalElement getIcon() { + return icon; + } + + public void setIcon(GraphicalElement icon) { + this.icon = icon; + } + + public String getBriefDescription() { + return briefDescription; + } + + public void setBriefDescription(String briefDescription) { + this.briefDescription = briefDescription; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SECheckpoint.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SECheckpoint.java new file mode 100644 index 0000000..8f37051 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SECheckpoint.java @@ -0,0 +1,136 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import org.omg.essence.model.alphaandworkproduct.LevelOfDetail; +import org.omg.essence.model.alphaandworkproduct.State; +import org.omg.essence.model.competency.CompetencyLevel; +import org.omg.essence.model.foundation.Checkpoint; + +/** + *
+ * Description: 
+ * 
+ * + * The Class Checkpoint. A condition that can be tested as true or false that + * contributes to the determination of whether a state (of an alpha) or a level + * of detail (of a work product) or a competency level has been attained. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Checkpoints are used as follows:
+ * 
+ *
    + *
  • The checkpoints of an alpha state are joined by AND. The state of an + * alpha is deemed to be the most advanced (favourable) state for which all + * checkpoints are true.
  • + *
  • The checkpoints of a work product level of detail are joined by OR. The + * level of detail of a work product is deemed to be the most detailed level for + * which at least one checkpoint is true.
  • + *
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SECheckpoint extends SELanguageElement implements Checkpoint{ + + /** The name of the checkpoint. */ + private String name; + + /** A description of the checkpoint. */ + private String description; + + /** An optional abbreviated version of the full description. */ + private String shortDescription; + + /** The level. */ + private LevelOfDetail level; + + /** The state. */ + private State state; + + /** The competency level. */ + private CompetencyLevel competencyLevel; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getShortDescription() { + return shortDescription; + } + + public void setShortDescription(String shortDescription) { + this.shortDescription = shortDescription; + } + + public LevelOfDetail getLevel() { + return level; + } + + public void setLevel(LevelOfDetail level) { + this.level = level; + } + + public State getState() { + return state; + } + + public void setState(State state) { + this.state = state; + } + + public CompetencyLevel getCompetencyLevel() { + return competencyLevel; + } + + public void setCompetencyLevel(CompetencyLevel competencyLevel) { + this.competencyLevel = competencyLevel; + } + +} \ No newline at end of file diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SEElementGroup.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SEElementGroup.java new file mode 100644 index 0000000..63cd0f2 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SEElementGroup.java @@ -0,0 +1,190 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import java.util.Collection; + +import org.omg.essence.model.GraphicalElement; +import org.omg.essence.model.foundation.ElementGroup; +import org.omg.essence.model.foundation.ExtensionElement; +import org.omg.essence.model.foundation.LanguageElement; +import org.omg.essence.model.foundation.MergeResolution; + +/** + *
+ * Description: 
+ * 
+ * + * The Abstract Class ElementGroup. A generic name for an Essence concept that + * names a collection of elements. Element groups are recursive, so a group may + * own other groups, as well as other (non-group) elements. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- An element group may not own itself
+ * self.allElements(ElementGroup)->excludes(self)
+ * 
+ * -- An element group may only extend elements it owns
+ * self.extensions->forAll(e | self.allElements(e.targetElement.oclType())->includes(e.targetElement))
+ * }
+ * 
+ * + *
+ * Additional Operations:
+ * 
+ * {@code
+ * -- Get all elements of a particular type which are available within this group
+ * and its referenced groups.
+ * context ElementGroup::allElements (t : OclType) : Set(t)
+ * body: self.referredElements->select(e | e.oclIsKindOf(t))
+ * ->union(self.allElements(ElementGroup)->collect(c | c.allElements(t))
+ * ->union(self.ownedElements->select(e | e.oclIsKindOf(t)))
+ * }
+ * 
+ * + *
+ * Semantics:
+ * 
+ * Element groups are used to organize Essence elements into meaningful collections such as Kernels or Practices. Elements
+ * in a particular group belong together for some reason, while elements outside that group do not belong to them. The
+ * reasoning for including elements in the group should be given in the description attribute of the group.
+ * 
+ * Element groups can own their members by reference or by value. 
+ * 
+ * If an element group owns two or more members of the same type and name, composition (cf. 9.4) is applied to them so
+ * that only one merged element of that type with that name is visible when viewing the contents of the element group.
+ * 
+ * + * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + * + */ +public abstract class SEElementGroup extends SELanguageElement implements ElementGroup { + + /** The name of the element group */ + private String name; + + /** The icon to be used when presenting the element group */ + private GraphicalElement icon; + + /** + * A short description of what the group is. It is discoraged to use rich + * formatting and structuring elements like section headings in the brief + * description. The content of this attribute should be a summary of the + * content given in attribute "description". + */ + private String briefDescription; + + /** + * A more detailed description of the group. The content of this attribute + * may be written in a markup language to allow for rich descriptions. It + * may include section headings, formatting information, hyperlinks, or + * similar to ease structured reading and navigation. + */ + private String description; + + /** The merge resolution. */ + private Collection mergeResolution; + + /** The language elements this group owns by value */ + private Collection ownedElements; + + /** The language elements this group owns by reference */ + private Collection referredElements; + + /** The extension. */ + private Collection extension; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public GraphicalElement getIcon() { + return icon; + } + + public void setIcon(GraphicalElement icon) { + this.icon = icon; + } + + public String getBriefDescription() { + return briefDescription; + } + + public void setBriefDescription(String briefDescription) { + this.briefDescription = briefDescription; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Collection getMergeResolution() { + return mergeResolution; + } + + public void setMergeResolution(Collection mergeResolution) { + this.mergeResolution = mergeResolution; + } + + public Collection getOwnedElements() { + return ownedElements; + } + + public void setOwnedElements(Collection ownedElements) { + this.ownedElements = ownedElements; + } + + public Collection getReferredElements() { + return referredElements; + } + + public void setReferredElements(Collection referredElements) { + this.referredElements = referredElements; + } + + @Override + public Collection getExtension() { + return extension; + } + + @Override + public void setExtension(Collection extension) { + this.extension = extension; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SEEndeavorAssociation.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SEEndeavorAssociation.java new file mode 100644 index 0000000..d93c180 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SEEndeavorAssociation.java @@ -0,0 +1,86 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import java.util.Collection; + +import org.omg.essence.model.foundation.EndeavorAssociation; +import org.omg.essence.model.foundation.EndeavorProperty; + +/** + *
+ * Description: 
+ * 
+ * + * The Class EndeavorAssociation. Represents associations that you want to track + * during an endeavor. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Endeavor associations are used to link actual instances of elements on metalevel 0 (aka “the endeavor level”). This can
+ * be used for instance to keep track of which particular document (an instance of a work product) was created by which
+ * particular team member (an instance of alpha “Team member”). In general, these associations have no specific semantics
+ * within Essence.
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEEndeavorAssociation implements EndeavorAssociation { + + /** The properties of this association */ + private Collection ownedEnd; + + /** End properties of the association */ + private Collection memberEnd; + + public Collection getOwnedEnd() { + return ownedEnd; + } + + public void setOwnedEnd(Collection ownedEnd) { + this.ownedEnd = ownedEnd; + } + + public Collection getMemberEnd() { + return memberEnd; + } + + public void setMemberEnd(Collection memberEnd) { + this.memberEnd = memberEnd; + } + +} \ No newline at end of file diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SEEndeavorProperty.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SEEndeavorProperty.java new file mode 100644 index 0000000..1e12830 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SEEndeavorProperty.java @@ -0,0 +1,145 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import org.omg.essence.model.foundation.EndeavorAssociation; +import org.omg.essence.model.foundation.EndeavorProperty; +import org.omg.essence.model.foundation.LanguageElement; +import org.omg.essence.model.foundation.Type; + +/** + *
+ * Description: 
+ * 
+ * + * The Class EndeavorProperty. An element to represent properties that you want + * to track during an endeavor. Each property can either be simple or be + * expressed via an association. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ *
+ * Endeavor properties are used to track individual properties of actual instances of elements during an endeavor. Endeavor
+ * properties can be defined individually for language elements. See 9.5 for the minimal set of endeavor properties that is
+ * used by the dynamic semantics of Essence.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEEndeavorProperty implements EndeavorProperty { + + /** The language element. */ + private LanguageElement languageElement; + + /** + * The association used to express this property if it is not a simple + * property. + */ + private EndeavorAssociation association; + + /** The association owning this property */ + private EndeavorAssociation owningAssociation; + + /** The type of the property */ + private Type type; + + /** Name of the property */ + private String name; + + /** Lower bound of the property */ + private int lowerBound; + + /** Upper bound of the property */ + private int upperBound; + + public LanguageElement getLanguageElement() { + return languageElement; + } + + public void setLanguageElement(LanguageElement languageElement) { + this.languageElement = languageElement; + } + + public EndeavorAssociation getAssociation() { + return association; + } + + public void setAssociation(EndeavorAssociation association) { + this.association = association; + } + + public EndeavorAssociation getOwningAssociation() { + return owningAssociation; + } + + public void setOwningAssociation(EndeavorAssociation owningAssociation) { + this.owningAssociation = owningAssociation; + } + + public Type getType() { + return type; + } + + public void setType(Type type) { + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getLowerBound() { + return lowerBound; + } + + public void setLowerBound(int lowerBound) { + this.lowerBound = lowerBound; + } + + public int getUpperBound() { + return upperBound; + } + + public void setUpperBound(int upperBound) { + this.upperBound = upperBound; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SEExtensionElement.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SEExtensionElement.java new file mode 100644 index 0000000..510877b --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SEExtensionElement.java @@ -0,0 +1,109 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import org.omg.essence.model.foundation.ElementGroup; +import org.omg.essence.model.foundation.ExtensionElement; +import org.omg.essence.model.foundation.LanguageElement; + +/** + *
+ * Description: 
+ * 
+ * + * The Class ExtensionElement. An element that extends a language element by + * replacing the content of one of its attributes + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- The target element may not be an extension element or merge resolution
+ * not self.targetElement.oclIsKindOf(ExtensionElement) and not
+ * self.targetElement.oclIsKindOf(MergeResolution)
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * If an extension X is associated with a target element T and referenced by element group C, then when T is viewed in C,
+ * what is seen is T modified by X by applying extension functions to the attributes of T. See 9.4 for the detailed
+ * mechanism.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEExtensionElement extends SELanguageElement implements ExtensionElement { + + /** The element group. */ + private ElementGroup elementGroup; + + /** The element to be extended */ + private LanguageElement targetElement; + + /** The name of the attribute which is to be extended */ + private String targetAttribute; + + /** The function applied to the target attribute */ + private String extensionFunction; + + public ElementGroup getElementGroup() { + return elementGroup; + } + + public void setElementGroup(ElementGroup elementGroup) { + this.elementGroup = elementGroup; + } + + public LanguageElement getTargetElement() { + return targetElement; + } + + public void setTargetElement(LanguageElement targetElement) { + this.targetElement = targetElement; + } + + public String getTargetAttribute() { + return targetAttribute; + } + + public void setTargetAttribute(String targetAttribute) { + this.targetAttribute = targetAttribute; + } + + public String getExtensionFunction() { + return extensionFunction; + } + + public void setExtensionFunction(String extensionFunction) { + this.extensionFunction = extensionFunction; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SEKernel.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SEKernel.java new file mode 100644 index 0000000..68beaa0 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SEKernel.java @@ -0,0 +1,122 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import java.util.Collection; + +import org.omg.essence.model.foundation.Kernel; +import org.omg.essence.model.foundation.Method; + +/** + *
+ * Description: 
+ * 
+ * + * The Class Kernel. A kernel is a set of elements used to form a common ground + * for describing a software engineering endeavor. A kernel is an element group + * that names the basic concepts (i.e., alphas, activity spaces and + * competencies) for a domain (e.g., Software Engineering). + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- A kernel can only contain alphas, alpha associations, alpha containments,
+ * activity spaces, competencies, kernels, extension elements, and merge
+ * resolutions.
+ * 
+ * self.referredElements->union(self.ownedElements)->forAll (e |
+ * e.oclIsKindOf(Alpha) or e.oclIsKindOf(AlphaAssociation) or
+ * e.oclIsKindOf(AlphaContainment) or e.oclIsKindOf(ActivitySpace) or
+ * e.oclIsKindOf(Competency) or e.oclIsKindOf(Kernel) or
+ * e.oclIsKindOf(ExtensionElement) or e.oclIsKindOf(MergeResolution))
+ * 
+ * -- The alphas associated by alpha associations are available within the kernel or
+ * -- its referred kernels.
+ * self.allElements(AlphaAssociation)->forAll (aa | self.allElements(Alpha)
+ * ->includes (aa.end1) and self.allElements(Alpha)->includes (aa.end2))
+ * 
+ * -- All input alphas of the activity spaces are available within the
+ * -- kernel or its referred kernels.
+ * self.allElements(ActivitySpace)->forAll (as | self.allElements(Alpha)
+ * ->includesAll(as.input))
+ * 
+ * -- Completion criteria are only expressed in terms of states which belong to
+ * alphas which are available in the kernel or its referred kernels.
+ * self.allElements(ActivitySpace)->forAll (as | as.completionCriterion->forAll (cc
+ * | cc.state<> null and cc.workProduct = null and self.allElements(Alpha)->exists(a
+ * | a.states->includes(cc.state))))
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * A kernel is a kind of domain model. It defines important concepts that are general to everyone when working in that
+ * domain, like software engineering development.
+ * 
+ * A kernel may be defined including references to other kernels. For example, a more basic kernel may contain elements
+ * that are meaningful to the domain of “Software Engineering” and that may be used in the specific context of “Software
+ * Engineering for safety critical” domains as defined by a referring kernel.
+ * 
+ * A kernel is closed in that elements in the kernel may only refer to elements which are also part of the kernel or its
+ * referred kernels.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEKernel extends SEElementGroup implements Kernel { + + /** The referring method. */ + private Collection referringMethod; + + /** + * A set of rules on the consistency of a particular Kernel. The format for + * writing these rules is out of the scope of this specification. It is + * recommended to use either plain text or OCL. + */ + private String consistencyRules; + + public Collection getReferringMethod() { + return referringMethod; + } + + public void setReferringMethod(Collection referringMethod) { + this.referringMethod = referringMethod; + } + + public String getConsistencyRules() { + return consistencyRules; + } + + public void setConsistencyRules(String consistencyRules) { + this.consistencyRules = consistencyRules; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SELanguageElement.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SELanguageElement.java new file mode 100644 index 0000000..315fcf0 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SELanguageElement.java @@ -0,0 +1,197 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import java.util.Collection; + +import org.omg.essence.model.foundation.ElementGroup; +import org.omg.essence.model.foundation.EndeavorProperty; +import org.omg.essence.model.foundation.ExtensionElement; +import org.omg.essence.model.foundation.LanguageElement; +import org.omg.essence.model.foundation.PatternAssociation; +import org.omg.essence.model.foundation.Resource; +import org.omg.essence.model.foundation.Tag; +import org.omg.essence.model.view.FeatureSelection; +import org.omg.essence.model.view.ViewSelection; + +/** + *
+ * Description: 
+ * 
+ * + * The Class LanguageElement. Abstract superclass for an Essence concept. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- All language elements that are not element groups need an owner
+ * (not self.oclIsKindOf(ElementGroup)) implies owner <> null
+ * 
+ * -- Each and every instance of LanguageElement may be related to each other via
+ * endeavor associations
+ * LanguageElement::allInstances->forAll(e1,e2 : LanguageElement |
+ * EndeavorAssociation::allInstances->exists(a: EndeavorAssociation | a.memberEnd
+ * ->exists(p1,p2 : EndeavorProperty | p1.languageElement=e1 and
+ * p2.languageElement=e2)))
+ * 
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Language element is the root for all basic elements, auxiliary elements and element groups. It defines the concepts within
+ * the Essence language that can be grouped to build composite entities such as Kernels and Practices.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public abstract class SELanguageElement implements LanguageElement { + + /** + * A flag indicating whether this element may be suppressed in an extension + * or composition (see 9.4.3.2 on the essence standard) + */ + private boolean isSuppressable = true; + + /** The element group that owns this language element */ + private ElementGroup owner; + + /** Tags associated with this language element */ + private Collection tag; + + /** Resources associated with this language element. */ + private Collection resource; + + /** + * Properties (defined at M1 level) that you want to track during the + * endeavor. + */ + private Collection properties; + + /** + * A list of ViewSelection selects a subset of constructs and construct + * features such as attributes and associations. + */ + private Collection viewSelection; + + /** The feature selection. */ + private Collection featureSelection; + + /** The extension. */ + private Collection extension; + + /** The referrer. */ + private Collection referrer; + + /** The pattern association. */ + private Collection patternAssociation; + + public boolean isSuppressable() { + return isSuppressable; + } + + public void setSuppressable(boolean isSuppressable) { + this.isSuppressable = isSuppressable; + } + + public ElementGroup getOwner() { + return owner; + } + + public void setOwner(ElementGroup owner) { + this.owner = owner; + } + + public Collection getTag() { + return tag; + } + + public void setTag(Collection tag) { + this.tag = tag; + } + + public Collection getResource() { + return resource; + } + + public void setResource(Collection resource) { + this.resource = resource; + } + + public Collection getProperties() { + return properties; + } + + public void setProperties(Collection properties) { + this.properties = properties; + } + + public Collection getViewSelection() { + return viewSelection; + } + + public void setViewSelection(Collection viewSelection) { + this.viewSelection = viewSelection; + } + + public Collection getFeatureSelection() { + return featureSelection; + } + + public void setFeatureSelection(Collection featureSelection) { + this.featureSelection = featureSelection; + } + + public Collection getExtension() { + return extension; + } + + public void setExtension(Collection extension) { + this.extension = extension; + } + + public Collection getReferrer() { + return referrer; + } + + public void setReferrer(Collection referrer) { + this.referrer = referrer; + } + + public Collection getPatternAssociation() { + return patternAssociation; + } + + public void setPatternAssociation(Collection patternAssociation) { + this.patternAssociation = patternAssociation; + } + +} \ No newline at end of file diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SELibrary.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SELibrary.java new file mode 100644 index 0000000..76d610a --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SELibrary.java @@ -0,0 +1,68 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import org.omg.essence.model.foundation.Library; + +/** + *
+ * Description: 
+ * 
+ * + * The Class Library. A library is a container that names a collection of + * element groups. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- A library may only own element groups
+ * self.referredElements->forAll(e | e.oclIsKindOf(ElementGroup)) and
+ * self.ownedElements->forAll(e | e.oclIsKindOf(ElementGroup))
+ * }
+ * 
+ * + *
+ * 
+ * Additional Operation:
+ * 
+ * {@code
+ * 
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SELibrary extends SEElementGroup implements Library { +} diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SEMergeResolution.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SEMergeResolution.java new file mode 100644 index 0000000..16f070a --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SEMergeResolution.java @@ -0,0 +1,107 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import org.omg.essence.model.foundation.ElementGroup; +import org.omg.essence.model.foundation.MergeResolution; + +/** + *
+ * Description: 
+ * 
+ * + * The Class MergeResolution. An element that provides a solution for a merge + * conflict as defined in 9.4.4.3. of the standard + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * If an element group refers to more than one element with the same name, these elements are merged when viewing the
+ * content of this element group. For each conflicting attribute on the merged objects, a merge resolution must be defined. It
+ * applies a resolution function to the conflicting attributes and returns the attribute value to be used as resolution. See 9.4
+ * for the detailed mechanism.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEMergeResolution extends SELanguageElement implements MergeResolution { + + /** The name of the attribute on which the conflict is solved. */ + private String targetAttribute; + + /** The name of the element on which the conflict is solved. */ + private String targetName; + + /** The function applied to the target attribute. */ + private String resolutionFunction; + + /** The element group. */ + private ElementGroup elementGroup; + + public String getTargetAttribute() { + return targetAttribute; + } + + public void setTargetAttribute(String targetAttribute) { + this.targetAttribute = targetAttribute; + } + + public String getTargetName() { + return targetName; + } + + public void setTargetName(String targetName) { + this.targetName = targetName; + } + + public String getResolutionFunction() { + return resolutionFunction; + } + + public void setResolutionFunction(String resolutionFunction) { + this.resolutionFunction = resolutionFunction; + } + + public ElementGroup getElementGroup() { + return elementGroup; + } + + public void setElementGroup(ElementGroup elementGroup) { + this.elementGroup = elementGroup; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SEMethod.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SEMethod.java new file mode 100644 index 0000000..3d1f8f3 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SEMethod.java @@ -0,0 +1,100 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import org.omg.essence.model.foundation.Kernel; +import org.omg.essence.model.foundation.Method; + +/** + *
+ * Description: 
+ * 
+ * + * The Class Method. A Method is the composition of a Kernel and a set of + * Practices to fulfill a specific purpose. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- A method can only contain practices.
+ * self.referredElements->forAll (e | e.oclIsKindOf(Practice)) and
+ * self.ownedElements->forAll (e | e.oclIsKindOf(Practice))
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * A method contains a set of practices to express the practitioners’ way of working in order to fulfill a specific purpose. The
+ * method purpose should consider the stakeholder needs, particular conditions, and the desired software product. The set of
+ * practices that makes up a method should contribute and be sufficient to the achievement of this purpose.
+ * 
+ * For example, a method purpose can be related to developing, maintaining, or integrating a software product.
+ * 
+ * The set of practices, that articulate a method, should satisfy the coherence, consistency, and completeness properties. The
+ * set of practices is coherent if the objective of each practice contributes to the entire method purpose, is consistent if each
+ * of its entries and results are interrelated and useful. Finally, it is complete if the achievement of all practice objectives
+ * fulfills entirely the method purpose and produces expected output.
+ * 
+ * Those properties are most likely not true from the beginning while authoring a method.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEMethod extends SEElementGroup implements Method { + + /** + * The purpose of this Method. The content of this attribute should be an + * explicit short statement that describes the goal that the method pursues. + * Additional explanations can be given in the attribute “description” + * inherited from “ElementGroup”. + */ + private String purpose; + + /** The Kernel this Method is based on */ + private Kernel baseKernel; + + public String getPurpose() { + return purpose; + } + + public void setPurpose(String purpose) { + this.purpose = purpose; + } + + public Kernel getBaseKernel() { + return baseKernel; + } + + public void setBaseKernel(Kernel baseKernel) { + this.baseKernel = baseKernel; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SEPattern.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SEPattern.java new file mode 100644 index 0000000..630cabd --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SEPattern.java @@ -0,0 +1,80 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import java.util.Collection; + +import org.omg.essence.model.foundation.Pattern; +import org.omg.essence.model.foundation.PatternAssociation; + +/** + *
+ * Description: 
+ * 
+ * + * The Class Pattern. A pattern is a generic mechanism for naming complex + * concepts that are made up of several Essence elements. A pattern is defined + * in terms of pattern associations. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Pattern is a general mechanism for defining a structure of language elements. Typically, the pattern references other
+ * elements in a practice or kernel. For example, a role may be defined by referencing required competencies, having
+ * responsibility of work products, and participation in activities. Another example could be a phase which groups activity
+ * spaces that should be performed during that phase.
+ * 
+ * Patterns can also be used to model complex conditions. For example, a pattern for pre-conditions can create associations
+ * to activities, work products and level of detail to express that particular work products must be present in at least the
+ * designated levels of detail to be ready to start the particular activities.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEPattern extends SEBasicElement implements Pattern { + + /** Named association types between elements */ + private Collection association; + + public Collection getAssociation() { + return association; + } + + public void setAssociation(Collection association) { + this.association = association; + } +} diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SEPatternAssociation.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SEPatternAssociation.java new file mode 100644 index 0000000..699fb8f --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SEPatternAssociation.java @@ -0,0 +1,104 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import java.util.Collection; + +import org.omg.essence.model.foundation.LanguageElement; +import org.omg.essence.model.foundation.Pattern; +import org.omg.essence.model.foundation.PatternAssociation; + +/** + *
+ * Description: 
+ * 
+ * + * The Class PatternAssociation. Pattern associations are used to create named + * links between the elements of a pattern + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- A pattern association may not refer to other pattern associations, element
+ * groups, extension elements, or merge resolutions
+ * self.elements->forAll (e | not e.oclIsKindOf(PatternAssocation) and not
+ * e.oclIsKindOf(ElementGroup) and not e.oclIsKindOf(ExtensionElement) and not
+ * e.oclIsKindOf(MergeResolution))
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Each pattern association introduces elements to take part in a pattern. The name of the pattern association should explain
+ * the meaning these elements have inside the pattern. For example, in a pattern defining a toolset there may be a pattern
+ * association named “used for” referring to an activity, another pattern association named “used on” referring to a work
+ * product, and a third pattern association named “suitable for” referring to a level of detail on the work product that can be
+ * achieved with that toolset.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEPatternAssociation extends SELanguageElement implements PatternAssociation{ + + /** Name of the association. */ + private String name; + + /** The elements taking part in the pattern via this association */ + private Collection elements; + + /** The pattern. */ + private Pattern pattern; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Collection getElements() { + return elements; + } + + public void setElements(Collection elements) { + this.elements = elements; + } + + public Pattern getPattern() { + return pattern; + } + + public void setPattern(Pattern pattern) { + this.pattern = pattern; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SEPractice.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SEPractice.java new file mode 100644 index 0000000..3421b23 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SEPractice.java @@ -0,0 +1,210 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import java.util.Collection; + +import org.omg.essence.model.foundation.Practice; + +/** + *
+ * Description: 
+ * 
+ * + * The Class Practice. A practice is a repeatable approach to doing something + * with a specific objective in mind. A practice describes how to handle a + * specific aspect of a software engineering endeavor, including the + * descriptions of all relevant elements necessary to express the desired work + * guidance that is required to achieve the purpose of the practice. A practice + * can be defined as a composition of other practices. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- The alphas and the work products associated by the work product manifests are
+ * -- visible within the practice.
+ * self.allElements(WorkProductManifest)->forAll (wpm |
+ * self.allElements(Alpha)->includes (wpm.alpha) and
+ * self.allElements(WorkProduct)->includes (wpm.workProduct)
+ * 
+ * -- Associated activities are visible within the practice.
+ * self.allElements(ActivityAssociation)->forAll (a | (self.allElements(Activity)
+ * ->includes(a.end1) or self.allElements(ActivitySpace)->includes(a.end1)) and
+ * (self.allElements(Activity)->includes(a.end2) or self.allElements(ActivitySpace)
+ * ->includes(a.end2)))
+ * 
+ * -- All alphas and work products involved in actions of activities are
+ * -- available within the practice.
+ * self.allElements(Activity)->forAll (a | a.action->forAll ( ac |
+ * self.allElements(WorkProduct)->includesAll (ac.workProduct) and
+ * self.allElements(Alpha)->includesAll (ac.alpha))
+ * 
+ * -- Completion criteria are only expressed in terms of states which belong to
+ * alphas or levels of detail which belong to work products which are available in
+ * the practice.
+ * self.allElements(ActivitySpace)->forAll (as | as.completionCriterion->forAll (cc
+ * | (cc.state<> null and cc.levelOfDetail = null and self.allElements(Alpha)
+ * ->exists(a | a.states->includes(cc.state))) or (cc.state = null and
+ * cc.levelOfDetail<> null and self.allElements(WorkProduct)->exists(wp |
+ * wp.levelsOfDetail->includes(cc.workProduct)))))
+ * 
+ * -- The activities’ required competencies are visible within the practice. 
+ * self.allElements(Activity)->forAll(a | self.allElements(Competency)->exists (c |
+ * c.possibleLevel->includes (a.requiredCompetencyLevel))
+ * 
+ * -- All elements associated with a patterns are visible within the practice.
+ * self.allElements(Pattern)->forAll (p | p.associations->forAll (pa | pa.elements
+ * ->forall (pae | self.allElements(pae.oclType)->includes(pae))
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * 
+ * A practice addresses a specific aspect of development or teamwork. It provides the guidance to characterize the problem,
+ * the strategy to solve the problem, and instructions to verify that the problem has indeed been addressed. It also describes
+ * what supporting evidence, if any, is needed and how to make the strategy work in real life.
+ * 
+ * A practice provides a systematic and repeatable way of work focused on the achievement of an objective. When the
+ * practice is made up by activities, the completion criteria derived from them are used to verify if the produced result
+ * achieves the practice’s objective. To evaluate the practice performance and the objectives’ achievement, selected
+ * measures can be associated to it. Measures are estimated and collected during the practice execution.
+ * 
+ * As might be expected, there are several different kinds of practices to address all different areas of development and
+ * teamwork, including (but not limited to):
+ * 
+ *
    + *
  • Development Practices – such as practices for developing components, + * designing user interfaces, establishing an architecture, planning and + * assessing iterations, or estimating effort.
  • + *
  • Social Practices – such as practices on teamwork, collaboration, or + * communication
  • + *
  • Organizational Practices – such as practices on milestones, gateway + * reviews, or financial controls.
  • + *
+ * + *
+ * 
+ * Except trivial examples, a practice does not capture all aspects of how to perform a development effort. Instead, the
+ * practice addresses only one aspect of it. To achieve a complete description, practices can be composed. The result of
+ * composing two practices is another practice capturing all aspect of the composed ones. In this way, more complete and
+ * powerful practices can be created, eventually ending up with one that describes how an effort is to be performed, i.e., a
+ * method.
+ * 
+ * The definition of a practice may be based on elements defined in a kernel. These elements, like alphas, may be used (and
+ * extended) when defining elements specific to the practice, like work products.
+ * 
+ * A practice may be a composition of other practices. All elements of the other practices are merged and the result becomes
+ * a new practice (see 9.4 for the definition of composition).
+ * 
+ * A practice is closed in that elements in the practice may only refer to elements which are also part of the practice or the
+ * element groups this practice relates to.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEPractice extends SEElementGroup implements Practice { + + /** + * Rules on the consistency of a particular Practice. The format for writing + * these rules is out of the scope of this specification. It is recommended + * to use either plain text or OCL. + */ + private String consistencyRules; + + /** + * The objective of this Practice, expressed as a concise and isolated + * phrase. The content of this attribute should be an explicit and short + * statement that describes the goal that the practice pursues. Additional + * explanations can be given in the attribute “description” inherited from + * “ElementGroup”. + */ + private String objective; + + /** + * List of standard units used to evaluate the practice performance and the + * objectives’ achievement. + */ + private Collection measures; + + /** + * Expected characteristics of elements needed to start the execution of a + * practice. + */ + private Collection entry; + + /** + * Expected characteristics of elements required as outputs after the + * execution a practice is completed. + */ + private Collection result; + + public String getConsistencyRules() { + return consistencyRules; + } + + public void setConsistencyRules(String consistencyRules) { + this.consistencyRules = consistencyRules; + } + + public String getObjective() { + return objective; + } + + public void setObjective(String objective) { + this.objective = objective; + } + + public Collection getMeasures() { + return measures; + } + + public void setMeasures(Collection measures) { + this.measures = measures; + } + + public Collection getEntry() { + return entry; + } + + public void setEntry(Collection entry) { + this.entry = entry; + } + + public Collection getResult() { + return result; + } + + public void setResult(Collection result) { + this.result = result; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SEPracticeAsset.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SEPracticeAsset.java new file mode 100644 index 0000000..4b4cbd9 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SEPracticeAsset.java @@ -0,0 +1,62 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import org.omg.essence.model.foundation.PracticeAsset; + +/** + *
+ * Description: 
+ * 
+ * + * The Class PracticeAsset. A practice asset is a container that names a + * collection of language element that are no element groups. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- A practice asset may not own element groups
+ * self.referredElements->forAll(e | not e.oclIsKindOf(ElementGroup)) and
+ * self.ownedElements.>forAll(e | not e.oclIsKindOf(ElementGroup))
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ *A practice asset contains elements intended to be reused while building practices. Different to a kernel, the elements in a
+ *practice asset do not necessarily form a common ground or vocabulary. Different to a practice, the elements in a practice
+ *asset do not necessarily address a particular problem or provide explicit guidance.
+ *
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEPracticeAsset extends SEElementGroup implements PracticeAsset{ +} diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SEResource.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SEResource.java new file mode 100644 index 0000000..1518c0d --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SEResource.java @@ -0,0 +1,92 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import org.omg.essence.model.foundation.LanguageElement; +import org.omg.essence.model.foundation.Resource; + +/** + *
+ * Description: 
+ * 
+ * + * The Class Resource. A source of information or content, such as a website, + * that is outside the Essence model and referenced from it, for instance by a + * URL + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Resources are used to make information available from an Essence model without translating this information into terms
+ * of Essence elements and their attributes explicitly. This can for instance be used if the formal model should be kept small
+ * for some reason while storing additional information informally in resources. It can also be used if a complex practice or
+ * method is to be adopted partially in Essence, while the full practice or method description lives as an external resource
+ * outside the Essence model.
+ * 
+ * Resources are also used to attach external objects like templates, tools, study material, or similar to language elements.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEResource extends SELanguageElement implements Resource{ + + /** + * A reference to the content of the resource. The reference can be provided + * in any suitable way, e.g., as a hyperlink or as a full text document. + */ + private String content; + + /** The language element */ + private LanguageElement languageElement; + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public LanguageElement getLanguageElement() { + return languageElement; + } + + public void setLanguageElement(LanguageElement languageElement) { + this.languageElement = languageElement; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SETag.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SETag.java new file mode 100644 index 0000000..a14bd22 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SETag.java @@ -0,0 +1,87 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import org.omg.essence.model.foundation.LanguageElement; +import org.omg.essence.model.foundation.Tag; + +/** + *
+ * Description: 
+ * 
+ * + * The Class Tag. A non-empty label that can be attached to a language element. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- Value may not be empty
+ * not self.value.isEmpty()
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Tagging allows to add user defined or tool specific information to any language element. It is up to the user or tool
+ * vendor who applied the tags to define tagging schemes and interpret them. Examples for tagging include author tags,
+ * version tags, and categorization into areas of concern like “endeavor space”, “customer space”, and “solution space”.
+ * 
+ * Note that this element is untyped and thus does not have a name attribute. For typed tags suitable for key-value-pairs and
+ * tags with empty values see 9.3.6.4.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SETag extends SELanguageElement implements Tag { + + /** The Value of the tag. */ + private String value; + + /** The language element. */ + private LanguageElement languageElement; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public LanguageElement getLanguageElement() { + return languageElement; + } + + public void setLanguageElement(LanguageElement languageElement) { + this.languageElement = languageElement; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/SEType.java b/src/main/java/mx/infotec/dads/essence/model/foundation/SEType.java new file mode 100644 index 0000000..88d9df7 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/SEType.java @@ -0,0 +1,90 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.foundation; + +import java.util.Collection; + +import org.omg.essence.model.foundation.EndeavorProperty; +import org.omg.essence.model.foundation.Type; + +/** + *
+ * Description: 
+ * 
+ * + * The Class Type. Not defined into the standard + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * }
+ * 
+ * + *
+ * 
+ * Additional Operation:
+ * 
+ * {@code
+ * 
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEType implements Type { + + /** The property. */ + private Collection property; + + /** The name. */ + private String name; + + public Collection getProperty() { + return property; + } + + public void setProperty(Collection property) { + this.property = property; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/foundation/package-info.java b/src/main/java/mx/infotec/dads/essence/model/foundation/package-info.java new file mode 100644 index 0000000..a9a29ea --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/foundation/package-info.java @@ -0,0 +1,14 @@ +/** + * Foundation, contains the base elements to form a minimal core of the + * language. It contains elements to organize sets of practices. + * + *

+ * The intention of the Foundation package is to provide all the base elements, + * including abstract super classes, necessary to form a baseline foundation for + * the Language. The elements and their relationships are presented in the + * diagrams below. A detailed definition of each of the elements is found in the + * following subclasses. + * + * @since 1.1 + */ +package mx.infotec.dads.essence.model.foundation; diff --git a/src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SETypedPattern.java b/src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SETypedPattern.java new file mode 100644 index 0000000..81f1f49 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SETypedPattern.java @@ -0,0 +1,74 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.userdefinedtypes; + +import org.omg.essence.model.userdefinedtypes.TypedPattern; +import org.omg.essence.model.userdefinedtypes.UserDefinedType; + +import mx.infotec.dads.essence.model.foundation.SEPattern; + +/** + *

+ * Description: 
+ * 
+ * + * The Class TypedPattern. A pattern that has a user defined type. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Typed patterns are used to ease interchange and consistent interpretation of complex patterns across tools and
+ * organizations. Based on the type given to the pattern, certain pattern associations can be expected to be present or not
+ * present on a particular pattern instance.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SETypedPattern extends SEPattern implements TypedPattern { + + /** The user defined type associated with this pattern */ + private UserDefinedType kind; + + public UserDefinedType getKind() { + return kind; + } + + public void setKind(UserDefinedType kind) { + this.kind = kind; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SETypedResource.java b/src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SETypedResource.java new file mode 100644 index 0000000..cce89ca --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SETypedResource.java @@ -0,0 +1,74 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.userdefinedtypes; + +import org.omg.essence.model.userdefinedtypes.TypedResource; +import org.omg.essence.model.userdefinedtypes.UserDefinedType; + +import mx.infotec.dads.essence.model.foundation.SEResource; + +/** + *
+ * Description: 
+ * 
+ * + * The Class TypedResource. A resource that has a user defined type. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Typed resources are used to ease interchange and consistent interpretation of resources across tools and organizations.
+ * Based on the type given to a resource, tools and users can decide how to interpret, display, and use the content of the
+ * resource.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SETypedResource extends SEResource implements TypedResource { + + /** The user defined type associated with this resource. */ + private UserDefinedType kind; + + public UserDefinedType getKind() { + return kind; + } + + public void setKind(UserDefinedType kind) { + this.kind = kind; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SETypedTag.java b/src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SETypedTag.java new file mode 100644 index 0000000..ed9e3db --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SETypedTag.java @@ -0,0 +1,74 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.userdefinedtypes; + +import org.omg.essence.model.userdefinedtypes.TypedTag; +import org.omg.essence.model.userdefinedtypes.UserDefinedType; + +import mx.infotec.dads.essence.model.foundation.SETag; + +/** + *
+ * Description: 
+ * 
+ * + * The Class TypedTag. A tag that has a user defined type. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * Typed tags are used to ease interchange and consistent interpretation of tags across tools and organizations. Based on the
+ * type given to the tag, certain values can be expected to be used on a particular tag instance. Descriptions provided in the
+ * type of the tag can be displayed as introductory information to a list of all language elements tagged with this tag.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SETypedTag extends SETag implements TypedTag { + + /** The user defined type associated with this tag. */ + private UserDefinedType kind; + + public UserDefinedType getKind() { + return kind; + } + + public void setKind(UserDefinedType kind) { + this.kind = kind; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SEUserDefinedType.java b/src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SEUserDefinedType.java new file mode 100644 index 0000000..81b9e25 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/SEUserDefinedType.java @@ -0,0 +1,142 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.userdefinedtypes; + +import java.util.Collection; + +import org.omg.essence.model.userdefinedtypes.TypedPattern; +import org.omg.essence.model.userdefinedtypes.TypedResource; +import org.omg.essence.model.userdefinedtypes.TypedTag; +import org.omg.essence.model.userdefinedtypes.UserDefinedType; + +import mx.infotec.dads.essence.model.foundation.SELanguageElement; + +/** + *
+ * Description: 
+ * 
+ * + * The Class UserDefinedType. A user defined type is a named type containing a + * description and constraints that can be used to detail patterns, resources, + * and tags. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ *User defined types are intended to detail, explain, and constrain the proper usage of particular patterns, resources, or tags.
+ *
+ *The constraints defined by the type are meant to be evaluated on each typed element that is associated with this type.
+ *Elements on which the evaluation fails are considered ill-defined. For example, a constraint on a type called “triary
+ *pattern” could express that this type is intended to be used on typed patterns with at exactly three pattern associations.
+ *Hence, using this type on other elements than typed patterns would be reported as ill-defined usage. Similarly, using this
+ *type on a typed pattern with more or less than three pattern associations would also be ill-defined usage.
+ *
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEUserDefinedType extends SELanguageElement implements UserDefinedType { + + /** The name of the type. */ + private String name; + + /** A short description of what the type is about. */ + private String description; + + /** + * Rules that apply to all constructs using this type. It is recommended to + * use either plain text or OCL. + */ + private String constraint; + + /** The typed resource. */ + private Collection typedResource; + + /** The typed pattern. */ + private Collection typedPattern; + + /** The typed tag. */ + private Collection typedTag; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getConstraint() { + return constraint; + } + + public void setConstraint(String constraint) { + this.constraint = constraint; + } + + public Collection getTypedResource() { + return typedResource; + } + + public void setTypedResource(Collection typedResource) { + this.typedResource = typedResource; + } + + public Collection getTypedPattern() { + return typedPattern; + } + + public void setTypedPattern(Collection typedPattern) { + this.typedPattern = typedPattern; + } + + public Collection getTypedTag() { + return typedTag; + } + + public void setTypedTag(Collection typedTag) { + this.typedTag = typedTag; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/package-info.java b/src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/package-info.java new file mode 100644 index 0000000..6a9f30a --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/userdefinedtypes/package-info.java @@ -0,0 +1,9 @@ +/** + * UserDefinedTypes, contains elements to enrich simple elements from Foundation + * with type information. + * + *

+ * + * @since 1.1 + */ +package mx.infotec.dads.essence.model.userdefinedtypes; diff --git a/src/main/java/mx/infotec/dads/essence/model/view/SEFeatureSelection.java b/src/main/java/mx/infotec/dads/essence/model/view/SEFeatureSelection.java new file mode 100644 index 0000000..51586b0 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/view/SEFeatureSelection.java @@ -0,0 +1,105 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.view; + +import java.util.Collection; + +import org.omg.essence.model.foundation.LanguageElement; +import org.omg.essence.model.view.FeatureSelection; +import org.omg.essence.model.view.ViewSelection; + +import mx.infotec.dads.essence.model.foundation.SELanguageElement; + +/** + *

+ * Description: 
+ * 
+ * + * The Class FeatureSelection. A reference to a construct feature such as a + * particular attribute or association. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * true
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * A feature selection names a feature (property or association) from a language construct which is to be included in a view.
+ * The feature is identified by its name, since property and association names are unique within a language element. If a
+ * feature with the given name does not exist, this feature selection does not contribute anything to the view.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEFeatureSelection extends SELanguageElement implements FeatureSelection { + + /** + * The feature name. The name of the referred feature, such as the name of + * an attribute or the role name of an association. + */ + private String featureName; + + /** The view selection. */ + private Collection viewSelection; + + /** The construct. */ + private LanguageElement construct; + + public String getFeatureName() { + return featureName; + } + + public void setFeatureName(String featureName) { + this.featureName = featureName; + } + + @Override + public Collection getViewSelection() { + return viewSelection; + } + + @Override + public void setViewSelection(Collection viewSelection) { + this.viewSelection = viewSelection; + } + + public LanguageElement getConstruct() { + return construct; + } + + public void setConstruct(LanguageElement construct) { + this.construct = construct; + } + +} diff --git a/src/main/java/mx/infotec/dads/essence/model/view/SEViewSelection.java b/src/main/java/mx/infotec/dads/essence/model/view/SEViewSelection.java new file mode 100644 index 0000000..e8b2f0b --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/view/SEViewSelection.java @@ -0,0 +1,146 @@ +/* + * + * The MIT License (MIT) + * Copyright (c) 2016 Daniel Cortes Pichardo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package mx.infotec.dads.essence.model.view; + +import java.util.Collection; + +import org.omg.essence.model.foundation.LanguageElement; +import org.omg.essence.model.view.FeatureSelection; +import org.omg.essence.model.view.ViewSelection; + +import mx.infotec.dads.essence.model.foundation.SELanguageElement; + +/** + *
+ * Description: 
+ * 
+ * + * The Class ViewSelection. A ViewSelection selects a subset of constructs and + * construct features such as attributes and associations. + * + *
+ * 
+ * Invariant:
+ * 
+ * {@code
+ * -- The featureSelections in a ViewSelection V refers to constructs that are
+ * part of constructSelections in V. self.featureSelection->forAll(fs |
+ * self.constructSelection -> inludes(fs.construct))
+ * }
+ * 
+ * + *
+ * 
+ * Semantics:
+ * 
+ * A feature selection names a feature (property or association) from a language construct which is to be included in a view.
+ * The feature is identified by its name, since property and association names are unique within a language element. If a
+ * feature with the given name does not exist, this feature selection does not contribute anything to the view.
+ * 
+ * 
+ * + * @author Daniel Cortes Pichardo + * @version 1.1 + * @since essence 1.1 + */ +public class SEViewSelection extends SELanguageElement implements ViewSelection { + + /** The name of the view. */ + private String name; + + /** A description of the view, including the purpose of the view. */ + private String description; + + /** The referring view selection. */ + private Collection referringViewSelection; + + /** + * The selected constructs (such as Alpha, State, etc) to be included in the + * view. + */ + private Collection constructSelection; + + /** + * ViewSelections to be included in this ViewSelection (provides a means to + * build extended and more sophisticated views based on existing/smaller + * views) + */ + private Collection includedViewSelection; + + /** + * The selected features, such as attributes and associations of constructs + * to be included in the view. + */ + private Collection featureSelection; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Collection getReferringViewSelection() { + return referringViewSelection; + } + + public void setReferringViewSelection(Collection referringViewSelection) { + this.referringViewSelection = referringViewSelection; + } + + public Collection getConstructSelection() { + return constructSelection; + } + + public void setConstructSelection(Collection constructSelection) { + this.constructSelection = constructSelection; + } + + public Collection getIncludedViewSelection() { + return includedViewSelection; + } + + public void setIncludedViewSelection(Collection includedViewSelection) { + this.includedViewSelection = includedViewSelection; + } + + @Override + public Collection getFeatureSelection() { + return featureSelection; + } + + @Override + public void setFeatureSelection(Collection featureSelection) { + this.featureSelection = featureSelection; + } +} diff --git a/src/main/java/mx/infotec/dads/essence/model/view/package-info.java b/src/main/java/mx/infotec/dads/essence/model/view/package-info.java new file mode 100644 index 0000000..6aca457 --- /dev/null +++ b/src/main/java/mx/infotec/dads/essence/model/view/package-info.java @@ -0,0 +1,20 @@ +/** + * View, contains elements to support the specification of view contents. + * + *

+ * A user interacts through the realization of one or more views as he or she + * works according to a kernel, practice, or method. The views provide a means + * for users to interact with a relevant subset, and relevant details, of + * Essence language constructs as they are used to describe a method instance. + * The overall objective with the views is to be able to provide the right and + * purposeful support for different types of users and at different points in + * time; and as a consequence, help in avoiding information overflow of language + * construct detail. This is because different types of users have different + * needs or interests in the details of a method instance description. Some + * users need very little details whereas others need more. For this purpose, + * the Essence language introduces the ViewSelection construct to support the + * specification of view contents + * + * @since 1.1 + */ +package mx.infotec.dads.essence.model.view; diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 0000000..e69de29 diff --git a/src/test/java/mx/infotec/dads/essence/EssenceImplApplicationTests.java b/src/test/java/mx/infotec/dads/essence/EssenceImplApplicationTests.java new file mode 100644 index 0000000..46fadd4 --- /dev/null +++ b/src/test/java/mx/infotec/dads/essence/EssenceImplApplicationTests.java @@ -0,0 +1,16 @@ +package mx.infotec.dads.essence; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class EssenceImplApplicationTests { + + @Test + public void contextLoads() { + } + +}