object-functional analysis and design : 次世代モデリングパラダイムへの道標

39
Object-Functional Analysis and Design 次世代モデリングパラダイムへの道標 2012319 BusinessPlace 浅海智晴

Upload: tomoharu-asami

Post on 31-May-2015

2.641 views

Category:

Technology


8 download

DESCRIPTION

OOAD + OFPについて現時点での考えをまとめてみました。 PPTX→PPT出力の関係で、当日は非表示にしているスライドも入っています。

TRANSCRIPT

  • 1. Object-Functional!Analysis and Design!2012319BusinessPlace

2. ()BusinessPlaceJava edge2.cc XML SmartDoc (XML) Relaxer (XML/Java) SimpleModeler (Scala DSL) SmartDox () g3 () g4 (Android) UML(BP) () Scala(Softbank Creative) 3. 4. Modegramming Style (DSL ) http://modegramming.blogspot.com/ SimpleModeler http://github.com/asami/simplemodeler/ SmartDox http://github.com/asami/smartdox g3 http://code.google.com/p/goldenport3/ g4 http://github.com/asami/goldenport-android-library/ 5. 6. Object Functional Programming (OFP) Object Functional Analysis and Design (OFAD) 7. DB I/O 8. OFAD/CQRSScala EIPDSL EDA OFPOOADOFAD UCD/UXDDDDCI 9. DSL OO DSL OO OO 10. 11. () () 12. Haskell Scala(+scalaz) Lisp, ML, OCaml pure Lisp Parametric Subtypepolymorphism polymorphism 13. List, () ()() ( ) 14. 15. (associative law) (semigroup) (monoid) (a + b) + c = a + (b + c) (group) (commutative law) a+b=b+a () (distributive law) (ring) (field) a * (b + c) = a * b + a * c 16. (category)Hask (Scala?) (monad) (kleisli category) Applicative (arrow,functormorphism) (functor) 17. Object FunctionalProgramming (OFP) 18. OFP (trait) mix-in AOP (monad) Monadic (type class) (?) Scala 19. (1) 20. (2) 21. Arrow 22. KleisliOption/List 23. Object Functional Analysisand Design (OFAP) 24. 25. DDD 26. 27. -2 28. 29. 30. 31. A Unifiying ISBN: 978-0-521-11787-6Framework forStructuredYourdon(Structured Chart)DeMarco(DFD)Jackson(Structure Text)Analysis and(Initial algebra)DesignModelsSA/SDAsakusaFW http://www.asakusafw.com/DSLHadoopAsakusa DSL (http://www.asakusafw.com/wp/wp-content/uploads/2012/01/AsakusaDSLDesignMethodology.pdf)Spark http://www.spark-project.org/Apache MesosScalaScala 32. SparkScaldingval file = spark.textFile("hdfs://...")file.flatMap(line => line.split(" ")).map(word => (word, 1)) Spark.reduceByKey(_ + _)class WordCountJob(args : Args) extends Job(args) {TextLine( args("input") ).read. flatMap(line -> word) { line : String => line.split("s+") }. groupBy(word) { _.size }. write( Tsv( args("output") ) )}Scalding https://github.com/twitter/scalding CascadingScala DSL Collection APIHadoop 33. 34. Domain-Driven Design (DDD) A Model Expressed in Software Value Object (97) Supple Design Side-Effect-Free Functions (250) Closure of Operations (268) Declarative Design Domain Specific Language A Declarative Style of Design Composite Specification Maintaining Model Integrity Context Map (344) Destillation Declarative Style (426) 35. Data Context Interaction (DCI)/ 36. CQRS, EDA 37. Enterprise IntegrationPatterns (EIP) Apache Camel Enterprise Integration Patterns http://camel.apache.org/enterprise-integration- patterns.htmlRouteBuilder builder = new RouteBuilder() {public void configure() { errorHandler(deadLetterChannel("mock:error")); from("seda:a").choice() .when(header("foo").isEqualTo("bar")).to("seda:b") .when(header("foo").isEqualTo("cheese")).to("seda:c") .otherwise().to("seda:d"); }}; 38. DSL 39. END