Lecture 5
Lecture 5
Architectural design
identify the overall structure of the system,
the principal components (subsystems or modules), their
relationships and how they are distributed.
Database design
design the system data structures
how these are to be represented in a database.
Interface design
define the interfaces between system components.
Must encapsulate all the complexities
Should be user friendly
Component testing
Component tested by developers working on the system.
Individual components are tested independently;
Components may be functions or objects or coherent groupings of these entities.
Test automation tools like Junit for java, Ponicode (VS Code plugin) for JS or python could be used
for unit/component testing.
System testing
Testing of the system as a whole.
Testing of errors after different module interaction.
In large systems multiple subsystems are integrated first and then on whole integrated as
a final system.
Customer testing
Beta testing
Testing with customer data to check that the system meets the
customer’s needs.
It might reveal error in software requirements omission if any.
To make the road to these changes more smooth, there are two ideas given
below:
System prototyping, where a version of the system or part of the system
is developed quickly to check the customer’s requirements and the
feasibility of design decisions. This approach supports change
anticipation.
Incremental delivery, where system increments are delivered to the
customer for comment and experimentation. This supports both change
avoidance and change tolerance.