The days when programmers could just list a system’s functions and then code them are gone, if they ever existed. Today, design involves not only many specialties but also their interaction.
A large system development project could involve up to eight specialist groups, with distinct requirements, analysis and testing (Table 2.4). Note that Chapter 3 explains legitimacy analysis.
Smaller projects might break down into four groups:
- Actions: Functionality and usability.
- Interactions: Security and extendibility.
- Adapting: Reliability and flexibility
- Interchanges: Connectivity and privacy
Even smaller projects might only have two teams, one for opportunities and one for risks, while obviously a one-person project will have just one goal, of performance.
Design tensions can be reduced by agile methods where specialists talk more to each other and stakeholders, but advanced system development also needs innovators who can cut across specialist boundaries to resolve design tensions. This requires people who are trained in more than one discipline.
Requirement |
Code |
Analysis |
Testing |
Functionality |
Application |
Task |
Business |
Usability |
Interface |
Usability |
User |
Security |
Access control |
Threat |
Penetration |
Extendibility |
Plug-ins |
Standards |
Compatibility |
Reliability |
Error recovery |
Stress |
Load |
Flexibility |
Preferences |
Contingency |
Situation |
Connectivity |
Network |
Channel |
Communication |
Privacy |
Rights |
Legitimacy |
Community |
Table 2.4: A breakdown of project analysis and testing