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
Requirements engineering process includes…
- requirements elicitation
- requirements specification
- requirements validation
- requirements management
Requirements elicitation
- iterative process
- can be represented as a spiral of activities
- requirements discovery
- requirements classification/organization
- requirements negotiation
- requirements documentation
Requirements specification
- process of formally documenting user and system requirements and creating a software requirements document
Software requirements document
- agreed statement of system requirements
- should be organized so that both system customers and software developers can use it
Requirements validation
- process of checking the requirements for…
VALIDITY •CONSISTENCY • COMPLETENESS •REALISM • VERIFIABILITY
Requirements management
- process of managing and controlling the requirements of a software system from business, organizational, and technical changes
Prototype
- helps with elicitation & validation
- UI development
- speed testing
Waterfall
- Difficult to accommodate change
- not good for small/medium business systems
- always have updated set of documentation
- good for International Space System
- used for embedded, critical, and large software systems
- Define REQUIREMENTS
- System/software DESIGN
- IMPLEMENTATION/unit testing
- INTEGRATION and system testing
- OPERATION & MAINTENANCE
Incremental
- series of releases
- interleaf specification design
Advantages:
- Cost
- Easier to get customer feedback
- Early delivery/deployment (of useful software)
Problems:
- Not visible process
- System structure tends to degrade (as new increments are added)
- fix: regular refactoring helps
Integration and Configuration
3 Reused Software Components
- Stand-alone application systems
- Collections of objects
- Web services
Stages:
- Requirements specification
- Software discovery and evaluation
- Requirements refinement
- Application system configuration
- Component adaptation and integration
Four Design Process Activities
- architectural
- database
- interface (must be unambiguous)
- component selection and design
Except for ____ _______, systems should not be tested as a single, monolithic unit
Small programs
The 3 Software validation (V & V - Verificaiton and validation) Stages
- Component testing
- System testing
- Customer testing
2 Approaches that reduce the costs of rework
2 Ways to Cope with Change
- Change anticipation (mock ups before implementation)
- Change tolerance (make change implementation easy)
___________ - System prototyping
- Incremental delivery
How should you develop UI?
Rapid prototyping with end-user involvement