|
|
|
The skills and attitudes necessary for survival
in today’s dot-and-dash market. |
|
A free-flowing foray into the world of software
development |
|
as told by Steven Marcus. |
|
Marcus Software Designs, Inc. |
|
smarcus@MarcusSoftwareDesigns.com |
|
|
|
|
Attendees participate in SW development process. |
|
Attendees are competent in their respective
technical areas. |
|
Attendees care about delivering quality software
solutions. |
|
Attendees have a sense of humor. |
|
|
|
|
Speaker Bio and Disclaimer. |
|
Put things into perspective. |
|
How we do software development. |
|
Processes. |
|
Summary. |
|
|
|
|
|
|
Professional musician (too long). |
|
Chevron Corporation – 1981 – 1991. |
|
Marcus Software Designs, Inc. – established –
1990. |
|
My opinions. DAMA staff and personnel are not in
any way responsible for the content and quality of this discussion. So
please forgive them. |
|
|
|
|
|
|
To express and share ideas. |
|
|
|
To elicit feedback. I want to hear what you
think. |
|
|
|
To have fun! |
|
|
|
|
What is software development? |
|
|
|
Why do we it and for whom do we do it? |
|
|
|
Who does this stuff? |
|
|
|
|
|
|
|
|
The act of forming and evolving solutions that
meet specific human needs; that is, a solution that solves one or many
human problems. |
|
A highly creative discipline that incorporates
other disciplines from psychoanalysis to number theory. |
|
An effort whose effects are unpredictable. |
|
A effort whose results are based on ever
increasing levels of description. |
|
|
|
|
Satisfies our need to solve problems. |
|
Creative and fulfilling (when and if it works). |
|
Lucrative. |
|
|
|
We do it for people. The same reason we do
anything else. |
|
|
|
|
|
|
|
Creative types (Architects, Designers). |
|
Analytical types (Business analysts and
specifiers). |
|
Engineering types (Designers, Programmers, Micro
Modelers). |
|
Other - |
|
Loner types. |
|
People who cannot do anything else. |
|
People who were forced into it. |
|
Musicians. |
|
|
|
|
Software Development is not for everyone. |
|
Ruthless desire to achieve. |
|
Honest, open communication. |
|
Passion and commitment. |
|
Competent, informed, knowledgeable. |
|
Able to give and take criticism. |
|
Good poker player. |
|
|
|
|
|
|
Potentially life or death situations for
individuals and country (extremely high risk!) |
|
All troops go through training. Often troops
serve together throughout engagement. |
|
Desertion is an option (although not necessarily
honorable). |
|
|
|
|
Scouts search for talent that meet standards. |
|
Team members practice before engaging in “for
the money” events. |
|
Team players can elect not to play with or against certain teams (can have
an adverse effect on career due to contract disputes). |
|
|
|
|
Musicians train to play and/or read music. |
|
Musicians rehearse before engagements alone and
with others. |
|
Musicians perform as well as they are able.
There are limits (and no limits) to what some musicians can do. |
|
Musicians choose with whom to perform and what
pieces to play (even in an orchestra certain musicians can choose not to
play certain passages. Could you tell?). |
|
|
|
|
|
|
Each field has a leader. |
|
Each field requires many roles. |
|
Each field has a plan. |
|
Each plan has forms and structures (e.g. battle
plans, plays, scores). |
|
Each form/structure developed by the few, rather
than the many (e.g. general(s) develop battle plans, managers/coaches
develop the plays, composers/conductors develop the score). |
|
|
|
|
|
|
Patterns, based on the concepts of Christopher
Alexander and the software development contributions of Cunningham, Beck,
the Gang of Four, and many others, have provided a huge conceptual
contribution to the thoughts and vocabulary of the software/systems
development community. |
|
|
|
|
Resources often not sufficiently trained. |
|
Team members come and go. |
|
Language (business and technical) problems. |
|
The UML (Unified Modeling Language) mitigates
some confusion. |
|
|
|
|
What’s the vision? |
|
What’s The problem? |
|
What are the requirements? |
|
What’s the plan? |
|
What’s the design? |
|
What’s the solution? |
|
What’s the architecture? |
|
What’s the vision, again? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The specific purpose of the software and/or
system and its contribution to the enterprise. This must be externalized by
the visionaries, and shared and internalized by each
contributor/collaborator. |
|
|
|
No shared vision? Go home. |
|
|
|
|
The situation that the software/system remedies,
contributes to, or creates. |
|
|
|
A problem is a difference between things as desired
and things as perceived. |
|
|
|
|
Can you articulate the problem (clearly)? |
|
Is there a metric for achievement? |
|
Can you “prove” that what you think is the
problem really is the problem? |
|
|
|
|
|
|
|
|
|
|
The set of needs, functions, and rules that the
software/system seeks to meet, perform, and enforce. |
|
|
|
|
Fortunately, requirements are all over the
place. Every motion in the business
is a requirement. |
|
Unfortunately, requirements are all over the
place and it’s hard to tell what level of requirement to express. |
|
Requirements evolve. A satisfied requirement
gives birth to a new requirement. |
|
Business partners are required to know the
business requirements. Software
developers are not… |
|
|
|
|
|
|
Experienced business analysts should be well
aware of common business structures (patterns) - or that analyst clearly
lacks experience. |
|
Experienced application architects and designers
should be well aware of common business structure design choices (patterns)
- or that talent lacks experience. |
|
|
|
|
Party |
|
|
|
Accountability |
|
|
|
Order (Transaction) |
|
|
|
Business-is-business |
|
|
|
|
You’re never going to know everything. |
|
There is no good reason not to start building. |
|
You do not really know anything until you build
it. |
|
When in doubt, document the working assumptions
and move on. |
|
Moving forward in an environment of uncertainty
is a critical attribute of success. Any participant lacking this attitude
will seriously impede progress. Remember, there will be “testing” to prove
assumptions. |
|
|
|
|
Database is the technology we use to store data. |
|
Do not use vendor-specific proprietary tools. |
|
Of course, this all depends on the type of
application. |
|
Operational - Transactional |
|
Planning - Reporting |
|
Controlling - Rules Based |
|
|
|
|
Only useful in a context, that is its use
(usefulness) is in a process. (NOTE: A report is the result of a process.) |
|
Data elements are often discovered over time.
However, experienced domain participants should know the basic structures
(patterns). |
|
Third party interfaces impose special data
element considerations. Do not seek to integrate - seek to interface.
Create adapters between applications and systems (internal* or external) |
|
*That is, unless the applications are developed
using the same kernel (which includes runtime and persistent artifacts). |
|
|
|
|
A document that specifies, at varying degrees of
granularity, a set of tasks, schedules, and human resources that map
directly to work products. |
|
|
|
The ultimate work product is the solution. |
|
|
|
|
|
|
Steven’s definitions: |
|
Iterative: Exploring and discovering new
requirements for a given function or set of functions. Scope does not
change. |
|
Increment: Adding new functionality. Scope
changes. |
|
NOTE: Both concepts cost money. |
|
|
|
|
|
|
An informal or formal expression of a
software/system design as interpreted from the business requirements. |
|
“Design” means different things to different
roles. |
|
Steven’s take is: |
|
Analysis is the act of taking things apart. |
|
Design is the act of putting things together. |
|
Good designers inhale analysis and exhale
design. |
|
|
|
The design comes from... |
|
|
|
|
Originally started as short description of the
specific business situation. |
|
The use case as evolved into something so large
and complex that its use is becoming questionable. |
|
eXtreme Programming (later) chooses to call it a
“story”. A much more concise and “growable” starting point. |
|
|
|
|
Its most fundamental structure supports the
“design-by-contract” pattern: |
|
Description/Goal: A short description and/or
goal of the use case. The goal being what one wishes to achieve (thank you
Mr. Cockbrun). |
|
Precondition: The state of the universe before
activity can begin. |
|
Activity: The things that happen (The
“time-ordered sequence of events”. |
|
Postcondition: The state of the universe after
things happen. |
|
The above is a simplification. If you want to
find out how poorly understood this is, try to get agreement on a format. |
|
|
|
|
A set of guidelines that suggest an appropriate
sequence of tasks to achieve the desired solution. |
|
Hacking |
|
Waterfall |
|
Rational Unified Process |
|
eXtreme Programming |
|
|
|
|
Time-honored process of the untrained. |
|
Hard to predict schedule. |
|
Difficult to test, debug, and correct. |
|
Often the process of choice of the loner
developer. |
|
Often undocumented. |
|
Useful life is short (often rewritten) |
|
|
|
|
Traditional Big ‘n’ Company (e.g. Navigator,
Method 1, etc.). |
|
Too large and complex to understand and
determine the pathways for a given effort. |
|
Expensive – often accompanied by Big ‘n’ support
(management and workforce). |
|
Downstream costs often exceed upstream
expectations. |
|
|
|
|
“Methodologies” are always changing due to the
technologies that require new methods and time-to-market tactics. |
|
|
|
Methods matter – methodologies do not. |
|
|
|
|
A formal set of processes originally developed
by Ivar Jacobson (Objectory). |
|
Evolved by Rational into the RUP. |
|
Very large and provides pathways for different
types and sizes of projects. |
|
|
|
|
|
|
Developer-centric methodology. |
|
Brings developer closer to business user. |
|
Short release time. |
|
Requires high level talent that understands good
design to accommodate change as new requirements (or correct requirements)
become available. |
|
|
|
|
Make it work. |
|
Get the applications out the door. |
|
Make it right. |
|
Ensure that the implementation is congruent with
the design. |
|
Make it better. |
|
Ensure that the application meets performance
requirements and other hidden quality attributes. |
|
Again, like any requirement, many are not known
until you build. |
|
|
|
|
Blend of Rational Unified Process (RUP) and
eXtreme. |
|
Reflects the nature of most software development
efforts. |
|
Provides clear pathway for all stakeholders. |
|
Provides appropriate* leveling for Project
Planning and Project Management. |
|
*Steven thinks so. |
|
|
|
|
|
|
|
Business Partners / Collaborators |
|
Project Planner |
|
Architect(s) |
|
Business Analysts (Use Case Specifier) |
|
Designers |
|
Object Modelers |
|
Data Architects |
|
Usability / Interface Designers |
|
Engineers |
|
Quality – Testers |
|
Programmers |
|
DBAs |
|
Configuration Manager |
|
|
|
|
|
|
Representatives from business operations. |
|
People that articulate (describe) the business
needs, functions, and rules. |
|
An integral part of the process – not on the
sidelines or part-time. |
|
Not enough represent commitment or
representation? Go home! |
|
Not enough knowledge of business domain? Go
home! (Or document every working assumption, build, and pray.) |
|
|
|
|
|
|
Seasoned professional or novice. |
|
Mix of technologies and relevant knowledge base. |
|
Incentives to acquire and maintain talent. |
|
Insourcing versus Outsourcing. |
|
|
|
|
Resources (talent) are hard to find and keep. |
|
Often, particularly in this era of numerous and
evolving technologies, there is a tendency for overselling (under-qualified
candidates). |
|
Don’t be afraid to challenge or “test”
candidates. |
|
Don’t break up an evolving or mature team. |
|
The cost to replace resources outweighs the cost
of keeping them. |
|
|
|
|
A working software/system that expresses the
requirements in a way that is incorporated into the processes of the
enterprise. |
|
|
|
|
Is the solution report-oriented? A planning
requirement that uses operational information rather than creating the
data. |
|
Is the solution transaction-oriented? Captures
required information to transact. Simple validations. |
|
Is the solution control-oriented? Transactions
are based upon events and relationships between n-ary objects. |
|
|
|
|
An expression of the complete set of components
and connections that form the structure of the software/system. |
|
|
|
|
Answers “what goes where?” |
|
Domain of the Systems Architect and Application
Architect. |
|
Modern architectures also follow patterns and
experienced architects use them. |
|
|
|
|
|
|
|
|
Clearly illustrates “what goes where”. |
|
Concepts/Packages/Functional
granularity/Subsystems are separated for clear development partitioning. |
|
Illustrates common use of the pieces of the
software/system. |
|
|
|
|
|
|
An evolving and growing enterprise is always
extending and changing its vision (although, hopefully, not its mission). |
|
|
|
In today’s environment the vision may change
before the current vision is achieved. This has to be OK - because that’s
the way it is. |
|
|
|
|
Software Development is unforgiving (since
computers seem to be). |
|
Participants must aspire to new levels of |
|
ethical ruthlessness* to survive. |
|
As individuals we are responsible for ensuring
each collaborator is as good as he or she can be. Or you may not survive. |
|
Good software takes commitment, knowledge,
planning, and a relentless desire to achieve. |
|
Know where you are going. |
|
*Sounds like a good catch phrase. |
|
|
|
|
|
|
If you have any questions please email me. If
you’d like a list of references for this discussion, please email me. |
|
Steven Marcus |
|
Marcus Software Designs, Inc. |
|
216 “F” Street, #88 |
|
Davis, CA
95616 |
|
Land - 925-521-9876 |
|
Fax -
925-521-9875 |
|
Email - smarcus@MarcusSoftwareDesigns.com |
|