Software Engineering Flashcards
Software engineering
Engineering discipline concerned with all aspects of software production
Software
All electronic documentation that is needed by system users, quality assurance staff, and developers; one or more programs
Essential software product attributes
Maintainability
dependability and security
efficiency
acceptability
Software process
Includes all of the activities involved in software development
(Includes high-level activities such as: specification, development, validation, evolution)
Fundamental ideas of software engineering
Managed software processes
software dependability and security
Requirements engineering
Software reuse
Software engineers have responsibilities to ____________________?
The engineering profession and society
Software process models
abstract representations of these processes
General process models
Describe organization of software processes
Name the general process model types
Waterfall
Incremental development
Reusable component configuration and integration
Requirements engineering (specification)
The process of developing a software specification
What is the purpose of specifications?
To communicate the system needs of the customer to the system developers
What does the design and implementation processes do?
Concerned with transforming a requirements specification into an executable software system
Software validation
The process of checking that the system conforms to its specification and that it meets the real needs of the users
Software evolution
Takes place when you change existing software systems to meet new requirements
- changes are continuous
- software must evolve to remain useful
What activités help cope with change?
- Prototyping phase (avoids poor requirements/design decisions)
- iterative development/delivery (changes may be made without disrupting the system as a whole)
Process improvement
A cyclic process of improving existing software processes to improve software quality, lower development costs, or reduce development time; involves process measurement, analysis, change
Agile methods
Iterative development methods that focus on…
• reducing process overheads and
• reducing documentation and
• incremental software delivery
Note: customer representatives are directly involved in the development process
How do you decide between an agile approach or a plan-driven one?
- type of software being developed
- capabilities of the development team
- culture of the company developing the system
-> can mix these approaches in real-world application
What are some of the agile development practices?
- Requirements expressed as user stories
- pair programming
- refactoring
- continuous integration
- test-first development
Scrum
- an agile method
- provides organizational framework for agile projects
- centered around a set of sprints
- planning is based on prioritizing backlog of work and selecting highest priority tasks for a sprint
How do you scale agile methods?
• integrate some plan-based practices •examples include: - up-front requirements - multiple customer representatives - more documentation - common tooling across project teams - alignment of releases across teams
What do requirements do?
- set out what system should do
* define constraints on its operation and implementation
Functional requirements
Statements of the services that the system must provide or are descriptions of how some computations must be carried out
Non-functional requirements
- often constrain system being developed
- constrain development process being used
- examples: product requirements, organizational requirements, or external requirements
- often relate to the emergent properties of the system and therefore apply to the system as a whole