Introduction to Heterocyclic Organic Chemistry

Introduction to Heterocyclic Organic Chemistry
Slide Note
Embed
Share

Heterocyclic organic compounds play a crucial role in various fields, from natural materials to pharmaceuticals. Understanding the classification of heterocycles is essential for exploring their applications in new materials with unique properties.

  • Heterocycles
  • Organic Chemistry
  • Pharmaceutical
  • Classification
  • Chemistry

Uploaded on Feb 26, 2025 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Combinatorial Interaction Testing for Automated Constraint Repair Angelo Gargantini1, Justyna Petke2, Marco Radavelli1 1University of Bergamo, Italy 2UCL, London, UK Ack: thanks to BEN team (Laleh Shikh Gholamhosseingh, UTA) and Paolo Vavassori (UniBG) International Workshop on Combinatorial Testing 2017

  2. Angelo Gargantini - CIT for Automated Constraint Repairtests Outline The context Combinatorial models x highly configurable systems Model M and System S (Problem and solution spaces) Constraints Faults in constraints in CIT models Fault identification and repair process Discovering failure inducing combinations by using BEN Repairing the constraints Experiments: Is it possible to repair faulty models? Using mutation A real case study Django Conclusions 13 March 2017 - IWCT2017

  3. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Assumptions Combinatorial model M Parameters and constraints Configurable system S Problem space Solution space Most software systems can be configured to better address users needs. Modelling parameters and constraints among them bring great benefits analysis, test generation, etc. Constraints model inconsistencies between certain hardware components, limitations of the possible system configurations, or design choices We assume parameters and their domains are correctly captured in the specification, while the constraints may contain some faults.

  4. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Goal of the approach Combinatorial model M Configurable system S Spin Rinse Model WashingMachine Parameters: Boolean HalfLoad; Enumerative Rinse {Delicate Drain Wool }; Enumerative Spin { Low Mid High }; end Constraints: # HalfLoad => Spin!=Spin.High # # Rinse==Rinse.Delicate => HalfLoad # end HalfLoad Conform ance??? A novel automated approach for finding and fixing conformance faults between the given software system and its combinatorial model. Assume: faults in the model and not in the system Goal: discovering and repairing faults in the constraints of the model

  5. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests What is a fault? Configurable system S Combinatorial model M A configuration/test t Assume exists! May be expensive val oracle {true, false} {true, false} val(t) iff t is correct according to the model M i.e. t satisfies the constraints oracle(t) iff t is correct according to the system S i.e., S correctly works with t correctness iff, for every t, ??? ? = ??????(?) We say that the model contains a conformance fault if there exists a ? such that ???(?) ??????(?)

  6. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Two types of faults 1. if ??? is true and ?????? is false A valid configuration is rejected by the actual system 2. if ?????? is true, but ??? is false the model does not accept a test case that is allowed by the system ???, ?????? ? ??? ?????? S ???, ?????? ???, ?????? ???, ?????? Configuration space

  7. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Example of fault The model M forgets the constraint that if the HalfLoad then Spin cannot be high Model Constraints: System Constraints: # HalfLoad => Spin!=High # # Rinse==Delicate => HalfLoad # end # Rinse==Delicate => HalfLoad # end Rinse HalfLoad Spin Delicate True High val oracle true false

  8. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Partial tests/combinations Failure inducing A combination comb is an assignment of values to every parameter in a (non-empty) subset of all the parameters . comb is failure-inducing if every test t containing comb (i.e., comb t) fails, i.e. ???(?) ??????(?) To find failure-inducing combinations we use BEN Laleh Ghandehari, A Combinatorial testing based approach to fault localization, PhD thesis 2016 L. S. G. Ghandehari, Y. Lei, T. Xie, R. Kuhn and R. Kacker, "Identifying Failure-Inducing Combinations in a Combinatorial Test Set,"ICST 2012 Available as jar (used as external tool)

  9. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Example of fault The model M forgets the constraint that if HalfLoad then Spin cannot be high Model Constraints: System Constraints: # HalfLoad => Spin!=High # # Rinse==Delicate => HalfLoad # end # Rinse==Delicate => HalfLoad # end Rinse HalfLoad Spin - True High val oracle Failure inducing combination true false

  10. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Two types of failure inducing combinations A failure inducing combination ???? has type (w.r.t. the model) 1. over-constraining if for every assignment t containing ????, ???(?) is false and ??????(?) is true The model must be relaxed in order to allow ???? ?????? ?????? ???? 2. under-constraining if for every assignment t containing ????, ???(?) = true and ?????? ? = false. The model must be strengthened in order to disallow ???? ?????? ?????? ????

  11. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Example Model Constraints: # Rinse==Delicate => HalfLoad # end true val Rinse HalfLoad Spin - True High false oracle This faulty combination is of type under constraining true in the model and false in the system It must be excluded ! Model Constraints: # Rinse==Delicate => HalfLoad # # not (HalfLoad and Spin == High) # end

  12. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Constraints repair process We can build a process to automatically repair models

  13. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Constraint repair process (external) System CIT Model true Test suite forall tests ??? = ??????? exit Apply CIT policy false: a failure found use BEN to generate (minimal) failure inducing combinations ???? Repair the constraints

  14. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Constraint repair process (internal) true Test suite forall tests ??? = ??????? Apply CIT policy exit Increase strength cycle false: a failure found Increase CIT strength true false execute BEN with the current test suite forall new tests ??? = ??????? BEN cycle add new tests produced by BEN false MFI ???? found? true ????

  15. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Experiments 2 types 1. Mutation analysis we have taken some combinatorial models from the literature added some faults checked if our process is able to repair the mutated model In this case the oracle is the available M: original model M : mutated model to be fixed M plays the role of the actual model, so M is the oracle 2. Django: configurable software system, in order to test our framework on a real case study. The oracle is the real system (it can be expensive to call)

  16. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Mutation analysis benchmarks mutations: add a constraint that excludes a value of a parameter, remove an entire constraint, negate a constraint, change a logical operator to another one (AND to OR etc.).

  17. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests CIT policies We use several test generation policies UC (Unconstrained CIT) generate the tests ignoring the constraints CC (Constrained CIT) generates only tests satisfying the constraints. CV (Constraints Violating CIT) produces only the tests violating constraints, CuCV (union CC and CV) ValC (CIT of Constraint Validity) requires the interaction of each parameter with the validity of the whole CIT model. Parameters: Constraints: # C1 # # C2 # . Parameters: Boolean validity; Constraints: # validity <=> C1 and C2 # Gargantini A., Petke J., Radavelli M., Vavassori P. (2016) Validation of Constraints Among Configuration Parameters Using Search-Based Combinatorial Interaction Testing. In Search Based Software Engineering. SSBSE 2016.

  18. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Comparison among policies Time (mean) secs Initial tests (mean) Oracle calls (mean) Faults removed (%) 100 90 700.0 160.0 60% 80 140.0 600.0 50% 70 120.0 500.0 60 40% 100.0 50 400.0 80.0 30% 40 300.0 60.0 30 20% 200.0 40.0 20 10% 100.0 20.0 10 0 0.0 0.0 0% CC (Constrained CIT) is rather cheap but it also has the lowest repair capability Some faults can be found only by violating the constraints CuCV (CC + Constraints violation) is the best in terms of removed faults but is very expensive also in terms of oracle calls UC (ignoring constraints) seems not so bad

  19. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Results in brief (mutation) How efficient is our constraint repair approach? the mutated models were repaired within seconds. How effective is our automated constraint repair approach at fixing faults in an existing CIT model? our approach can automatically fix on average 37% of conformance faults. Is it realistic to completely repair a model? For big models, very few mutations were completely repaired. Can our approach worsen the model? In theory yes, in practice it never happened.

  20. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests 2. Repairing Django Django is a web application for websites. each Django project has a configuration file. we selected and modelled one Enumerative and 23 Boolean parameters. automated oracle: a configuration is correct if and only if the HTTP response code of the Django project homepage is 200 (HTTP OK). This oracle invocation is costly in terms of time (6 seconds) two starting models Django0 without constraints inferring constraints Manual with constraints derived from the documentation actual repair

  21. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Results Fi: how many tests (of the union of all the test suites) fail Every policy repairs the initial model Inferring is costly. Best result 1h faults 8% UC is the worst Reparing is easier than inferring Best results: 0 remaining faults

  22. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Django models Django0 # true # Manual (constraints "inferred " manually) # ! PREPEND_WWW # # ! SECURE_SSL_REDIRECT # // if not DEBUG, "localhost" must be allowed # ! DEBUG => (ALLOWED_HOSTS==LOCALHOSTIP or ALLOWED_HOSTS==LOCALHOST) # CuCV (repairing Manual) # ! PREPEND_WWW # # ! SECURE_SSL_REDIRECT # # ! DEBUG => ALLOWED_HOSTS==LOCALHOSTIP or ALLOWED_HOSTS==LOCALHOST # # ALLOWED_HOSTS==IP => ! DEBUG or PREPEND_WWW or SECURE_SSL_REDIRECT # ValC (repairing Manual) # ! PREPEND_WWW # # ! SECURE_SSL_REDIRECT # # ! DEBUG => ALLOWED_HOSTS==LOCALHOSTIP or ALLOWED_HOSTS==LOCALHOST # # ALLOWED_HOSTS==IP => !DEBUG or SECURE_SSL_REDIRECT #

  23. 13 March 2017 - IWCT2017 Angelo Gargantini - CIT for Automated Constraint Repairtests Conclusions We use CIT to repair constraints Ongoing effort to have a complete validation CIT-based process To speed up fault localization and repair Fault localizati on (BEN) Test generartion (several CIT policies) Model repair (automated process) It gives good results and it can be used in practice (see Django case study)

More Related Content