#
#
Embedded Systems
#
Software Engineering
#
#
#
/* 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.
#
#
#