0% found this document useful (0 votes)
169 views

Improving Software Processes: Unit-05

1) The document discusses various ways to improve software processes including reducing product size through language choice, object-oriented methods, reuse, and commercial components. It also discusses improving team effectiveness through balancing skills and experience. 2) Process improvement aims to maximize productive activities like coding and minimize overhead activities related to personnel, schedules, and resources. This is done by balancing team skills and experience, and automating tasks through appropriate tools and environments. 3) Improving processes requires considering different levels - the organizational/meta level, project/macro level, and team/micro level. The goal is to develop quality software through iterative processes while efficiently using resources.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
169 views

Improving Software Processes: Unit-05

1) The document discusses various ways to improve software processes including reducing product size through language choice, object-oriented methods, reuse, and commercial components. It also discusses improving team effectiveness through balancing skills and experience. 2) Process improvement aims to maximize productive activities like coding and minimize overhead activities related to personnel, schedules, and resources. This is done by balancing team skills and experience, and automating tasks through appropriate tools and environments. 3) Improving processes requires considering different levels - the organizational/meta level, project/macro level, and team/micro level. The goal is to develop quality software through iterative processes while efficiently using resources.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 15

1

Unit-05

Improving Software Processes


It is not that much easy to improve the software economics but also difficult to measure and
validate.
- There are many aspects are there in order to improve the software economics they are, Size,
Process, Personnel, Environment and quality.
- These parameters (aspects) are not independent they are dependent. For example, tools enable
size reduction and process improvements, size-reduction approaches lead to process changes,
and process improvements drive tool requirements.
- GUI technology is a good example of tools enabling a new and different process. GUI builder
tools permitted engineering teams to construct an executable user interface faster and less cost.
- Two decades ago, teams developing a user interface would spend extensive time analyzing
factors, screen layout, and screen dynamics. All this would done on paper. Where as by using
GUI, the paper descriptions are not necessary.
- Along with these five basic parameters another important factor that has influenced software
technology improvements across the board is the ever-increasing advances in hardware
performance.

REDUCING SOFTWARE PRODUCT SIZE:


- By choosing the type of the language

SPM MCA S V MURTY


2

- By using Object-Oriented methods and visual modeling


- By reusing the existing components and building reusable components &
- By using commercial components, we can reduce the product size of a software.

SPM MCA S V MURTY


3

OBJECT ORIENTED METHODS AND VISUAL MODELING:


- There has been a widespread movements in the 1990s toward Object-Oriented technology.
- Some studies concluded that Object-Oriented programming languages appear to benefit both
software productivity and software quality. One of such Object-Oriented method is UML
Unified Modeling Language.
Booch described the following three reasons for the success of the projects that are using
Object-Oriented concepts:
1) An OO-model of the problem and its solution encourages a common vocabulary between the
end user 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 weaken the entire development effort.
3) An OO-architecture provides a clear separation among different elements of a system,crating
firewalls that prevent a change in one part of the system from the entire architecture.
He also suggested five characteristics of a successful OO-Project,
1) A cruel 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 OO-modeling.
4) The existence of a strong architectural vision.
5) The application of a well-managed iterative and incremental development life cycle.

REUSE:
Organizations that translates reusable components into commercial products has thefollowing
characteristics:
- They have an economic motivation for continued support.
- They take ownership of improving product quality, adding new features andtransitioning to
new technologies.
They have a sufficiently broad customer base to be profitable

SPM MCA S V MURTY


4

IMPROVING SOFTWARE PROCESSES:


There are three distinct process perspectives:
1) Meta process:

SPM MCA S V MURTY


5

- It is an Organization’s policies, procedures, and practices for pursuing a software intensive line
of business.
- The focus of this process is of organizational economics, long-term strategies, anda software
ROI.
2) Macro process:
- A project’s policies, 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 sufficient instance of the
Meta process for a specific set of constraints.
3) Micro process:
- A projects team’s policies, procedures, and practices for achieving an artifact of a software
process.
- The focus of the micro process is on achieving an intermediate product baseline with sufficient
functionality as economically and rapidly as practical.
The objective of process improvement is to maximize the allocation of resources to productive
activities and minimize the impact of overhead activities on resources such as personnel,
computers, and schedule.

SPM MCA S V MURTY


6

IMPROVING TEAM EFFECTIVENESS:


- COCOMO model suggests that the combined effects of personnel skill and experience can have
an impact on productivity as much as a factor of four over the unskilled personnel.
- Balance and coverage are two of the most important features of excellent teams. Whenever a
team is in out of balance then it is vulnerable.
- It is the responsibility of the project manager to keep track of his teams. Since teamwork is
much more important than the sum of the individuals.

Boehm – staffing principles:


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 byhelping its
people to self-actualize.
4) The principle of team balance: Select people who will complement and synchronizewith one
another.
5) The principle of phase-out: Keeping a misfit on the team doesn’t benefit anyone.
In general, staffing is achieved by these common methods:
– If people are already available with required skill set, just take them
– If people are already available but do not have the required skills, re-train them
– If people are not available, recruit trained people
– If you are not able to recruit skilled people, recruit and train people
Staffing of key personnel is very important:

SPM MCA S V MURTY


7

- Project Manager
- Software Architect
Important Project Manager Skills:
 Hiring skills. Few decisions are as important as hiring decisions. Placing the right personin
the right job seems obvious but is surprisingly hard to achieve.
 Customer-interface skill. Avoiding adversarial relationships among stake-holders is a
prerequisite for success.
 Decision-making skill. TheMillion 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.
Important Software Architect Skills:
• Technical Skills: the most important skills for an architect. These must include skills in both,
the problem domain and the solution domain
• People Management Skills: must ensure that all people understand and implement the
architecture in exactly the way he has conceptualized it. This calls for a lot of people
management skills and patience.
• Role Model: must be a role model for the software engineers – they would emulate all good
(and also all bad !) things that the architect does

All project process consists of

1) Productive activities-like modeling,coding ,debugging etc which contribute directly to the


end product.
2) Overhead activities- these indirectly support for developing the end product.Ex. progress
monitoring, risk assessment ,financial assesement ,personnel training , business
administration etc.

The objective of process improvement is to allocate more resources to productive


activities and minimize the impact of overhead activities on
personnel,computers,schedule etc.

The primary goal here is to achieving a good solution with minimum no of iterations and
eliminating scrap and rework to the possible extent.

SPM MCA S V MURTY


8

Improving Automation through software Environments

Tools and environment has a direct influence on productivity.


Tools may be editors,debuggers,compilers ,test tools etc.
Manual tasks are inefficient and error prone.
Good environment and tools improve productivity,quality and allow the use of modern
techniques.
The environment must provide automation of requirements mngt,document automation,
target programming tools, automated regression testing etc.
The environments must allow roundtrip engineering for iterative development. which is a
combination of forward and reverse engineering.
Automation of the design process improves quality and enables to estimate costs and
schedules and improves overall productivity using smaller teams.
The combined effect of all tools tend to be less than 40% in productivity and there must
be corresponding change in the process.

Achieving Required Quality


Modern practices have impact not only on the productivity and cost but also quality.
Quality improvements with modern process

SPM MCA S V MURTY


9

SPM MCA S V MURTY


10

SPM MCA S V MURTY


11

Key Practices to improve s/w Quality

 Focus on driving requirements and critical use cases early in the life cycle.

 Use metrics and indicators to measure the progress and quality of the architecture .

 Provide integrated life cycle environments with automation tools for


testing,documentation ,
change mngt etc.

 Use visual modeling and HLLs which support abstraction, reuse,reliable


programming.

PEER INSPECTIONS: A PRAGMATIC VIEW:

SPM MCA S V MURTY


12

THE OLD WAY AND THE NEW

- Over the past two decades software development is a re-engineering process.Now it is replaced
by advanced software engineering technologies.
- This transition is was motivated by the unsatisfactory demand for the softwareand reduced cost.
THE PRINCIPLES OF CONVENTIONAL SOFTWARE ENGINEERING
Based on many years of software development experience, the softwareindustry proposed so
many principles (nearly 201 by – Davis’s). Of which
Davis’s top 30 principles are:
1) Make quality #1: Quality must be quantified and mechanisms put into place to motivate its
achievement.
2) High-quality software is possible: In order to improve the quality of the product we need to
involving the customer, select the prototyping, simplifying design, conducting inspections, and
hiring the best people.
3) Give products to customers early: No matter how hard you try to learn user’s needs during
the requirements phase, the most effective way to determine real needs is to give users a product
and let them play with it.
4) Determine the problem before writing the requirements: Whenever a problem is raised
most engineers provide a solution. Before we try to solve a problem, be sure to explore all the
alternatives and don’t be blinded by theunderstandable solution.
5) Evaluate design alternatives: After the requirements are greed upon, we must examine a
variety of architectures and algorithms and choose the one which is not used earlier.
6) Use an appropriate process model: For every project, there are so many prototypes (process
models). So select the best one that is exactly suitable to our project.
7) Use different languages for different phases: Our industry’s main aim is to provide simple
solutions to complex problems. In order to accomplish this goal choose different languages for
different modules/phases if required.
8) Minimize intellectual distance: We have to design the structure of a software is as close as
possible to the real-world structure.
9) Put techniques before tools: An un disciplined software engineer with a tool becomes a
dangerous, undisciplined software engineer.

SPM MCA S V MURTY


13

10) Get it right before you make it faster: It is very easy to make a working program run faster
than it is to make a fast program work. Don’t worry about optimization during initial coding.
11) Inspect the code: Examine the detailed design and code is a much better wayto find the
errors than testing.
12) Good management is more important than good technology
13) People are the key to success: Highly skilled people with appropriateexperience, talent, and
training are key. The right people with insufficient tools,languages, and process will succeed.
14) Follow with care: Everybody is doing something but does not make it right for you. It may
be right, but you must carefully assess its applicability to your environment.
15) Take responsibility: When a bridge collapses we ask “what did the engineer do wrong?”.
Similarly if the software fails, we ask the same. So the fact is in every engineering discipline, the
best methods can be used to produce poor resultsand the most out of date methods to produce
stylish design.
16) Understand the customer’s priorities. It is possible the customer wouldtolerate 90% of the
functionality delivered late if they could have 10% of it ontime.
17) The more they see, the more they need. The more functionality (or performance) you
provide a user, the more functionality (or performance) the user wants.
18) Plan to throw one away .One of the most important critical success factors is whether or not
a product is entirely new. Such brand-new applications,architectures, interfaces, or algorithms
rarely work the first time.
19) Design for change. The architectures, components, and specification techniques you use
must accommodate change.
20) Design without documentation is not design. I have often heard software engineers say, “I
have finished the design. All that is left is the documentation.”
21. Use tools, but be realistic. Software tools make their users more efficient.
22. Avoid tricks. Many programmers love to create programs with tricksconstructsthat perform
a function correctly, but in an obscure way. Show theworld how smart you are by avoiding tricky
code.
23. Encapsulate. Information-hiding is a simple, proven concept that results insoftware that is
easier to test and much easier to maintain.
24. Use coupling and cohesion. Coupling and cohesion are the best ways tomeasure software’s
inherent maintainability and adaptability.
25. Use the McCabe complexity measure. Although there are many metrics available to report
the inherent complexity of software, none is as intuitive and easy to use as Tom McCabe’s.
26. Don’t test your own software. Software developers should never be the primary testers of
their own software.
27. Analyze causes for errors. It is far more cost-effective to reduce the effect of an error by
preventing it than it is to find and fix it. One way to do this is to analyze the causes of errors as
they are detected.
28. Realize that software’s entropy increases. Any software system that
undergoes continuous change will grow in complexity and become more and more disorganized.
29. People and time are not interchangeable. Measuring a project solely byperson-months
makes little sense.
30) Expert excellence. Your employees will do much better if you have high expectations for
them.

SPM MCA S V MURTY


14

THE PRINCIPLES OF MODERN SOFTWARE MANAGEMENT

1) Base the process on an architecture-first approach: (Central design element)- Design and
integration first, then production and test

2) Establish an iterative life-cycle process: (The risk management element)


- Risk control through ever-increasing function, performance, quality. With today’s sophisticated
systems, it is not possible to define the entire problem, design the entire solution, build the
software, then test the end product in sequence. Instead, and iterative process that refines the
problem understanding, an effective solution, and an effective plan over several iterations
encourages balanced treatment of all stakeholder objectives.
Major risks must be addressed early to increase predictability and avoid expensive downstream
scrap and rework.

3) Transition design methods to emphasize component-based development: (The technology


element)Moving from LOC mentally to component-based mentally is necessary to reduce the
amount of human-generated source code and custom development. A component isa cohesive set
of preexisting lines of code, either in source or executable format, with a defined interface and
behavior.

4) Establish a change management environment: (The control element)


- Metrics, trends, process instrumentation The dynamics of iterative development, include
concurrent workflows by different teams working on shared artifacts, necessitates objectively
controlled baseline.

5) Enhance change freedom through tools that support round-trip engineering: (The automation
element)- Complementary tools, integrated environment
Round-trip engineering is the environment support necessary to automate and synchronize
engineering information in different formats. Change freedom is necessary in an iterative
process.

6) Capture design artifacts in rigorous, model-based notation:


- A model-based approach supports the evolution of semantically rich graphical and textual
design notations.
- Visual modeling with rigorous notations and formal machine- process able language provides
more objective measures than the traditional approach of human review and inspection of ad hoc
design representations in paper doc.

7) Instrument the process for objective quality control and progress assessment:
- Life-cycle assessment of the progress and quality of all intermediate product must be integrated
into the process.- The best assessment mechanisms are well-defined measures derived directly
from the evolving engineering artifacts and integrated into all activities and teams.

8) Use a demonstration-based approach to assess intermediate artifacts:


Transitioning from whether the artifact is an early prototype, a baseline architecture,

SPM MCA S V MURTY


15

or a beta capability into an executable demonstration of relevant provides more tangible


understanding of the design tradeoffs, early integration and earlier elimination of architectural
defects.

9) Plan intermediate releases in groups of usage scenarios with evolving levels of detail:

10) Establish a configurable process that economically scalable:

No single process is suitable for all software developments. The process must ensure that there is
economy of scale and ROI.

SPM MCA S V MURTY

You might also like