Companies doing Domain driven design [closed] - domain-driven-design

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I've just finished reading Domain Driven Design and I'm enchanted with some of the ideas covered in it. Do you know any companies that implement ubiquitous language in their projects?

This is an indirect answer. You could find such projects by looking at software development companies who apply domain-driven design practices and seeing who their clients are.
Three such companies are:
Domain Language - at which Eric Evans works, he wrote the Domain Driven Design book
Factor10 - at which Jimmy Nilsson works, he wrote "Applying Domain-Driven Design and Patterns"
OmegaPoint - employee Dan Bergh Johnsson has given a number of talks on DDD

The Domain Driven Design Yahoo Group may be a better place to find an answer to your question.

The Norwegian Oil and gas company Statoil uses it.

The company I work for uses Domain-Driven Design to its fullest and after a few very successful projects, we're sticking with the design philosophy.
The company is Hint Innovation, we are a relatively new company so the website is not done yet, but it should be by January, you might want to check back then.
I don't know of any other company that uses the Domain-Driven Design approach for all of their projects.

We've been using DDD at Earnware Corporation for the last 2 years. Since we've been around for 10+ years, we employ the "anti-corruption layer" pattern quite a bit to talk to legacy systems.
DDD means a lot of things, but it also is something you can start doing right away with the next function you write (http://www.agileatwork.com/domain-driven-design-in-the-small/). It's about closing the gap between business concepts and your code so that your code can bend in the right spots. The patterns like unit of work and specification help accomplish that end result.

Chillisoft has been doing Domain Driven Design for 10 years and have more recently developed Habanero an Enterprise Application Developement Framework that incorporporates many of the principles of Domain Driven Design and the many lessons learnt over the years.

Related

Agile Environment/Teams [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 5 years ago.
Improve this question
I am trying to understand the concept of Agile. I have been reading up on Agile methodologies but keep seeing terms like Agile environment, and Agile Teams.
I thought Agile was just a methodology, but I'm not sure what is an agile environment and that agile teams actually exist!?
Think of Agile environment as the frame of a puzzle: you are given the framework and there are plenty of pieces able to be used in order to achieve your goal! Not necessarily all the pieces are to be used...
Agile Team is usually a team working in an Agile environment. Different methodologies (XP, Scrum etc) define different types of teams, of different sizes (project dependent) and so on.
The easiest way to understand Agile is to see it as the most flexible environment in which YOU need to self-organize and assume responsibility for your acts.
Once you start practicing agility in a business, especially if you have a good guide, you won't give it up ever - 'practice' is here the key word!
A summary of agile methodologies is not wasted the time with a bureaucracy process of the steps of a life cycle. Instead of a long process the agile methodologies are more flexible and they focus on the code.
Nowadays more software companies join to the agile methodogy because they can be more efficient.
You can find more information about the practices, here:
List of agile best practices
Agile is an approach to development that follows certain principles, such as responding to change over following a plan.
An agile team is one that is following the agile approach to development.
An agile environment is one where many people are following the agile approach to development and as a result the environment reflects that approach.
If you are asking not just personally for you but for introducing Agile in your team or a company, you may find this interview useful: http://goo.gl/qYDjR3
This is a Q&A with the founder of Targetprocess who started to apply the Agile methodology in 2004 and who describes the stages Targetprocess went through, how they instil an Agile culture and enable self-organizing teams, trust and obsession with learning in software development teams.
Agile is a methodology that grew from the Agile Manifesto. Everyone seems to have a different approach or theory about Agile and new buzz terms keep springing up. I have always found in companies that I work for that Agile is great in theory, but bad in practice. It gets confusing very quickly and when it isn't successful, people will just say that you are doing it wrong. What you need is a methodology that learns from Agile but doesn't include it's limitations. Digital Animal have established a methodology that they use that does just this, they wrote an article explaining it here: http://digitalanimal.com/blog/slaying-the-agile-dragon-the-game-of-thrones-methodology/

Check list of agile eligibility criterias [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
Does anyone have any good documents talking about agile eligibility criterias of a project ? maybe a checklist to identify opportunities and risks before the beginning of the project.
Thanks :)
The short answer is this: If your project is all of the following:
Short (no longer than a month, as a rule of thumb)
Simple (everything there will be to know about the project is presently known)
Straight Forward (After delivery, there will be no future development / maintenance)
Then you may consider not doing agile!
In all other cases, you will be well served by developing your project in an agile manner.
From small start ups to large multinational companies (Microsoft, for example) more and more companies are implementing agile mindsets and methodologies.
From small clients to middle-sized financial institutes to gigantic ones (United States Department of Defense, for example), more and more are accepting, encouraging or even demanding a flexible and incremental delivery and an open visible development project.
The important thing to understand, though is that perceptions of what agile is and isn't are often wrong. not planning, for example, or not documenting are, despite popular belief not agile.
What I would suggest, is to first make sure you understand what agile really is. Here are a few good resources:
The agile manifesto (Important note: while the things on the left are more important, we still value the things on the right).
Scrum.org's Scrum Guide
Lyssa Adkins' Blog
If you pardon my own shameless plug, you can read my blog, too.
Here are they:
http://pm.versionone.com/AgileChecklist.html
http://standard-data-systems.net/Project_Checklist/Agile%20Audit.pdf
Also, you can google it for: agile project checklists.
Good luck.

Issue applying agile methodologies [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
When using an agile methodology on a team programming project, what should be done when several people needs to work in something that is to be used by everyone. For example, There is a User entity, and two people have to do requirements that need to use that entity. So, first an skeleton is created and then the activities are assigned? or what is the procedure in these cases.
And second, Is it possible to find information that addresses this kind of issues that can occur when applying such methodologies?
Thanks
The best thing about Scrum, is that it is an amazing tool for identifying bad practices. This is one of the cases. An agile team should be working with as many hands as possible, on the same requirement (requirement, feature, user story - same thing). The division of work between members should be based on the tasks needed to complete the requirement, no the requirements themselves.
Each task would be defined based on the modifications that need to be made to a certain component. Doing that will not only make the problem go away (nobody's working on the same code), but will unite the team members' efforts, and make them function as a real team, rather than a disparate group of individuals that happen to share a room and a manager.
As for official information on the subject, I can suggest reading any book about Scrum, but you might want to focus on the following sites:
Introduction to Scrum
Mike Cohn's Blog
Scrum.org
A few great books:
Succeeding with Scrum - Mike Cohn
Free ebook - Scrum & XP from the Trenches - Henrik Kniberg
And finally, if you pardon the shameless plug, you can check out my blog - I have a few posts on this subject (such as this one) and others from my experience about implementing agile methods in software teams.

What is "Boeing Agile Software Process?" [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
I was surfing the web, and I came across the term "Boeing Agile Software Process," but I was unable to find a definition or any details. Presumably, this is the software process used at Boeing and it's Agile, but could anyone explain what the Boeing Agile Software process is/was?
You can read the first several pages of the paper:
"A Tail of Two Projects: How 'Agile'
Methods Succeeded After 'Traditional'
Methods Had Failed in a Critical
System-Development Project"
that Robert Bedoll wrote about agile methods at Boeing and published for XP/Agile Universe 2003 here, on Google Books. Here's a summary:
We adopted the following principles:
Rapid prototyping of designs, with immediate customer feedback
Continuous involvement of the customer Weekly production releases:
Follow our standard development cycle
(requirements - design – code – test -
release) but compress it from formal
releases every three months to formal
releases every week.
Start simple and keep it simple
Evolve the tool to follow the evolving business process
Provide a one to three week cycle time for new feature introduction
Maintain a small development team
Produce abbreviated versions of our standard design documents.Let the
prototyping drive the design
documentation.
Retain our SEI (Software Engineering Institute) Level 2 rating.
It looks like there's a draft "not yet been formally approved by Boeing for publication" in .doc format here, that explains the principles in more detail. I'm not not a lawyer and don't know if there are legal implications if one were to read that draft. You can buy the whole published paper as a .pdf here and probably other places.

Do the ideas of traditional software engineering conflict with the newer agile development techniques? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
So as a developer I am seeking to improve not only my coding skills but my design and management skills. Because of this I'm starting to pay more attention to software engineering practices but i'm not sure where agile development fits into the picture. I can appreciate agility in projects but I wonder whether this conflicts with the traditional ways of software engineering practices and research.
If you haven't read Rapid Development, I highly recommend it. What makes it super pertinent now is how it leaves off just as it should start talking about Agile. So it gives you a thorough background of "how we got here". When you read the sections on iterative development and iterative prototyping, it will make any additional research you do on Agile that much more meaningful.
I thought that agile practices, as expressed by Kent Beck in "Extreme Programming", were merely best engineering practices turned up to eleven:
If code review is good, we'll code review all the time by pair programming.
If integrating often is good, we'll integrate all the time with continuous integration.
If testing is good, we'll test all the time with test driven development.
If this is true, I'd say that agile practices need not conflict with traditional software engineering. They're merely traditional ideas taken to an extreme.
I'd also wonder if agile is less about practices and more about mindset and ideals: see The Agile Manifesto. I think this is where the real clash lies, because most of the companies that practice traditional engineering don't embrace those ideals. It goes against traditional project management thinking.
Agile should not change your engineering practices. Agile is a way of breaking up the work into story points and giving you the ability to track the project as it progresses.
Agile has nothing to do with s/ware engineering as it can be adopted for anything. Even toasting bread.
The simple answer is "no, they don't."
Agile methodologies are ways to impose discipline on software development and hopefully get to best practices. There are other methodologies that have the same goals, and those methodologies may conflict with Agile methodologies; but the goals are similar.
After a few years of software development in several companies I must admit if cars were developed in the same way software is, I would go to work on foot. I haven't seen any software engeering yet. It's always the same. Start typing without any plan or model or concept or anything just endless refactorings and changes. Most of them could have been avoided if there were just time to think before you start. Everyone wants to see instant results but no one cares about the quality and extensibility.

Resources