Space Index
|
|||||||||||||||||||||||||||||||
0-9Introduction The 41 View Model of Software Architecture is probably the most commonly used methodology for documenting software architecture. It was introduced by Philippe Kruchten in 1995 in the article Architectural Blueprints — The "41" View Model of Software Architecture http://www.cs.ubc.ca/gregor/teaching ...
|
Ahttp://globalnerdy.com/wordpress/wpcontent/uploads/2007/11/dilbertagileprogramming.gif! There's a trend in the blogosphere showing an increasing number/percentage of agile projects failing. We believe that the reason for this is quite simply that many projects are attempting to use agile methods. Some of these can be expected ...
Do you want to simpelfy the writing of tests? Do you want to make testing easier? Ever avoided writing tests because the tests were too hard to write? In this presentation we will show you how to test write, simple ...
Drivers The generated artifact should be the same regardless of the target environment. This means that any deployment configuration must be runtime, not buildtime. Keep configuration as close to the bean that needs it as possible. Selfconfiguring beans should be preferred. Minimize the number of properties that must be set ...
Everyone agrees upon unittests are important. The agile movement also preaches that tests are documentation. And what about various levels of integrationtests? Another dimension is the execution speed of tests. Until now, you have had to pick one or the other..... not anymore ...
What is Agile? A description of agile in general. In our words, agile is a culture on many levels that allows change for the better, meaning more value as it is specified the manifesto. At the community level Agile Communities, our industry celebrates and recognizes organizations and individuals that provide ...
An reflection on agile (postagilism). Agile 2.0 (aka Smidig 2.0) was an initiative a few years ago where we (Objectware) attempted to counter the negative reactions around failing agile projects. In essence, Agile 2.0 is actually just ...
Title One idea: How we successfully rewrote the entire core of a big distributed system an experience report from the real world Highlight Summary Project mandate: Complete rewrite of major parts of a big, distributed system. Necessary ...
Agile communities/industries celebrate and recognize organizations and individuals that provide more value. Good signs: Annual conferences on topics of software development Weekly meetups (No fluff, just stuff kind of things) Alot of interchanging knowledge between corporations ... Bad ...
Agile developers keep their work transparent and take pride in their craftmanship. They remain loyal to their Programming Ethics and strive to work more efficiently. When it comes to it, this level of agile is what it's all about. Most of the litterature focuses on the individual level, so we ...
Agile software development is all about frequent delivery of products Each tactic has a positive value/cost ratio by themselves. Used together with other tactics and strategies it is possible to gain a lot more value. A sideeffect/synergyeffect is the feedbackloops (see ...
Set up Enterprise Maven Infrastructure This step is actually a precondition. Without the Enterprise Maven Infrastructure the following steps won't make sense. See Enterprise Maven Infrastructure Set up a "Mavenfriendly" file structure in your version control system ...
Agile Mindset Understanding agile is not easy. It is a process of learning it by imitating the existing practices, doing it and learning what works, and finally mastering it, understanding the values behind it, and delivering good software on time again and again. We do not claim to have mastered ...
Agile organizations measure and reward software development that returns longterm value and costefficiency. Good signs An infrastructure that doesn't make people shave yaks Software transparency in their infrastructure, like: Wiki Enterprise Maven Infrastructure Code inspection (FishEye ...
Intro Agile communication Which softwarestack is needed to support the agile methodologies we want to use? Wiki, jira and email lists ( Scrumworks?) SinglePointofEntry to the documentation above, plus Maven site and test & build history Implementation recommendations Email lists ...
Note that these opinions, like many others on this wiki, are not results of empirical research, but rather deducted from common sense. Subject them to reasoning specific to your own context and situation. Many organizations starting off with agile choose a project as the sandbox ...
Standard contract name Agile guidelines PS 2000 http://dataforeningen.no/mglrW0g.ips tba xyz tba H3. Comments
Introduction The purpose of this wiki is to create processes, techniques and technology which, in combination, will provide cost efficient and easytoadopt bootstrapping environments. The starting point is agile methodology, but the focus is to solve the challenges in the enterprise under realistic conditions. By this we mean extending/strengthen ...
1. Install base system on each node 2. Install applications 3. Configure applications 13 is harder to automate than 4., so prefer to automate 4 before 13. 4. Verify basic system setup 5. Functional ...
Reduce complexity and cost A unit test is cheapest to write because it is the test for a single unit. A service test is cheaper than a system test for much the same reasons. Additionally, white box tests are often cheaper than black box tests ...
page contains articles worth reading for people working in the software industry. Classics The Cathedral and the Bazaar by Eric Raymond Programming as Theory Building by Peter Naur Notes on structured programming by Edsger Dijkstra The humble programmer by Edsger Dijkstra Go To Statement ...
List of people Anders Sveen, CapGemeni see javaBin presentation http://www.java.no/web/show.do?page=191;7&appmode=/showReply&articleid=20824 Jevgeni Kabanov, ZeroTurnaround http://www.zeroturnaround.com/ JavaRebel 2.0 released http://www.zeroturnaround.com/blog/javarebel20isreleased%e2 ...
Recommendations Set up rules and generate the relevant reports. Modify rules and fix bugs until the whole development team agrees on the standard. Be absolutely certain that the standards are understood, agreed upon and followed before continuing. Add checks to the regular build ...
Unix packages The following Maven plugins can generate native (operating system specific) installation packages: Unix Maven Plugin http://mojo.codehaus.org/unix/unixmavenplugin/ Highly recommended http://mojo.codehaus.org/solarismavenplugin/ (See also http://mojo.codehaus.org/solaris ...
|
||||||||||||||||||||||||||||||
Bagile todolist. The backlog should be a pretty familiar concept to most agile practioneers. Although it most commenly used in Scrum, all methods have some notation of a backlog. The product backlog is simply the team's todolist. Some teams prefer to eliminate ...
Arguments, variables, options and properties The traditional approach to make an application is to extract relevant properties and put them in external property files. Setting environmental variables or commandline arguments are two other approaches. The following table gives an overview ...
Immediate Caller A method foo calls method bar which detects an error. The possible errors detected by bar should be documented and foo may be able to recover or ignore some of them, based on the specific kind of error. If it can't, it ll ...
Shorter test phase TestDriven Development tries to get us to integrate automated tests into the early parts of the project. However, since developers doing TDD often encounter problems keeping their tests running and well managed throughout a project, Agile ...
Project description We have a C project and cannot standardize the GCC http://gcc.gnu.org/ version of the runtime environment. This means that we must build binaries for each target platform. This gives us the following two dimensions: 32 and 64 bits ...
One of the reasons why some people cling to the "Everything in one project" approach is that it is convenient to build all code with a single command. This convenience can also be achieved with a so called builder project ("samlepom" in Norwegian). Create a new, empty pom ...
|
Cproject xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv400.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.company.app1</groupId> <artifactId>app1i686</artifactId> <packaging>a</packaging> App1 binary ...
project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv400.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.company.app1</groupId> <artifactId>app1</artifactId> <version>3.7.5SNAPSHOT</version> <packaging ...
project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv400.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.company.app1</groupId> <artifactId>app1rpm</artifactId> <name>App1 RPM</name ...
project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv400.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.company.app1</groupId> <artifactId>app1x8664</artifactId> <packaging>a</packaging> <name>App1 ...
Intro 3 http://www.exotribe.com/node/16 Agile methodologies seemed like a good idea to this software development team. But when the company doesn't sincerely accept the change in work style, the result is just a buzzword for the usual project hell, as Charlie Martin's ...
Background Deployment configuration like username, passwords, urls, etc. should never be included in artifacts. The output of a build should be environment independent! However, it is quite useful to be able to test an artifact in different environments without too much hassle ...
early as possible Notify your client/boss/team of your leave. This will allow for them to prepare in the best possible way. The last couple of weeks before you leave Find out whom will take over your responsibilities. Make a plan ...
Saves a lot of money if chosen early. Can be changed iteratively
what to document where? (and what not to document) See Documentation
Choose early. Services that depend on external environment like JMS or databases suggest a strategy like for example JigZaw
Important to separate configuration from artifact. A common configuration strategy for all services is probably a good idea, but when to design and implement it is up for discussion
HudsonExtremeFeedback http://hudson.gotdns.com/wiki/display/HUDSON/UseHudson#UseHudsonExtremeFeedback
CI server responsibilities The CI server is a critical component in Enterprise Maven Infrastructure. It has the following responsibilities: 1. Automatic testing 2. Automated warning notification 3. Automatic deployment of snapshot versions to a build artifact repository manager 4 ...
How to trigger a build Based on svncommits Poll the svn repository regularly Use a svnhook to trigger a build Based periods Typically a cronjob. For example Every 5 minutes, Nightly or Each sunday. Classic build definitions There are many different purposes ...
Job In Hudson, each CI schedule is called a job. A job defines when/how often a build should run One or more tasks. E.g. Running a shellscript Running ant tasks Running maven goals Build definition Continuum ...
Tactics The tactics can be used in isolation, but it is more common to utilize multiple (if not all) of these together to achieve the desired benefits. How to ensure that required properties are set correctly? Generate example file where all properties that can be set are listed, but only ...
http://www.peterkroener.de/wpcontent/uploads/2008/09/wtfm.jpg
purpose of this page is to help people achieve clean code. It is not primarily created as a means for learning, but as a means for teaching/coaching these concepts and as a basis for automation. In general "You know are working on clean code when each routine turns out to be pretty much ...
DRAFT/brainstorming quality Introduction and problem description Scenario: An application that consume a WebService. How to efficiently test our code given the WSDL? Isolate the code that use the WebService and write tests for the conversion to our application's domain objects. To verify ...
Tool M2plugin Type Rating Comment TestNG http://testng.org mavensurefireplugin http://maven.apache.org/plugins/mavensurefireplugin/ General purpose ()() Junit3 http://www.junit.org/ mavensurefireplugin http://maven.apache.org/plugins/mavensurefireplugin/ Unit tests \\ Simple and mature tool Junit4 http ...
GNU Trove http://trove4j.sourceforge.net/ googlecollections http://code.google.com/p/googlecollections
Automatically announce new code. One of the most powerful practices compared to how easy it is to set up, is commit mails. It is a builtin feature in most SCMsystems. Notifications are usually delivered via mail, but it is also possible to support channels like RSS ...
purpose of this page is to identify which factors, which drivers, different tactics should adhere to. Testability and maintainability should in general be the two most important drivers. Exceptions should not be made lightly. The final artifact should not require buildtime changes to facilitate ...
reason the codebase has got into a mess is because we failed to execute on important principles such as: 1. Take account of coupling and cohesion. 2. Be clear about people's roles and responsibilities to avoid unqualified or inappropriate decision making. 3. Clarity and simplicity ...
project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv400.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.company</groupId> <artifactId>companyparent</artifactId> <packaging>pom</packaging> <version ...
Introduction A configuration service may be the solution if you need more flexibility than the more traditional file based approaches. Such a service makes it possible to use different transport protocols and formats. share properties between applications. (for example ensure that two ...
Matrix Support different dimensions of configuration Startup 1 Resource/ext. service setup 2 Usage/Tuning 3 Global Environment Application Node 1 Startup configuration: java options, Environment Variables 2 Setup configuration (addresses ...
Draft quality! This template is based on the 4 plus 1 View Model. This is a work in progress and the template is not as a silverbullet, but as a starting point when documenting a system using Confluence wiki. System Architecture Logical View Physical View Process View Scenario ...
Export a space exportingaconfluencespaceasawebsite http://cwiki.apache.org/DIRxDEV/exportingaconfluencespaceasawebsite.html Must use "Default" theme to be able to change layouts. See CONF13221 http://jira.atlassian.com/browse/CONF13221 for more information. Modifying Confluence Layouts Using Custom Decorators http://confluence.atlassian.com/display/CONF20/ModifyingConfluenceLayoutsUsingCustomDecorators ...
Write documentation according to Confluence Documentation Template. Update documentation (check especially the references to Maven artifacts) Export documentation to html http://confluence.atlassian.com/display/DOC/ConfluencetoHTML Check it into a Version Control System http://en.wikipedia.org/wiki/Revisioncontrol
Automatically deploy the latest changes. Continuous Deployment A process that detects new releases into your software repo. Essentially, each time this process detects a new artifact, it will attempt to deploy it to a specified environment. Typically, this is applied in organizations where users want ...
Automatic build and integration. Principles To fix a broken build must always have highest priority. Otherwise, most of the benefit of doing continuous integration is lost. Integrate often http://www.extremeprogramming.org/rules/integrateoften.html When deciding which product to use ...
achieve control at the system level is much harder than control at the application level. Unlike the application level, the system level cannot be specified completely. The reason is that control at the system level is all about trust and confidence. How much control do ...
When the entire organization is comfortable with automated upgrades of your system things are really looking good. However, to achieve frequent deployments to production you must also be comfortable that the integration with external systems will work. Systems Integration Test SysAdmin Production ...
achieve control at the application level the following concepts must be in place: Traceability (EMI Enterprise Maven Infrastructure) (/) Source code version control Artifact versioning Artifacts can be configured runtime. (/) Nonsensitive, default values may be included in the artifact, BUT it must ...
possible to write service tests that verify that a service work even though it has a dependency on an external environment. A database, a JMS server, reading files from file system (or a remote share) are typical examples. We will now describe a concept ...
Alistair Cockburn's agile method. http://en.wikipedia.org/wiki/CrystalClear(softwaredevelopment) http://alistair.cockburn.us/Crystalmethodologiesmainfoyer http://www.amazon.com/exec/obidos/ASIN/0201699478
|
||||||||||||||||||||||||||||||
Ddaily gettogether ceremony. In Scrum, this is called "the daily Scrum". The point is to gather the team together for a short (10 minutes or less) facetoface meeting, standing up. Normally, the team makes a round where each team member presents the following: # What ...
Simulator loadgenerator based on variation over a number of parameters Canned data record data and playback on staged system
How to track and control changes to databases? Versioning and sorted changes You should have the complete schema in its latest version. You will also have changes separate, and they must be stored in a sequenced way. Database changes is not mutual independent. Release ...
Debug logging is a tool for software developers to determine the cause of an error. Should never be enabled by default in production environments. Verbose as much context as possible (e.g. stack traces) Technical does not need to be user friendly Must contain a reference ...
Definitions and suggestions for enforcement. Different definitions of Done Scrum Alliance What is DoD? http://www.scrumalliance.org/articles/105whatisdefinitionofdonedod Agile Software Development DoD http://agilesoftwaredevelopment.com/2006/05/definitionofdone Agile faq What is DoD? (example) http://agilefaq.net/2007/10/24/whatisdefinitionofdone/ How to enforce ...
Which applications implements JNLP? Java Web Start What is Java Web Start? What is Java Web Start? http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/faq.html#101 Why should I use Java Web Start ...
Create unix packages We recommend using Unix Maven Plugin http://mojo.codehaus.org/unix/unixmavenplugin/ to generate native packages (pkg, deb, rpm) for the Unix platform. See Available native package systems for other plugins and available Windows ...
Problem description Projects are often deployed to multiple different environments. By "deploy" we do not mean the process of publishing an artifacts to a repository, but deploying an application to for example a application, portlet, or servletcontainer or just installing the application in the staging or production environment ...
Runtime approach The goal is to avoid building artifacts for different environments. This problem can be divided into the following subproblems: Make the application environmentindependent. I.e., by default is should not have any dependencies to external systems. Use property files from classpath to override ...
Strategies JaMaCU Deployment Strategy Multienvironment Configuration and Deployment Strategy Important challenge: How to bridge the gap between Operations and Development Resources Logging Monitoring Deployment and Configuration Products Configuration Categorization Basic configuration tactics ConfigService sysadm:Dynamic ...
commonsdaemon (JSVC) http://commons.apache.org/daemon/jsvc.html appassemblermavenplugin http://mojo.codehaus.org/appassembler/appassemblermavenplugin/ Assembles the artifacts and generates bin scripts for the configured applications mavenassemblyplugin http://maven.apache.org/plugins/mavenassemblyplugin/ Open Source Installers Generators in Java http://javasource.net ...
fact that error handling is often the lowestpriority concern is doubly weird if you consider that crosscomponent error handling is the same concern as core functionality messaging. In both cases there are the same sets of concerns, both with regards to communication with external components and interaction between ...
Gliffy http://www.gliffy.com Gliffy Confluence Plugin http://www.gliffy.com/confluencePlugin/ Enterprise Architect http://www.sparxsystems.com.au/products/ea/index.html Poseidon http://www.gentleware.com/products.html Visio Any other drawing tool like Dia http://projects.gnome.org/dia ...
divide and conquer tactic is perhaps best known from Divide and conquer algorithms http://en.wikipedia.org/wiki/Divideandconqueralgorithm or the political Divide and rule http://en.wikipedia.org/wiki/Divideandrule strategy. In JigZaw we merely mean the concept of reducing complexity by dividing ...
4 plus 1 View Model
Overview Documentation can be written in a number of formats. We have chosen to separate between WYSIWYG files (e.g. MS Word), compiled text (e.g. LaTeX) and wikibased documentation. The table below might help you to choose. Feature Confluence ...
|
EContinuous Integration Servers Continuum Installation Guide Linux Continuum Installation Guide Solaris Repository Managers Artifactory Installation Guide Linux Artifactory Installation Guide Solaris sysadm:Nexus Installation Guide Linux Version Control System Subversion ...
Why agile projects fail to deliver expected values in an enterprise context Intro When dealing with agile projects in the enterprise, the difference between enterprise economy and project economy becomes an important challenge. One common problem is that development ...
Introduction A prerequisite for efficient development is to choose good tools and use these tools to their full potential. The Java community has a comprehensive suite of tools to choose from; IDE, VCS, build tools, CI server and Build Artifact Repository Manager. It is common ...
baseline is a set of software services with fixed versions and their configuration in a known Operating System environment on known hardware. In other words; Software versioning http://www.reference.com/search?r=13&q=Versioning can be implemented with mavenreleaseplugin Configuration versioning known ...
Error levels Fatal Crisis Indicates that the system is for most purposes dead. Like if no superPNR are received into the ESB, or that the ESB looses connection with critical systems Fatal Severe Indicates that a large set of operations are failing, i.e. That all operations against Accounting ...
Excecutive Summary The bigger problem in software reliability is not how we communicate errors, it's the state we are in when the error happens. So often the errors are things we can't really do anything about, we can't force the network connection ...
Error pushlike log behaviour/setup Log4J.properties config Add the following to log4j.properties log4j.appender.HUB=org.apache.log4j.net.SocketHubAppender log4j.appender.HUB.layout=org.apache.log4j.PatternLayout log4j.appender.HUB.layout.ConversionPattern=cc%d %14.14c %m%n log4j.appender.HUB.port=9004 And add the HUB as a logger (I.e. something like: log4j.rootCategory=INFO ...
any given problem, there are multiple possible solutions. When choosing one, it is important to investigate if the tactic chosen effects the rest of the system. If it does, the tactics must be evaluated according to the drivers for the entire system, and pros/cons of the different tactics must be compared ...
Rename to eventing? Auditing A log containing changes in the data. Need context (user/timestamp/source ) Error log Something Operations must act on (e.g. apache error log) See Error Push Setup Eventing Information to the business support ...
Tom Gilb's evolutionary method. Plenty of resources available here: http://www.gilb.com/Blog
project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv400.xsd"> <profiles> <profile> <id>rpm</id> <activation> <property> <name>env</name> <value>prod</value ...
project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv400.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.company</groupId> <artifactId>companyparentrpm</artifactId> <version>6</version> <packaging ...
page contains recommended readings for software developers. See also Articles worth reading. Architecture, patterns and programming skills Architecture and Design Domaindriven Design: Tackling Complexity in the Heart of Software http://www.amazon.co.uk/DomaindrivenDesignTacklingComplexitySoftware/dp/0321125215/ref=sr11?ie=UTF8 ...
When you take agile practices to the extreme. Joe: Hey Bill, let's list the practices that every agile project should include. Bill: Well, Joe, I'm not sure there are any such practices that should apply to every project.. Joe: Well ...
|
||||||||||||||||||||||||||||||
FNeo4J Emil talks about semantic web, web 2.0. Graphs of information. RDF. The problem of relational database. oesn't scale with information complexity. Sparse tables, and increasing number joins. So the solution is a graph database. Instead of having relationships ...
Title Finally, an Agile test strategy (that works)! Speakers Bård Lind (bard.lind@objectware.no) Erik Drolshammer (erik.drolshammer@objectware.no) Abstract Traditional test strategies were typically created in the context of a specific methodology (like for example the waterfall model) and are unsuited for the serviceoriented ...
Flexibility is nice when it is needed. Unused flexibility is wasteful and adds complexity and cost. How to decide what changes we can support without exceptional high cost? It falls to the architect to weigh the drivers of the project and choose where to make it possible ...
|
GAbout 18 o'clock, we cut the Qi4J discussion and Emil goes on with Neo4J Notes and comments (add your ones as children pages
What is the correct way to write JavaDoc when you override methods like equals and hashCode? / / @Override
purpose of this page is to list some "rules" with regards to general test theory. If you disagree or don't understand the following statements, please leave a comment. These rules are assumed to be common knowledge, so no explanation will be provided unless someone ask. # Don't test ...
project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv400.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.company</groupId> <artifactId>companyparent</artifactId> <version>29</version> <packaging ...
add content to the glossary label your content with 'glossary'. To have a short excerpt added to the glossary page use \ description
level Agile is mostly absent, or at least at its most immature development at its most painfull. Some characteristics below. Dependency handling artifacts (typically jar's) handled manually All external artifacts needed by a development team is handled manually ...
you want to test your database implementation you will need a database. If the database is unavailable, all database tests will fail. A developer with indepth knowledge of the application will probably quickly come to the conclusion that the database is unavailable if a hundred DAOtests fail, but why let ...
Group management Annotating tests with one or more groups makes it possible to have test runs that include group A and B, but excludes tests from group C. It is technically possible to use any number of groups, but we recommend to create groups ...
How to reduce the impact on testability incurred by generated GUI code When creating a Graphical User Interface (GUI) in Java it is common to use GUI builder tools like e.g. Matisse. These tools generate code that is difficult to change and debug without ...
An abstract concept of estimation. Instead of estimating in hours, you use a parameterized value which is a factor representing complexity or difficulty. Mike Cohn's oneliner around this is (as I can remember it from a presentation he did on XPmeetup): You don't ...
|
||||||||||||||||||||||||||||||
Hpurpose of this page is to describe a few helpers that are often useful for service and system tests. The same helpers are also the basis for a SysAdmin Production Toolbox. RestoreDefaultState bring the system back to a known, "empty" state. Each test insert their own test data ...
Needs cleanup aka. the gap between agile and ITIL Problem description What hurts? What problems to we need to address? Hard to get resources from Operations early in the project Hard to get Operations as official stakeholders (and thus someone ...
Vmodel http://en.wikipedia.org/wiki/VModel(softwaredevelopment) groups tests into unit tests, integration tests, system tests and acceptance tests. To model big distributed systems, higher granularity and additional levels / test types is needed. There is also the matter of responsibility ...
best approach to debug poor performance is to detect when and why the performance is poor. The obvious approach is to monitor and measure the performance continuously. For web applications Hudson sysadm:Hudson Installation Guide Solaris and the Grinder Plugin http://wiki.hudsonci.org/display/HUDSON ...
Strategy There are of course many strategies for finding and fixing performance issues in any application. The most common is probably Classic performance debugging # Find the bottleneck # Fix the bottleneck # Repeat Do some initial cleanup to eliminate stupid issues However, locating ...
possible to deploy directly to IBM WebSphere 6.x by regular file transfer protocols, and it is not currently supported by Cargo http://cargo.codehaus.org/. The way of deploying to a cluster recommended by IBM, is by executing the file wsadmin.bat on the deployer's end with a number of parameters. The bat file is a facade ...
TestNG supports sorting of tests into groups. I can be convenient to be able to perform a group wide setup, before, and teardown, after, the tests in a group are run. This can be accomplished in testNG using the BeforeGroups annotation. Sort your tests into logical groups ...
profile> <id>updatedistroVersion</id> <activation> <property> <name>!distroVersion</name> </property> </activation> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>execmavenplugin</artifactId> <executions> <execution> <id>echodistroVersiontofile</id> <phase>generateresources</phase> <goals> <goal ...
Needs verification /extension The goal is to have an EAR deployment unit. While we could have EJBS, servlets and other code and resources as modules, we recommend putting the "modules" as separate Maven projects to allow easier reuse. E.g. ...
producer creates an zip file containing some sql files. These are attached to the build and thus deployed alongside the primary artifact using a classifier. The consumer unpacks the zip and can utilize the sql files as if they were included in the consumer project. Producer ...
last categories are possible to use in JUnit Since the 4.8 version Hope this will ease the implementation of using testgrouping :) Thanks to David Saff http://david.saff.net/ for helping us reach this solution. 1. We will need a Suite to be run for each category. Example ...
golden rule is that mvn clean install should ALWAYS return Build Successful. This means that the test suite which is run by default cannot depend on any external resources like database, JMS, Files, WebServices, etc. This does not mean that you ...
|
IForbedret kommunikasjon Definere en trappemodell for hva man kommuniserer når. Det endelige målet er å bidra til best mulig økonomi for forretningen. Fjerne seg fra TCO mål, rette seg mot "best mulig ...
Goals and drivers Same artifact (primary artifact, can have multiple distribution artifacts) should be deployed to all environments, buildtime configuration is unacceptable. The number of manual steps required to deploy should be kept at a bare minimum. => minimize the number of required ...
Release notes How to automate release notes? When to force all changes through an issue tracker and when to write a custom overview? Selection criteria What properties must the issue tracker we choose have? Is Jira the only ...
|
||||||||||||||||||||||||||||||
JMotivation Developers and architects have too long neglected the needs of system administration. The excuses vary, but the symptoms are much the same; Complex and time consuming deployments. Complex and error prone configuration. Too much, too little or just plain bad ...
Rules for Developing Robust Programs with Java Exceptions For each module, identify possible emergencies. Define how each module should respond to an undesired event. Do not use exceptions for control flow. Use exceptions in exceptional situations ...
project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv400.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.company</groupId> <artifactId>companyparentjava</artifactId> <version>1</version> <packaging ...
web application strategy is a collection of tactics, architecture and patterns and a few other good practices. The goal is to provide an starting point for projects within the defined scope and try to make the recommendations as easy to adopt as possible. Scope We have chosen ...
When choosing a web framework Choose carefully. Matt Raible has several presentations on how to choose a web framework: http://raibledesigns.com/rd/page/publications Go with the flow. Follow the recipe's of the framework, but if you find yourself fighting against ...
Courtesy of Ronny Løvtangen for putting together most of these links in the OW internal wiki. Documentation and specs MSDN DOM http://msdn2.microsoft.com/enus/library/ms533054.aspx (works best in IE) MSDN JScript 5.6 http://msdn2.microsoft.com/enus/library/yek4tbz0.aspx (works best ...
Theory SUN: JavaSpaces http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/ Wikipedia: JavaSpaces http://en.wikipedia.org/wiki/Tuplespace#JavaSpaces Using JavaSpaces http://www.theserverside.com/tt/articles/article.tss?l=UsingJavaSpaces by Joseph Ottinger letter from me ...
How to use Jetty in a test Use this alternative for automated tests and debugging. Add the jetty dependencies to pom.xml <! standard jetty server > <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty</artifactId> <version>6.0.0</version> <scope>test</scope> </dependency ...
ERIKS KLADD. Dette virker ikke enda. Som hjelp til manuell test/verifikasjon av en webapp så hadde det vært veldig kjekt å dytte litt data til en hsqldbinstans før man ...
JigZaw Agile Testing done Right Documentation Introduction JigZaw Introduction Test Levels JigZaw Test Levels Categorization Matrix JigZaw Categorization Matrix Design Principles and Drivers JigZaw Design Principles and Drivers Mapping between requirements and tests ...
Challenges Mapping between requirements and tests. The mapping between requirements and tests can be made using the group concept in testng for testngbased tests. However, the test report generated with mavensurefireplugin doesn't include this information. See SUREFIRE472: Add support for view ...
purpose of the categorization matrix is to be able to discuss and classify different kinds of tests. It is not critical whether a certain test is classified as a unit or service test, but it is important to have separate tests for with/without data and with/without environment. This makes it much easier to write the tests ...
Divide and conquer Singleresponsibility principle Group tests according to their prerequisites Always choose the the cheapest and simplest solution which solves the problem JigZaw principles applied to test maintenance See also Mapping between requirements and tests
Needs refactoring! Dependent tests If you want to test your database implementation you will need a database. If the database is unavailable, all database tests will fail. A developer with indepth knowledge of the application will probably quickly come to the conclusion that the database is unavailable if a hundred ...
What is JigZaw? Is it a tool? Is a pattern? Is it Javaspecific? No it is not a tool, nor a pattern, nor is it a onesizefitsall solution. JigZaw is a test model and can be used as framework when designing and discussing tests. While the examples are mostly with Javarelated technology, there is nothing in JigZaw that is limited to Java ...
Presentation helt at Telenor 19. april 2010. Presentation is in Norwegian. Abstract Hvordan kan vi dekke vakuumet som oppstår mellom enhetstester og manuelle system integrasjonstester? Vi har vel alle brukt mock, stub og ...
Introduction The Vmodel http://en.wikipedia.org/wiki/VModel(softwaredevelopment) is a popular approach to testing in a typical waterfall http://en.wikipedia.org/wiki/Waterfallmodel project. With the rising popularity of agile development methodologies like XP and Scrum, the Vmodel is no longer sufficient. We realized ...
record; no problem is equal to another, there will always be multiple possible solutions to any problem and developers we always have different preferences with regards to how they write and maintain tests. (Yes, I assume you write tests since you have ...
following information should be persisted for each system test: Timestamp start of test Timestamp end of test Metrics from the test quantitative Which applications? For each application what version? what configuration? which data? Base system Hardware ...
Introduction The following implementation tactics can probably be implemented by a lots of different tools, but the software stack we have used is TestNG EasyMock EasyMock classextension Spring (IoC container) Continuum Maven 2.x The following sections will explain how JigZaw ...
purpose of this page is to give an overview of the technology that can be employed to implement the OW Test Model tactic. We need support for the following: Put tests in test groups run setup code before and after a group of tests Mocks Inmemory ...
Vmodel http://en.wikipedia.org/wiki/VModel(softwaredevelopment) groups tests into unit tests, integration tests, system tests and acceptance tests. Unit and system tests are the same in JigZaw, but integration and acceptance tests are used as properties/aspects of tests, not as test levels ...
Testlevel vs Testproperties Unit Service Multiservice System System Integration Acceptance With Data (/) (/) (/) Without Data (/) (/) (/) (/) With Envionment (/) (/) (/) Without Environment (/) (/) (/) Fast (/) (/) (/) (/) Slow (/) (/) (/) Manual (/) (/) (/) LoadTest (/) ? (/) ? (/) Testproperties vs Timeline Before commit 10 min Hourly Daily Weekly ...
Presentation held at Telenor 19th April 2010. Presentation is in Norwegian
http://coreplex.blogspot.com/2008/10/jmetervariablesvspropertiesvs.html User Defined Variables http://jakarta.apache.org/jmeter/usermanual/bestpractices.html#uservariables Functions http://jakarta.apache.org/jmeter/usermanual/functions.html JMeter Adding User Defined Variables http://www.exforsys.com/tutorials/jmeter/addinguserdefinedvariables.html
xml version="1.0" encoding="UTF8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv400.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.company.app1</groupId> <artifactId>systemtestapp1performance ...
Fix plugin Download Updated mavenjmeterplugin http://files.myopera.com/mateamargo/blog/mavenjmeterplugin.zip Add the changes described here http://wiki.apache.org/jakartajmeter/JMeterMavenPlugin to the updated version of the plugin downloaded earlier. Build and install. Set up the test project Install ...
Introduction We will now present a complete test strategy which explains how to efficiently test JMS in a complex system. The strategy is based on JigZaw and here use three types of tests; unit, service and system. Unit tests Unit tests ...
Schemas Using a schema different than the users default schema should be avoided (especially if the schema is not a constant), since configuring different schemas in JPA can be tricky. However, in some scenarios JPA must take Schemas into consideration. When using ...
project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv400.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.company</groupId> <artifactId>companyparentjswdaemon</artifactId> <version>12SNAPSHOT</version> <packaging ...
project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/mavenv400.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.company</groupId> <artifactId>companyparentjswdaemonwebapp</artifactId> <version>1SNAPSHOT</version> <packaging ...
upfront design is probably not a good idea. But what is just enough? See architecture:Antiagile architecture choices
|
KNaked JustInTime planning. Kanban 看板 means "sign" in Japanese. It is used to describe manufacturing systems that are based on pull as opposed to push. For example: Dell only orders http://www.youtube.com/watch?v=EEhNkzdKyrw the parts from it supply chain ...
Notes on Emil Eifrem Neo4J Check out the neo page http://neo4j.org/ for more details The death of rdbms CouchDB Simple DB BigTable Cassandra Graphs Your file system (Simlinks, shortcuts) Trends Trend 1 Data is getting ...
|
||||||||||||||||||||||||||||||
LPoppendiecks' Toyota inspired method We don't have a lot of content on this subject. Feel free to expand it! http://en.wikipedia.org/wiki/Leansoftwaredevelopment The Oslo Lean Meetup An Oslo community based on Lean: http://agile.meetup.com/31
pages are supposed to be a place for sharing ideas on how we can quickly develop web applications. Some Jetty Notes From http://www.jroller.com/robwilliams/entry/ganymedeanotherbrokenpileof I prefer Jetty over WTP with Tomcat (which is what I ...
Simple Logging Facade for Java (SLF4J) http://www.slf4j.org/ Logback http://logback.qos.ch/ Apache log4j http://logging.apache.org/log4j/ Java Util Logging http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/overview.html Apache Commonslogging http://commons.apache.org/logging ...
purpose of this page is to collect sound advice with regards to how to set up logging in large and possibly distributed systems. Purpose and responsibility Debug log Error log to trigger actions from operations. Error Handling And Exception Management security:Audit ...
What are the most popular log levels? Log4j Log Levels Log level Description FATAL The FATAL level designates very severe error events that will presumably lead the application to abort. ERROR The ERROR level designates error events that might ...
Possible functional requirements Basic CRUD Search/queries Transactions Integration (for example use a RDBMS as integration strategy) Possible nonfunctional requirements Short rampup time Simple programming model / high level APIs. Testability HA/scalability shared ...
|
MSome choices can have profound effect on the result of a development project. Some choices can/should/must be made early, others can be delayed. What to decide when requires experience and competence. Here is a list of topics with some suggestions ...
Managing test data represents a major challenge in system development projects. Read Evolutionary Database Design http://www.martinfowler.com/articles/evodb.html from Fowler and Sadalage for some background material to the subject. Use of test data Test data is used ...
Singlepointofentry to requirements Assumption: Requirements are expressed as user stories User Stories (US). We want single point of entry to all requirements and we want a 11 mapping to the tests that ensure that they are fulfilled. A wiki makes the USs easily available and it is easy ...
How to share configuration between Spring and Maven See Deploy to different environments runtime and configurationmanagementwithspring http://blog.arendsen.net/index.php/2005/03/12/configurationmanagementwithspring/ for examples on what's possible. Filtering in Maven Use filtering to easily set a different set of properties according to environment ...
artifactId The name of a libProject/product used in VCS should be reflected in the artifactId of the project. Additionally, it is common to prefix all modules (including the parent) in a multimodule project. E.g. commonsparent, commonslog, commonsfile. groupId Choosing a groupId is a bit trickier: groupId some ...
Table of Contents How to assemble an application The official docs should be sufficient, see the mavenassemblyplugin http://maven.apache.org/plugins/mavenassemblyplugin/. If applicable, prefer to use the predefined descriptors. Example: How to create an executable jar with all runtime dependencies ...
Table of Contents How to handle libraries that cannot be found in any public Maven repository? Download the artifact to local storage. (e.g. /tmp/) Add the dependency to pom.xml and run mvn clean install. If the dependency cannot be found, the output will display which ...
Table of Contents How to cut a release? See official documentation; Release guide http://maven.apache.org/guides/mini/guidereleasing.html and plugin documentation http://maven.apache.org/plugins/mavenreleaseplugin/ # Make sure no dependencies or plugins use SNAPSHOT versions. # Set up ...
purpose of this FAQ is to answer questions related to Maven that often come up in development projects. Links to official Maven documentation should be preferred to writing custom documentation. Quickstart Maven quickstart FAQ Organize Maven projects and modules Organize Maven ...
Howtos How to convert an Ant project to Maven? # Change your build file to work with a file structure that adheres to the Standard Directory Layout http://maven.apache.org/guides/introduction/introductiontothestandarddirectorylayout.html. # Ensure that your Ant tasks follows the Build lifecycle ...
Maven Frequently Unanswered Questions How do I use mavenjaxbschemagenplugin (generate xsd from java) and jaxwsmavenplugin (generate java classes from WSDL) on java 6 on the same prosject? Current content of pom that does not work: <plugin> <groupId ...
How to compile C code with Maven? Alternative 1: Use execmavenplugin http://mojo.codehaus.org/execmavenplugin/ to call a make script. Alternative 2: Use nativemavenplugin http://mojo.codehaus.org/mavennative/nativemavenplugin/ to call the compiler directly. TODO Paste pom examples ...
trunk A location in the code repository bordering tags and branches project A maven project. If there's a pom, it's a project pom Project Object Model. The metainformation for project parent pom/project A project of type 'pom' being referenced as a parent from another project ...
Table of Contents What does "Maven" mean? A maven (also mavin or mayvin) is a trusted expert in a particular field, who seeks to pass his or her knowledge on to others. (From: Wikipedia http://en.wikipedia.org/wiki/Maven) How to learn Maven ...
Table of Contents How to use a build artifact repository manager? See Repository Management http://maven.apache.org/repositorymanagement.html for a description of the concept. See also repository manager http://www.sonatype.com/book/reference/repositorymanager.html# (Nexus centric). The maven repository can ...
Table of Contents Which versions of Surefire and TestNG work well together? We recommend Surefire 2.4 and TestNG 5.7 or 5.8. This combination has proven to work well. <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>mavensurefireplugin</artifactId ...
Plugin setup <plugin> <plugin> <groupId>org.codehaus.mojo.webstart</groupId> <artifactId>webstartmavenplugin</artifactId> <version>1.0alpha2</version> <executions> <execution> <phase>processresources</phase> <goals> <goal>jnlpdownloadservlet</goal> </goals> </execution> </executions> <configuration> <outputDirectoryName>applications</outputDirectoryName> <jnlpFiles ...
Contents Example template.vm In src/main/jnlp/template.vm: <?xml version="1.0" encoding="utf8"?> <jnlp spec="1.0" codebase="http://objectware.no/webstart/$project.ArtifactId/" href="$outputFile"> <information> <title>$project.Name $project.Version</title> <vendor>$project.Organization.Name</vendor ...
Ensure all artifacts adhere to the standards set by Enterprise Maven Infrastructure. Prepare release notes Issue tracking in the Enterprise Release Maven Deploy and Release FAQ all jar projects Release Maven Deploy and Release FAQ all deployment ...
Below we have gathered a selection of the most popular agile methodologies
Implementation/Product Type Description Java Service Wrapper (JSW) http://wrapper.tanukisoftware.org/doc/english/introduction.html#reliability JVM The Wrapper monitors a JVM process and automatically restarts it if it that the JVM has crashed or hung. This process takes just a few seconds ...
WORK IN PROGRESS! Erik's notes: Document strategy for managing multiple environments. Use JNLP for deployment in test environments to reduce deployment time to virtually nothing. Deploy application with Java Network Launching Protocol (JNLP) Use ConfigService to make it possible ...
About modularization Modularization is about how you structure code. Structure makes it easier to understand and maneuver around in the project and makes it easier for a team to work in parallel. Steps that can be made to modularize are: # Grouping of classes, interfaces and packages # Easy, underneath ...
rare occasions you have a number of standalone artifacts that have the same release cycle. If these projects are always releases together it is possible to add them as modules to a multimodule Maven project. This approach differs from the builderpom in three ways # All projects ...
|
||||||||||||||||||||||||||||||
NMain components architecture:Agile and Software Architecture Agile Mindset and Methodology Strategies Tactics Popular Pieces JigZaw JigZaw Enterprise Maven Infrastructure Installation and Deployment Automation Maven FAQ Test Frameworks and Tools sysadm:Lightweight alternatives to heavyweight ...
|
OTODO: Bård can you write a description and requirements/wishes/goals
TODO: Geir Key words: Almost all functionality is CRUD in the DAlayer. Really thin service layer and no gui. Services exposed with SOAP A test for the service has almost 100% overlapping with a test of the DAfunctionality. It does not make sense to test the same ...
many Open Source JMS (Java Message Service) Implementations http://www.manageability.org/blog/stuff/opensourcejmsjava, but we will start with evaluating ActiveMQ http://activemq.codehaus.org/ and JBossMessaging http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossMessaging
Table of Contents What is and where can I find the Maven SuperPOM? All Maven projects implicitly inherit from the Maven super pom. Read more on the subject in Introduction to the pom, SuperPOM http://maven.apache.org/guides/introduction/introductiontothepom.html#SuperPOM ...
Guidelines There are many types of Maven project relationships http://www.sonatype.com/books/mavenbook/reference/pomrelationshipssectprojectrelationships.html and many ways or organizing Maven projects. The purpose of this page is to explain some guidelines and setups that we have come to value. The main guidelines can ...
Logging Error Handling And Exception Management How to use lightweight software to speed of development sysadm:Lightweight alternatives to heavyweight technologies
Tool Type Opinions and notes FIT http://fit.c2.com/ Requirement/test mapper Very popular tool. Concordian http://www.concordion.org/ Requirement/testmapper Like FIT, but better for Java JBehave http://jbehave.org/ Requirement/testmapper Java powered. Follows ...
|
||||||||||||||||||||||||||||||
PWhat is it? This approach is aimed at what I like to call product lines. I.e., the goal is to deliver multiple different products with similar functionality. The general idea is to write libraries that are easy to integrate and reuse. Each product can then depend on any subset ...
Tool Type Opinions and notes JMeter http://jakarta.apache.org/jmeter/ Load test functional behavior and measure performance Maven plugin: chronos http://mojo.codehaus.org/chronosmavenplugin/ The Grinder http://grinder.sourceforge.net/ load testing framework that makes it easy to run a distributed ...
Persistence Product Overview Logical Requirements to Persistence Products
All products in this overview support persistence, but what other responsibility and properties do they have? Which are important enough to group by? TODO: Split "Scalable" into how they scale OR just use () and ()() and (x) to illustrate differences? E.g. need to show that while Oracle ...
Do you plan poker? Planning poker is a session where the team gets together and puts some estimates on the backlog. The goal is to rip out hidden complexity (one team member may know details that make some backlog items ...
Example with JMSclient While we strive to make our artifacts platform independent, this is not always possible. The java.naming.factory.initialproperty needed by JndiTemplate http://static.springframework.org/spring/docs/2.5.x/api/org/springframework/jndi/JndiTemplate.html requires that the given implementation of ContextFactory is present ...
Personal micro time boxing. From http://www.xpday.net/Xpday2007/session/PomodoroTechnique.html We work in small, tightly focused time boxes of 25 minutes, followed by a 5 minutes pause. Each of these time boxes is called a "pomodoro", (Italian for "tomato") because ...
hard to draw a line for all and state one book that all programmers should read in the pursuit of being more agile. However, one book in particular seems to shine as a classic in the field: The Pragmatic Programmer http://www.amazon.com/PragmaticProgrammerJourneymanMaster/dp/020161622X/ It stays ...
Title Where Who When Comment Agile 2.0 in the real world (TBA) JavaZone 09 http://www.javazone.no/ Erik Drolshammer 2009.09.092009.09.10 proposal! How automated deployment can reduce cost, risk and complexity Presentations and Publications2009.04.15C1Northautomated.deployment.pdf CommunityOne North ...
Some links I got from Tom Gilb. Wlil process and format this a bit later. Ken Schwaber Google video scrum: http://video.google.com/videoplay?docid=7230144396191025011 Evensen: http://www.agilethinkers.com/2008/05/tomgilbane.html Shriver: http://www.agilethinkers.com ...
focus on how to solve problems with different products. WebSphere WebSphere deployment from a CI environment
page is a loose collection of notes, vaguely based on Robert C. Martin's talks about software craftmanship (there also a book about it http://www.mcbreen.ab.ca/SoftwareCraftsmanship/). The idea is that we find some common ethichs that are industrywide, and can help us reinforce ...
Introduction Project inheritance is about sharing POM configuration between projects. See 9.5.3. Project Inheritance http://www.sonatype.com/books/mavenbook/reference/pomrelationshipssectprojectinheritance.html for a description of the concept. There will always be a tradeoff between the DRY principle http://en.wikipedia.org/wiki/Don ...
Agile Contracts, Mary Poppendieck http://ieeexplore.ieee.org/Xplore/login.jsp?url=/iel5/4222653/4222654/04222665.pdf?isnumber=4222654&prod=CNF&arnumber=4222665&arSt=25&ared=25&arAuthor=Poppendieck%2CMary buy article from IEEE Agile contracts http://alistair.cockburn.us ...
Persistence logic in a separate Maven project We do not want to have persistence logic spread throughout the application, since this would violate basic OO principles like separation of concerns. In a Maven world we then have two options a) a separate ...
|
QTaken from discussion topics after October 2. presentation In lack of a better place to put the discussion :) Test data Q: How should test data best be stored? Excel files, xml, property files? Q: How partitioned ...
|
||||||||||||||||||||||||||||||
RSuggested RDBMS centric approach Basic SQL Put all database tests that rely on standard ANSI SQL in one group. In practice, this group can contain the set of functionality common for the chosen inmemory database and the production DBMS. Write a beforeGroup ...
Maven can be configured to use almost any directory structure and so can the scm plugin. However, in the spirit of convention over configuration we strongly recommend that you follow the trunk, tags, branches convention when using Subversion. See ...
See also Database versioning Jetty with prepopulated local HSQLDB Deploy to different environments runtime Change environment at buildtime using profiles Managing test data Testing DB scripts Modeling tools SQuirreL http://www.squirrelsql.org/ Freeware. Reverse ...
Reasons for wanting frequent deployments: TTM Time to Market Reduced risk Reduced cost Happy customers :) Sprints, system test, acceptance test/deploy to production TODO: KIR figur som viser sprinter, systemtestsykler og deploysykler. Related ...
profile> <id>alljars</id> <activation> <property> <name>allJars</name> <value>true</value> </property> </activation> <build> <plugins> <plugin> <inherited>true</inherited> <groupId>org.apache.maven.plugins</groupId> <artifactId>mavensourceplugin</artifactId> <executions> <execution> <id>attachsources ...
Repository Manager Maven artifacts can be downloaded from multiple sources: Central repository (repo1) Company repository (shared code) Project repository (project specific code) Other external repository (3rd party) Other external code not in repository ...
Bjørn Bjerkli has written an interesting blog post with the title "Testing code or testing requirements". Unfortunately, the hyperlink doesn't seem to work properly, so we have to link to the comment page https://www.blogger.com/comment.g?blogID=29135008 ...
collection of resources from the old "Smidig 2.0" catalogue. It's contents could probably be divided and moved elsewhere. Very, very good books See Excellent Books. Advanced testing Continuous Integration Prerelease Testing Best Practices thread http ...
Drivers and rationale When using an Oracle database there are many ways and tools to create, delete and maintain database structure and data. Here we will describe what we have learned and why we recommend a certain setup. We need ...
postiteration meeting where the team seeks improvement. Try/Stop/Keep Reserve at least an hour for this meeting (depending on length of iteration). All team members are encouraged to suggest changes to the current set of Practices employed by the team. The changes are categorized ...
Den risikable risikomatrisen Innlegg i Computerworld Norge nr. 29, fredag 5. september 2008 av Trond Wingård. TODO: Lenke 20070205 6lightning talk risikomatrise http://files.meetup.com/169191/20070205%206lightning%20talk%20risikomatrise.xls traditional risk ...
Tittel: Robust smidig utvikling når resultater er viktigere enn religion Foredragsholder: Totto Lyntale på DND Software 2009 oppvarming før paneldebatten "SCRUM Ti ganger raskere eller kollektiv avstraffelse
Requirements Artifact must be deployed to a Maven repository. See Enterprise Maven Infrastructure for details. Jar project is assumed and mainClass must be set up. (Have not tried other artifact types.) Artifact does not need buildtime configuration. How Generate ...
Motivation Why Package Management with RPM? http://www.dedicatedserverhosting.com/2008/11/12/whypackagemanagementwithrpm/ Table of Contents
build RPM package from your java project (using Maven), the following maven plugin should be added to your POM file: <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>rpmmavenplugin</artifactId> <version>2.0beta1</version> </plugin> Using RPM ...
|
SParent page to group initiatives still in the sandbox. I.e., the content is still unstructured, and the ideas are not easy to grasp
Secondary benefits: More content and more consistent content in the Agile 2.0 wiki space A list of unsolved "pains" that we should know how to solve Code examples/patches to ease some known pains. Some starting questions Deployment ...
Separate booted from running state Infer a booted as a separate state from running. Can implement retryfunctionality to improve reliability. (Can try to initialize the Spring AppContext later if it fails because an external service is unavailable. Catch exceptions ...
widely popular king of the hill. Scrum is the ruling mainstream agile methodology, probably with XP right behind it. Most agile projects probably use some mix of these. Scrum is idiotsafe, meaning it is sure to attract idiots. The theory of Scrum is so simple ...
How avoid weekends and vacations to "pollute" the burn down graph? One possible solution is to have a backlog item in the sprint which contains vacations and weekends. Example: Assumtions for the example: 2 weeks long sprint (10 working days) Average ...
About Selenium http://seleniumhq.org/ seems to have become the defacto web testing tool, with now WebDriver merging into the project. Resources Maven Selenium Plugin http://mojo.codehaus.org/seleniummavenplugin/ Selenium user meetup @ Google mars 2008 http://video.google.com ...
Note!The setup is version dependent! (not for JUnit) Junit: <dependencies> ... <! Junit > <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.5</version> <scope>test</scope> </dependency> <! Selenium > <dependency> <groupId>org.openqa.selenium.clientdrivers</groupId> <artifactId>seleniumjavaclientdriver</artifactId ...
Exampled attached as Erik wanted
JMeter and Grinder, from Test Frameworks and Tools
Singleresponsibility principle (SRP) http://www.objectmentor.com/resources/articles/srp.pdf: A test should have only one reason to change. Test code (as well as regular code) is then easier to refactor and easier to maintain. These attributes are by themselves enticing. Further, tests should ...
Abstract Contradiction in terms how does Agile cope with versioning? Agenda Need for speed Smidig har gitt effektiv utvikling, men henger resten av verden med på det økte tempoet? What we need Utfordringene ...
Table of Contents How to find which jar a class belongs to jarFinder http://www.jarfinder.com/ or javacio.us/jarhoo http://javacio.us/jarhoo How to find a pom snippet for a given jar Places to start: MVNBrowser http://www.mvnbrowser.com/ Sonatype Nexus http ...
External resources Manifesto Software Craftsmanship http://manifesto.softwarecraftsmanship.org/ InfoQ: Software Craftsmanship Manifesto: A Call to Arms http://www.infoq.com/news/2009/03/softwarecraftsmanship Uncle Bob's post on Master Craftsman Teams http://blog.objectmentor.com/articles/2009/04/01/mastercraftsmanteams My Take on Master Craftsman ...
Spring 2.5 introduced the Spring TestContext Framework. http://static.springframework.org/spring/docs/2.5.x/changelog.txt tfnico blogged about some of the basic features (and motivations) here: http://tfnico.blogspot.com/2007/09/springtextcontextframework.html A quick powerpoint presenting the framework is attached here ...
Resources Sprint Planning Meeting http://www.mountaingoatsoftware.com/sprintplanningmeeting Rules for the sprint planning meeting http://abrachan.wordpress.com/workshops/scrumdistilledworkshopstructure/scrum/rulesforthespintplanningmeeting/ !sprint.png
concept of stages Having one or more environments that are identical to production. It is a very common pattern because it allows processes of QA and testing that does not affect production data. Typical stages Development stage Test stage Preproduction stage Different stages ...
Features () Annotation based () A clean solution to the problem of how to use different beans in different environments. () Many of the more complex other tactics can be omitted. () Requires Spring 2.5 () How are usernames and passwords managed? () Not all of the other tactics can ...
Context GUI (swing) layer Business logic layer Data access layer While the Webapp Example has 85% CRUD functionality, the essential part of this application is the business logic layer. A possible testing strategy Test each layer in isolation ...
Remember the The Eight Fallacies of Distributed Computing http://michael.toren.net/mirrors/eightfallaciesofdistributedcomputing/ Viewpoint: System Administrator This a simplified state diagram of what we want. A Failed state should probably be added and ideally it should also be possible to recover and go back ...
days of web3.0 with hot topics as "Semantic Web", "RDF", "graphs" and that stuff. At the GeekCruise, we got a short introduction to Neo4J, a network/graph database that is supposed to provide Web3.0, Semantic Web and RDF greatness. Its great advantage is of some kinds ...
strategy is a collection of tactics Tactics combined with patterns and/or instructions for how to combine them
TODO: Move this into architecture/code somewhere. Use of packages Spring Application Context Have separate files for each function per package. A view which combines multiple domain objects needs the appContext files for both, plus one for the combination
We assume that the rpm repository can be set up on the same host as the Maven repository. If this is not the case, use rsync instead of cp in the script below and use ssh to execute the createrepo command on the remote host. Export files From JCRbased repositories ...
Probably a good idea to create a (web) portal to have one central point of access to these tools. Endtoend "shallow ping" through the system, service level Front end for centralized Logging Monitoring of the system and services Monitoring the workflow/value chain ...
SQLHelper restoreDefaultState (create schema and insert initial product data
Use a separate Maven project with pom packaging. Ideally this should be zip, tar.bz2, tar.gz. List the different deployment units. List the relevant site artifacts. Include an html export from confluence. Ideally this export should be automated by maven ...
Introduction There are basically two approaches to releasing a system: # Release all components and their corresponding documentation individually. Component release for short. # Release all components and the documentation for the system as one unit. System release for short. Each has its advantages and disadvantages ...
Introduction There are in general three main system test categories; automated, semiautomated and manual. The distribution between test types may vary, but in any nontrivial system there will always be some parts of the system which will never be automatically tested. Thus, while we ...
System tests that follow this setup can be extended to function as Factory Acceptance Tests! Deployment made easy Install all deployment units ssh app1Machine > Use ssh to log into the machine you want to run your app rpm ivh ...
|
||||||||||||||||||||||||||||||
TIntro Tactics are the smallest pieces of the puzzle, and may be any combination of: Technology Best practises Patterns Design Architecture Library, tools and frameworks Skills
Technical Site and reporting Reporting is implemented by "Plugins which generate reports, are configured as reports in the POM and run under the site generation lifecycle.". The tables below show some of the most popular of these plugins. From the official plugin overview http://maven.apache.org ...
Associative (i.e. no ordering constraints) Commutative (also abt removing constraints) Idempotent (enabling atleastonce delivery) Distributed. Old ACID: predictive & accurate. New ACID: flexible & redundant. Thanks @emileifrem Learning resources Seattle Scalability Conference: Amazon ...
Test terminology Mock Stub Simulator
Codecentric test tools Performance test tools Web tests Other test tools
Part 3 Group management Annotating tests with one or more groups makes it possible to have test runs that include group A and B, but excludes tests from group C. It is technically possible to use any number of groups, but we recommend ...
Part 1 Intro The Vmodel http://en.wikipedia.org/wiki/VModel(softwaredevelopment) is a popular approach to testing in a typical waterfall http://en.wikipedia.org/wiki/Waterfallmodel project. With the rising popularity of agile development methodologies like XP and Scrum, the Vmodel is no longer sufficient ...
refactoring support in most IDEs, most code refactorings are easy and lowrisk changes. However, not everything should be subject to frequent refactorings. A public API is a typical example of an interface we want to be stable and may thus be considered a {}refactorization boundary ...
Part 2 One and only one reason to change Singleresponsibility principle (SRP) http://www.objectmentor.com/resources/articles/srp.pdf: A test should have only one reason to change. Test code (as well as regular code) is then easier to refactor and easier ...
ever more popular testfirst approach. A widely popular programming rythm where you write failing tests before implementing/changing the functionality of functional code. Rules (as roughly gathered from Uncle Bob http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd) # Never ...
Challenges TODO: Evaluate common strategies and recommend some best practice? How to test DAO's Spring's AbstractDependencyInjectionSpringContextTests How to speed up tests that uses databases when developing? Inmemory database Start, stop, create tables and insert data ...
All code needs to be tested, even the database scripts. This page contains practices and suggestions for testing database artifacts. This PDF book http://www.informit.com/store/product.aspx?isbn=032150206X seems to contain very useful practices related to this subject, also ...
What functionality makes TestNG a better choice than JUnit 3/4? Groups Runtime configuration of which tests to run Dependent methods Flexible support for datadriven testing with DataProviders Support for testing with multiple threads How to swap between tests ...
Write and share a few notes on what you do each day. Allow your team to write their daily doings on a wiki, one page for each team member. Here's an example page: 22nd of October 2008 Worked on the login ...
team and customer get together and figure out what they are going to do in what order. Resources http://en.wikipedia.org/wiki/ExtremeProgrammingPractices#Planninggame http://c2.com/cgi/wiki?PlanningGame http://jamesshore.com/Blog/CouldaShouldaWoulda.html http://csis.pace.edu/bergin/xp ...
Paying for time taken with chips. A technique presented by GettingThingsDone (GTD) guru Merlin Mann. Each period (a day, week?) you get a set number of chips that you use to "pay" people for coming to meetings and other things that eat up ...
|
UGiven a system that adheres to the upstream downstream pattern from DDD, following strategy can be useful. The topmost consumer is responsible for all user stories. If the topmost consumer needs something from the component below, new user stories that express this need ...
Use cases New to the product how to start use it / basic usage Configuration options/description Examples of use More examples of use Specific requirements FAQ Troubleshoot guide For unixmp new to product What problems can the product solve ...
An agile way to express requirements. User story definitions from various sources Wikipedia http://en.wikipedia.org/wiki/Userstory extremeprogramming.org http://www.extremeprogramming.org/rules/userstories.html Agile Modelling http://www.agilemodeling.com/artifacts/userStory.htm User story template ...
Mapping user stories together. Jeff Patton has come up with this nice model of seeing the bigger picture between user stories. Resources http://agileproductdesign.com/presentations/userstorymapping/index.html Norwegian Resouces Nils Christian Haugen (Wasteless http ...
|
||||||||||||||||||||||||||||||
VCommon for all services isRunning shallow ping to test network to the node firewall appplication is listening at the correct ports Infrastructure Databases isTables/triggers/indices/etc. created isInitialDataInserted JMS is all Queues and Topics created test send and receive ...
Export space and checkin to regular VCS Export to xml, html or pdf and check into a version control system. xml export makes rollback possible, but is not very viewing friendly standalone. html is viewing friendly, but does not support rollback. This option must ...
Source code can easily be version controlled with a Version Control System http://en.wikipedia.org/wiki/Listofrevisioncontrolsoftware. We can control the version of artifacts using Maven and the mavenreleaseplugin http://maven.apache.org/plugins/mavenreleaseplugin. See Organizing Maven projects for details ...
|
WWhen (is it ever so?) is waterfall appropriate? TODO Statistics that show why waterfall is not appropriate for development projects TODO Scalable, Distributed, Outsourced, and CMMI Level 5: Some of the best scrums http://www4.java.no/web/show.do?page=92&articleid ...
Some classic patterns of web applications These are fairly well documented in some Excellent Books. We recommend that you make yourself familiar with the basic patterns, then follow through by using an existing Java Web Framework Java Web Frameworks ...
Lightweight development, but heavyweight production server: Which problems must be addressed? (Note! Just identify, not solve) How to deploy to IBM WebSphere 6.x WebSphere deployment from a CI environment
Catch exceptions where you can do something about them (or let them propagate all the way up to the top level handler). Categorization Catch ALL exceptions at the top level of the application nice message to the user log as much ...
possible to reuse fragments of web applications. Think two web applications being dependent on the same module of templates. However, there are some limitations: JSP's can generally not be packaged inside JARfiles in your classpath (they have to be located openly in the WARfile, so ...
Why is JigZaw good for webapps? Because: There are lots of testcategories for webapps alone We need quick rountrips We need control, configuration, web.xml For web testing implementations, see Web testing. JigZaw Common test problems and how to solve ...
Some logging features can be configured in the webapp from day 1: A console appender for development use Log sessionid together with each log statement (if any) this is useful for filtering out the activity of one user For test/produse, use file ...
page needs ALOT of work, but unfortunately this kind of knowledge is spread evenly throughout the web. Web designers are perhaps the most intensive bloggers out there, so any search on google will provide enourmous bundles of information on any web design topic ...
Resources Best Practices for Speeding Up Your Web Site http://developer.yahoo.com/performance/rules.html Minify JavaScript and CSS Minify JavaScript and CSS http://developer.yahoo.com/performance/rules.html#minify can be done by the following tools: JSMin http://crockford.com ...
Tool Type Opinions and notes FITNesse http://fitnesse.org/ integrated standalone wiki, and acceptance testing framework ... Selenium http://selenium.openqa.org/ Web tests See our Selenium notes Celerity http://celerity.rubyforge.org/ Web tests JRuby/Watir wrapper ...
Strategies and tactics To webtest or not to webtest It depends. Remember that even though webtests may seem easy and quick, they are expensive compared to unittests. However, you can get pretty far with just having a single test or script that attempts to do some ...
Requirements to war archive Must be released with maven and deployed to a repository. No jetty specific configuration in the war (i.e no WEBINF/jettyweb.xml file). Jetty configuration xmlfile examples {{conf/jetty.xml}} jetty.xml The main configuration file where the jetty server properties ...
Strategy 1: add war archive to a preinstalled webserver Typically multiple webapps in one instance of WebSphere, Weblogic, Tomcat (or Jetty). cargomavenplugin? wasmp? etc. Distribution as war or ear. Requires a preconfigured webserver. Probably not easy to automate, since you ...
Problems with deploying from CIserver There may be better way of doing deployment than what is presented here. In such a case, please let us know Deployment to WebSphere from a CIserver can be troublesome since the deployment tool, wsadmin, is tighty coupled ...
First draft You can learn agile development by reading a lot of books on the subject. And basic understanding of Scrum and XP concepts is IMHO necessary to work agilely. However, necessary is not the same as sufficient. Experience is needed to work efficiently with any methodology ...
Scratch area, needs cleanup What do we want? Must be printable Must be under version control and follow the same release cycle as the application To minimize time spent on writing documentation How Geir Hedemark's suggested template: http ...
|
||||||||||||||||||||||||||||||
XeXtreme Programming (XP) An early methodology to gather mainstream popularity. Practices It defines a number of practices that are pretty common in most agile projects. Some examples: Pairprogrammering Unittesting Continous Integration The 10minute build Weekly meetings Shrinking teams ...
|
Y |
||||||||||||||||||||||||||||||
Z |
!@#$ |
||||||||||||||||||||||||||||||