Ethical Decision in Software
Development and Ethics of IT
Organizations
Adv. Rakshya Giri
Software Quality and it’s Importance
Software quality can mean many things, depending on who defines the meaning of quality.
For example, users and developers may have different definitions of what software quality—
and good, quality software is.
Software Quality refers to the ability of a software product to perform its expected functions
in a safe and fault-free manner.
Just like you evaluate the quality of fruits before purchasing them by checking their
freshness, size and shape, the quality of a software system is evaluated through Quality
Assurance (QA).
In 2015, Starbucks lost millions in sales as a result of a fault during their daily system refresh
which led to the shutdown of point-of-sales registers across many outlets in the United
States and Canada. The coffee shops were forced to give away free drinks till the systems
were fixed and restored. On the bright side, there was free coffee
The quality of software can be defined as the ability of the software to function as per user
requirement. When it comes to software products it must satisfy all the functionalities
written down in the SRS document.
Software quality is essential as it safeguards security and usability. A high-quality software
brings in predictability. It guarantees the functionality and credibility of the enterprise. It is
further critical for customer satisfaction and holding their trust in your services.
The quality of our software matters in the growth of our brand. The quality of our software
impacts our business in diverse ways.
It influences our business in ways more than just customer satisfaction and practicality. Most
successful businesses own exceptionally efficient and remarkable software.
It encourages client satisfaction and company reputation while establishing high end security.
Software quality refers to the process of defining a software. The “quality” in this context
indicates both structural quality and functionality of the program. The software quality
measures a software’s purpose and stability.
Elements like reliability, maintainability and authenticity are likewise qualities of a good
software.
The quality of a software can have different perspectives that can differ from that of a user
and a developer. A user might prefer a software that is simple and user friendly, whereas a
developer might insist on a software that is readily modifiable and strong. A high-quality
software does not have defects or bugs. It satisfies every requirement and expectations of a
perfectly functioning software. It is also budget friendly and delivered on time. In the most
elemental sense, a high-quality software fulfills the essential purpose for which it was created.
There are certain standards that one could stick to in order to build softwares that are time
efficient and economical. Adopting this system eliminates greater chances of errors and
miscalculations, accordingly increasing the quality of the software by better development.
Key Aspects of Software Quality
Good design – It’s always important to have a good and aesthetic design to
please users
Reliability – Be it any software it should be able to perform the functionality
impeccably without issues
Durability- Durability is a confusing term, In this context, durability means the
ability of the software to work without any issue for a long period of time.
Consistency – Software should be able to perform consistently over platform
and devices
Maintainability – Bugs associated with any software should be able to capture
and fix quickly and news tasks and enhancement must be added without any
trouble
Value for money – customer and companies who make this app should feel
that the money spent on this app has not gone to waste.
software quality standards
Quality standards are specific key specifications that make sure that your software is
functional. It is a process that tracks the software engineering procedures to secure that
the product is fault free.
There are different quality standards in software engineering available. We will go
through each of them in detail soon. The implementation of these quality standards
results in outcomes of better customer satisfaction and lowered errors or bugs.
The three vital aspects of software quality standards are functionality, structuralists,
and process quality.
Functional quality tests if the software does what it proposes to do without errors. This
consists of assuring good performance and meeting the specific requirements. The
aspect of structuralism deals with the code of the program. It monitors the code
maintainability and security. Process quality establishes that the software satisfies
delivery dates and functions within the budget.
These quality metrics in software engineering primarily concentrate on the subsequent
aspects :performance efficiency, practicality, Unity, reliability, and security. Before we
dive into various quality standards, we must have a clear insight of why quality
assurance is important for businesses and companies.
Importance of software quality
1. Saves time and money
Proper quality assurance checks to make sure that your software does not consist of bugs. Not abiding by
these standards can be severely unfavorable in the long run. Some faults, if not recognized in time, can
contribute to significant losses. Therefore, in software development, it is vital to periodically review your
software quality as you could save a ton of time and money.
2. Strengthen security
The security of our software must be the dominant concern in our company or enterprise. A protected
software never puts the company’s data at risk. It never approves unwarranted access. This is essential to
safeguard the company's reputation and preserve clients’ trust in our brand. The more secure our software
is, the more credible your business is.
3. Brand reputation
Any controversy regarding our company software may have radical impacts on the goodwill of our
enterprise. If by any chance, our software malfunctions, our company’s reputation is at risk. It further
brings down the market value of our brand. It likewise may potentially lead to lawsuits and other legal
situations. Accordingly, high-quality software develops into a part of the company’s brand, hence
exemplifying the importance of software quality .
4. User satisfaction
Client satisfaction is necessary for the expansion of a company. If our software is eminently functional and
easy to use, its proficiency in efficiency leads to higher customer satisfaction. Simple and user-friendly
elements are attributes of a good software.
Strategies for developing Quality Software
1. Define the Software Scope
Defining the software scope is one of the most crucial parts of software
development. It should be done early on to avoid any unnecessary changes or missed
directions. It also enables everyone to align better and be on the same page.
Software scope includes different aspects of the software development process,
including the main software idea, features/functionalities, deliverables, timelines,
milestones, documentation, budget, responsibilities, and much more.
It would also include the working methodology that you plan to follow throughout
the development. Whether you choose the agile way of working or the waterfall
model or Kanban, or any other, you need to define it in the scope.
With a well-defined software scope, you can not just enforce quality within the
development but also speed the entire process up.
You need to build a strong foundation for your software. The infrastructure,
methodology, technologies and other things should be clearly mentioned in the scope
of software before taking on your project for faster and quality development.
2. Follow The Agile Approach
Working methodology and the process plays a pivotal role in how fast your software is developed. It decides
the flow of the development, collaboration type, and the manner in which your software is launched.
Agile software development has been proven to be a powerful strategy for building great quality software. As
a methodology, agile is known for promoting speed and efficiency.
By agile, we mean a development that is iterative and continuous with shortened delivery times and releases
every few weeks. It follows the 12 principles mentioned in the agile manifesto. The agile development
process includes the following steps:
Planning the project and creating a software development roadmap
Breaking the development into smaller milestones and planning their release as MVP
Planning sprints for each member of the software development team and their deliverables
Holding daily scrum meetings to review progress and eliminate bottlenecks
Developing and delivering the prototype with the first functionality
Reviewing the sprint with QA and testing team and testing on the beta users
Holding retrospective meetings with the product owner, development team, scrum master, and other
people in the team
3. Prioritize Urgent Over Recent But Keep An Eye On End Goal
The software universe is pounding with new advancements each day. Whether it is
new technology development, a version of the existing frameworks, or even the
emergence of new tools for development, you will always find something new and
better to incorporate into your software. Many businesses tend to give in to the
FOMO of new techs and change the course of their development.
However, this would not just disrupt the flow of the development but also kill your
software development team’s productivity. However, businesses cannot completely
give up on changes within their development. That’s where this strategy comes in.
You need to start prioritizing urgent tasks over the recent changes. But this should not
come at the cost of your end goal. Anything new might be a distraction from the set
software and might even slow down the development.
In fact, it need not just be new; it could be a stakeholder’s whim, an issue faced
recently, or a buzzing tech issue.
You also need to distinguish between what is just termed recent urgent and what is
important for complete development.
4. Outsource To An Established Firm
Nothing can beat the speed and quality that you can receive by outsourcing software
development.
When you choose to outsource your development to an offshore company, you get the
expertise and experience of an established firm that has worked on several such
projects. They come with years of experience in managing projects, streamlining
processes, and enhancing workflows. Not just that, they know how to navigate
challenges that might crop up during the course of the development.
The offshore outsourcing companies have a complete process for quality checks and
ensure that they deliver bug-free codes that run seamlessly. Moreover, they have project
managers who monitor the progress of projects and deliver within the committed time
frame.
They are not bothered by other internal distractions or business-related requirements.
They can focus solely on building your software while you take care of other core
business competencies.
All in all, with outsourcing to an offshore software development company, you can do
both- save time and get quality software. You just need to be very thorough while
evaluating your software development partner.
5. Embrace The DevOps Culture
DevOps, short for development and operations, is a way of communication
between the two departments.
Embracing DevOps means bringing together the two teams and ensuring
continuous processes throughout for better quality and faster development.
This model is popular among the IT community for enhancing the quality of
software developed.
As per an HBR research report, 70% of companies that adopted DevOps have
seen an increase in their time to market the software. And 64% of these
companies even witnessed an increase in the software quality using DevOps.
DevOps transformation does not mean you adopt a new tool or a new
SDLC(System Development Life Cycle)process. It is a cultural change that
you bring about in your organization to improve the quality of your software
and build it faster. You bring together people, processes, and technologies
to bring about a change that benefits the digital product that you build. It
sheds down the siloed structure of development and operations and brings
them together to create value.
Use of Contingent Workers
Contingent workers are outsourced, non-permanent workers who are commonly referred
to as Independent Contractors, contract workers, freelancers, gig workers, consultants,
temporary talent or remote workers.
Contingent workers are not core employees and are not managed by a traditional
employment model.
A contingent worker can work on site or remotely; however, when the their contract is at
an end or the project for which the contingent worker was hired for is complete, the
employer has no responsibility to provide continuous work to that worker on a permanent
basis. As contingent workers are not core employees, they are only engaged by an
employer on a short-term, long term or on a project-by-project basis.
The two biggest benefits to using contingent workers over core employees are flexibility
and cost savings. However, there are additional motivators for why strategic organizations
are including contingent workers as part of their workforces over core employees.
One of the most significant motivators for employers to engage a contingent workforce
over core employees is saving on costs. Employers aren’t required to pay Independent
contractors for breaks or non-productive labor. These workers also aren’t entitled to the
same types of benefits afforded core employees, such as health insurance, holiday pay,
sick leave or vacation days. Engaging Independent Contractors over core employees for a
project means employers only pay them for as long as they need them.
Independent freelancers, Contractors (both individuals and those provided by companies),
Agency workers, Interns (not always) are considered and contingent workers.
Contingent workers, sometimes called gig workers, are typically hired on a project, role or
seasonal basis instead of as regular employees. This alternative work arrangement offers
flexibility both to workers and companies and has many other benefits.
A contingent worker is generally not eligible for perks, leaves, yearly appraisal, etc., and
other traditional employee benefits.
Unlike regular employees, there is no contractual obligation to continue with a contingent
worker after completing the work. Contingent workers are typically there for a limited
time or purpose beyond which you can discontinue their services.
A contingent worker can work independently, or the staffing company that leases them to
companies manages the on-demand workforce. So, there is a minimal requirement of
supervision or training, and they are primarily prepared to do the tasks you assign them.
Advantages of contingent workers
Increase in flexibility and ability to adapt to market
Contingent workers, and the nature of their short-term agreements, are an ideal fit, as a
contingent worker doesn’t come with ties of a long-term contract like employees do.
A contingent workforce can be engaged on-demand. If there is a sudden surge in demand for
services or the need for a specialized skill arises, a contingent worker can be engaged until the
project is finished or the contract is at an end. Employees aren’t as flexible once a contract
has been signed.
Larger talent pool
By engaging contingent workers, employers have access to a larger pool of Independent
Contractors where highly skilled workers can be sourced. Typically, these knowledge workers
come with a very specific skill set that can’t be found in-house. Often times, employees may
not have the skills required for a project, and employers must source those skills only until the
project is completed.
Bridging skills gaps
A contingent workforce is typically made up of highly talented workers with a specific skill set.
Engaging these types of workers is a strategic way to fill skills gaps within the organization.
A contingent workforce also provides employers with the opportunity to source the skills and
experience they need that they cannot find in their employees.
H-1B Workers
H1B temporary workers are defined as persons who will perform services in specialty occupations on a
temporary basis.
H-1B visa is an employment-based, non-immigrant visa for temporary workers.
It is issued for a specialty job role requiring theoretical and practical application of a person with
specialized knowledge. Additionally, a person who requires the H-1B visa should have at least a
Bachelor’s Degree or its equivalent.
The H-1B program applies to employers seeking to hire nonimmigrant aliens as workers in specialty
occupations or as fashion models of distinguished merit and ability. A specialty occupation is one that
requires the application of a body of highly specialized knowledge and the attainment of at least a
bachelor’s degree or its equivalent.
The intent of the H-1B provisions is to help employers who cannot otherwise obtain needed business
skills and abilities from the U.S. workforce by authorizing the temporary employment of qualified
individuals who are not otherwise authorized to work in the United States.
The law establishes certain standards in order to protect similarly employed U.S. workers from being
adversely affected by the employment of the nonimmigrant workers, as well as to protect the H-1B
nonimmigrant workers.
Employers must attest to the Department of Labor that they will pay wages to the H-1B nonimmigrant
workers that are at least equal to the actual wage paid by the employer to other workers with similar
experience and qualifications for the job in question, or the prevailing wage for the occupation in the
area of intended employment – whichever is greater.
On January 15, 2021, the U.S. Department of Labor (Department) issued an Office of
Foreign Labor Certification H-1B Program Bulletin and a Wage and Hour Division Field
Assistance Bulletin (FAB) revising its interpretation of its regulations concerning
which employers of H-1B workers must file Labor Condition Applications.
The Department simultaneously submitted a Notice for publication in the Federal
Register announcing and requesting public comments on this interpretation.
On January 20, 2021, the Department withdrew its Notice from the Office of the
Federal Register prior to its publication, and is now withdrawing the Bulletin and FAB
for the purpose of considering the process for issuing this interpretation as well as
reviewing related issues of law, fact, and policy.
Accordingly, the requirements of the Bulletin and FAB are no longer in effect. The
Department will notify the public of any further actions as appropriate once it
completes its review.
Outsourcing
Outsourcing is a business practice in which services or job functions are hired
out to a third party on a contract or ongoing basis.
In IT, an outsourcing initiative with a technology provider can involve a range of
operations, from the entirety of the IT function to discrete, easily defined
components, such as disaster recovery, network services, software development,
or QA testing.
Companies may choose to outsource services onshore (within their own country),
nearshore (to a neighboring country or one in the same time zone), or offshore
(to a more distant country). Nearshore and offshore outsourcing have
traditionally been pursued to save costs.
Business process outsourcing (BPO) is an overarching term for the outsourcing of
a specific business process task, such as payroll. BPO is often divided into two
categories: back-office BPO, which includes internal business functions such as
billing or purchasing, and front-office BPO, which includes customer-related
services such as marketing or tech support.
IT outsourcing is a subset of business process outsourcing, and it falls traditionally into
one of two categories: infrastructure outsourcing and application outsourcing.
Infrastructure outsourcing can include service desk capabilities, data center
outsourcing, network services, managed security operations, or overall infrastructure
management.
Application outsourcing may include new application development, legacy system
maintenance, testing and QA services, and packaged software implementation and
management.
Today, however, IT outsourcing can also include relationships with providers of
software-, infrastructure-, and platforms-as-a-service. These cloud services are
increasingly offered not only by traditional outsourcing providers but by global and
niche software vendors or even industrial companies offering technology-enabled
services.
Outsourcing is a common practice of contracting out business functions and processes to
third-party providers. The benefits of outsourcing can be substantial - from cost savings
and efficiency gains to greater competitive advantage.
On the other hand, loss of control over the outsourced function is often a potential
business risk. You should consider carefully the pros and cons of outsourcing before
deciding to contract out any activities or business operations.
IT outsourcing is the use of external service providers to effectively deliver IT-
enabled business process, application service and infrastructure solutions for
business outcomes.
Outsourcing, which also includes utility services, software as a service and cloud-
enabled outsourcing, helps clients to develop the right sourcing strategies and
vision, select the right IT service providers, structure the best possible contracts,
and govern deals for sustainable win-win relationships with external providers.
Outsourcing can enable enterprises to reduce costs, accelerate time to market, and
take advantage of external expertise, assets and/or intellectual property.
Advantages of outsourcing
1. Improved focus on core business activities
Outsourcing can free up your business to focus on its strengths, allowing your staff to concentrate on
their main tasks and on future strategy.
2. Increased efficiency
Choosing an outsourcing company that specializes in the process or service you want them to carry
out for you can help you achieve a more productive, efficient service, often of greater quality.
3. Controlled costs
Cost savings achieved by outsourcing can help you release capital for investment in other areas of
your business.
4. Increased reach
Outsourcing can give you access to capabilities and facilities otherwise not accessible or affordable.
5. Greater competitive advantage
Outsourcing can help you leverage knowledge and skills along with your complete supply chain.
Outsourcing can also help to make your business more flexible and agile, able to adapt to changing
market conditions and challenges while providing cost savings and service level improvements.
Whistle-Blowing
A whistleblower is a person, who could be an employee of a company, or a government
agency, disclosing information to the public or some higher authority about any wrongdoing,
which could be in the form of fraud, corruption, etc.
Whistleblowing is the act of drawing public attention, or the attention of an authority
figure, to perceived wrongdoing, misconduct, unethical activity within public, private or
third-sector organizations. Corruption, fraud, bullying, health and safety violation, cover-
ups and discrimination are common activities highlighted by whistleblowers.
Whistleblowers often face reprisals from their employer, who may suffer reputational
damage as a result of the whistle being blown, or from colleagues who may have been
involved in the illicit activities. In some cases reprisals become so severe that they turn
into persecution. In some cases reprisals come from legal channels, particularly if the
whistle has been blown for illegitimate reasons.
A whistleblower is a person who comes forward and shares his/her knowledge on any
wrongdoing which he/she thinks is happening in the whole organization or in a specific
department. A whistleblower could be an employee, contractor, or a supplier who becomes
aware of any illegal activities.
To protect whistleblowers from losing their job or getting mistreated there are specific
laws. Most companies have a separate policy which clearly states how to report such an
incident.
A whistleblower can file a lawsuit or register a complaint with higher authorities which
will trigger a criminal investigation against the company or any individual department.
A whistle-blower is a person who tells the public or someone in authority about alleged
dishonest or illegal activities/misconduct that may be a violation of a law, rule,
regulation and/or a direct threat to public interest, such as fraud, health/safety
violations, and corruption, occurring in a government department, a public or private
organization, or a company.
Whistle-blowers are commonly seen as selfless martyrs for the public interest and
organizational accountability. Most whistle-blowers are internal, and believe in taking
action with respect to unacceptable behavior within an organization. Some
whistleblowers are external and report misconduct to lawyers, the media, law
enforcement agencies or watchdog agencies or the state.
There are two types of whistleblowers: internal and external. Internal whistleblowers
are those who report the misconduct, fraud, or indiscipline to senior officers of the
organization such as Head Human Resource or CEO.
External whistleblowing is a term used when whistleblowers report the wrongdoings to
people outside the organization such as the media, higher government officials, or
police.
The concept of a whistle-blower is new for Nepalese context and not very often used. We do
not have specific and comprehensive whistle-blower protection act includes definition of
employee, protected disclosers, subject matters of disclosers, protected activities and so
and so.
An NGO called Pro-Public is advocating for whistleblower protection in Nepal.
However, there are some legal provisions which are related to whistle-blower.
Section 56 of Prevention of Corruption Act, 2002 has a provision for the protection of
informers. This provision, however, is largely confined only to the breach of secrecy. The
existing Act makes some provision for information disclosure, but the provisions in the Act
are meant more to discourage false reporting rather than encourage and protect accurate
reporting.
Section 49 of the Act makes provision for imposing a fine not exceeding 5,000 rupees for
anyone filing false or wrong complaints with an intention to cause losses, damage or
harassment.
Section 58 makes provisions for distributing rewards but it is not specific in terms of
amounts to be awarded to the whistle-blower. The Right to Information Act, 2007 introduced
this concept in Nepalese jurisprudence. This act defines “Public body” very widely and
section 29 of the same act provides the protection of whistle-blower.
The concept of “shoot the messenger” is widespread in Nepalese culture in this regard. If
the employee discloses any illegal misconducts of the organization concerned, even if the
law protects them from employer retaliation, they may be punished with suspension,
Green Computing
Green computing, also known as green technology, is the use of computers and other computing
devices and equipment in energy-efficient and eco-friendly ways.
Green computing, also known as green technology, is the use of computers and other computing
devices and equipment in energy-efficient and eco-friendly ways.
Organizations that use green computing methods often deploy energy-efficient central processing
units (CPUs), servers, peripherals and power systems.
Green computing (also known as green IT or sustainable IT) is the design, manufacture, use and
disposal of computers, chips, other technology components and peripherals in a way that limits the
harmful impact on the environment, including reducing carbon emissions and the energy consumed
by manufacturers, data centers and end-users.
Green computing also encompasses choosing sustainably sourced raw materials, reducing electronic
waste and promoting sustainability through the use of renewable resources.
Green computing, also called sustainable computing, aims to maximize energy efficiency and
minimize environmental impact in the ways computer chips, systems and software are designed and
used.
Also called green information technology, green IT or sustainable IT, green computing spans
concerns across the supply chain, from the raw materials used to make computers to how systems
get recycled.
In their working lives, green computers must deliver the most work for the least energy, typically
measured by performance per watt.
Importance of Green Computing
To reduce energy consumption. This not only cuts energy costs for organizations, but it also
reduces the carbon footprint, particularly of IT assets.
The environmental impact of IT components is important in the study of data center design.
Advances in energy management and energy conservation have turned computers and other
computing resources into highly energy-efficient assets.
Green design of data centers, office buildings and other high-energy assets has become a key
part of new construction and building upgrades to make them more environmentally
sustainable.
An important consideration with green IT is to reduce the use of energy from fossil fuels.
This helps lower the amount of pollution released into the atmosphere and water system.
Reduced emissions have been shown to have positive effects on weather and air pollution.
Building energy considerations into the system development lifecycle has resulted in the use
of energy-efficient equipment, power systems, lighting and HVAC systems, and a variety of
ancillary systems. For example, many data center components have a sleep mode that
reduces power use or completely shuts down a system during times of low or no use.
Most IT equipment manufacturers support green manufacturing.
Ways to increase green computing
Install building environment systems that are energy efficient.
Install overhead lighting with low energy consumption and include timers or motion
detectors to control light switches and reduce the time lights are in use.
Buy energy-efficient servers, switches, laptops, desktop systems, printers, scanners and
other equipment.
Install energy-efficient windows and doors that have reflective glass to reduce heat.
Install fans throughout equipment racks to reduce heat.
Turn off systems that are not performing scheduled work.
Use refillable printer cartridges.
Establish corporate policies that stress energy conservation and the use of energy-efficient
equipment.
Explain to senior management the importance of green computing and make sure to have
their support.