Code Monkey home page Code Monkey logo

p3-model's Introduction

P3 Model

CC BY-NC-SA 4.0

P3 Model is a tool to navigate throughout complex software systems from all important perspectives at all level of details for everyone involved in system development including nontechnical people.

Introduction

As Eric Evans says software development is all design. Good design must be based on knowledge about the domain and current solution. Thus we need tools that give us deep and always up-to-date insight into our system in all important aspects. Unfortunately traditional system documentation are rarely up-to-date, accurate and complete so can give us such insight.

P3 Model is named from three main perspectives from which we can look at the software system:

  • domain
  • technology
  • people

Technical concerns are not enough to design and maintain software system. Thus we need to add date about domain model and people working on the system and all relations between elements from this three perspectives. Only such a combination of data give us accurate enough insight.

To gather all important information about software system we need some structure. P3 Model is also an attempt to standardize main modeling, architecture and design concepts to allow gathering information in a precise form. This standardization doesn't mean reinventing the wheel but only providing some high level structure in which we can fit existing and future patterns.

Source code of the software system contains a lot of information about architecture and domain model but not all that is needed to understand in deeply in all aspects. Thus we need to add metadata about:

  • business concepts not represented directly in the code (e.g. domain model boundaries, processes, etc.)
  • intent to use architecture or design patterns
  • rationale of design decisions
  • people responsible for maintenance and development of certain parts of the system
  • etc.

Given this metadata we can generate valuable documentation directly from the source code. It's always up-to-date so it can be reliable source of truth about domain model and it's implementation. This is next generation living documentation that we are waiting for so long.

Based on data gathered in P3 Model we can build visual representation of the system understandable for people with different competences including nontechnical people. This shared representation can give us real boost in design work and gathering feedback from everyone involved in development process.

Ecosystem

P3 Model

P3 Model is a set of abstraction that standardized the way we gather information about software system including domain, technology and people.

This set of abstractions and data scheme based on it is technology independent.

Source code parsers and metadata

Parser reads source code augmented with metadata and produces and outputs elements and its relations in accordance with P3 Model.

Parser and annotations are specific for programming language.

Our goal is to provide libraries with annotations and parsers for most popular programming languages.

Visualization tools

Visualization tools transforms P3 Model data for given system to visual and interactive representation.

P3 Model is independent of any visualization tool. It can be standalone tool or IDE plugin.

Our goal is to provide such a tool something like Google Maps for software systems. Third parties can also create other tools based on P3 Model date provided by parsers.

FAQ

jakie były inspiracje: living documentation (Cirille), architecture views & beyond (SEI), C4, interactive maps

dlaczego Living Documentation: zapewnienie aktualności; w drugą stronę się nie da

dlaczego nie C4: tylko perspektywa techniczna

dlaczego nie UML: tylko perspektywa techniczna, nie nadaje się dla osób nietechnicznych, brak interaktywności

czy jest zależny od języka programowania: sam model nie, dzięki oddzieleniu metadanych i parsera od modelu, a modelu od wizualizacji

Contribution

Join us and help building P3 Model. Let's solve the problem of outdated and useless documentation together.

License

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

CC BY-NC-SA 4.0

p3-model's People

Contributors

lszydlo avatar

Watchers

Maciej Trojniarz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.