GithubHelp home page GithubHelp logo

optivem.github.io's Introduction

Introduction

Are you a leader in an enterprise software development organization, interested in producing quality software? Have you experienced the challenges in managing software projects - satisfying customers' needs to produce software faster, but yet at the same time, facing quality issues?

Have you seen systems which rapidly deteriorated in quality, whereby the architecture is a "big ball of mud", and low code quality - and the decreased productivity of the whole team? Is there an increasing pile of bugs, and are changes taking longer and longer to implement, breaking existing functionality? Do you face challenges in incorporating new team members, increasing the technical level of your team, and incorporating code standards and quality control?

Are you looking for a solution which will enable you to:

  • Implement high quality enterprise software in your software teams
  • Increase the productivity across your team, from junior to senior level
  • Support extensible and maintainable architecture to reduce total development cost

If you've answered "yes", then you've come to the right place. Welcome to Optivem Open Source Software (OSS). Our goal is to support you in quality Enterprise Application Software (EAS) development.

Architecture

The underlying architecture for our projects is based on the "Clean Architecture" approaches:

For an introductory overview, we recommend DDD, Hexagonal, Onion, Clean, CQRS, … How I put it all together.

The key concept is the separation of concerns:

  • Application Core contains application logic (Application Layer) and domain logic (Domain Layer)
  • Presentation Layer contains GUI Views and Controllers, REST Controllers, SOAP Controllers, Console Commands
  • Infrastructure Layer contains Databases, Email, Messaging, and any other external agencies

The dependencies are as follows:

  • The Application Core is independent of everything else (i.e. the Application Core does not know about the Presentation Layer nor the Infrastructure Layer)
  • The Presentation Layer sends commands to the Application Core
  • The Infrastructure Layer contains implementation for communicating with the database (e.g. via ORM, sending emails, sending messages to message queues, etc.)

But, given the independence above, how do they communicate? The answer is: Inversion of Control (IoC) - Dependency Injection (DI). For example, the Application Core defines interfaces for communicating with a database (i.e. Repository interfaces), and inside the Infrastructure layer, the Repository interfaces are implemented (e.g. using ORM frameworks or any other mechanisms).

The core benefits is that due to the independence of the Application Core, it ensures separation of concerns and modulaity, swappability of databases, UIs and any frameworks, and also enables the system to be testable. These factors increase system quality and decreasing overall total development and maintenance cost.

Optivem Framework

The Optivem Framework is designed to support the Clean Architecture, enabling:

  • Modularity & re-usability
  • Extensibility & flexibility
  • Maintainability & testibility
  • Scalability and portability

The Optivem Framework is on GitHub and NuGet:

To show the Optivem Framework usage, we developed a sample application using the well-known Northwind database from Microsoft, as an illustration relevant for enterprise software samples:

Optivem Framework and Optivem Northwind are licensed under the MIT licence, so that it can be used freely for commercial projects. Our goal is to help spread best practices in IT organizations and support developers in their daily work.

System Requirements

The following are the applications and technologies installed, which are required to run the projects above:

Feedback

You can send questions, improvement suggestions and issue reports on GitHub. These will be used to further improve our open source software.

License

Licensed under the MIT license.

Copyright

Copyright © 2019 Optivem All Rights Reserved.

optivem.github.io's People

Contributors

valentinajemuovic avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

optivem.github.io's Issues

Crowdsourcing - Ask a question

  • Reader can ask a question, and this could go to Issues perhaps?
  • Can be anonymous if via box or if leave name / email or directly create ticket on GitHub with type: question

Narrative - Plot - Phase 2 - Rising Action

  • Starts with conflict
  • Inciting incident is the point of the plot that begins the conflict
  • This catalyzes protagonist to go into motion and take action, protagonist understands goal, works towards it, smaller problems thwart initial success, progress directed towards secondary obstacles which the protagonist overcomes
  • Rising action = build of events until climax

Source: https://en.wikipedia.org/wiki/Plot_(narrative)

Voting / Polls

  • Check possibility for voting for ideas, maybe survey or prioritization
  • This would ensure that content is added in value-based way

Codex - Documentation

Documentation types:

  • Product Documentation: case study (what was issue), business case (or mixed), system requirements specification (SRS), synonyms / acronyms
  • Project Documentation: traditional: project plan, resources, budget, scope, WBS... agile: _______ (agile handling of milestones)... Comparisons, when to use agile, when traditional, compare documentation for both of these.... i.e. not just process but documentation
  • Technical Documentation: Architecture. Technical specifications for database, API etc. Integration with other systems
  • Process Documentation: Company wide policies and procedures. For all teams, regardless of project.

Benefits:

  • For each one, an example, and why, what are the benefits (e.g how this relates to success)

Handling getting responses to no:

  • We don't have time for it
  • The client does not want to look at it
  • There are so many changes and we can't keep up
  • I don't know what documentation to write
  • I don't have time for 100 pages, too much
  • No one will read it
  • We don't have budget for it

Budgeting:

  • Budgeting - documentation...

Codex - Management

  • Project management process
  • Product management process
  • Project structure

Disqus Commenting

  • Setup https://stackoverflow.com/questions/21446165/how-do-i-use-disqus-comments-in-github-pages-blog-markdown

  • Allow both registered and anonymous

  • Based on responses, clarification do request, making ticket and linking to comment - write workflow

  • Currently the website is just in English, however, translations are planned for the future. For commenting, you can write in the following languages: English, Serbian, German.

  • For empty pages - jumbotron - start a discussion, tell me what to write about, and also setting the first comment with brief overview of this page and inviting comments, same text as jumbotron

  • Checking if comments should be on all pages, or just codex & blog? In that case, differentiated layout

  • Explain collaborative approach and crowdsourcing to get ideas what people need in practice

  • Core perspective - helping organizations and people, what problems do they have? Offering solutions...

  • Before starting - Check URLs, Opticodex Vs codex, splitting pages or merging, changing URLs, Moderation rules

  • Write posting ideas - questions, comments, sharing experiences, alternative viewpoints, requests for more information, reporting errors; personal or from others' perspectives

  • Focus on benefits for the readers - what they get, knowledge and opportunity to drive their organizations

Codex - Communication

  • JIRA, confluence
  • Formal and informal
  • documentation, contracts
  • Protection, risk, miscommunication

Codex Page

  • Standards, guidelines, best practices for high-performance IT organizations
  • Codex vs opticodex (branded)
  • Promoting standards don't reinvent the wheel, basis for training and helping organizations out this into practice ==> standards are the product for website
  • Further development - milestones for codex releases
  • Get in touch, suggest something additional

Codex - Foundations

Describe motivation, principles, big picture.

Not sure if to call it Foundations / Core / Crux / Principles...

Codex - Values

Corporate values

When this is done, link it from Vision page and from Culture page

Codex - Culture

Organizational culture, team culture, agile perspectives, self-organized teams

Home Page - Redesigned

  • Including tagline
  • Including images
  • Focusing motivations / problems / challenges / wishlists
  • Providing Opticodex as solution, and linking to it, perhaps also brief overview of its sections, and Read more button
  • Additionally at end, perhaps About and Contact

Codex - Leadership

  • Situational leadership, inspirational, transformational, motivational approaches
  • Leadership psychology
  • Values, motivation, organizational culture, how to recognize leaders, how to grow and develop leaders, empathy, situational awareness 

Header - Tagline

  • Growing high performance IT organizations (people, process, product) - 3P3s - (who/we/are, how/method, what/result)
  • Improvement / growth / high performance at every level (cross hierarchy - vertical and horizontal)

Narrative - Plot - Phase 3 - Climax

  • Turning point / highest point of story, protagonist makes big decision that defines not just story outcome but also who they are as a person
  • Protagonist finally clears preliminary barriers and engages with antagonist, both have a plan to win against the other, direct conflict
  • Usually each one partially sucessful
  • In this central struggle, protagonist makes a decision that shows moral quality and determines outcome

Source: https://en.wikipedia.org/wiki/Plot_(narrative)

Codex - Teamwork

Roles:

  • Project manager
  • Product manager / product owner
  • Scrum master
  • Business analyst
  • Project Portfolio manager

Tasks:

  • Roles & responsibilities
  • Translation between traditional and agile
  • How they communicate / interact
  • Where are they in product and project methodologies

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.