Software Engineering Challenges

FieryBougainvillea avatar
FieryBougainvillea
·
·
Download

Start Quiz

Study Flashcards

40 Questions

What is the primary purpose of using UML models as a means of creating discussion about a proposed system?

To support discussion

What type of UML diagram is used to model the interactions between a system and its environment?

Interaction diagram

What is the main focus of a behavioral UML model?

The dynamic behavior of the system and how it responds to events

What is the primary purpose of a context diagram in UML?

To define the boundary between the system and its environment

What are the three main elements of a context diagram?

Context bubble, external entities, and data flows

What type of UML diagram is used to model the organization of the system?

Structural diagram

What is the primary purpose of a use-case diagram?

To represent a discrete task that involves interaction with an external system

What is the requirement for UML models when they are used as a detailed system description to implement the system?

They must be accurate and complete

What is the primary responsibility of a Product Owner in a Scrum development team?

Identifying software requirements, prioritizing them for development, and reviewing the backlog to ensure it meets their needs.

What is the purpose of a Daily Scrum in a Scrum development team?

To share information, describe progress since the last sprint, problems that have risen, and what is planned for the day.

What is the definition of 'shippable' in Scrum development?

A state of software that is finished and no further work is needed to incorporate into the final work.

What is the primary challenge with customer involvement in Scrum development?

Customers have limited time, and may be reluctant to get involved in the testing process.

What is the main advantage of refactoring in software development?

It keeps the code simple, improves understandability, and makes further changes easier to make.

What is the primary benefit of pair programming in software development?

It develops collective ownership of the software, serves as an informal review process, and encourages refactoring.

What is the primary goal of continuous integration in software development?

To immediately test code changes when added to a larger codebase, and ensure that all unit tests pass.

What is the definition of velocity in Scrum development?

The amount of product backlog effort that a team can cover in a single sprint.

What is the key challenge of heterogeneity in software engineering?

Developing techniques that can cope with increasing diversity of platforms and execution environments.

Why is trust a key challenge in software engineering?

Developing software that can be trusted by its users.

What is the significance of professional issues in software engineering?

Software engineers should not only uphold the law but also follow a set of principles that are morally correct.

What is the principle of confidentiality in software engineering?

Engineers should not publicize information of their employers/clients, regardless of agreement.

Why is it important for software engineers to work within their range of skill and competence?

Engineers should only accept work that is within their range of skill and competence.

What is the significance of intellectual property rights in software engineering?

Engineers should be able to protect their employers/clients' intellectual property and be aware of local laws surrounding IP.

What is the principle of computer misuse in software engineering?

Engineers should not use their skills to misuse other people's computers.

What is an example of a generic product in software engineering?

Graphics programs, CAD software.

What is a limitation of agile development in terms of team size?

Agile development is designed for small co-located teams, making it less suitable for large worldwide teams.

What is the main difference between verification and validation?

Verification is a static process ensuring that documents and code meet the conditions of the starting phase, while validation is a dynamic process ensuring that the customer's real requirements are met.

Why is static testing alone not sufficient for software development?

Static testing alone cannot check conformance with a customer's real requirements and cannot check non-functional requirements.

What is scaling up in agile development?

Scaling up is adapting agile methods for large systems that cannot be developed by a small team.

When is a plan-driven approach preferred over agile development?

A plan-driven approach is preferred when it is important to have a very detailed specification before moving to implementation.

What is the purpose of a walkthrough in static testing?

The author walks through the code and explains what each piece does.

What is the limitation of agile development in terms of product documentation?

Agile development lacks product documentation, relying on the development team's knowledge of what needs to be done.

What is the purpose of scaling out in agile development?

Scaling out is introducing agile methods around a large organisation with years of software development experience.

What is the primary objective of security testing in software development?

To identify flaws from a security point of view, ensuring confidentiality, integrity, authentication, availability, authorization, and non-repudiation.

What is portability testing, and what are the two strategies for performing it?

Portability testing is determining the difficulty of transferring software from one hardware/software/other to another efficiently and effectively. The two strategies for portability testing are transferring an installed software from one computer to another and building executable files to run the software on different platforms.

What is the primary difference between functional and non-functional testing?

Functional testing focuses on validating the behavior of the application, while non-functional testing focuses on validating the performance of the application.

What is the objective of performance testing?

To validate the software's performance, such as how fast the dashboard loads.

What is the main difference between manual and automated testing?

Manual testing is executed by manual testing, while automated testing is hard to do manually.

What is the focus area of functional testing?

The focus area of functional testing is based on customer requirements.

What is the purpose of unit testing and smoke testing?

Unit testing and smoke testing are examples of functional testing, which validate the behavior of the application.

What is an example of a test case in performance testing?

The dashboard should load in 2 seconds.

Study Notes

Key Challenges in Software Engineering

  • Developing techniques for software that can cope with increasing diversity of platforms and execution environments
  • Developing techniques that make software delivery faster
  • Developing software that can be trusted by its users
  • Addressing ethical and professional issues in software engineering

Professional Issues

  • Confidentiality: Engineers should not publicize information about their employers or clients
  • Competence: Engineers should only accept work that is within their range of skills and competence
  • Intellectual property rights: Engineers should protect their employers' or clients' intellectual property and be aware of local laws surrounding IP
  • Computer misuse: Engineers should not use their skills to misuse other people's computers

Software Engineering Types

  • Stand-alone systems: Generic software that can be sold to any customer who wants to buy them
  • System perspectives: Models that describe the structure, behavior, and interactions of a system

System Perspectives

  • External perspective: Models the context of the system
  • Interaction perspective: Models the interactions between a system and its environment, or between components of the system
  • Structural perspective: Models the organization of the system
  • Behavioral perspective: Models the dynamic behavior of the system and how it responds to events

UML Models

  • Context diagrams: Define the boundary between the system and its environment, showing the entities that interact with it
  • Use-case diagrams: Represent a discrete task that involves the interaction with an external system, focusing on automated processes

Scrum Development

  • Product owner: Responsible for identifying software requirements, prioritizing them, and reviewing the backlog to ensure it meets their needs
  • Sprint: Development iteration usually lasting 2-4 weeks, where all scrum members share information and describe their progress
  • Daily scrum: Meeting where team members share information, describe their progress, and plan their work for the day
  • Potentially shippable: State of software that is finished and no further work is needed to incorporate into the final work
  • Velocity: Measures how much product backlog effort a team can cover in a single sprint

Programming Practices

  • Refactoring: Constant code improvement, looking for possible software improvements and making them
  • Pair programming: Involves programmers working in pairs at the same computer, promoting collective ownership and informal review
  • Continuous integration: Code changes are immediately tested when added to a larger code base, and as soon as a task is complete it is integrated to the whole system

Agile Development

  • Advantages: Flexibility, incremental delivery, and customer satisfaction
  • Disadvantages: Incompatibility with contract definitions, lack of product documentation, and reliance on development team knowledge

Verification and Validation

  • Verification: Static process of verifying documents and code to ensure they satisfy the conditions of the starting phase
  • Validation: Dynamic process that ensures customer's real requirements are met and satisfied

Testing Approaches

  • Static testing: Peer review, walkthrough, and security testing
  • Dynamic testing: Focuses on customer's real requirements and non-functional requirements
  • Strategies for portability testing: Transferring an installed software from one computer to another, and building executable files to run the software on different platforms

Functional vs Non-Functional Testing

  • Functional testing: Performs before non-functional testing, based on customer's requirements, and focuses on the behavior of the app
  • Non-functional testing: Performs after functional testing, focuses on customer's expectations, and validates the performance of the app

This quiz covers the key challenges in software engineering, including heterogeneity, delivery, trust, and ethical issues.

Make Your Own Quizzes and Flashcards

Convert your notes into interactive study material.

Get started for free

More Quizzes Like This

Introduction to Software Engineering
18 questions
Software Engineering Fundamentals
12 questions
Software Engineering and Development
12 questions
Use Quizgecko on...
Browser
Browser