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