Analysis
and Design
Good software design mercilessly strips away unnecessary complexity and
hides necessary complexity behind simpler facades, encapsulating it
within the most appropriate abstractions.
One of the keys, therefore, to designing elegant software solutions is building an intimate understanding of the problem needing to be solved. There are a number of different ways to analyse a problem, but object-oriented and component-based approaches have dominated in enterprise software development for approximately the last fifteen years. After all, every team working in .Net, Java or Cocoa has some sort of object model at the heart of their software.
And for the
initial, object-oriented analysis and design of enterprise software, I
have found no better technique than Peter Coad's 'modeling in color'
especially when further informed by the patterns and strategies from Nicola,
Mayfield, and Abney's, Streamlined
Object Modeling and Eric Evans's Domain-Driven
Design.
Read more about analysis and design...
Process
Software development process is all about the way a team works together
and interacts with all the other interested parties and teams in
developing a piece of software.
The software industry has invented, proposed, debated, refined, celebrated, criticised, and derided numerous different processes, methods and approaches to team-based software development over the last forty years. After the waterfall processes and structured methods reigned supreme in the 1970's and 1980's, formal use-case and object-oriented analysis and design approaches dominated the 1990's. Then, at the turn of the century, Kent Beck's eXtreme Programming was the first of a wave of more informal, self-styled agile approaches to become widely popular.
In the last few years, eXtreme Programming's popularity has declined dramatically and Ken Schwaber and Jeff Sutherland's Scrum has become the de facto starting point for teams wanting to adopt a more agile approach to software development. Jeff De Luca's Feature-Driven Development (FDD) is cited in some studies as the third most used agile approach despite far less publicity surrounding it. In practice, most teams starting with Scrum, inevitably end up incorporating ideas and practices from both eXtreme Programming and FDD, and frequently from the Poppendiecks' Lean Software Development and David Anderson's Kanban too.
However, despite all this innovation, hard work, and debate around
different software development processes, methods, and approaches, none
of them has been able to replace the importance of building a great
team of good people. No process, method, or approach, agile or
otherwise, can make up for a fundamental lack of ability, experience,
or character within a team.
Read
more about software development process...
Tools
What makes good tooling for agile teams?
Most agree it includes tools for performing automated builds and
testing.
In addition,like anyone involved in software development, I have had
my
favourite tools over the years. These have included Together
(the original LiveSource UML modeling tool and still unsurpassed
despite terminal neglect by Micro Focus), and StarTeam
(the potential to be one of the best CM tools available for agile
development).
Read more
...
I'm Stephen R. Palmer, a software development consultant at hybris, and www.step-10.com is my personal web site. By the way, I am not trying to be pretentious; the middle initial is simply to distinguish me from all the other different Stephen Palmers. There are many of us out there doing all sorts of interesting things but most of it is not me!
The majority of stuff on this site relates to my two main
professional interests, that of analysis
and design of complex enterprise software systems and related software development methods -
in particular Peter
Coad's 'modeling
in color' technique and Jeff De
Luca's Feature-Driven
Development (FDD) process. Other topics covered include software development tools I love
and loathe, the pragmatic use of UML, and, for something
completely different, places I have
lived in, worked at, or lived near.
My professional experience ranges from near real-time electricity power station,
transmission cables and sub-station monitoring systems to
enterprise-wide agile transformation and service-oriented architecture
projects; from complex commercial
lending systems in Singapore
to global commercial insurance systems in Rhode Island, and from UML
training in the UK to agile coaching in the Netherlands.
As this is my personal website and developed more as a hobby than anything else, the views expressed here are my own and do not necessarily coincide with those of my current or previous employers. I'll also apologise in advance for the occasional misspelling, poor use of grammar, and broken link - it's all 'fixed in the next release' :-)
WARNING: Site under heavy reconstruction at the moment!