GithubHelp home page GithubHelp logo

curriculum-improve's Introduction

iSAQB Curriculum for the CPSA-advanced Module IMPROVE

Update 2024

For open, closed and in-progress-issues: see our Kanban-Board

Status

CI Last commit Contributors Issues Issues closed

This is copyrighted work.

Content

This repository contains the AsciiDoc sources of the curriculum for the iSAQB Advanced Level "IMPROVE".

How to contribute or participate

Create an issue, a merge- or pull-request

How to use this template

  1. Clone the repository - including the submodule:

    Via SSH:
    git clone [email protected]:isaqb-org/curriculum-improve.git --recursive
    
    Via HTTPS:
    git clone https://github.com/isaqb-org/curriculum-improve.git --recursive
  2. Build it with gradle via ./gradle.

  3. Look into the file build.gradle to see what attributes you may configure. Watch for:

    • the language attribute, either DE (German) or EN (English);

    • the output formats called backends (pdf and/or html5);

    • the document version.

How to contribute or participate

Create an issue, a merge- or pull-request

Additional translations/languages

Maintainers

This repository is currently maintained by Gernot Starke, Markus Harrer, and Benjamin Wolf. It was forked from https://github.com/isaqb-org/advanced-template, so the contributors of that project basically contributed to this one, too.

More Contributors

Parts of the content origined from the aim42 open source method for architecture improvement. Thanx to all contributors of aim42!

Licensing and Copyright

curriculum-improve's People

Contributors

feststelltaste avatar gernotstarke avatar programming-wolf avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

curriculum-improve's Issues

Phrase learning goals in a consistent way

Some learning goals still have "fill phrases" in it e. g. "Know and being able to apply improvement measures for source code". They provide no additional benefit and can be removed.

Release Notes for updated version (2024.1)

In this issues we are gathering release notes (for changes that aren't directly obvious from the change log):

  • removed "categories of relevance" for learning goals
  • upgraded version of Advanced Level template
  • improved the term for analyzing data in applications from "data analysis" to "analysis of application data" because "data analysis" is a established term
  • removed phrases from the learning goals that don't provide any additional value but disrupt the flow of reading
  • fixed broken lists on several places

Extend and update reference list

A more comprehensive and up-to-date literature would help participants gain a deeper understanding of the topic.

Here are some ideas:

  • The curriculum references the first edition of the refactoring book "Refactoring: Improving the Design of Existing Code". Update the reference to the second edition that was released in 2018.
  • Add the book “Object-Oriented Reengineering Patterns” to the list of references. It is now available for free at the following URL: https://oorp.github.io./
  • Add more recent literature to the references, e.g. Newman, S. (2020). Monolith to microservices: Evolutionary patterns to transform your monolith. O’Reilly Media, Inc. , ISBN: 9781492047841

#page:99-references/00-references.adoc

add responsibility center to "estimate"

There are different types of centers (organizational units) within an organization like cost center, profit center, revenue center, investment center. Each different center has other characteristics regarding its goals and competences. I find it very valuable to know how the IT department (or specific projects or even software systems that need modernization) are seen from the C-level to create a modernization plan that catches people that have the budget responsibility.

Also, Gregor Hohpe uses this responsibility center concept for finding the right argumentation line for C-Level (see https://www.linkedin.com/pulse/reverse-engineering-organization-gregor-hohpe/).

Thus, I conclude that using cost factors alone as motivation for modernization is insufficient if your goal is not merely cost savings but rather dominating an entire market / growth.

Add a LG for improving database

The curriculum has a focus on IT systems. Since databases are a substantial part of most systems, it is important to consider database topics in the curriculum.

Some of the subsequent topics could be part of the learning goal.

Split-up Database

  • Shared Database
  • Database View
  • Database Wrapping Service
  • Database-as-a-Service Interface
  • Aggregate Exposing Monolith
  • Change Data Ownership
  • Split Table
  • Move Foreign-key Relationship to Code

Data quality criteria

  • Credibility
  • Usefulness
  • Interpretability
  • Key integrity

Clean data:

  • Remove irrelevant data
  • Save data with the right data type
  • Drop or merge duplicates
  • Scale, transform, normalize
  • Deal with missing values: drop, impute, hot-deck, flag
  • Handle wrong data: outliers, in-record & cross-dataset errors

References:

  • See: Newman, S. (2020). Monolith to microservices: Evolutionary patterns to transform your monolith. O’Reilly Media, Inc.
  • Taxonomie von Datenqualitätskriterien (vgl. [Hinrichs 2002, S. 30])

#page:03-module-block-3/LZ-3-01.adoc

Set a clearer scope of the level of IMPROVE

In the improvement section of the curriculum, there are plenty of phrases that could lead to the impression that this course is all about legacy code refactoring.

Examples:

  • In LG 5-2: Know and being able to apply typical technology/programming language-specific refactorings (semantics preserving simplification measures in source code). Training should conduct exercises if required.
  • In LG 5-3: now and being able to autonomously apply automated tests ...

This could lead to different expectations regarding attendees as well as different training approaches of trainers. To fix this, we need to sharpen what should be talked about in IMPROVE and what not. E.g., topics like using IDEs to refactor code are other training courses for software developers.

Change economic dimension "BTC" to "DTC"

The learning goal lists the economic dimension "RTC and BTC costs". RTC stands for "Run the Company", but it is not clear what BTC means.

Probably it is a typo and should be spelled DTC instead. DTC is an acronym for "Develop the Company" and this term is used in LG 3-1.


#page:03-module-block-3/01-duration-terms.adoc

Release updated version 2021.1

Release steps:

  • internal preview 2021.1, our working version
  • 2021.1-RC1 for review within the Advanced-working-group
  • 2021.1-RC2 for review for all IMPROVE training providers
  • 2021.1-rev0 final release

Clarify economic dimensions

Among others, the learning goal lists these economic dimensions:

Investment and operating expenses (OPEX), Run-the-Company (RTC) and Develop-the-Company (DTC)

Improvements

  • Also add the acronym for Capital (Investment) Expenses: CapEx
  • Rename „Investment Expense“ to „Capital Expense" so that it matches the definition of SAFe.
  • Add this reference for CAPEX and OPEX. e.g. https://www.scaledagileframework.com/capex-and-opex/
  • Add a reference for Run-the-Compoany (RTC) and Develop-theCompany (DTC). It's hard to find information about these two names on the Internet. Where thy come from? There should be a reference. Is RTC just another name for Operating Expense (dt. Betriebskosen) and DTC for Capital Expense (dt. Investitionskosten)?

#page:03-module-block-3/LZ-3-01.adoc

add more current references

  • Ford/Richards etc al: SWA, the hard parts
  • Sam Newman
  • Lilienthal/Schwentner: Domain-Driven Transformation
  • Nick Tune (see #40 )
  • Pacheo/Sgro: Principles of SWA-Modernization, bpb press, 2024

add glossary of important terms including some definitions

as we are using common terms like "analyze" with our very specific semantics, these terms shall be defined/explained in a curriculum-specific glossary.

Such a glossary is NOT part of the advanced-template.

(we create a similar glossary within the new req4arc curriculum - and will happily share the appropriate adoc file(s).)

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.