Posts

Showing posts from February, 2015

Test Frameworks

Lists of frameworks by language BDD Cucumber DBunit - JUnit extension for database driven programs

Documentation

Why You Shouldn't Comment (or Document) Code Doxygen

Undertow

Undertow is a Vertx like server sponsored by JBoss, foundation for JBoss AS 8 WildFly written in java, providing both blocking and non-blocking API’s based on NIO. Lightweight < 1MB jar < 4 MB of heap HTTP Upgrade Support Web Socket Support Servlet 3.1 Embeddable

Metrics, Monitoring, and Graphing Dashboards

Icinga  / Incinga2 - open source enterprise monitoring and notification Graphite  - highly scalable real-time graphing system Graphana  - rich graphing, dashboards, templates Sensu Ganglia Prometheus Icinga 2 contains an built-in implementation of performance graphing via add-ons such as PNP4Nagios, NagiosGrapher, InGraph, Graphite and Grafana. There is a module to  integrate Icingaweb2 and Graphite . collectd statsd Splunk Hosted Solutions AppNeta New Relic

Application Metrics

Dropwizard codahale Metrics     MetricRegistry metricRegistry = new MetricRegistry();     ConsoleReporter reporter =         ConsoleReporter.forRegistry(metricRegistry).convertRatesTo(TimeUnit.SECONDS)             .convertDurationsTo(TimeUnit.MILLISECONDS).build();     reporter.start(1, TimeUnit.SECONDS);      Counter c = metricRegistry.counter("foo"); //counter      c.inc();          Histogram h = metricRegistry.histogram("foo"); //distribution      h.update(200);          Meter m = metricRegistry.meter("foo"); //throughput      m.mark();      m.mark(200);          Timer t = metricRegistry.timer("foo"); //times an event      Timer.Context ctx = t.time();      ctx.stop(); Typical ConsoleReporter output: ...

Dev Ops

FaceBook process and tools FaceBook release process Flickr/Yahoo DevOps IBM DevOps for Dummies 9 Must have tools for DevOps toolchain

Software Architecture

Software Architectures Event Driven Architecture (EDA)  - Java Swing is EDA Service Oriented Architecture (SOA) Resource Oriented Architecture (ROA)  - REST Pipeline Architecture  - pipes and filters Architecture Patterns Enterprise Architecture Patterns Application Architecture Patterns Integration Patterns Design Patterns GRASP (object-oriented design) Anti-patterns

Code Quality Metrics

From 97 Things Every Software Architect Should Know  #28 load the output from checkstyle , which is essentially a set of metrics on the class and method level, into a spreadsheet to render charts. The same metrics could also be shown as a tree-map using the InfoViz toolkit. A great tool to render complex dependency graphs is GraphViz. TreeMap visualization CheckStyle Eclipse plug-ing

Requirements Analysis

Request value of requirements/features, aides prioritization and identifying alternatives Discuss and document customer's why Document gestures per task and max time per task: user productivity Avoid discussing solution/how as it moves conversation from customer's domain to developer's  Fast, responsive, and extensible are not requirements because they aren't quantifiable Criteria are objective with thresholds Non-functional requirements like performance should be specified early and tested and tracked early (baselined) and throughout the project Clarify and Document Constraints Clarify, Document, Reduce and Manage Scope Prioritize and build most important features first Divide and conquer - breakup, parallelize, and design/implement smaller features whenever possible Document and track risks, i.e., the same as bugs update the status as risks are mitigated

Low-Code Development - MDD, MDA

Low-Code Development ... analysis by Capgemini found that MDD took only 2.5 hours per function point compared to 10.6 hours for Java and 15.5 hours for C#. MDD = Model Driven Development MDA = Model Driven Architecture Tools Sparx System Enterprise Architect IBM Rational Rose

Group Collaboration - How to Make Toast

TED Talk How to Make Toast DrawToast.com System Design

Project Management Tools

Atlassian Jira - Agile backlog management, sprint planning and tracking Confluence - wiki collaboration, not real-time multi-user collaboration like Google Docs Crucible - code reviews Clover - code coverage Bamboo - continuous integration Free tools GitLab  - issue tracker, code reviews Jenkins - continuous integration EMMA , EclEmma - code coverage Google Sites/Docs - real-time multi-user editing collaboration wiki Google for Business

Architect for Resiliency During Cloud Outages

Netflix Lessons Learned from AWS Outage Overcoming Outages in AWS

Meetings

Scrum Backlog Grooming Session Sprint Planning Daily Scrum Stand-up: accomplishments since last Scrum, today's objectives, impediments Scrum of Scrums - scaling Scrum to multiple teams, same as daily stand-up, but at team level Sprint Review - present the end progress of a sprint for inspection with demos Sprint Retrospective - what went well, what could be improved Quarterly Business Review (QBR) Change Control Board (CCB)