INFS1301_Week02_Lec1.pptx
Document Details
Uploaded by AppreciableFigTree
Tags
Full Transcript
INFS1301 Computing Ethics & Society Ethics in Information Technology Ethical Decisions in Software Development Learning Objectives 1. What is meant by software quality? 2. Why is software quality important? 3. What potential ethical issues do software manufacturers face when making decisions t...
INFS1301 Computing Ethics & Society Ethics in Information Technology Ethical Decisions in Software Development Learning Objectives 1. What is meant by software quality? 2. Why is software quality important? 3. What potential ethical issues do software manufacturers face when making decisions that involve tradeoffs between project schedules, project costs, and software quality? 4. What are some effective strategies for developing quality systems? Software Quality High-quality software systems: systems that are easy to learn and use with few/no bugs. Q1: Why some software systems are known as high quality? because they: Perform quickly and efficiently Meet users’ needs Operate safely and reliably, with minimal system downtime Q2: List some examples of applications that software is required to support? Air traffic control Healthcare Military and defense Space exploration Nuclear power Automobile safety Software defect: Any error that, if not removed, could cause a software system to fail to meet its users’ needs. The impact of these defects can be trivial but can also lead to a tragedy. Software Quality Q3: List some Software Defect Examples 1- The Nest thermostat is a clever device that enables users to monitor and adjust their thermostats using their smartphones. However, during a recent cold spell, a software glitch caused the devices to shut down or go offline for many customers. Temperatures in their homes plunged overnight, threatening to freeze pipes and causing potentially serious health issues for the elderly and ill, and those with infants. 2- In 2016, software problems resulted in thousands of Blue Cross and Blue Shield (Insurance Company) of North Carolina customers being overbilled, enrolled in the wrong plans, dropped from coverage, or left without proper insurance cards. 3- A faulty software update at the U.S. Customs and Border Protection agency caused a shutdown of the agency’s systems that are used to process travelers. The resulting massive lines and delays at airports ruined the end of Software Quality Some terms in software quality are defined here: Unfortunatel y, the first Software Quality: The degree to which a release of software product meets the needs of its users. any software Quality Management: focuses on defining, rarely meets all its users’ measuring, and refining the quality of the expectations development process and the products. developed during its various stages. Q4: what is the objective of quality management? To help developers deliver high-quality systems that meet users’ need Deliverables: Products of the development process Q5: List examples of some deliverable products? Software Quality Q: Reasons of Poor-Quality Software 1. Many developers do not know how to design quality into software 2. Others do not take the time to do so Developers must define and follow a set of rigorous software engineering principles and be committed to learning from past mistakes Developers must understand the environment in which their systems will operate and design systems immune to human error 3. Extreme pressure that software companies feel to reduce the time to market for their products Software companies are driven by the need to beat the competition in delivering new functionality to users, begin generating revenue to recover the cost of development, and show a profit for shareholders When forced to choose between adding more user features and doing more testing, most software companies decide in favor of more features That's why resources and time needed to ensure quality are often cut under the pressure to ship a new product Software Quality: ethical dilemma for software development Major ethical dilemma for software development organizations: How much additional cost and effort should we expend to ensure that our products and services meet customers’ expectations? Many organizations avoid buying the first release of a major software product or prohibit its use in critical systems. Why? Approximately 22 percent of Android apps on the market at the time of the study were of low quality. Software Quality: Low Quality Apps Q: Explain how an app is considered to be low quality if it had one or more of the following characteristics: 1. poor user interface 2. did not meet the user requirements 3. had security issues 4. failed at certain critical moments 5. had compatibility and downloading issues 6. consumed excess battery power 7. was overly expensive System Quality: Business Information Systems The Importance of Software Quality A Business information system: is a set of interrelated components -including hardware, software, databases, networks, people, and procedures— that collects and processes data and disseminates the output. System Quality: Business Information Systems captures and Used to improve records business decision-making in a transactions A common type of business variety of industries system A DSS can be used to The accurate, and timely develop: processing of business accurate forecasts of transactions is a key customer demand Types of requirement for such recommend stocks for Business informatio systems. an investment n systems Ex: bank customers having portfolio Decision their funds transferred to the schedule shift workers Process support wrong account before they control in such a way as to system software stopped doing business with (DSS): minimize cost while that bank?!! meeting customer service goals Software is also used to control many industrial processes. A software defect in a Why? DSS can result in reduce costs, eliminate human error, improve quality, and significant negative shorten the time it takes to manufacture products. consequences for an Any defect in this software can lead to decreased product organization and its quality, increased waste and costs, or even unsafe operating System Quality: The Importance of Software Quality Ethical Questions that frequently face Businesses How much money and effort they should invest to ensure the development of high-quality software? Manager who takes a short-term, profit-oriented view may feel that any additional time and money spent on quality assurance will only delay a new product’s release, resulting in a delay in sales revenue and profits Manager who considers it unethical not to fix all known problems before putting a product on the market and charging customers for it Whether their products could cause damage and what their legal exposure would be if they did? The increasing use of software to control critical functions in vehicles as well as manage the operation of medical devices introduces product liability issues that concern many executives System Quality: Software Product Liability Product liability: The liability of manufacturers, sellers, lessors, and others for injuries caused by defective products Q: What forms of Injury or loss that can occur 1. Physical mishaps and death 2. Loss of revenue 3. An increase in expenses due to a business disruption caused by a software failure Numerous product liability claims may well be in the future for the self-driving car based upon product liability claims against the vehicle manufacturer or a supplier of a component Q: what software product liability claims are typically based on: strict liability: software dangerous, caused injury regardless of negligence or intent negligence breach of warranty: product fails to meet the terms of its warranty. Software suppliers usually write warranty to limit their liability in case of nonperformance System Quality: Software Product Liability Strict liability: means that the defendant is held responsible for injuring another person, regardless of negligence or intent Plaintiff / accuser must prove only that the software product is defective or unreasonably dangerous and that the defect caused the injury There is no requirement to prove that the manufacturer was careless or negligent, or to prove who caused the defect All parties in the chain of distribution—the manufacturer, subcontractors, and distributors—are strictly liable for injuries caused by the product and may be sued System Quality: Software Product Liability Negligence: Failure to do what a reasonable person would do, or doing something that a reasonable person would not do A software supplier is not held responsible for every product defect that causes customer loss. Instead, responsibility is limited to harmful defects that could have been detected and corrected through software development practices Software manufacturers and organizations with software-intensive products are frequently sued for negligence and must be prepared to defend themselves The defendant in a negligence case may either: Answer the charge with a legal justification for the alleged misconduct, or Demonstrate contributory negligence Contributory negligence: Plaintiffs’ own actions contributes to their System Quality: Software Product Liability Breach of warranty: Buyer or lessee can sue the seller or lessor if the product fails to meet the terms of its warranty Warranty: Assures buyers or lessees that a product meets certain standards of quality Difficult to prove because the software supplier writes the warranty to limit their liability in the event of nonperformance Misrepresentation: occurs when a seller or lessor either misrepresents the quality of a product or conceals a defect in it Advertising, salespersons’ comments, invoices, and shipping labels are all forms of representation. For example, if a cleaning product is advertised as safe to use in confined areas and some users subsequently pass out from the product’s fumes, they could sue the seller for intentional System Quality: Strategies for Developing Quality Software Developers have identified multiple strategies for ensuring the quality of their software 1. Software development methodologies 2. Capability Maturity Model Integration (CMMI) 3. process-improvement model 4. Special techniques for safety-critical systems 5. Risk management processes 6. Quality management standards System Quality: Strategies for Developing Quality Software 1- Software Development Methodologies Software development methodology: Standard, proven work process that enables controlled progress while developing high-quality software A methodology defines activities in the software development process as well as the individual and group responsibilities for accomplishing these activities System Quality: Strategies for Developing Quality Software 1- Software Development Methodologies Q: Advantages of using Software Development Methodology Use of ansoftware 1. Protect effective methodology manufacturers from legal can: liability 2. Reduce the number of software errors 3. Make negligence harder to prove 4. Enable a manufacturer to produce high- quality software, 5. Forecast project-completion milestones, 6. Reduce development and support costs Top Software Development Methodologies (waterfall, rapid application, agile, and DevOps) System Quality: Software Development Methodologies Waterfall system development model: A sequential, multistage system development process in which development of the next stage cannot begin until the results of the current stage are approved Cons Pros Formal review at end of each stage allows maximum management control. Structured processes produce many intermediate products that can be used to measure progress toward developing the system. Users’ needs may go unstated or be miscommunicated. Users may end up with a system that meets those needs as understood by the developers; Q: Stages of waterfall however, this might not be what the development: users really needed. Investigation Users can’t easily review intermediate Analysis products and evaluate whether a Design particular product will lead to a system Construction that meets their business requirements. Integration and testing Implementation System Quality: Software Development Methodologies Agile development: A methodology under which a system is developed in iterations (often called sprints) lasting from one to four weeks Unlike the waterfall system development model, agile development accepts the fact that system requirements are evolving and cannot be fully understood or defined at the start of the project Agile development concentrates instead on maximizing the team’s ability to deliver quickly and respond to emerging requirements In an agile project, the team evaluates the system every one to four weeks, System Quality: Software Development Methodologies Pros and Cons of Agile Pros Cons For appropriate projects, this approach It is an intense process that takes puts an application into production considerable time and effort on the part sooner. of project members and can result in burnout for system developers and other project participants. Forces teamwork and lots of interaction Requires stakeholders and users to between users and project stakeholders spend more time working together on so that users are more likely to get a the project. system that meets their needs. System Quality: Quality Assurance (QA) The cost to remove a defect in an early stage of software development can be up to 100 times less than removing a defect in software that has been distributed to customers A product containing inherent defects that harm the user may be the subject of a product liability suit Quality assurance (QA): refers to methods within the development process that are designed to guarantee reliable operation of a product Should be applied at each stage of development System Quality: Software Testing Software is developed in units called subroutines or programs. These units, in turn, are combined to form large systems System Quality: Software Testing Dynamic Testing: Entering test data and comparing the results with the expected results in a process Black-box Testing Views the software unit as a device that has expected input and output behaviors but whose internal workings are unknown Dynamic White-box Testing Testing Treats the software unit as a device that has expected input and output behaviors but whose internal workings are known Involves testing all possible logic paths through the software unit with thorough knowledge of its logic The test data must be carefully constructed so that each program statement executes at least once System Quality: Software Testing Static Testing: software is tested without actually executing the code, it consists of two steps: It can identify the following types of errors: A variable with an Review: analysts or undefined value Static analysis: a special programmers review relevant A variables that are software programs called documentation to find and static analyzers are run declared but never used eliminate any errors in system against the code. It looks for Unreachable code that requirements or design suspicious patterns in can never be executed specifications. programs that might indicate Programming standards a defect. violations, and Potential system security vulnerabilities Thank you +974 4495 2222 [email protected] More in Location next lecture … University of Doha for Science & Technology 68 Al Tarfa, Duhail North P.O. Box 24449 Doha, Qatar Questions?