- Four agile principles of the agile manifesto 1. Individuals and interaction over processes and tools 2. Working software over comprehensive documentation 3. Customer collaboration over contract negotiation 4. Responding to changes over following a plan - Describe Kanban (mit Skizze). What's the difference between Kanban and Scrum Kanban is flow oriented and does not force a time frame like Scrum does with sprints. Kanban does not require specific roles like Scrum with Project owner, Product owner etc. Prioritization and changes in a project can be done on-demand in Kanban, Scrum discourages significantly changing a sprint. - What is advanced Software Engineering? Dependable software, large, complex, integrated software - Name and describe attributes of dependable software Availability - Readiness for correct service Reliability - Continuity of correct service Safety - Absence of catastrophic consequences on the users and environment Confidentiality - Absence of unauthorized disclosure of information Integrity - Absence of improper system alterations Maintainability - Ability to undergo repair and modification - What are two means against threats of dependability, explain them. Fault prevention - Quality control, Software design e.g. structured programming, modularization Fault removal - Verification, diagnosis, correction; Corrective and preventive maintenance Fault tolerance - Error detection and system recovery, Error handling Fault forecasting - Quantitative(stochastic model) - What are threats of dependability Faults - Discrepancy between actual and specified value Errors - Abnormal condition that can cause something to fail Failures - Termination of the ability to function correctly - Reasons for software aging, what problem it creates and preventive measures. Lack of movement: Failure to modify the product to meet changing needs Ignorant surgery: Result of the changes that are made Problems * Inability to keep up (growth) * Reduced performance (poor design) * Decreasing reliability (error injection) Preventive measures * Design and plan for change * Documentation and Reviews * Restructuring including partial replacement (amputation) * Plan for retirement and replacement - Common Problems when keeping dependencies in SCM Difficult to (manually) find new libraries and updated versions Loose trace to source (e.g. download page) Loose version information (unless included in filename or package) No information about transitive dependencies SCM not built for versioning binaries (no diff, bad handling of binary files, high resource usage) DSCM (e.g. Git) especially bad (by design) at working with large binaries - Four steps of build release, when is it recommended, when necessary? Always build the full project after every commit Steps * Execute tests * Create VCS tag * Publish build artifacts * Update version in repository - Name CI principles according to Marting Fowler 1. Maintain a code repository 2. Automate the build 3. Make the build self-testing 4. Everyone commits to the baseline every day 5. Every commit (to baseline) should be built 6. Keep the build fast 7. Test in a clone of the production environment 8. Make it easy to get the latest deliverables 9. Everyone can see the results of the latest build 10. Automate deployment - Two approaches for CI. Tools for CI Enterprise - on premise, high cost of entry, full control & flexibility Cloud - externally hosted, easy setup, good scalability, source code leaves network Jenkins, Bamboo, Travis CI, CircleCI - What aspects are handled by nearly every project? Transactions Logging & Auditing Security Error Handling I18N and L10N - What is localization, internationalization. Main difference? Internationalization is done once: Preparation of a product to be used in the global market Localization is done for every locale: Specific adaptions to launch a product in a specifc locale - Difference between role-based and permision-based authorization. Benefits of permission based Role-based authorization is simple and easy to grasp but permission based authorization is more flexible. Permission-based authorization can be much more fine-grained. - What is the Exception Translation Pattern, when to use it, why use it? Don't expose lower level exceptions to upper layers of code to avoid API-bleeding Wrap an exception into a module specific one if it can't be handled at a specific stage - Give 3 Exception Handling –Anti-Patterns examples Log and Throw Catching or throwing "Exception" Catch and Ignore Destructive wrapping Throw in finally - Explain the differences (pro/cons) between Build Time Modularization and Runtime Modularization. Name one tool of each Build time modularization e.g. with Maven. Compiles modules independently but they are still run together in the same container. Easy to do and very fast, but requires full redeploy on changes. Runtime modularization e.g. with OSGi enforces boundaries at runtime which is safer. Still fast if used on the same VM and only requires partial redeploy on changes. - Idea behind DevOps Consider the operations team from the beginning of the project - Explain configuration management? Name Three main types of CM. A management process for establishing and maintaining consistency of a product throughout it's life. Build configuration - State of source code, dependencies Application level - Database or static configuration in source System level - Hard to draw line between this and Application level. e.g. JVM parameters - Difference between sampling, tracing, in performance profiling Sampling gets metrics regularly but tracing will affect overall performance because it is always executed - 3 success and 3 risk factors for collective intelligence Success factors * Choosing right CI system type * Appropriate CI design patterns * Provide easy to use means for contribution * Effective feedback mechanisms Risk factors * CI system not well integrated in users' workflow * Neglecting user based side for e.g. software side * Cannibalization of user activity by other CI systems * Handling of security and privacy of user data - CI design patterns Tagging - Enables categorization Rating - Enables like, dislike Comments - Open discussions Hashtags - Discoverability, categorization - Der Satz in den Folien wo Bob Alice mit LRDD findet und ihren Feed aboniert. (LRDD, PubSubHubbub, ...) waren in Lücken einzusetzen 1. Bob discovers the LRDD of Alice using Webfinger. 2. Bob subscribes to Alice’s public feed using PubSubHubbub. 3. Bob sends an ActivityStream Atom Entry to Alice using the Salomon protocol to notify her about the event. - Difference design pattern and idiom. Is Factory pattern implemented in Java design pattern or an idiom. Argue why. An idiom is language specific whereas a design pattern is language agnostic. I'd consider it a design pattern because in all languages I know, there is no language specific way to implement the idea of the factory pattern. - Explain firedrill or golden hammer antipattern symptoms and refactoring solutions. Firedrill - Management prevents development by giving conflicting directions, followed by demand for immediate delivery. => Sheltering Golden hammer - Unversally applicable technology that solves all problems. => Try new technology - Big benefit if you hit a bug in FOSS You can fix inplace instead of using a workaround. - Ways to monetize OSS Add commercial value on top of OSS Professional training Service contracts Project consulting - Name and describe 4 properties of FOSS according to Bruce Parens Free redistribution - License shall not restrict any party from selling component in an aggregate software distribution Source code - Allow distribution of source and compiled form Derived works - License must allow modifications and derived works Integrity of Authors source - License may restrict modification only if it allows distribution of patch files Distribution of license - Rights attached to a program License mustn't be specifc to product License mustn't restrict other software - Shall not place restrictions on software distributed along License must be technology neutral - Describe the Cathedral and the Bazar model (free software development) and give an example project for each Cathedral - Source is available with each release but code developed between releases is restricted to specifc developers e.g. GCC Bazar - Code developed is public e.g. Linux kernel