Lesson 16 Flashcards
What is software engineering
Applying engineering principles to systematically develop software that is of high quality and efficient.
Key principles of software engineering
-Abstraction
-Modularity
-Encapsulation
-Separation of Tasks
-Reusability
-Scalability
-Maintainability
-Reliability
-Efficiency
-Security
-Testability
-Standardization
SW engineering standards
Developed, published and maintained by the Institute of Electrical and Electronics Engineers (IEEE)
Software requirements specifications
(SRS) helps customers accurately describe what they wish to obtain
Engineers understand exactly what the customer wants
Organizations develop a standard outline, define format and content and develop supporting items such as an SRS quality checklist or handbook
A good SRS provides several benefits
Establish the basis for agreement between the customers and the engineers ol what the product is to do.
Reduce the development effort by reducing redesign later
Provide a basis for estimating costs and schedules.
Facilitate transfer to new customers or users
Serve as a basis for enhancement and change control
What is involved in the SRS stage
Defining the:
- Nature: functionality, interfaces, performance, attributes, constraints
- Environment: Interactions with other components
-Requirements
Joint preparation- involvement from both the customer and engineers
Evolution- changing control(process developing, approving, and tracking
Prototyping- Useful gor refining the requirements
What is not involved in SRS stage
Design or project requirements
Requirements 1-3 for good requirements
- correct
- unambiguous
- Complete
- every requirment stated
-responses of product to all possible inputs
- labels and references to all tables figures and diagrams are included
- definitions of all terms and units of measurements
- no TBD without good reason
Requirements 4-6 for good requirements
- Consistent- dont conflict
- Ranked for:
- importance
-stability: number of expected changes - Verifiable
- world well, good interface and shall usually happen are not used
- given quantifiable numbers
Requirements 7-8 for good requirements
- Modifiable- changes can be made easily, completely and consistently
- no redundancy
- requirements are not intermixed
-coherent easy to use - Traceable
- backward traceability; each requirement references its source in earlier documents.
-forward traceability; each requiremrnt has a unique name or reference number
The purpose of Software Design Description (SDD) is to show the
Software structure: architecture, high level structure
Software components: classes, functions, variables, etc.
Interfaces: how the components interact with each other and externally
Data necessary
V& V ensures that software
Is built correctly based on the design
Satisfies the requirements and the user needs.
V&V leveld
System (functional)
Software (Technical
Integration (Comparability with Hardware)
V&V activities
Requirement verification
Design verification
Implementation verification
- static analysis: review without running
-dynamic analysis: run code
V&V documentation
V&V plan- step by step instructions for executing the tests.
V&V report- results of executing the VVP
Unit testing in python
Unit testing is the process of testing individual components of functiont to ensure they work correctly
- Isolated
-Automated
-Used to ensure that changes do not break existing functionality
Python unit test call code
Import unittest