- Software engineering encompasses the entire lifespan of software, from the initial idea to the final implementation and ongoing maintenance.
- Apart from programming, software also includes comprehensive documentation to support understanding and further development.
- The software development process is a collective term for all activities involved in creating software, which includes specification, development, validation, and evolution.
- The core principles of software engineering, such as managed software processes, software dependability, security, requirements engineering, and software reuse, apply universally to all kinds of system development.
- Various types of systems exist, each demanding a unique approach and the application of suitable software engineering tools and techniques for their design and implementation.
- The principles of software engineering extend beyond technical aspects, encompassing ethical responsibilities towards the engineering profession and society.
- Professional engineering societies enforce codes of conduct that outline the expected behavior of their members.
- Software engineers should continually stay updated with technological advancements and emerging trends in software development.
- Rigorous testing and validation are integral parts of the software development process, ensuring the software's reliability and usability
- Effective communication and collaboration within a team are crucial for successful software development.
Exercise
1.1. Explain why professional software is not just the programs that are developed for a customer.
1.2. What is the most important difference between generic software product development and
custom software development? What might this mean in practice for users of generic software
products?
1.3. What are the four important attributes that all professional software should have? Suggest
four other attributes that may sometimes be significant.
1.4. Apart from the challenges of heterogeneity, business and social change, and trust and
security, identify other problems and challenges that software engineering is likely to face in
the 21st century (Hint: think about the environment).
1.5. Based on your own knowledge of some of the application types discussed in section 1.1.2,
explain, with examples, why different application types require specialized software
engineering techniques to support their design and development.
1.6. Explain why there are fundamental ideas of software engineering that apply to all types of
software systems.
1.7. Explain how the universal use of the Web has changed software systems.
Answers