Introduction to Software Engineering

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

Which of the following is the most accurate definition of software?

  • Electronic components of a computer
  • A set of instructions for a computer
  • The physical components of a computer system
  • A computer program with associated documentation and data configuration (correct)

Generic software products are tailored to meet the specific needs of a particular customer.

False (B)

What are two main factors contributing to the failure of software projects?

Increasing demand for complex systems delivered quickly, and failure to use software engineering methods.

The majority of costs for most types of systems are those associated with changing the _______ after it has gone into use.

<p>software requirements</p> Signup and view all the answers

Match each software characteristic with its description:

<p>Functionality = Software delivers the required capabilities to solve problems or make tasks easier. Performance = Software operates efficiently without wasting system resources. Maintainability = Software is adaptable and evolves to meet changing needs. Dependability = Software is reliable, secure, and safe.</p> Signup and view all the answers

Which of the following highlights the difference between software engineering and computer science?

<p>Computer science focuses on theory and fundamentals, while software engineering emphasizes the practicalities of developing and delivering software. (B)</p> Signup and view all the answers

Stand-alone software applications typically require a continuous network connection to function correctly.

<p>False (B)</p> Signup and view all the answers

Name three factors that influence the choice of software engineering methods and tools.

<p>Type of software, customer requirement, background of the development team</p> Signup and view all the answers

Dependability and _________ are important for all types of systems.

<p>performance</p> Signup and view all the answers

Which of the following statements best describes the role of a Software Requirements Specification (SRS)?

<p>It specifies what the software should do. (D)</p> Signup and view all the answers

Reusing existing developed software should be avoided for the software.

<p>False (B)</p> Signup and view all the answers

Web services allow application _______ to be accessed over the web.

<p>functionality</p> Signup and view all the answers

What is professional software engineering ethics?

<p>Behaving honestly and ethically.</p> Signup and view all the answers

What does it mean for software engineers to maintain 'confidentiality' in their professional responsibilities?

<p>Respecting the confidentiality of information from employers or clients. (B)</p> Signup and view all the answers

Software development success relies solely on technical skills, with little need for attention to ethical considerations.

<p>False (B)</p> Signup and view all the answers

What is cloud computing?

<p>Provision of computer services where applications run remotely.</p> Signup and view all the answers

What is the software?

<p>A computer program with the associated documentation and data configuration.</p> Signup and view all the answers

What are attributes of good software?

<p>Required functionality, performance, maintainability, dependability and acceptability (C)</p> Signup and view all the answers

The software methods and tools used depend on _______, the requirements of the customer, and the background of the development team.

<p>the type of software being developed</p> Signup and view all the answers

System should NOT be developed using a managed and understood development process.

<p>False (B)</p> Signup and view all the answers

What are the Software Engineering Fundamentals?

<p>Understanding and managing the software requirements specification (SRS) are important</p> Signup and view all the answers

Software engineers should NEVER misrepresent their level of _______.

<p>competence (C)</p> Signup and view all the answers

Software engineers should NEVER misuse other people's computers.

<p>True (A)</p> Signup and view all the answers

Software engineers should normally respect the _______ of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.

<p>confidentiality</p> Signup and view all the answers

What is a software process?

<p>A set of activities required to develop a software system</p> Signup and view all the answers

What are the products of Software process discussions?

<p>All of the above (D)</p> Signup and view all the answers

There is an ideal software process.

<p>False (B)</p> Signup and view all the answers

In agile processes, _______ is incremental and it is easier to change the process to reflect changing customer requirements.

<p>planning</p> Signup and view all the answers

What are the three types of Software Process Models?

<p>The waterfall model; Incremental Development; Reuse-oriented software engineering</p> Signup and view all the answers

What is limitations in the Waterfall Model?

<p>Inflexible partitioning of the project into phases makes it difficult to respond to changing customer requirements. (C)</p> Signup and view all the answers

The waterfall model is only appropriate when _______ and changes will be fairly limited during the design process.

<p>the requirements are well-understood</p> Signup and view all the answers

Managers do NOT need regular deliverables to measure progress. If systems are developed quickly, it is not cost-effective to produce documents that reflect every version of the system.

<p>False (B)</p> Signup and view all the answers

Reuse-Oriented Software Engineering - Based on systematic reuse where systems are integrated from existing components or _______ systems.

<p>commercial-off-the-shelf</p> Signup and view all the answers

In Software Discovery, what process are the software in?

<p>Software discovery and evaluation (C)</p> Signup and view all the answers

Software discovery and evaluation is a Key process stages of reuse

<p>True (A)</p> Signup and view all the answers

What is Software Specification?

<p>Activity where customers and requirements engineers define the requirements of software to be produced.</p> Signup and view all the answers

Software Specification's output is _______

<p>Software Requirements Specification (SRS). (A)</p> Signup and view all the answers

The SRS serve as input to the 2nd Software Process Activity

<p>True (A)</p> Signup and view all the answers

The SRS + _______ + developed software serve as input to the 3rd Software Process Activity

<p>design outputs</p> Signup and view all the answers

Define Software Validation?

<p>Are we building the right product?</p> Signup and view all the answers

Flashcards

What is Software?

Software is a computer program with associated documentation and data configuration.

Generic vs Customized Software

Generic software is made for the mass market. Customized software is tailored for specific needs.

Software vs. Hardware costs

Software costs often exceed hardware because of maintenance.

What is Software Engineering?

Using organized/systematic methods when developing software.

Signup and view all the flashcards

Software Engineering concerns

Theories, methods, and tools for cost-effective software development.

Signup and view all the flashcards

Another definition for Software Engineering

A systematic approach concerned with all aspects of software production.

Signup and view all the flashcards

Attributes of good software

Good software is functional, performant, maintainable, dependable, and acceptable.

Signup and view all the flashcards

Software engineer ethics

Honesty and responsibility are the foundation of software engineering ethics.

Signup and view all the flashcards

Responsibilities of software engineers

Respect confidentiality, protect rights, ensure competence and prevent computer misuse.

Signup and view all the flashcards

Stand-alone Applications

Applications that run locally, without needing a network connection.

Signup and view all the flashcards

Data Collection Systems

These systems collect environment data via sensors and process it.

Signup and view all the flashcards

Batch processing systems

Business systems process large data batches with corresponding outputs.

Signup and view all the flashcards

Entertainment systems

Systems for personal entertainment.

Signup and view all the flashcards

Software Engineering Diversity

Methods and tools depend on the type of software, customer requirements, and the team's background.

Signup and view all the flashcards

S/W Eng Fundamentals

Software development should use managed development process, dependability, and be performant.

Signup and view all the flashcards

Key S / W engineering practices

Systems should be developed that are easy to maintain and understand.

Signup and view all the flashcards

Software Engineering and Web

Web based systems and Web services help software evolve.

Signup and view all the flashcards

General Software Issues

Software development must consider diversity, change, security, and trust.

Signup and view all the flashcards

Software Process

A set of activities required to develop a software system.

Signup and view all the flashcards

Software Process Activities

Specification, Development, Validation, and Evolution.

Signup and view all the flashcards

Software process aspects

Activities, products, roles, pre- and post-conditions.

Signup and view all the flashcards

Plan driven approaches vs Agile approaches

Plan-driven approaches plan in advance, agile approaches is incremental.

Signup and view all the flashcards

Waterfall Model

Specification and development happen in separate phases.

Signup and view all the flashcards

Incremental Development

Specification, development and validation are interleaved.

Signup and view all the flashcards

Reuse-oriented Software Engineering

Software is assembled from existing components.

Signup and view all the flashcards

Requirements engineering process

Define requirements, elicit/analyze, specify, and then validate.

Signup and view all the flashcards

Software Development

Overall system structure and component/data design.

Signup and view all the flashcards

Software Validation

Is the system doing what the user really requires?

Signup and view all the flashcards

Verification

Does software conform to specifications?

Signup and view all the flashcards

Three stages of testing

Component, System, Acceptance.

Signup and view all the flashcards

Software evolution goal

As requirements change, software must adapt.

Signup and view all the flashcards

Reducing rework costs

Anticipate or accommodate changes.

Signup and view all the flashcards

Plan vs Agile: what goes first

Plan-> Requirements -> Design. Agile->Requirements at the start then development/design concurrently

Signup and view all the flashcards

Study Notes

  • Software engineering is achieving sucess through planning, hard work, respect, and paying attention.
  • To do well in SE 262, read the relevant textbook portions before each lecture.
  • Take notes and ask questions during each lecture.
  • Review the lecture slides after each lecture.

Introduction to Software

  • Software is a computer program accompanied by documentation and data configuration used in many systems
  • Examples of software include mobile apps, autopilot software, embedded software and medical software.
  • Software comes in generic and customized forms.
  • Generic types are created for any customer.
  • Google Chrome and Microsoft Office are generic examples.
  • The software developer typically owns what the software should do and makes decisions on changes.
  • Custom software is designed for a specific customer.
  • Embedded software for Tesla full self-driving is a customized example.
  • The customer owns the software specifications and decides on changes.
  • Software costs are often higher than computer hardware costs, particularly maintenance.
  • Software maintenance costs for long-life systems may be several times the initial development cost.

Importance of Software Engineering

  • Many software projects fail due to increasing demand for complex systems and failure to use software engineering methods.
  • Individuals and society rely on complex, reliable, trustworthy, economical, and fast software.
  • Using software engineering techniques to create software is cheaper in the long run.
  • For most systems, the majority of costs are due to changes to the the software requirements after it has already been created.
  • Project failures can be attributed to poor requirements definition(50%), inadequate risk management(17%), scope definition(15%) and communication problems(14%) and lack of qualified resources(3%).
  • The systematic approach in defining a software project is known as software engineering.

Software Engineering Defined

  • Software engineering is an engineering discipline concerned with the theories, methods, and tools for professional and cost-effective software development.
  • It manages various aspects of software production from initial specification to user maintenance including project management and tool development.
  • A systematic approach concerned with all facets of software production, including specification, development, validation, and evolution
  • A software process can be defined with four stages; specification, development, validation and evolution.
  • Good software solves problems and makes tasks easier.

Essential Attributes of Good Software

  • Functionality: Good software delivers the functionality required to solve problems or make tasks easier.
  • Performance: Good software avoids the wasteful use of system resources such as memory and processor cycles.
  • Maintainability: Good software evolves to meet the changing needs of customers or business environments.
  • Dependability: Good software should not cause physical or economic damage in the event of system failure.
  • Acceptability: Good software is understandable, usable, and compatible with other systems.

Software Engineering vs Computer Science

  • Computer science concentrates on theory and fundamentals.
  • Software Engineering deals with realizing practical applications to meet customers or business needs.

Software Types

  • Stand-alone applications run on a local computer and include all necessary functionality without needing a network.
  • Interactive applications execute on a remote computer and are accessed by users via their own PCs or terminals.
  • Embedded control systems are software systems that control and manage hardware devices.
  • Data collection systems gather environmental data using sensors and transmit it to other systems for processing.
  • Batch processing systems are the systems designed to process data in large batches.
  • Entertainment systems are primarily personal software intended to entertain the user.
  • Modeling and simulation systems are developed by scientists and engineers to model physical processes.
  • Systems of systems comprise of a number of software systems.

Software Engineering Diversity and Fundamentals

  • There is not a universal set of methods and tools for software engineering applicable to all systems; it depends on the software type, the requirements of the customer and the team's background.
  • All systems should be developed using managed and understood development processes.
  • Dependability and performance are important for all types of systems.
  • It is important to understand and manage the software requirements specification (SRS).
  • Reuse any software that has already been developed rather than writing new software where appropriate.

Software Engineering and the Web

  • The web has become a platform for running applications.
  • Web services facilitate application functionality access over the web.
  • Cloud computing provides computer services where users pay according to their usage.

General Issues Affecting Most Software

  • Today, software often needs to work across many types of devices, like computers and smartphones, that are connected through networks.
  • Businesses and societies are changing quickly due to new technologies and the growth of developing countries; software must adapt.
  • It is important that all software is safe and reliable.

Software Engineering Ethics

  • Software engineers must behave in an honest and ethically responsible way.
  • Ethical behavior includes following a set of principles that are morally correct and upholds the law.

Issues of Professional Responsibility

  • Confidentiality: Respect the confidentiality of employers or clients, with or without a formal agreement.
  • Intellectual property rights include the use of patents and copyrights while ensuring the the intellectual property of employers and clients is protected.
  • Competence should never be misrepresented and you should not knowingly accept work which is outside the developers comopetence .
  • Computer misuse is anything from computer misuse ranges from relatively trivial (game playing on an employer's machine, say) to extremely serious (dissemination of viruses).

Key Takeaways

  • Software engineering is an engineering discipline concerned with aspects of software production.
  • Important software product attributes are functionality, performance, maintainability, dependability, and acceptability.
  • Fundamental principles and ideas of software engineering are universally applicable to all types of development.
  • There are various types of software and each require different software engineering toolsets for development.

Chapter 2 Topics - Software Processes

  • Software process activities
  • Software process models
  • Coping with change

Definition of Software Process

  • A set of activities which are needed to develop a software system using software, processes, activites and models.
  • A model is a simplified representation of software process activities.

Software Process Description

  • Products are the outcome of a software process activity.
  • Roles define who is responsible of a software process activity.
  • The statements for pre- and post-conditions define if conditions are true before and after a process

Agile and Plan Driven Processes

  • Plan driven processes are activities that are planned in advance and progress is measured through the plan.
  • Agile processes are incremented so it is easier to reflect changing customer demands.
  • Most processes include both agile and plan driven processes in practical applications.
  • There are no right or wrong processes.

Software Process Examples

  • The waterfall model is an example of processes that are planned, with specification and development in seperate phases.
  • The water fall model is most often used for large projects.
  • Inflexible project partitioning makes adapting to changing requirements difficult.
  • Waterfall models are appropriate when requirements are well understood and changes will be limited during design.
  • Incremental development defines development and validation as interleaved.
  • Reuse-oriented software engineering integrates existing components or commercial systems.

Incremental Development

  • Reduced costs and the amount of redone documentation.
  • Easy to get customer feedback for incremental changes.
  • Rapid product delivery to the customer is possible, faster than the waterfall method.
  • It may not be visible, managers would need deliverables to measure the progress.
  • System structure may degrade as new increments are added.
  • May be difficult to manage in conjunction with current software.

Reuse-Oriented Software Engineering

  • Based on reuse across multiple systems from existing components.
  • Key stages include requirements, software evaluation, refinement, configuration and finally integration.
  • Reduced costs, faster delivery and reduced risks are achieved.
  • There is a loss of control as requirements must meet the current standards.

Software Process Activities

  • Software specification defines what the software will be and constraints on its operation.
  • Software development defines designed and programmed software.
  • Software valiation defines the process which checks the software meets customer requirements.
  • Software evolution reflects changes to cater to customers and market requirements.
  • Software Specification requires the process of the sub-activity requirement engineering, lead by an Engineer.
  • Requirements are gathered and validated from the customers system by a Requirements Engineer.
  • A Software Engineer's Architectural design and Interface design is used in combination with different Design outputs such Specifications to make the final software.
  • Validation and Verification is achieved through system testing of the system and its components; including unit, system and acceptance testing; using either agile or planned processes
  • When making changes, it is important to be as flexible as possible when defining requirements so it does not evolve into chaos

Change Models

There are two change models

  • Change avoidance, planning activites with prototype to address changes and future requirements
  • Change tolerance, where a incremental based approach can manage lower costs when making changes

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Software Engineering and Development
12 questions
CSC 303 Software Engineering 1
16 questions

CSC 303 Software Engineering 1

NoblePrehistoricArt4993 avatar
NoblePrehistoricArt4993
Software Engineering Overview
40 questions
Use Quizgecko on...
Browser
Browser