The purpose of this blog series is
to introduce a new software engineering approach. The blogs in this series discuss
the differences between the current traditional SDLC approach and new
software engineering approach. It starts with the fundamental differences in desired
results. The traditional SDLC approach seeks to meet customer requirements on
time and within budget. The new Organic Software Engineering Approach seeks the customer and
business alignments that will propel the business through the realization of innovative,
high quality systems that achieve business purpose and satisfy the customers.
In order to achieve business
alignment, the project system must be designed for high levels of interactions
with customers and users. Instead of the single objective of meeting scheduling and
budget commitments, projects can opt for quality objectives like business
purpose, system performance, satisfaction, and of course project commitments.
For example, business purpose means the achievement of mission, purpose, values,
vision, goals and objectives.
The onus of the requirements and objectives are on both the customer and
the project. The challenges are inventing the right system requirements; using an
effective evolutionary development system that provides the feedback that
supports organizational learning, and joint optimization of effectiveness,
quality, and efficiency. From a human resource perspective, there is the need
for a professional model. Extensive collaboration with customer, managers, and
users require both generalists and specialists with human, social, conceptual,
business and technical skills. Employee loyalty, managing careers, training,
and career development are the main challenges for these socio-technical
organizations.
People versus Process
This blog deals with the people versus process issues. Business alignment requires a complete rethinking of the behavioral aspects of software engineering. A rethinking is required because business alignment requires both a focus on people and business environment interface processes. It also requires software generalists with knowledge of the application domain. Many intuitively know that improving software engineering is about people but a body of knowledge is lacking. Nothing has changed Since Gerald Weinberg wrote “The Psychology of Computer Programming” in 197. This blogs details why and how people are so important to software engineering.
A New Software Engineering Philosophy
The first step in improving software engineering is to change the
software engineering philosophy including the identification of the right
desired results. With the traditional software development practices, the
implicit desired result is to implement requirements on time and within budget.
However, business customers want the developers to focus on customer value,
business purpose, innovation, creativity, quality and effectiveness. The
desired result should be the maximization of customer value through the joint
optimization of effectiveness, efficiency, and quality. This requires a new
philosophical and strategic approach that alters our perception, belief
systems, paradigm, mental model, behaviors and practices.
The changes in a project's desired results will increase quality,
innovation, business value, and productivity and massively stimulate the
economy. Although American companies cannot compete from low labor costs, we
can compete on the basis of better quality, time to market, localization,
flexibility, adaptability, innovation, agility, and quality. The global winners
will be the businesses and governments that replace the underlying mechanistic
paradigm with a system paradigm that will facilitate the support the reorganization,
redesign, reinvention, and reengineering of their institutions.
The world has become asymmetrical and the new global reality often no longer fit the current causal, linear, operational, and symmetrical realities associated with linear thinking. The new realities of complex adaptive systems include not only software engineering, but our education, healthcare, and many other systems. In order to survive these organizations must evolve from reductionist, machine thinking to relational, organic, thinking.
This blog presents how organic software engineering technology can save
government and business organizations billions of dollars in software
development costs. This report is about reducing software development costs by
a factor of ten using the new software engineering approach. Imagine the impact
of major increases in customer value derived from software systems and at 10%
of the current costs. In order to achieve our cost reduction goals, the blog addresses
four high cost areas: software rework, excessive functionality, software
complexity, and low staff productivity. Other major contributors to high
software costs such as inaccurate software estimates, excessive schedule
slippage, and cost overruns are addressed in separate blogs. A hypothetical $20
million project is used to explain how reductions in rework and excessive
functionality and increases in project efficiency and staff productivity will
decrease costs to around $2 million
This blog presents software engineering solutions that reduce the
incentives for offshore development. Alignment of the systems with the business
requires a new organic software engineering approach that is designed to
improve business innovation, quality, business value, productivity, and
satisfaction. At the same time, project must achieve efficiency and commitments
goal like significantly reducing software costs and gaining the ability to
virtually always meet schedules and budgets. The achievement of business
effectiveness, project efficiency and software quality goals require a “face to
face and eye to eye” level of coordination, collaboration, communication, and
cooperation with the business customer. This is something that offshore
companies cannot feasibly provide. With such efficiency, quality and
effectiveness benefits, American companies will have no incentive to send
American jobs offshore. Millions of jobs will stay home!
This blog is about software project estimating using a history-based software
estimating technology called project specific modeling. In project specific
modeling, each project can develop its own particular estimating equation,
relational models, and profiles. The difference between project specific
modeling and generic costs modeling is the accuracy of the estimates. Project specific
modeling use internal history data for estimating while the generic cost models
use empirical data. In project specific modeling estimators use a history
database that allows estimators to “listening” to their own data” and create an
estimating equation for that particular project instead of using a single
equation that is supposed to accurately estimate all software projects, past,
present and future.
This blog presents an organic software project management. Project
managers need to constantly assess what is out of balance, what is functioning
effectively, and then make decisions regarding where and how to deploy the
time, attention, resources, and energy needed to restore the balance. Trend
analysis is essential. The purpose of trend analysis is to quickly identify
potential problems and make the mid-course corrections before project system
objectives are put at risk. There is a need for an early warning system that
identifies when the project is becoming problematic so that the project team
can take actions to restore the balance. The solution is to create a set of
role model projects that become the basis for the quantitative models that
guide the project team towards project success.
No comments:
Post a Comment