Software Engineering Basics

SuppleKindness avatar
SuppleKindness
·
·
Download

Start Quiz

Study Flashcards

10 Questions

What is the primary objective of architectural design?

To produce a complete system model showing components, interfaces, and connections

Which of the following is NOT a common decision that spans all architectural design processes?

How to implement specific functional requirements

What is the advantage of using large components instead of fine-grained components in an architecture?

It improves the system's performance

What is the purpose of using architectural patterns in system design?

To capture the essence of an architecture that can be instantiated in different ways

Which of the following statements about application product lines is NOT true?

They are used in systems from different domains

What is a key factor in determining the performance of a system's architecture?

The localization of critical operations and minimization of communication

Which of the following statements about architectural design is true?

It is a creative process that differs depending on the system being developed

What is the purpose of decomposing a system into modules during architectural design?

To structure the system and define the relationships between its parts

Which of the following is NOT a common consideration in architectural design?

How to implement specific user interface requirements

What is the purpose of evaluating an architecture during the design process?

To assess the architecture's ability to meet non-functional requirements

Study Notes

What is Software Engineering?

  • Software engineering is the combination of two words, "engineering" and "software".
  • Engineering is the application of scientific and practical knowledge to invent, design, build, maintain, and improve structures, processes, and products.
  • Software is a collection of integrated programs, a set of carefully organized instructions and code written by programmers in any of several available programming languages.
  • Software engineering is a branch of engineering related to the evolution of software products using systematically scientific principles, techniques, and well-defined procedures.
  • The result of software engineering is an effective and reliable software product.

Why is Software Engineering necessary?

  • Software engineering is necessary for managing large software, scalability, cost management, and adapting to the dynamic nature of software quality management.
  • The need for software engineering arises due to the higher rate of progress in user needs and the environment in which the program is running.
  • High programming makes it simpler to manufacture a wall than a house or building, showing the need for engineering principles.
  • Adaptability is necessary as it's simpler to recreate new software than to scale existing software.
  • Cost is a significant factor, as the hardware industry has demonstrated capabilities, but programming cost remains high without the right process.
  • Dynamic nature and quality management require software engineering to make updates to existing software.

Characteristics of a good Software Engineer

  • Familiarity with software engineering principles
  • Good technical knowledge of the range of projects (Domain knowledge)
  • Good programming skills
  • Good communication skills (oral, written, and interpersonal)
  • High motivation
  • Good knowledge of computer fundamentals
  • Ability to work in a team and discipline

Importance of Software Engineering

  • Reduces complexity by breaking down big problems into smaller ones
  • Minimizes software cost by providing a systematic means of estimating a budget
  • Decreases time by delivering software projects on time
  • Handles large projects with planning, direction, testing, and maintenance
  • Ensures software reliability by providing models to measure and evaluate software quality
  • Achieves effectiveness by getting the desired results, producing high-quality work, and generating satisfied customers

Software Engineering vs Computer Science

  • Computer Science is concerned with theory and fundamentals, focusing on abstract and concrete knowledge
  • Software engineering is concerned with the application of engineering processes to the creation, maintenance, and design of software

Software Engineering and Architecture Design

  • Software engineering is an engineering approach to software development of systematic applications
  • Architecture design involves creative decisions affecting nonfunctional characteristics of the system
  • Decisions in architectural design include:
    • Is there a generic application architecture that can be used?
    • How will the system be distributed?
    • What styles of architecture are appropriate?
    • How will the system be decomposed into modules?
    • What control strategy will be used?
    • How will the architecture be evaluated and documented?
  • Systems in the same domain often have similar architectures that reflect domain concepts
  • Application product lines are built around a core architecture with variants that satisfy particular customer requirements
  • Architectures can be designed around patterns that capture the essence of an architecture and can be instantiated in different ways

System Architecture and Characteristics

  • Performance involves localizing critical operations and minimizing communications, using large components instead of fine granules

This quiz covers the fundamental concepts of software engineering, including the definition and components of software engineering. Topics include the application of scientific and practical knowledge to invent, design, build, maintain, and improve software structures and processes.

Make Your Own Quizzes and Flashcards

Convert your notes into interactive study material.

Get started for free
Use Quizgecko on...
Browser
Browser