Techniques - K&K Software AG · Dependency Injection (Unity, …) Asynchronous Programming Model...

29
Techniques

Transcript of Techniques - K&K Software AG · Dependency Injection (Unity, …) Asynchronous Programming Model...

Techniques

Contents1. How we work2. Unit Testing

a. Test Driven Development

3. Toolchain (TFS)a. Work Item Trackingb. DevOpsc. Code Quality

4. Frameworks5. Core Technologies

How we work

What we can provide - Teams

● K&K “A-Team”: 5 full-time developers with deep specialisation in C#, XAML (WPF) & T-SQL (Microsoft SQL Server)

○ For peak throughput, support by our other K&K “Team X” possible (also 5 C# developers)○ K&K can thus provide up to 1500 hours of development per month

● We can accommodate external developers and integrate them into the project● We can also contract an UI/UX expert to support your wishes

Industry supported best practice● Coding Conventions and Guidelines from Microsoft

○ Coding Conventions■ https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program

/coding-conventions○ Guidelines:

■ Framework Design Guidelineshttps://docs.microsoft.com/en-us/dotnet/standard/design-guidelines

■ User-Experience https://docs.microsoft.com/en-us/windows/desktop/uxguide/guidelines

○ Language Features (new in version 7.3)■ https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-7-3

Unit Testing & Test Driven Development

● To ensure the quality of code, almost every component has to be runnable without the normal application context

● Must be implemented from conception, otherwise there is a risk that individual components can no longer be separated from the rest of the application and thus tested

● Unit testing as basis for proper and lasting software quality➢ Provides the basis for Test Driven Development (see next slide)➢ Generally Test Driven Development is more expensive initially, but saves resources in the long

term. Even when pure Test Driven Development is unfeasible, many elements of this method of development can be adapted to fit “normal” projects.

Unit Testing

Unit Testing: Test Driven Development

● This method of development yields earliest possible error detection and avoidance.

● Focus work on the functionality and the primary features of the software.● Acceptance criteria and dependencies are turned into unit tests, piece by

piece.● Every change is fully automatically tested. We can recognize and correct

errors while we implement user stories.

Toolchain

Toolchain● Visual Studio (opt. Productivity Power Tools)● Sql Server Management Studio (SSMS)● Team Foundation Server (TFS)

○ Transparent communication and documentation at a glance■ Shows which acceptance criteria meets the implemented user story■ Shows all code changes to meet individual acceptance criteria■ Shows who implemented each user story

○ Automated builds and release management■ Is provided by us■ Every version can be compiled and downloaded seamlessly

○ Accessible via the internet

TFS

One unit test per acceptance criteria

Frameworks and Techniques

Current frameworks and Techniques

Use of best practice guidelines ⇒ we do not reinvent the wheel.

● PRISM Framework● Repository in conjunction with Unit-of-Work design pattern● Dependency Injection● Façades● Unit Testing● Entity Framework

PRISM

● PRISM is a powerful open source MVVM library● Glossary

○ MVVM = loose coupling between Model, View and ViewModel○ Model = data model (intermediate layer to represent the data from the database)○ View = display objects (graphical user interface & visual representation of ViewModel)○ ViewModel = state of the interface (and link between model and view)

● Benefits○ Supporting design patterns that embody important principles of architectural design (e.g.

“Separation of Concerns”), PRISM helps developers design and build loosely-coupled components that can be developed independently, but jet can be easily and seamlessly integrated into the overall application.

Repository and Unit-of-Work pattern

● Repository pattern in conjunction with unit-of-work pattern○ Glossary

■ Repository ⇒ Representation and collection of database operations for business logic■ Unit-of-Work ⇒ Collection of repositories within a mask

○ Benefits■ Data is created, edited, and deleted centrally in one place■ Prevention of duplicate code as this layer can be accessed from anywhere

● ⇒ We are writing future-oriented and maintainable code!

Dependency Injection● Is a technique to minimize fixed references● Increases the testability due to hiding complex code fragments behind

simplified interfaces => code lines are not needlessly tested twice● The library “Unity” is used as our Dependency Injector● Centralized dependency management, which “inserts” the appropriate code

fragment (e.g. Service, Factory, or Façade, etc.) into objects

Façade● Hides complex code fragments behind a simple “facade”

○ Code irrelevant to the developer is hidden ⇒ improves readability of code⇒ especially important if the code is modified by several developers

Frontend frameworks● Xceed Toolkit

○ See Live-Explorer for Demo: https://github.com/xceedsoftware/wpftoolkit/releases○ AvalonDock

■ Window management for complex applications○ User Controls

■ A variety of components for editing, creating, and deleting data■ Easily expandable

Core Technologies

C# common toolsets● “MVP” Concept

○ Minimum Viable Product● Design patterns

○ Dependency Injection (Unity, …)○ Asynchronous Programming Model○ Inversion of Control○ …

● We support a wide range of database management systems. Depending on project requirements Microsoft SQL Server or SQLite are preferred.

● Unit Testing○ NUnit○ Moq

● Nuget Package Manager to provide specially designed source code libraries

● Encryption and authentication of communications to ensure data integrity and security

● High-performance applications with multi-threaded programming

Frontend TechnologyDesktop-Client

● Windows Presentation Foundation (WPF)● MVVM Light Toolkit or PRISM, depending

on the scope of the project.● OxyPlot to generate graphs and diagrams● Xceed Toolkit to support your UI needs.● AvalonDock to support multi window

applications

Web-Client

● Backend○ ASP.NET MVC 6 or ASP.NET Core MVC

depending on platform● Frontend

○ Current web html5 technology○ Typescript○ Bootstrap 4○ Angular

Any questions? Please contact us!

We are committed to your request and will be happy to answer detailed questions promptly. We look forward to your inquiry.

I am your contact person:

Laura KöplHead of Marketing and Sales

Phone: 09382 / 3102-241Mail: [email protected]

Protect your interests:Develop excellent products with our team at K&K Software AG using

state-of-the-art agile methods, now.