goal_model Manage [health service] { softgoal Make [health service] better (and) {} goal Manage [health service] (and) { goal Manage [complaints] and [notifications] (and) { task Specify [complaint] (and) { task Select [kind of complaint] (and) { task Select [diverse complaint] (or) {} task Select [food complaint] (or) {} task Select [animal complaint] (or) {} } task Register [kind], [date], [time] of the [complaint] (and) {} task Request [complaint information] (and) {} task Register [complaint information] (and) {} task Show [complaint code] (and) {} } task Update [complaint] (and) { task Request [complaint code] (and) {} task Show [complaint information] (and) {} task Request [conclusion] (and) {} task Register [conclusion] and [employee] who gave conclusion (and) {} } } goal Make [information on health service] available (and) { task Register [information] (and) { task Register [health unit] (and) {} task Register [speacialty] (and) {} task Register [employee] (and) {} task Register [disease] (and) {} task Register [symptom] (and) {} } task Provide [information] (and) { task Provide [health guide information] (or) { task Show [health units] take care of a specific [specialty] (or) { task Select [specialty] (and) {} } task Show [specialties] of a [health unit] (or) { task Select [unit] (and) {} } } task Provide [diverse information] (or) { task Provide [complaint information] (and) { task_ref Request [complaint code] (and) task_ref Show [complaint information] (and) } task Provide [diseases] (and) { task Select [disease] (and) {} task Show [disease] (and) {} } } } } } correlation (help) { source = goal_ref Manage [health service] (and) target = softgoal_ref Make [health service] better (and) } } goal_model Persistence { goal Persistence (and) { task Persistence in [DB] (and) { task Verify if [DB] is connected (and) {} task Initiate [DB] (and) {} task Connect [DB] (and) {} task Make register operation (and) { task Include [data] (or) {} task Select [data] (or) {} task Delete [data] (or) {} task Update [data] (or) {} } task Disconnect [DB] (and) {} } } crosscutting {source = Persistence in [DB](T15.1.1) pointcut (P15.1): include(Register.*; task; name) and not include( Register [information] ) pointcut (P15.2): include(Configurability) intertype declaration (element): P15.2 { task Set [DB] (make) { task Select [Microsoft Access] (or) {} task Select [Oracle] (or) {} task Select [MySQL] (or) {} } } advice (around): P15.1 { task_ref Make register operation (and) } } } goal_model Reliability { softgoal Reliability (and) {} goal Handling [exception] (and) { task Detect [exception] (and) {} task Apply [dealer] (and) {} } crosscutting {source = Detect [exception](T5.2.1) pointcut (PC5.3): include(Persistence in [DB]) pointcut (PC5.4): include(Authentication by Login) pointcut (PC5.5): include(Availability) intertype declaration (element): PC5.3 { task Detect [persistence exception] (and) {} } intertype declaration (element): PC5.4 { task Detect [authentication exception] (and) {} } intertype declaration (element): PC5.5 { task Detect [availability exception] (and) {} } } correlation (help) { source = softgoal_ref Reliability (and) target = softgoal_ref Make [health service] better (and) } correlation (make) { source = goal_ref Handling [exception] (and) target = softgoal_ref Reliability (and) } } goal_model Security { softgoal Security (and) { softgoal Availability (make) {} } goal Authentication (and) { task Authentication by Login (and) {} task Validate [data] (and) { task Compare [data] with [credentials] (and) {} } goal Authorization (and) { task Select [permissions] to [data] (and) {} task Set [permissions] (and) {} task Control [access] (and) { task Restrict [access] to [functions] (and) {} task Restrict [access] to [data] (and) {} } } correlation (make) { source = softgoal_ref Authentication (and) target = softgoal_ref Security (and) } crosscutting {source = Authentication(G9.3) pointcut (P9.3.1): include(Update [complaint]) and include(Register [information]) advice (around): P9.3.1 { task_ref Authentication by Login (and) } } } goal Cryptography (and) { task Assymmetric cryptography (or) {} task Symmetric cryptography (or) {} task Make [cryptography operations] (and) { task Encrypt [data] (and) {} task Decrypt [data] (and) {} } correlation (help) { source = goal_ref Cryptography (and) target = softgoal_ref Security (and) } crosscutting {source = Cryptography(G9.2) pointcut (PC9.3.5.1): include(Authentication by Login) advice (around): PC9.3.5.1 { task_ref Symmetric cryptography (and) } } } correlation (help) { source = softgoal_ref Security (and) target = goal_ref Manage [health service] (and) } } goal_model Performance { softgoal Performance (and) {} goal Response time must not exceed 5 seconds (and) {} goal Capability to handle 20 simultaneous users (and) {} correlation (help) { source = goal_ref Response time must not exceed 5 seconds (and) target = softgoal_ref Performance (and) } correlation (help) { source = goal_ref Capability to handle 20 simultaneous users (and) target = softgoal_ref Performance (and) } correlation (help) { source = softgoal_ref Performance (and) target = softgoal_ref Make [health service] better (and) } } goal_model Usability { softgoal Usability (and) { softgoal Usability [documentation] (make) { softgoal Usability [help] available on user interface (make) {} } softgoal Usability [user interface] (make) { softgoal Accessibility (help) { task Access [functionality] with mouse (make) {} task Access [functionality] with keyboard (make) {} } task Use [check box] (make) {} task Use [drop down box] (make) {} task Show [pop up window] (make) {} task Show [specific form] (make) {} task Show [information] friendly (make) {} crosscutting {source = Usability [user interface](S3.1.2) pointcut (PC3.2): include( Select [kind of complaint] ) and include( Select [specialty] ) and include( Select [unit] ) pointcut (PC3.3): include(Request.*; task; name) pointcut (PC3.4): include(Show.*; task; name) advice (around): PC3.2 { task_ref Use [drop down box] (and)} advice (around): PC3.3 { task_ref Show [specific form] (and)} advice (around): PC3.4 { task_ref Show [information] friendly (and) } } } } softgoal Configurability (make) { correlation (help) { source = softgoal_ref Configurability (and) target = softgoal_ref Usability (and) } } correlation (help) { source = softgoal_ref Usability (and) target = softgoal_ref Make [health service] better (and) } }