Zoltan Kepes's Documentation Notes

website·Indexed 30 days ago

https://notes.zoltankepes.com/

A collection of technical notes and learning materials covering Java programming (threads, OOP, polymorphism), Python (fundamentals, machine learning, modules), Software Engineering (Requirements Engineering, IT Project Management), Git feature branching, and IntelliJ IDEA shortcuts.

Tokens
49K
Snippets
128
Records
295
Agent score
49%

What's inside Zoltan Kepes Notes

  1. Overview of Unified Modeling Language (UML) in Software Engineering

    The Unified Modeling Language (UML) is an industry-standard graphical modeling language maintained by the Object Management Group (OMG). It is used for the modeling, documentation, specification, and visualization of complex software systems across all phases of the software development process, from initial requirements gathering to technical specification. UML is not a programming language or a process model, but a standardized set of notation elements used to describe system structures and behaviors.
  2. Overview of Requirements Engineering (RE) in the Software Process

    Requirements Engineering is a cooperative, iterative, and incremental process used to identify, document, and manage the functions and properties an IT system must support to achieve a specific goal. The primary objectives are to ensure all relevant requirements are known and understood at the necessary level of detail, documented according to specifications, and agreed upon by all relevant stakeholders. RE is not a one-time activity but a continuous process that accompanies the project, where requirements are refined in cycles (iterations).
  3. Overview of Requirements Elicitation Techniques

    Requirements elicitation techniques are categorized based on their primary goal and method of gathering information:

    • Creativity Techniques: Used for developing innovative requirements or an initial system vision. Examples include Perspective Change (e.g., Six Thinking Hats), Verbal Brainstorming, and Written Brainstorming with User Stories.
    • Questioning Techniques: Used when stakeholders can explicitly state requirements and have the time/will to be interviewed. Examples include Interviews (active, detailed) and Questionnaires (efficient for large groups).
    • Observation Techniques: Best for discovering fundamental functionality by documenting actual workflows. Examples include Field Observation (direct observation of processes) and Apprenticing (where the engineer both observes and performs the tasks).
    • Prototyping: Used to gain a deeper understanding of problems and potential solutions through iterative versions of the system.
      • Horizontal GUI Prototypes: Map dialog flows and manage expectations.
      • Vertical Prototypes: Implement selected parts of the system fully through all layers; ideal when functionality or implementation options are still open.
  4. Select requirements elicitation techniques based on project needs

    Requirements elicitation techniques should be chosen and combined based on the type of requirements (innovative, explicit, or fundamental), stakeholder availability, organizational constraints (budget, time), and project complexity.

    TechniqueExamplesProsConsBest For...
    Inquiry (Befragung)Interviews, QuestionnairesDetailed requirements; covers innovative, explicit, and fundamental types.Requires stakeholders to articulate needs; time-consuming.Explicitly desired & detailed requirements
    Creativity (Kreativität)Brainstorming, Perspective Change, WorkshopsRapid idea generation; fosters innovation and a shared system vision.Less detail; high effort; dependent on group dynamics/dominant personalities.Innovative requirements & initial system vision
    Observation (Beobachtung)Field observation, ApprenticingCaptures implicit/unconscious requirements; doesn't rely on verbalization.Time-consuming; risk of subjective interpretation; requires critical analysis of current state.Fundamental & "taken-for-granted" requirements
    Document-centricSystem Archaeology, Perspective-based ReadingReuses proven requirements; well-structured and traceable.Requires domain knowledge; risk of adopting outdated requirements.Fundamental requirements from existing systems/docs
    PrototypingHand sketches, Digital prototypesDeep problem understanding via early interaction; combines elicitation and validation.High creation effort; blurred line between elicitation and validation; may create false expectations.Innovative requirements & validation
  5. Use UML Use Case Diagrams for system overview and context

    Use Case Diagrams are behavioral diagrams used to represent the primary functions of a system and its interfaces with the surrounding environment. In Requirements Engineering, they are used to determine and document the system context and identify necessary interfaces. They provide a high-level abstract view of system behavior from the perspective of users or connected external systems. They do not document sequences, call relationships, or data structures.
  6. Understand Java tokens and lexical structure

    In Java, a token is the smallest lexical unit that the compiler uses as a building block for the program. The compiler processes code in a specific order of abstraction: lexicals (allowed symbols), then syntax (how tokens are arranged), and finally semantics (the meaning of the syntactically correct program).
  7. Enterprise Resource Planning (ERP) Overview

    ERP is an integrated software system that bundles central business processes into a single platform (e.g., financial accounting, HR, purchasing & warehouse, production, sales). The primary advantage is that all departments operate on the same data basis, preventing double entries and facilitating decision-making. Common examples include SAP, Oracle ERP, and Microsoft Dynamics.
  8. Use Scikit-Learn for Machine Learning in Python

    Scikit-Learn is a Python library used for implementing machine learning algorithms. It provides tools for three primary types of learning tasks:

    1. Classification: Assigns data points to predefined classes based on features. It uses labeled training data to build a model that predicts the class of new, unknown data. Examples include spam detection (binary classification) or image recognition (e.g., cat vs. dog vs. car).
    2. Regression: Learns the relationship between independent variables (features) and dependent variables to predict continuous numerical values. Examples include predicting real estate prices based on house characteristics.
    3. Clustering: Groups data points with similar features into clusters without using predefined labels (unsupervised learning). This is used to discover hidden structures in data, such as customer segmentation based on demographics and behavior.
  9. Understand the difference between Aufbauorganisation and Ablauforganisation

    In corporate modeling, a company is analyzed through two primary perspectives:

    1. Aufbauorganisation (Organizational Structure): Defines how a company is structured. It is typically hierarchical and establishes the framework for task execution, including the division of labor, distribution of tasks, and the assignment of responsibilities and authority (who does what with which resources).
    2. Ablauforganisation (Workflow Organization): Describes how tasks are actually solved. It focuses on the sequence of work steps (business processes) that utilize the resources (roles, departments, instances) defined in the Aufbauorganisation.
  10. Model object states with UML State Diagrams

    UML State Diagrams are behavior diagrams used to document the professional states of objects or systems. Unlike Activity Diagrams which model actions and flows, State Diagrams focus on:

    • Which states an object or system can assume.
    • The dependencies and sequences between these states.
    • The conditions under which a state is reached.
    • The consequences or effects of actions, rather than the actions themselves.