Part I - Intro to Software Development Flashcards
What is a software process?
Software processes are the activities involved in producing a software system. Software process models are abstract representations of these processes.
Describe some process models
General process models describe the organization of software processes. Examples of these general models include the waterfall model, incremental development, and reusable component configuration and integration.
What is requirements engineering?
Requirements engineering is the process of developing a software specification. Specifications are intended to communicate the system needs of the customer to the system developers.
What does design and implementation mean?
Design and implementation processes are concerned with transforming a requirements specifi- cation into an executable software system.
What is software validation?
Software validation is the process of checking that the system conforms to its specification and that it meets the real needs of the users of the system.
What is software evolution?
Software evolution takes place when you change existing software systems to meet new requirements. Changes are continuous, and the software must evolve to remain useful.
What should be considered during every software development process?
Processes should include activities to cope with change. This may involve a prototyping phase that helps avoid poor decisions on requirements and design. Processes may be structured for iterative development and delivery so that changes may be made without disrupting the system as a whole.
Describe software process improvement
Process improvement is the process of improving existing software processes to improve soft- ware quality, lower development costs, or reduce development time. It is a cyclic process involv- ing process measurement, analysis, and change.
What is agile development?
Agile methods are iterative development methods that focus on reducing process overheads and documentation and on incremental software delivery. They involve customer representatives directly in the development process.
What factors influence the decision of using an agile approach?
The decision on whether to use an agile or a plan-driven approach to development should depend on the type of software being developed, the capabilities of the development team, and the culture of the company developing the system. In practice, a mix of agile and plan-based techniques may be used.
What are some common agile practices?
Agile development practices include requirements expressed as user stories, pair programming, refactoring, continuous integration, and test-first development.
Describe what a scrum is
Scrum is an agile method that provides a framework for organizing agile projects. It is centered around a set of sprints, which are fixed time periods when a system increment is developed. Plan- ning is based on prioritizing a backlog of work and selecting the highest priority tasks for a sprint.
How does one scale agile methods?
To scale agile methods, some plan-based practices have to be integrated with agile practice. These include up-front requirements, multiple customer representatives, more documentation, common tooling across project teams, and the alignment of releases across teams.
What is a weakness of testing software?
Testing can only show the presence of errors in a program. It cannot show that there are no remaining faults.
Who tests the software?
Development testing is the responsibility of the software development team. A separate team should be responsible for testing a system before it is released to customers. In the user testing process, customers or system users provide test data and check that tests are successful.
What are the kinds of tests that are done on a complete system?
Development testing includes unit testing in which you test individual objects and methods; component testing in which you test related groups of objects; and system testing in which you test partial or complete systems.
How does one test software effectively?
When testing software, you should try to “break” the software by using experience and guidelines to choose types of test cases that have been effective in discovering defects in other systems.
How does one test software effectively?
Wherever possible, you should write automated tests. The tests are embedded in a program that can be run every time a change is made to a system.
What is test driven development?
Test-first development is an approach to development whereby tests are written before the code to be tested. Small code changes are made, and the code is refactored until all tests execute successfully.
What is scenario testing, and why is it useful?
Scenario testing is useful because it replicates the practical use of the system. It involves inventing a typical usage scenario and using this to derive test cases.
What is acceptance testing? When is it used?
Acceptance testing is a user testing process in which the aim is to decide if the software is good enough to be deployed and used in its planned operational environment.
What is a common model of the software development and evolution cycle?
Software development and evolution can be thought of as an integrated, iterative process that can be represented using a spiral model.
What’s more expensive, development or maintenance?
For custom systems, the costs of software maintenance usually exceed the software develop- ment costs.
How is software evolution driven? What are the steps?
The process of software evolution is driven by requests for changes and includes change impact analysis, release planning, and change implementation.