UNIT 1 (Improving Software Economics) PDF
UNIT 1 (Improving Software Economics) PDF
com
D.SAMEERA 2010
UNIT-II
Improving Software Economics
- 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
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
performance.
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
Here UPFs (Universal Function Points) are useful estimators for language-independent in the
early life cycle phases. The basic units of function points are:
- External outputs
- External inquiries
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
Booch described the following three reasons for the success of the projects that are using
Object-Oriented concepts:
2) The use of continuous integration creates opportunities to recognize risk early and
make incremental corrections without weaken the entire development effort.
REUSE:
Organizations that translates reusable components into commercial products has the
following characteristics:
- They take ownership of improving product quality, adding new features and
transitioning to new technologies.
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
COMMERCIAL COMPONENTS
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
1) Meta process:
2) Macro process:
3) Micro process:
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
- 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.
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.
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
4) The principle of team balance: Select people who will complement and synchronize
with one another.
5) The principle of phase-out: Keeping a misfit on the team doesn’t benefit anyone.
– 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 you are not able to recruit skilled people, recruit and train people
- Project Manager
- Software Architect
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.
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.
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
Planning tools, Quality assurance and analysis tools, Test tools, and User
interfaces provide crucial automation support for evolving the software engineering
artifacts.
Round-trip engineering: is a term used to describe the key capability of
environments that support iterative development.
Forward engineering: is the automation of one engineering artifact from
another, more abstract representation. Ex: compilers and linkers
Reverse engineering: is the generation of modification of more abstract
representation from an existing artifact. Ex: creating visual design model from
a source code.
ACHIEVING REQUIRED QUALITY:
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
- This transition is was motivated by the unsatisfactory demand for the software
and reduced cost.
THE PRINCIPLES OF CONVENTIONAL SOFTWARE ENGINEERING
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
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 the
understandable 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.
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
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 way
to 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 appropriate
experience, 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 results
and the most out of date methods to produce stylish design.
16) Understand the customer’s priorities. It is possible the customer would
tolerate 90% of the functionality delivered late if they could have 10% of it on
time.
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.
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
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 tricks-
constructs that perform a function correctly, but in an obscure way. Show the
world how smart you are by avoiding tricky code.
23. Encapsulate. Information-hiding is a simple, proven concept that results in
software that is easier to test and much easier to maintain.
24. Use coupling and cohesion. Coupling and cohesion are the best ways to
measure 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.
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
29. People and time are not interchangeable. Measuring a project solely by
person-months makes little sense.
30) Expert excellence. Your employees will do much better if you have high
expectations for them.
Major risks must be addressed early to increase predictability and avoid expensive
downstream scrap and rework.
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
5) Enhance change freedom through tools that support round-trip engineering: (The
automation element)
- 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.
of detail:
No single process is suitable for all software developments. The process must
ensure that there is economy of scale and ROI.
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
www.jntuworld.com
www.jntuworld.com
D.SAMEERA 2010
www.jntuworld.com