Software Engineering Fundamentals
  • Software Engineering Fundamentals

About the Product

Software Engineering Fundamentals

Summary:

This “Software Engineering Fundamentals” note provides an overview of the fundamentals of software engineering, covering topics such as software product attributes, software process activities, application types, and software engineering ethics. It emphasizes that software engineering is an engineering discipline concerned with all aspects of software production, from system specification to maintenance. Good software should have essential attributes such as maintainability, dependability and security, efficiency, and acceptability. The high-level activities of specification, development, validation, and evolution are part of all software processes. While different software projects require different techniques, the fundamental notions of software engineering are universally applicable to all types of system development. Additionally, software engineers have professional and societal responsibilities that go beyond technical issues, including confidentiality, competence, intellectual property rights, and computer misuse. Overall, this note highlights the importance of understanding software engineering fundamentals in order to produce reliable, trustworthy, and efficient software systems.

Excerpt:

Software Engineering Fundamentals

What is software?
Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market.

What are the attributes of good software?
Good software should deliver the required functionality and performance to the user and should be maintainable, dependable and usable.

What is software engineering?
Software engineering is an engineering discipline that is concerned with all aspects of software production.

What are the fundamental software engineering activities?
Software specification, software development, software validation and software evolution.

What is the difference between software engineering and computer science?
Computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.

What is the difference between software engineering and system engineering?
System engineering concerns all aspects of computer-based systems development, including hardware, software and process engineering. Software engineering is part of this more general process.

What are the key challenges facing software engineering?
Coping with increasing diversity, demanding reduced delivery times and developing trustworthy software.

What are the costs of software engineering?
Roughly 60% of software costs are development costs, and 40% are testing costs. For custom software, evolution costs often exceed development costs.