Lecture 1 Flashcards
What is a software failure?
An error, flaw or fault in a computer program or system that causes it to produce an incorrect or unpredicted result or to behave in inadvertent ways.
What are the three impending aspects of failure?
Complete system collapse
Going over time and budget
Failure to provide the correct functionality
What are the areas of damage a software failure can cause a company?
Reduced share price
Financial loss through various refunds and compensation payments to customers
Financial loss through the costs of correcting the error prone software
Financial loss from costly legal
Investigation by regulators
Fines imposed by regulators
Cyber criminals using the well publicized period of systems instability to attack the institution
Reputational damage - loss of customer trust and inability to recruit new customers, both reducing future business growth.
Can company’s press office control and mange the communication of IT and service failure? If not, why?
No they can’t because any issues within a company’s systems are immediately highlighted and discussed by customers as well as financial journalists on social media
Are assurance tools such as AI based performance monitoring and automated systems testing helpful?
Yes the implementation of these tools are helpful despite appearing expensive in the short but by using them businesses can avoid the wide range of damages
How does the cost of a bug increase?
The cost of a bug goes up based on how far down the SDLC the bug is discovered
Is it more cost effective and efficient to fix bugs in the early stages?
Yes it is more cost efficient and effective to fix bugs in the earlier stages rather than later on
Should you test during the development or when you reach production?
You should test early and often when developing software, so you can find and fix any bugs before production
What is reactive work and how much of it should be done in software development?
Reactive work is finding and fixing errors and you should aim for around 20% of this
What is proactive work and how much of it should be done in software development?
Proactive work is building features and improving the product and you should aim for around 80% of this
What is the difference between product/project success and project management success?
Product/project success is determined by meeting its objectives (e.g. all features of the software were implemented) whereas project management success is based on time, cost and scope of criteria.
How do we categorize projects?
Ideal projects
Imperfect projects
Failed projects
What is an ideal project?
The project is completed on time, on budget, on value and with all features and functions as initially specified
What is an imperfect project?
The project is completed and operational but over time, over budget, below predicted value and lacking features
What is a failed project?
The project is cancelled at some point during the development cycle
What are the key factors for implementing a successful software project?
Clearly define success
Have clear objectives and requirements
Involve end users
Have skilled developers
Use effective project management methodologies
Break your project up
Review finished and failed projects
How do you clearly define success?
This can be done in many ways, a successful project may not be a successful product and not all projects generate new products. Hence you must have specific ways of measuring the success and failure of a project
How can you have clear objectives and requirements?
By having a detailed project specification and established project management methodology (e.g. Agile, Waterfall). The project should be properly scoped and broken down and developers should be involved to help determine the project timeline.
How do you involve end users?
By beginning the project with a strong user requirements specification and ask for user’s feedback along the way. Also encourage the project team members to communicate directly with end users
How can having skilled developers benefit a successful software project?
A developer’s programming skill directly influences the success of his/her projects. Skilled developers are often more experienced, can create higher quality software and be more efficient.
How to implement effective project management methodologies?
By having reliable project managers and project management methodologies such as agile methodologies (which stress the importance of developing in iterations). Make sure you always give yourself leeway in terms of time.
What is meant by breaking your project up?
Project sizes vary and hence it is important to break larger projects into smaller, manageable chunks. By using chunks the communication is tighter and problems are more easily dealt with which leads to having shorter project milestones.
Why must you review finished and failed projects?
Because no matter the type of project you implemented (ideal, imperfect or failed) it is important to review what went well and what went wrong with that project.
What is software system quality?
Software quality product is defined in terms of its fitness of purpose
What does a quality product do?
It does precisely what the users want it to do
Where is the fitness of use explained for software products?
It is explained in terms of the satisfaction of requirements laid down in the SRS document (Software Requirements Specification)
What are the several quality methods related to software products?
Portability
Usability
Reusability
Correctness
Maintainability
Describe each quality method
Portability means the software can be freely made to work in various OS environments, in multiple machines and with other software products
Usability means the software product allows various categories of users to easily invoke the functions of the product
Reusability means the software product’s different modules can be quickly reused to develop new products
Correctness means the software product’s various requirements specified in the SRS document have been correctly implemented
Maintainability means the bugs can be easily corrected when they show up, new tasks can be easily added to the product and the functionalities of the product can be easily modified
What are the two broad areas software quality can be divided into?
External quality and Internal quality
Describe each of the broad areas of software quality
External quality is the usefulness of the system as perceived from the outside, this provides customer value and meets the product owner’s specifications
Internal quality is the way that the system has been constructed. It means all properties of the software as seen by developers are desirable in order to facilitate the process of creating a good product