Introduction of Software
Introduction of Software
execute specific tasks. It is the opposite of hardware, which describes the physical
aspects of a computer. Software is a generic term used to refer to
applications, scripts and programs that run on a device. It can be thought of as the
variable part of a computer, while hardware is the invariable part.
1. Changing Requirements during the development process brings challenges for the software
developers. Sometimes they won’t be able to deal with changing requirements.
2. Providing complete Security to the software applications is a major challenge for developers
as hackers are trying each moment there to hack the software applications and steal the
data.
3. Sometimes Misinterpreted requirements to give rise to a problem as a result the software
product fails to give the actual result to the end-users.
4. Many times software developers face problems during System and Application
integration leading to the failure of software projects also.
5. Further Maintenance and Upgradation become a problem for software developers for some
software projects.
6. Adapting to the latest Technology becomes a big challenge for software developers when
they don’t have sufficient experience with the latest market trends.
7. Sometimes when the developers don’t get the appropriate Project infrastructure for the
development and deployment of projects they face problems in delivering the product.
8. Getting Defects or Errors in the product during its last stage creates an unwanted challenge
for the software developers.
9. Time limitations play a vital role in software development. When there is not sufficient time
for the development times the product doesn’t meet the quality standards as the developers
work under pressure and output decreases.
10. When a new developer lacks proper Communication and Coordination with the other
developers of the same development team it creates a problem at some point.
11. It feels like a common problem when one developer Works with another developer’s
code .This situation creates a problem for the developer as it takes a lot of time for the new
developer to understand the code.
12. In last, most software developer’s face this problem if they Don’t get the required support
from the Project Manager/Leader, and sometimes it gets difficult to handle the relationship
between colleagues and managers which in terms decreases productivity.
1. Complexity: Software systems have become increasingly complex, making it difficult for
developers to understand and manage all the components of a system.
2. Maintaining Quality: Ensuring the quality of software systems can be a challenging task,
as developers need to account for various factors such as performance, security, and
usability.
3. Meeting Deadlines: Developers often work under tight deadlines, which can make it
difficult to ensure the quality of the final product.
4. Keeping up with new technologies: Software development is a rapidly evolving field, and
developers must constantly learn new technologies and programming languages to stay
current.
5. Managing changing requirements: Software development projects often involve working
with changing requirements, which can make it difficult for developers to plan and manage
their work effectively.
6. Collaboration: Collaborating with other team members, such as project managers,
designers, and other developers, can be challenging as everyone have different working
styles and goals.
7. Debugging: Debugging software can be time-consuming and complex, particularly for large
and complex systems.
8. Dealing with legacy code: Developers often have to work with legacy code, which can be
difficult to understand and maintain.
9. Managing complexity in distributed development: Developing software in a distributed
environment, where team members are located in different parts of the world, can be
challenging, as it requires effective communication and coordination.
10. Balancing short-term and long-term goals: While developers want to deliver the software
as soon as possible, they also want to ensure that the software is maintainable and
scalable in the long-term.
Software metrics can be classified into three categories −
Product metrics − Describes the characteristics of the product such as size, complexity,
design features, performance, and quality level.
Process metrics − These characteristics can be used to improve the development and
maintenance activities of the software.
Project metrics − This metrics describe the project characteristics and execution. Examples
include the number of software developers, the staffing pattern over the life cycle of the
software, cost, schedule, and productivity.
Some metrics belong to multiple categories. For example, the in-process quality metrics of a project
are both process metrics and project metrics.
Software quality metrics are a subset of software metrics that focus on the quality aspects of the
product, process, and project. These are more closely associated with process and product metrics
than with project metrics.
Software quality metrics can be further divided into three categories −
Customer Problems
It measures the problems that customers encounter when using the product. It contains the
customer’s perspective towards the problem space of the software, which includes the non-defect
oriented problems together with the defect problems.
The problems metric is usually expressed in terms of Problems per User-Month (PUM).
PUM = Total Problems that customers reported (true defect and non-defect oriented
problems) for a time period + Total number of license months of the software during
the period
Where,
Number of license-month of the software = Number of install license of the software ×
Number of months in the calculation period
PUM is usually calculated for each month after the software is released to the market, and also for
monthly averages by year.
Customer Satisfaction
Customer satisfaction is often measured by customer survey data through the five-point scale −
Very satisfied
Satisfied
Neutral
Dissatisfied
Very dissatisfied
Satisfaction with the overall quality of the product and its specific dimensions is usually obtained
through various methods of customer surveys. Based on the five-point-scale data, several metrics
with slight variations can be constructed and used, depending on the purpose of analysis. For
example −
Fix Quality
Fix quality or the number of defective fixes is another important quality metric for the maintenance
phase. A fix is defective if it did not fix the reported problem, or if it fixed the original problem but
injected a new defect. For mission-critical software, defective fixes are detrimental to customer
satisfaction. The metric of percent defective fixes is the percentage of all fixes in a time interval that is
defective.
A defective fix can be recorded in two ways: Record it in the month it was discovered or record it in
the month the fix was delivered. The first is a customer measure; the second is a process measure.
The difference between the two dates is the latent period of the defective fix.
Usually the longer the latency, the more will be the customers that get affected. If the number of
defects is large, then the small value of the percentage metric will show an optimistic picture. The
quality goal for the maintenance process, of course, is zero defective fixes without delinquency.
Metrics:
A metric is a measurement of the level at which any impute belongs to a system product or process.
Software metrics will be useful only if they are characterized effectively and validated so that their worth
is proven. There are 4 functions related to software metrics:
1. Planning
2. Organizing
3. Controlling
4. Improving
1. Quantitative: Metrics must possess quantitative nature. It means metrics can be expressed in values.
2. Understandable: Metric computation should be easily understood, and the method of computing
metrics should be clearly defined.
3. Applicability: Metrics should be applicable in the initial phases of the development of the software.
4. Repeatable: The metric values should be the same when measured repeatedly and consistent in nature.
5. Economical: The computation of metrics should be economical.
6. Language Independent: Metrics should not depend on any programming language.
Software Reliability
Software Reliability means Operational reliability. It is described as the ability of a system or
component to perform its required functions under static conditions for a specific period.
Software reliability is also defined as the probability that a software system fulfills its assigned task in a
given environment for a predefined number of input cases, assuming that the hardware and the input
are free of error.
Software Reliability is an essential connect of software quality, composed with functionality, usability,
performance, serviceability, capability, installability, maintainability, and documentation. Software
Reliability is hard to achieve because the complexity of software turn to be high. While any system
with a high degree of complexity, containing software, will be hard to reach a certain level of
reliability, system developers tend to push complexity into the software layer, with the speedy growth
of system size and ease of doing so by upgrading the software.
For example, large next-generation aircraft will have over 1 million source lines of software on-board;
next-generation air traffic control systems will contain between one and two million lines; the
upcoming International Space Station will have over two million lines on-board and over 10 million
lines of ground support software; several significant life-critical defense systems will have over 5
million source lines of software. While the complexity of software is inversely associated with software
reliability, it is directly related to other vital factors in software quality, especially functionality,
capability, etc.
Estimation is the process of finding an estimate, or approximation, which is a value that can be used
for some purpose even if input data may be incomplete, uncertain, or unstable.
Estimation determines how much money, effort, resources, and time it will take to build a specific
system or product. Estimation is based on −
Observations on Estimation
Estimation need not be a one-time task in a project. It can take place during −
o Acquiring a Project.
o Planning the Project.
o Execution of the Project as the need arises.
Project scope must be understood before the estimation process begins. It will be helpful to
have historical Project Data.
Project metrics can provide a historical perspective and valuable input for generation of
quantitative estimates.
Planning requires technical managers and the software team to make an initial commitment as
it leads to responsibility and accountability.
Past experience can aid greatly.
Use at least two estimation techniques to arrive at the estimates and reconcile the resulting
values. Refer Decomposition Techniques in the next section to learn about reconciling
estimates.
Plans should be iterative and allow adjustments as time passes and more details are known.