COMP201 - Software Engineering Flashcards
What are the four fundamental activities in all software processes?
Specification - what the system should do and its development constraints
Development - production of the software system
Validation - checking the software is what the customer wants
Evolution - changing software in response to change in demands
What is CASE?
Computer-Aided Software Engineering - software systems intended to provide automated support for software process activities (e.g. requirement analysis)
What are the essential attributes of software products and documentation?
Maintainability - software must be (easily) evolvable to meet changing needs
Dependability - software must be trustworthy (work with all data)
Efficiency - software shouldn’t be wasteful with system resources
Usability - software must be usable by the users it was design for
What are the responsibilities involved in software engineering?
Confidentiality, competence, intellectual property rights, computer misuse
What are processes?
A series of activities with specific characteristics
What are the characteristics of processes?
Prescribe all major activities
Use resources and produce intermediate and final products
May include sub-processes and have entry and exit criteria
Activities organised in a sequence
Constraints or controls may apply to activities
What are generic process models?
Models describing the organisation of software processes
What are some examples of generic software process models?
The waterfall model (distinct phases of specification & development) Evolutionary development (specification & development interleaved) Formal systems development (mathematical system model formally transformed to an implementation) Reuse-based development (system assembled from existing components)
What are iterative process models?
Models describing the software process as a cycle of activities
What is requirement engineering?
The process of developing a software specification
What activities are in the design process?
Architectural design Abstract specification Interface design Component design Data structure design Algorithm design
What happens in architectural design?
The subsystems making up their relationships are identified and documented
What happens in abstract specification?
An abstract specification of each subsystem’s operational constraints and services is produced
What happens in interface design?
An unambiguous interface with other subsystems is designed and documented for each subsystem.
What happens in component design?
Services are allocated to components and the interfaces of these components are designed
What happens in structure design?
The data structures used in the system implementation are designed in detail and specified
What happens in algorithm design?
The algorithms used in components to provide services are designed and specified
What is a model?
A graphical view of the operation/structure of a system - can be dynamic or static
Why use models?
Formalises the type and format of required information
Easier to get big picture than with text documents
Do not rely heavily on natural language
Some can be translated automatically to a software implementation
Can be tested for validity automatically
What are design methods?
Design (structured) methods are systematic approaches to developing a software design)
What are the 5 testing stages?
Unit testing Module testing Subsystem testing System testing Acceptance testing
What does unit testing test?
Individual components
What does module testing test?
Related collections of dependent component
What does subsystem testing involve?
Modules integrated into subsystems and tested, focus on interface testing
What does system testing test?
The system as a whole, emergent properties.
What does acceptance training involve?
Testing with customer data to check it’s acceptable
What is software evolution?
Software is inherently flexible and can change based on changing demands or circumstances
What activities might be assisted by CASE?
System model development Design entity management Interface construction Bug/issue management Version control management Debugging & fault finding Translating into new versions
What are functional requirements?
Statements of services the system should provide, how the system should react to particular inputs and behave in particular situations
What are non-functional requirements?
Constraints on the services or functions offered by the system, usually defined on the system as a whole
What is the problem with natural language specification?
Ambiguity - readers and writers may interpret same words differently
Over-flexibility - too many ways of expressing one idea
Lack of modularisation - natural language structures are inadequately suited to structuring systems
How should user requirements be written?
In natural language, tables and diagrams
How are system requirements written?
In structured language, a PDL, or in a formal language
What do system requirements do?
Communicate the functions that the system should provide
What is PDL?
Program Design Language - like a more flexible programming language used to define requirements operationally
How is a software requirements document structured?
Preface Intro Glossary User requirements System architecture System requirements specification System models System evolution Appendices Index
What does the preface contain?
- Expected readers
- Version history
- Summary & explanation of latest version changes
- Authors list
What does the introduction contain?
- Need for the system
- Functions provided
- System interactions w/ existing systems
- Software alignment w/ organisation’s objectives
What does the glossary contain?
- Technical terms used in document
- No assumptions as to technical expertise of reader
What does the user requirements definition contain?
- Nat. lang. and diagrams for user describing (a) services provided for user and (b) non-functional requirements of system
- Product and process standards
What does the system architecture section contain?
- High-level overview of system architecture
- Distribution of functions across system modules
What does the system requirements specification contain?
- Detailed description of the functional and non-functional requirements
What does the system models section contain?
- System models showing relationships between system components, the system and its environment
What does the system evolution section contain?
- Anticipated changes to system
What do the appendices contain?
- Detailed specific info about the system’s development (e.g. hardware & db descriptions)
What does the index contain?
Indices of the document including diagrams and functions
What are the 4 processes of requirement engineering?
Requirement elicitation
Requirement analysis
Requirement validation
Requirement management
What is a feasibility study?
A short focused study that checks if the proposed system is worthwhile (i.e. does it contribute to organisational objectives? can it be engineered w/ current tech and w/i budget? can it be integrated? is there a simpler way?)
What are viewpoints?
A way of structuring requirements to represent the perspectives of different stakeholders
What is the Bell-LaPadula model?
All items given security clearance level, no read-up (a subject with level (1) cannot read level (2), level (2) can’t read level (3), etc.), no write-down (a level (4) doc can’t be included with a doc in level (3)), trusted objects can write down
What is cucumber?
Software tool used to help write requirements by giving clear notation to write specs
What are some model types?
Data processing model -
shows how data is processed at different stages
Composition model - shows how entities are composed of other entities
Architectural model - shows principal subsystems
Classification model - shows entities’ common characteristics
Stimulus/response model - shows the system’s reaction to events
What do context models do?
Show the position of a system in its environment with other systems and processes
What do process models do?
Show overall process and processes supported by system
What do behavioural models show?
A description of overall behaviour of the system
What are the two types of behavioural model?
Data processing models show how data is processed as it moves through the system
State machine models show the systems response to events