Podcast
Questions and Answers
Which of the following best describes 'Bespoke' software?
Which of the following best describes 'Bespoke' software?
- Software sold on the open market to a wide range of customers.
- Software designed and developed for a specific, individual customer. (correct)
- Software built into hardware, offering limited modification options.
- Software used in critical applications demanding timely responses.
Which type of software is specifically designed to run businesses, emphasizing data accuracy and security?
Which type of software is specifically designed to run businesses, emphasizing data accuracy and security?
- Data processing software (correct)
- Real-time software
- Embedded software
- Generic software
What is a key focus of software engineering as a discipline?
What is a key focus of software engineering as a discipline?
- Primarily the marketing and sales strategies for software products.
- Purely the technical aspects of coding and algorithm design.
- Managing the design, development, testing, and maintenance of software systems. (correct)
- Only the initial requirement analysis phase of software creation.
Which statement reflects the systematic nature of software engineering?
Which statement reflects the systematic nature of software engineering?
Why are software engineering techniques particularly important for large software systems?
Why are software engineering techniques particularly important for large software systems?
Which of the following describes a critical aspect of 'good' software?
Which of the following describes a critical aspect of 'good' software?
What is a primary concern regarding software costs?
What is a primary concern regarding software costs?
How does maintenance typically affect software structure?
How does maintenance typically affect software structure?
What factor can help reduce maintenance costs in software projects?
What factor can help reduce maintenance costs in software projects?
Which of the following is a general issue affecting most software systems today?
Which of the following is a general issue affecting most software systems today?
Which principle should guide software development processes?
Which principle should guide software development processes?
What has been the impact of the Web on application development?
What has been the impact of the Web on application development?
Which of the following strategies is a key aspect of web-based systems in software engineering?
Which of the following strategies is a key aspect of web-based systems in software engineering?
What best describes the role of 'front-end' developers with respect to web application development?
What best describes the role of 'front-end' developers with respect to web application development?
What is a software engineer's responsibility regarding confidentiality?
What is a software engineer's responsibility regarding confidentiality?
Which ethical principle states that software engineers shall act consistently with the public interest?
Which ethical principle states that software engineers shall act consistently with the public interest?
Which ethical principle emphasizes fairness and support among software engineering professionals?
Which ethical principle emphasizes fairness and support among software engineering professionals?
Which principle requires software engineers to continually enhance their knowledge and skills?
Which principle requires software engineers to continually enhance their knowledge and skills?
What action demonstrates accountability in software engineering?
What action demonstrates accountability in software engineering?
Why is competence crucial for software engineers?
Why is competence crucial for software engineers?
A software engineer discovers their employer is about to release a safety-critical system without proper testing. What ethical dilemma does this present?
A software engineer discovers their employer is about to release a safety-critical system without proper testing. What ethical dilemma does this present?
What are the main activities involved in the discipline of software engineering?
What are the main activities involved in the discipline of software engineering?
What does solving customers' problems entail in software engineering?
What does solving customers' problems entail in software engineering?
What techniques should be used by a software engineer?
What techniques should be used by a software engineer?
What is one of the key challenges with large, high quality systems?
What is one of the key challenges with large, high quality systems?
What are some attributes of good software?
What are some attributes of good software?
How do software costs compare to hardware costs?
How do software costs compare to hardware costs?
What are the types of software maintenance?
What are the types of software maintenance?
What professional issues affect most software?
What professional issues affect most software?
What should systems be developed with?
What should systems be developed with?
Flashcards
What is software?
What is software?
A collection of computer programs, procedures and documentation.
What is Custom (Bespoke) Software?
What is Custom (Bespoke) Software?
Software designed for a specific customer's needs.
What is Generic Software?
What is Generic Software?
Software sold on the open market to many customers.
What is Embedded Software?
What is Embedded Software?
Signup and view all the flashcards
What is Real-Time Software?
What is Real-Time Software?
Signup and view all the flashcards
What is Data Processing Software?
What is Data Processing Software?
Signup and view all the flashcards
What is Software Engineering?
What is Software Engineering?
Signup and view all the flashcards
What is the Goal of Software Engineering?
What is the Goal of Software Engineering?
Signup and view all the flashcards
What is Systematic development?
What is Systematic development?
Signup and view all the flashcards
Why is Teamwork Important?
Why is Teamwork Important?
Signup and view all the flashcards
What is Maintainability?
What is Maintainability?
Signup and view all the flashcards
What is Dependability and Security?
What is Dependability and Security?
Signup and view all the flashcards
What is Effiency?
What is Effiency?
Signup and view all the flashcards
What is Acceptability?
What is Acceptability?
Signup and view all the flashcards
What is Software Maintenance?
What is Software Maintenance?
Signup and view all the flashcards
What is Maintenance to Repair Software Faults?
What is Maintenance to Repair Software Faults?
Signup and view all the flashcards
What is Maintenance to Adapt Software?
What is Maintenance to Adapt Software?
Signup and view all the flashcards
How do software costs relate to overall computer system costs?
How do software costs relate to overall computer system costs?
Signup and view all the flashcards
Maintenance to Modify Functionality?
Maintenance to Modify Functionality?
Signup and view all the flashcards
What Impacts Maintenance Costs?
What Impacts Maintenance Costs?
Signup and view all the flashcards
Why is Heterogeneity important?
Why is Heterogeneity important?
Signup and view all the flashcards
Why is Business and Social Change important?
Why is Business and Social Change important?
Signup and view all the flashcards
Why is Trust Important for Software?
Why is Trust Important for Software?
Signup and view all the flashcards
What is a Managed Development Process?
What is a Managed Development Process?
Signup and view all the flashcards
What is Software Reuse?
What is Software Reuse?
Signup and view all the flashcards
What is Engineer Confidentiality?
What is Engineer Confidentiality?
Signup and view all the flashcards
What is Engineer Competence?
What is Engineer Competence?
Signup and view all the flashcards
What is Front-End web development?
What is Front-End web development?
Signup and view all the flashcards
What is Accountability?
What is Accountability?
Signup and view all the flashcards
Study Notes
What is Software?
- Software comprises computer programs, procedures, rules, associated documentation, and data.
- Custom or Bespoke software is designed for a specific customer's unique needs.
- Examples: websites, air traffic control systems
- Generic software, often called Commercial Off The Shelf (COTS) or shrink-wrapped and is sold on the open market.
- Examples: word processors, spreadsheets, compilers
- Embedded software is built into hardware, making it difficult to change.
Types of Software
- Real-time software is used in critical applications where timely responses are crucial.
- Examples include industrial automation, aerospace systems, medical devices, telecommunications, and financial trading systems.
- Most embedded systems operate under hard real-time constraints.
- Data processing software runs businesses.
- Key concerns are accuracy and security of data.
- It carries out functions like recording sales, managing accounts, and printing bills.
Software Engineering Defined
- Software engineering is a discipline focused on the design, development, testing, and maintenance of software systems.
- The discipline encompasses requirement analysis, design, coding, testing, and deployment.
- Methodologies, tools, and practices aim to produce high-quality software meeting user and stakeholder needs.
- It solves customer problems through systematic development and evolution of large, high-quality software systems within cost, time, and other constraints.
- It involves all aspects of software production, from initial system specification to ongoing maintenance after deployment.
- It applies appropriate theories and methods to address problems, considering organizational and financial constraints.
- It includes project management and the development of tools and methods to support software production.
Key Aspects of Software Engineering
- The main goal of software engineering is solving customer problems.
- Sometimes buying a solution is better than building it.
- Adding unnecessary features doesn't help solve the problem.
- Effective communication is essential for software engineers to identify and understand problems.
- Systematic development applies established techniques in an organized and disciplined way.
- Many software engineering practices have been formally standardized by organizations like the IEEE or ISO.
- Most development work involves evolution of existing systems.
- Software engineering techniques are vital because large systems are too complex for one person to fully grasp.
- Teamwork and coordination are therefore essential.
- A key challenge is dividing work properly and ensuring all parts of the system function together.
- The final product must meet sufficient quality standards.
- Projects operate under finite resources, so benefits must outweigh costs.
- Inaccurate time and cost estimates are a common cause of project failure.
- There is often competition to provide solutions faster and more affordably.
Essential Software Attributes
- Maintainability: Software should evolve to meet users' changing needs; adapting to change is critical.
- Dependability and Security: Characteristics including reliability, security, and safety; software should not cause physical or economic harm and must withstand malicious access.
- Efficiency: Software should use resources wisely, including responsiveness, processing time, and memory.
- Acceptability: Software must be understandable, usable, and compatible for its intended users.
Software Costs
- Software costs usually dominate those of entire computer systems.
- Software costs on a PC often exceed hardware costs.
- Software costs are higher for maintenance than for development.
- For long-term systems, maintenance costs can significantly outweigh development costs.
- Software engineering prioritizes cost-effective software development.
Software Maintenance
- It involves modifying a program after it’s been put into use.
- This term often applies to custom software modifications.
- Generic software products change to create new versions.
- It usually doesn’t encompass extensive changes to the system’s architecture.
- It uses changes implemented by modifying or adding components to the system.
- Software faults are repaired by changing a system to correct deficiencies.
- Maintenance, to adapt, ensures operation in alternative environments (OS, computer, etc.).
- Functionality can be added to, or modified.
- The system is adapted to satisfy new requirements.
- Functionality addition or modification accounts for 65% of maintenance efforts.
- Environmental adaptation makes up 18% of maintenance efforts.
- Fault repair makes up 17% of maintenance efforts.
- Costs are generally greater than those of development, potentially ranging from two to one hundred times the development costs, based on application.
- Technical and non-technical factors affect costs.
- Costs increase so the software is maintained over time.
- Maintenance degrades software structure, making it more difficult.
- Ageing software can result in high support costs (e.g. old languages, compilers).
- Team stability reduces costs when the same staff members are involved long-term.
- Contractual issues can determine change incentives.
- Limited staff skills can impact maintenance.
- Older programs often degrade making them harder to change.
General Issues Affecting Software
- Increasing heterogeneity requires systems to work across varied networks, devices etc.
- Rapid social and business changes require software to adapt quickly.
- Trust in software is essential.
Software Engineering Fundamentals
- Always use a managed and fully understood development process when building systems.
- Use different processes for different types of software.
- Dependability and performance are key.
- Understanding/ managing the software specification is important for fulfilling goals.
- Reuse software when possible, rather than writing new code.
Software Engineering and the Web
- The web has become a platform for running applications and organizations are increasingly developing web-based systems instead of local ones.
- Web services provide application functionality accessible over the web.
- Cloud computing provides computer services with applications running remotely.
- Users pay according to their usage.
- Software reuse is the dominant approach to build web systems.
- A focus on pre-existing software components informs construction.
- Web systems should be developed and delivered incrementally.
- It’s impractical to define all requirements in advance.
- User interfaces are limited by the abilities of web browsers.
- AJAX can create feature-rich interfaces.
- Local scripting and web forms are more prevalently used.
Software Development Types
- Front-End Development: User interface creation using HTML, CSS, and JavaScript.
- Back-End Development: Server-side operations and data handling, often programmed with Python, Java, or Node.js.
- Full-Stack Development: Combine front and back-end skills for comprehensive web development.
Professional Responsibilities
- Confidentiality: Respect employer and client confidentiality, per signed agreements.
- competence: accurately represent skill level and not accept work outside this level.
- Intellectual Property Rights: Awareness of local laws and protecting employer/client IP.
- Computer Misuse: Do not misuse technical expertise to harm others' systems.
- Act with integrity.
- Software engineers have to be fair and supportive to their colleagues.
- Participate in lifelong learning.
- Must behave in a honest and ethically responsible way if they are to be respected.
- This extends past the law and the the moral responsibilities of the practice.
- Act with honesty, integrity, and fairness in all business and professional dealings.
- Developing and designing software with consideration for users.
- Privacy, safety and well being of the end user is paramount.
- Take responsibility for one's actions.
Ethical Principles in Software Engineering
- Act consistently with the public interest.
- Act in a manner that is in the best interests of their client and employer.
- Ensure that their products and related modifications meet the highest professional standards.
- Maintain integrity and independence in their professional judgment.
- Promote an ethical approach to management of development and maintenance.
- Advance the integrity and reputation of the profession.
- Act in the best interests of their clients.
- Maintain integrity and independence.
Ethical Dilemmas
- Disagreement: Differing viewpoints in principle over the policies of senior management.
- Unethical action: Releasing safety-critical system is done unethically without finishing testing.
- Participate in military weapon or nuclear system development.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.