0% found this document useful (0 votes)
44 views22 pages

Lect5 ImprovingSoftwareEconomics

Uploaded by

akonunivrsl
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
44 views22 pages

Lect5 ImprovingSoftwareEconomics

Uploaded by

akonunivrsl
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 22

Improving

Software
Economics
Dr Meena Malik ([email protected])
Five basic parameters of the software cost model
are:
1.Reducing the size or complexity of what needs to be
developed.
2. Improving the development process.
3. Using more-skilled personnel and better teams (not
necessarily the same thing).
4. Using better environments (tools to automate the
process).
5. Trading off or backing off on quality thresholds.
1. REDUCING SOFTWARE PRODUCT SIZE
To improve affordability and return on investment (ROI) and to
produce a product that achieves the design goals with the minimum
amount of human-generated source material.
• Component-based development is helpful for reducing the "source" language
size to achieve a software solution.
• Reuse, object-oriented technology, automatic code production, and higher
order programming languages are all focused on achieving a given system
with fewer lines of human-specified source directives.
• Size reduction is the primary motivation behind improvements in higher
order languages (such as C++, Ada 95, Java, Visual Basic), automatic code
generators (CASE tools, visual modeling tools, GUI builders), reuse of
commercial components (operating systems, windowing environments,
DBMS, middleware, networks), and OOPS technologies (Unified Modeling
Language, visual modeling tools, architecture frameworks).
• The reduction is defined in terms of human-generated source material. In
general, when size-reducing technologies are used, they reduce the number of
human-generated source lines.
1.1 LANGUAGES
• Universal function points (UFPs1) are useful estimators for language-
independent, early life-cycle estimates. The basic units of function
points are external user inputs, external outputs, internal logical data
groups, external data interfaces, and external inquiries.
• SLOC metrics are useful estimators for software after a candidate
solution is formulated and an implementation language is known.
• Substantial data have been documented relating SLOC to function
points.
1.2 OBJECT-ORIENTED METHODS AND
VISUAL MODELING
• Object-oriented programming languages benefit both software
productivity and software quality. The fundamental impact of object-
oriented technology is in reducing the overall size of what needs to be
developed.
• People like drawing pictures to explain something to others or to
themselves. When they do it for software system design, they call these
pictures diagrams or diagrammatic models and the very notation for
them a modeling language. Some examples of the interrelationships
among the dimensions of improving software economics.
1. An object-oriented model of the problem and its solution encourages a common
vocabulary between the end users of a system and its developers, thus creating a
shared understanding of the problem being solved.
2. The use of continuous integration creates opportunities to recognize risk early and
make incremental corrections without destabilizing the entire development effort.
3. An object-oriented architecture provides a clear separation of concerns among
disparate elements of a system, creating firewalls that prevent a change in one part of
the system from rending the fabric of the entire architecture.
Five characteristics (as per Booch )of a successful object-
oriented project.
1. A ruthless focus on the development of a system that provides a
well understood collection of essential minimal characteristics.
2. The existence of a culture that is centered on results, encourages
communication, and yet is not afraid to fail.
3. The effective use of object-oriented modeling.
4. The existence of a strong architectural vision.
5. The application of a well-managed iterative and incremental
development life cycle.
1.3 REUSE
• Reusing existing components and building reusable components
have been natural software engineering activities.
• With reuse in order to minimize development costs while
achieving all the other required attributes of performance, feature
set, and quality.
• Try to treat reuse as a mundane part of achieving a return on
investment.
• Most truly reusable components of value are transitioned to
commercial products supported by organizations with the
following characteristics:
• They have an economic motivation for continued support.
• They take ownership of improving product quality, adding new features, and
transitioning to new technologies.
• They have a sufficiently broad customer base to be profitable.
• The cost of developing a reusable component is not trivial
• Reuse is an important discipline that has an impact on the efficiency of all
workflows and the quality of most artifacts
1.4 COMMERCIAL COMPONENTS

• Try to maximize integration of commercial components and off-the-shelf


products.
• The use of commercial components is certainly desirable as a means of
reducing custom development
2. IMPROVING SOFTWARE PROCESSES

3 level of Process can be identified in an organisation:


• Metaprocess: an organization's policies, procedures, and practices
for pursuing a software-intensive line of business. The focus of this
process is on organizational economics, long-term strategies, and
software ROI.
• Macroprocess: a project's policies, procedures, and practices for
producing a complete software product within certain cost, schedule,
and quality constraints. The focus of the macro process is on creating
an adequate instance of the Meta process for a specific set of
constraints.
• Microprocess: a project team's policies, procedures, and practices
for achieving an artifact of the software process. The focus of the
micro process is on achieving an intermediate product baseline with
adequate quality and adequate functionality as economically and
rapidly as practical.
3. IMPROVING TEAM EFFECTIVENESS
Teamwork is much more important than the sum of the individuals. With
software teams, a project manager needs to configure a balance of solid talent
with highly skilled people in the leverage positions. Some maxims of team
management include the following:
• A well-managed project can succeed with a nominal engineering team.
• A mismanaged project will almost never succeed, even with an expert team
of engineers.
• A well-architected system can be built by a nominal team of software
builders.
• A poorly architected system will flounder even with an expert team of builders.

• Boehm five staffing principles are


• 1. The principle of top talent: Use better and fewer people
• 2. The principle of job matching: Fit the tasks to the skills and motivation of the people
available.
• 3. The principle of career progression: An organization does best in the long run by
helping its people to self-actualize.
• 4. The principle of team balance: Select people who will complement and harmonize
• 5. The principle of phase-out: Keeping a misfit on the team doesn't benefit anyone
Software project managers need many leadership qualities in order to enhance
team effectiveness. Attributes of successful software project managers :

• Hiring skills. Few decisions are as important as hiring decisions. Placing the right
person in the right job seems obvious but is surprisingly hard to achieve.
• Customer-interface skill. Avoiding adversarial relationships among stakeholders is
a prerequisite for success.

• Decision-making skill. The jillion books written about management have failed to
provide a clear definition of this attribute. We all know a good leader when we run into
one, and decision-making skill seems obvious despite its intangible definition .
• Team-building skill. Teamwork requires that a manager establish trust, motivate
progress, exploit eccentric prima donnas, transition average people into top performers,
eliminate misfits, and consolidate diverse opinions into a team direction.
• Selling skill. Successful project managers must sell all stakeholders (including
themselves) on decisions and priorities, sell candidates on job positions, sell changes to
the status quo in the face of resistance, and sell achievements against objectives. In
practice, selling requires continuous negotiation, compromise, and empathy
IMPROVING AUTOMATION THROUGH
SOFTWARE ENVIRONMENTS
• The tools and environment have a linear effect on the productivity of the
process.
• Planning tools, requirements management tools, visual modeling tools,
compilers, editors, debuggers, quality assurance analysis tools, test tools,
and user interfaces provide crucial automation support for evolving the
software engineering artifacts.
• configuration management environments provide the foundation for
executing and instrument the process.
• At first order, the isolated impact of tools and automation generally allows
improvements of 20% to 40% in effort.
• tools and environments must be viewed as the primary delivery vehicle for
process automation and improvement, so their impact can be much higher.
• Automation of the design process provides payback in quality, the ability to
estimate costs and schedules, and overall productivity using a smaller
team.
• .
• Round-trip engineering describes the key capability of
environments that support iterative development. As we
have moved into maintaining different information
repositories for the engineering artifacts, we need
automation support to ensure efficient and error-free
transition of data from one artifact to another.
• Forward engineering is the automation of one engineering
artifact from another, more abstract representation.
(compilers and linkers have provided automated transition
of source code into executable code).
• Reverse engineering is the generation or modification of a
more abstract representation from an existing artifact (for
example, creating a visual design model from a source
code representation).
• Requirements analysis and evolution activities consume 40%
of life-cycle costs.
• Software design activities have an impact on more than 50%
of the resources.
• Coding and unit testing activities consume about 50% of
software development effort and schedule.
• Test activities can consume as much as 50% of a project's
resources.
• Configuration control and change management are critical
activities that can consume as much as 25% of resources on
a large-scale project.
• Documentation activities can consume more than 30% of
project engineering resources.
• Project management, business administration, and progress
assessment can consume as much as 30% of project
budgets.
ACHIEVING REQUIRED QUALITY
• Software best practices are derived from the development process and
technologies. Key practices that improve overall software quality include
the following:
• Focusing on driving requirements and critical use cases early in the life
cycle, focusing on requirements completeness and traceability late in the
life cycle, and focusing throughout the life cycle on a balance between
requirements evolution, design evolution, and plan evolution
• Using metrics and indicators to measure the progress and quality of an
architecture as it evolves from a high-level prototype into a fully compliant
product
• Providing integrated life-cycle environments that support early and
continuous configuration control, change management, rigorous design
methods, document automation, and regression test automation
• Using visual modeling and higher level languages that support
architectural control, abstraction, reliable programming, reuse, and self-
documentation
• Early and continuous insight into performance issues through
demonstration-based evaluations
Events in Performance Assessment
• Project inception. The proposed design was asserted to be low
risk with adequate performance margin.
• Initial design review. Optimistic assessments of adequate design
margin were based mostly on paper analysis or rough simulation of the
critical threads.
• Mid-life-cycle design review. The assessments started whittling
away at the margin, as early benchmarks and initial tests began
exposing the optimism inherent in earlier estimates.
• Integration and test. Serious performance problems were
uncovered, necessitating fundamental changes in the architecture. The
underlying infrastructure was usually the scapegoat, but the real culprit
was immature use of the infrastructure, immature architectural
solutions, or poorly understood early design trade-offs.
PEER INSPECTIONS
A PRAGMATIC VIEW
Peer reviews are valuable, but they are rarely significant contributors to
quality compared with the following primary quality mechanisms and
indicators, which should be emphasized in the management process:
• Transitioning engineering information from one artifact set to another,
thereby assessing the consistency, feasibility, understandability, and
technology constraints inherent in the engineering artifacts
• Major milestone demonstrations that force the artifacts to be
assessed against tangible criteria in the context of relevant use cases
• Environment tools (compilers, debuggers, analyzers, automated test
suites) that ensure representation rigor, consistency, completeness,
and change control
• Life-cycle testing for detailed insight into critical trade-offs,
acceptance criteria, and requirements compliance
• Change management metrics for objective insight into multiple-
perspective change trends and convergence or divergence from quality
and progress goals
• Inspections are also a good vehicle for holding authors
accountable for quality products.
• All authors of software and documentation should have
their products scrutinized as a natural by-product of the
process.
• Therefore, the coverage of inspections should be across
all authors rather than across all components.
References
• Software Project management, Walker Royce, Addison
Wesley, 1998.
• https://www.javatpoint.com/software-project-management

You might also like