You are on page 1of 6

1.

ISSUES RELATED TO PROFESSIONAL SOFTWARE


DEVELOPMENT
Software development process issues have been around since the inception of software
development. Improving software development productivity should be the main focus of
all who work on teams, especially leads and managers. Yet before issues can be tackled,
teams need to understand what issues could arise in the course of the development
process.

Building a high quality product is the end goal for any organization, but software
developers often run into a myriad of challenges on the way, while staying on top of new
technologies and trends.

1.1. PROJECT INFRASTRUCTURE ISSUES


An unestablished project environment is always a common challenge in terms of its
impact on project delivery. To ensure efficient project development, test and pre-
production environments should be made available during the development, testing, and
user acceptance testing (UAT) phases. If the environment is not available, then there is no
way one can proceed with project on time and under budget.

1.2. REQUIREMENTS VOLATILITY


A major reason for the complexity of software projects is the constant changing of
requirements. Requirements gathering is a lot more than a handful of business consultants
coming up with their ideal product – it is understanding fully what a project will deliver.
 Define and agree on the scope of the project
 Don’t assume end user needs and requirements – make sure the project team fully
understands the needs and it’s been communicated in between teams clearly
 While refurbishing a product, involve users from the start, and in the case of new
product development, consider UX from the start
 Create a clear, concise and thorough requirements document and confirm your
understanding of the requirements
 And if necessary, create a prototype to confirm and/or refine final agreed upon
requirements

1.3. IGNORING BEST CODE DEVELOPMENT PRACTICES


Not reviewing code, or suppressing errors are just a means that developers use to save
time and meet deadlines. Following a formal quality assurance process is imperative for a
successful launch. If developers trying to cut corners in the development process,
discourage it immediately. Encourage them to use best code development practices to
meet the requirements sooner and in a more efficient manner.

1|Page
1.4. UNDEFINED QUALITY STANDARDS
Defect identification is inevitable during functionality testing, even if the product has
been through thorough unit testing during the development phase. When come out with
the test approach, scenarios, conditions, cases, and scripts to complete the functional
testing of project, make sure test plan covers all the requirements that are to be delivered
by planning several cycles of testing.

1.5. ADAPTING THE LATEST MARKET TRENDS


Catering to the latest technology requirements such as mobile first or mobile-only or
desktop-first is often challenging. If developers don’t have resources with hands-on
experience in the latest and trending technologies, it is sure to impact their time to market.
Make sure resources constantly polish their skills to remain relevant.

1.6. MANAGING DESIGN INFLUENCES


Product designs are under constant influence from stakeholders, the development
organization, and other developmental factors. Managing these influences is essential for
maximizing the quality of systems and their related influence on future business
opportunities. The increase of easily accessible, simple applications has resulted in user
expectations growing exponentially. Make sure to streamline design and offer a consistent
experience across devices, operating systems, and form factors.

1.7. THE INTEGRATION CHALLENGE


There are thousands of different technologies, systems, and applications available for
businesses. Integrating third-party or other custom applications, such as your ERP,
website, or inventory management database adds substantial complexity to your project.
For software solution to conform to the external constraints of other systems, developers
should:
 Get a clear understanding of end-user requirements
 Implement an enterprise-wide framework which works as a platform of
structuring the application
 Discover and research new technologies, design and develop new solutions, and
then test and evaluate them to ensure optimum integration
 Pay extra attention to research and development, testing, and prototyping.
 Test, test, and test again before deploying the solution

1.8. JUGGLING PROJECTS AND TASKS


Stay on track, meet all deadlines, work seamlessly across applications, and efficiently and
effortlessly manage your projects. Always keep task allocation sequential rather than
parallel, and encourage resources to give their best in whatever they do.

1.9. TEST ENVIRONMENT DUPLICATION


Testing a software system in a controlled environment is difficult since the user is not
immersed in a completely realistic working situation. It’s impractical to gauge how a user
2|Page
will really use the application in different situations on a regular basis until it’s deployed.
However, with software applications for both B2B and B2C segments becoming more
and more diversified than in the past, controlled testing is not sufficient. Therefore,
testing the software or app or product in a separate real-life test environment is critical to
software’s success.

1.10. THE SECURITY CHALLENGE


Security breaches are on the rise; a recent study estimates that 96% of all web
applications contain at least one serious vulnerability.
Look beyond technology to improve security of your software
 Develop software using high-level programming languages with built-in security features
 Make security assurance activities such as penetration testing, code review, and
architecture analysis an integral part of the development effort
 Perform all the essential core activities to produce secure applications and systems
including conceptual definition, control specification, design and code review, system test
review, and maintenance and change management

ISSUES RELATED TO MAITENANCE ENVIRONMENT:


Software maintenance is an integral part of a software life cycle. However, it has not
received the same degree of attention that the other phases have. Historically, software
development has had a much higher profile than software maintenance in most
organizations. This is now changing, as organizations strive to squeeze the most out of
their software development investment by keeping software operating as long as possible.
The open source paradigm has brought further attention to the issue of maintaining
software artifacts developed by others.
2. KEY ISSUES IN SOFTWARE MAINTENANCE:

A number of key issues must be dealt with to ensure the effective maintenance of
software.

They have been grouped under the following topic headings:

 Technical issues,
 Management issues,
 Cost estimation, and
 Measurement.

2.1 TECHNICAL ISSUES


2.1.1 LIMITED UNDERSTANDING

Limited understanding refers to how quickly a software engineer can understand where to
make a change or correction in software that he or she did not develop. Research indicates
that about half of the total maintenance effort is devoted to understanding the software to
3|Page
be modified. Thus, the topic of software comprehension is of great interest to software
engineers.

2.1.2 TESTING

The cost of repeating full testing on a major piece of software is significant in terms of
time and money. In order to ensure that the requested problem reports are valid, the
maintainer should replicate or verify problems by running the appropriate tests.

2.1.3 IMPACT ANALYSIS

Impact analysis describes how to conduct, cost effectively, a complete analysis of the
impact of a change in existing software. Maintainers must possess an intimate knowledge
of the software’s structure and content

2.1.4 MAINTAINABILITY

IEEE 14764 defines maintainability as the capability of the software product to be


modified. Modifications may include corrections, improvements, or adaptation of the
software to changes in environment as well as changes in requirements and functional
specifications.

2.2 MANAGEMENT ISSUES


2.2.1 ALIGNMENT WITH ORGANIZATIONAL OBJECTIVES

Organizational objectives describe how to demonstrate the return on investment of


software maintenance activities. Initial software development is usually project-based,
with a defined time scale and budget. The main emphasis is to deliver a product that
meets user needs on time and within budget.

2.2.2 STAFFING

Staffing refers to how to attract and keep software maintenance staff. Maintenance is not
often viewed as glamorous work. As a result, software maintenance personnel are
frequently viewed as “second-class citizens,” and morale therefore suffers.
2.2.3 PROCESS

The software life cycle process is a set of activities, methods, practices, and
transformations that people use to develop and maintain software and its associated
products. At the process level, software maintenance activities share much in common
with software development.
2.2.4 ORGANIZATIONAL ASPECTS OF MAINTENANCE

Organizational aspects describe how to identify which organization and/or function will
be responsible for the maintenance of software. The team that develops the software is
not necessarily assigned to maintain the software once it is operational.

4|Page
2.2.5 OUTSOURCING

Outsourcing and offshoring software maintenance has become a major industry.


Organizations are outsourcing entire portfolios of software, including software
maintenance. More often, the outsourcing option is selected for less mission-critical
software, as organizations are unwilling to lose control of the software used in their core
business.
2.3 MAINTENANCE COST ESTIMATION
Software engineers must understand the different categories of software maintenance,
discussed above, in order to address the question of estimating the cost of software
maintenance. For planning purposes, cost estimation is an important aspect of planning
for software maintenance.
2.3.1 COST ESTIMATION

Maintenance cost estimates are affected by many technical and nontechnical factors.
IEEE 14764 states that “the two most popular approaches to estimating resources for
software maintenance are the use of parametric models and the use of experience”
2.3.2 PARAMETRIC MODELS

Parametric cost modeling (mathematical models) has been applied to software


maintenance. Of significance is that historical data from past maintenance are needed in
order to use and calibrate the mathematical models. Cost driver attributes affect the
estimates.
2.3.3 EXPERIENCE

Experience, in the form of expert judgment, is often used to estimate maintenance effort.
Clearly, the best approach to maintenance estimation is to combine historical data and
experience.
2.4 SOFTWARE MAINTENANCE MEASUREMENT

Entities related to software maintenance, whose attributes can be subjected to


measurement, include process, resource, and product .
There are several software measures that can be derived from the attributes of the
software, the maintenance process, and personnel, including size, complexity, quality,
understandability, maintainability, and effort. Complexity measures of software can also
be obtained using available commercial tools.
2.4.1 SPECIFIC MEASURES

The maintainer must determine which measures are appropriate for a specific
organization based on that organization’s own context. The software quality model
suggests measures that are specific for software maintenance. Measures for sub
characteristics of maintainability include the following

5|Page
 Analyzability: measures of the maintainer’s effort or resources expended in trying
either to diagnose deficiencies or causes of failure or to identify parts to be modified.
 Changeability: measures of the maintainer’s effort associated with implementing a
specified modification.
 Stability: measures of the unexpected behavior of software, including that
encountered during testing.
 Testability: measures of the maintainer’s and users’ effort in trying to test the
modified software.
 Other measures that maintainers use include
 Size of the software,
 Complexity of the software ,
 Understandability, and
 Maintainability.
Providing software maintenance effort, by categories, for different applications provides
business information to users and their organizations. It can also enable the comparison of
software maintenance profiles internally within an organization.

3. REFERENCES:
 http://www.indusa.com/articles/10-challenges-every-software-product-developer-
faces/
 https://www.ibeta.com/3-common-issues-with-the-software-development-process/
 https://pdfs.semanticscholar.org/22fb/b32fa8a893fb0db9d516f45d00233fcf393e.p
df
 https://www.researchgate.net/publication/220421267_Problems_in_Application_S
oftware_Maintenance

6|Page

You might also like