/* Advanced Software Engineering Practices
Author: Er. K. Manigandan, Arcot.
Created: 31/3/2010
Version: 1.0
*/
Software Development Guidelines
1. When your mind is fresh and young will easily solve any software problems.
2. Visualize the given problem in hand before writing software.
3. Only those who understand the problem will give solution to the problem.
4. Abstraction plays a energetic role in software design.
5. Testing should be possible for your abstraction.
6. Anything and everything requires manual interpretations which is filled by Verification and Validation.
7. Designing and Testing should go hand-in-hand that is along with design document test document is also be produced.
8. For the design already available design templates should be prefered than designing from scratch.
9. Testing should be automated by preparing test script.
10. First design should trade-off time and space complexity.
11. Design should be verified with long-run in mind say small memory-leak in long-run produces big damage.
12. Hardware undergoes aging as software undergoes obsolescence.
13. In the design reusability at the binary level, language level, libraries level should deeply be considered.
14. Producing clear design document at this stage is essential.
15. During implementation functional knowledge of each and every components is essential for producing bug free coding.
In case of embedded systems coding understanding from bare metal PCB, all peripheral components is needed.
In case of application programming knowledge of Operating system internals, administration tasks and programming
interface details for database, graphics and networks is required.
16. Knowledge of simulators/debuggers are significant at this stage.
17. Coding standards should be followed.
18. Look for portability across different microprocessors.
19. Look for portability across different compilers.
20. Scalability in vertical domain and in the horizontal domain is important performance attribute.
21. In portability across compilers normaly identifiers name should not clash with keywords of language as well as defaults.
22. Go throughly language extension methods.
23. Compiler errors are well documented and should take care programming errors which are hard to find.
24. Linking errors indicates incompatibility in the usage and missing libraries.
25. Run time error are due to improperly using operating system services.
26. Abend is known operating system error.
27. When using third-party libraries give attention to passing of parameters and invoking sequence of function/subroutine/
procedure call.
28. Remembering name of service is essential.
29. Equaly important is knowing including or configuring third-party solution to development environment.
30. For example using MFC libraries/OpenGL libraries in Visual Studio
31. Scripting enables integration of multiple applications as well as from maintenance part it plays important role.
32. Job Control Language for Mainframes, Shell scripts for Unix Batch files for DOS, XML/XSLT are few scripts scenario.