Software Engineering Fundamentals

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Which of the following best describes software, according to the material?

  • A collection of libraries.
  • A set of algorithms.
  • Only source code.
  • Executable programming code, associated libraries, and documentations. (correct)

Software Engineering focuses primarily on teaching how to write code efficiently.

False (B)

Name three 'basic forces' that are at play when developing industrial strength software.

Cost, Schedule, and Quality

According to the material, higher productivity can lead to ______ cost and cycle time.

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

According to the material, which of the following is NOT one of the '6 attributes of Quality' according to ISO standards?

<p>Scalability (D)</p> Signup and view all the answers

Match the following roles with their primary responsibility in software development:

<p>Customer = Wants software built to fulfill a need. Developers = Write code to implement the software. Testers = Perform quality assurance. Managers = Plan software projects.</p> Signup and view all the answers

Which of the following best describes a 'Software Process'?

<p>A collection of activities, actions, and tasks performed when creating a product. (D)</p> Signup and view all the answers

The 'Engineering' process in software development mainly involves planning and controlling the development process.

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

According to the material provided, what are the 5 activities/phases of Software Development Process?

<p>Requirements analysis, Design, Coding, Testing, Delivery</p> Signup and view all the answers

The output of the Requirement Analysis phase is often a Software ______ Specification (SRS) document.

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

Which of the following is the primary goal of the Coding phase?

<p>Convert design into code. (A)</p> Signup and view all the answers

During the testing phase, the primary concern is to create test cases, not to identify and remove defects.

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

What are two activities carried out by the "Operations" group during the Delivery phase?

<p>Varies by distribution model, From a user's perspective, it may be as important as design</p> Signup and view all the answers

Defects introduced in earlier phases are ______ to fix if they are detected later.

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

Which is an underlying principle of software project and process models?

<p>To build a software system within cost and schedule and with high quality, which satisfies the customer. (B)</p> Signup and view all the answers

Match the following Software Process Models with their descriptions:

<p>Waterfall = Linear sequence of stages with no feedback between phases. Prototyping = Build a prototype to understand requirements. Iterative = Develop software in increments, incorporating feedback from each iteration. Agile = Lightweight methodologies suitable for mobile applications, focusing on adaptability.</p> Signup and view all the answers

In the Waterfall model, when does a phase typically start?

<p>When the previous phase has completed. (B)</p> Signup and view all the answers

Prototyping models are best suited to projects with well-defined and stable requirements from the outset.

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

In the Prototyping model, what is the purpose of building a prototype?

<p>To understand the requirements, validate designs</p> Signup and view all the answers

Unlike the Waterfall model, the Iterative model delivers software in ______.

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

What is a key characteristic of the Timeboxing model?

<p>Fixing the duration of the iteration and adjusting the functionality. (C)</p> Signup and view all the answers

The Agile model is primarily suitable for projects where requirements are easily predictable and unlikely to change.

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

State two key assumptions that the Agile model relys on?

<p>Difficult to predict software requirements or Difficult to predict analysis, design, construction, and testing</p> Signup and view all the answers

In Agile development, the tests are the ______.

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

According to the material, what does 'Software' consist of?

<p>Executable programming code, associated libraries, and documentations. (A)</p> Signup and view all the answers

Software Engineering exclusively focuses on coding and debugging.

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

List three factors that contribute to the 'software problem'.

<p>Cost, schedule, quality</p> Signup and view all the answers

According to ISO standards, software quality is described by six attributes, one of which is ______.

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

Which role is responsible to test software?

<p>Tester (D)</p> Signup and view all the answers

Match the following words with a fitting description:

<p>process = a particular method software process = a set of steps</p> Signup and view all the answers

Which is a step in the software development?

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

Design is the final step in software development.

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

Name two steps in the software development process

<p>Coding, Tesing</p> Signup and view all the answers

The SRS is the software ______ specification

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

What must be found and removed for high software quality?

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

Coding is the most expensive task in the software development lifecycle.

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

What happens in the delivery phase?

<p>Varies by distribution model</p> Signup and view all the answers

A prototype should be low ______

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

Is the agile way of development applicable where requirements are well understood?

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

The waterfall method is a modern method of software development.

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

Which of the following is most indicative of 'Software' in the context of software engineering?

<p>A collection of programming code, associated libraries, and documentation. (B)</p> Signup and view all the answers

According to the IEEE standard 610.12, software engineering is simply the application of coding to software development.

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

Which of the following considerations falls under the scope of software engineering?

<p>Ensuring that the software meets safety requirements. (B)</p> Signup and view all the answers

In the context of software development, increased productivity typically leads to ______ cost and ______ cycle time.

<p>lower, lower</p> Signup and view all the answers

According to the ISO standard, which of the following is considered an attribute of software quality?

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

What are the three basic forces at play during the development of industrial strength software?

<p>cost, schedule, and quality</p> Signup and view all the answers

Match the stakeholder with their role in software production:

<p>Customer/Client = Wants the software built Managers/Designers = Plan the software Developers = Write code to implement software Testers = Perform quality assurance (QA)</p> Signup and view all the answers

Software process is simply a detailed coding standard that all developers must adhere to.

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

Which of the following activities is typically part of the software development process?

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

In the context of software development phases, the conversion of design into code in a specific language takes place during the ______ phase.

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

Which of the following is a primary goal of the testing phase in software development?

<p>To identify most of the defects. (C)</p> Signup and view all the answers

What is the main characteristic of the Waterfall model in software development?

<p>Linear sequence of stages, with no feedback between phases. (C)</p> Signup and view all the answers

A key advantage of the Prototyping model is that it avoids a costly requirements stage.

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

In the context of time boxing, what is typically fixed?

<p>The duration of iteration. (B)</p> Signup and view all the answers

Which of the following is a key characteristic of the Agile model?

<p>Design and construction are interleaved. (B)</p> Signup and view all the answers

Flashcards

Software

Collection of executable programming code, associated libraries and documentation.

System software

Software dealing directly with hardware.

Application software

Software for specific user needs.

Engineering/scientific software

Software for scientific computations.

Signup and view all the flashcards

Embedded software

Software residing within a product or system.

Signup and view all the flashcards

Product-line software

Software tailored to a specific market segment.

Signup and view all the flashcards

Web & network centric software

Software integrated with remote databases and apps.

Signup and view all the flashcards

Intelligent systems

Software that uses non-numerical algorithms.

Signup and view all the flashcards

Software Engineering (SE)

Systematic, disciplined, quantifiable approach.

Signup and view all the flashcards

A Software

Industrial strength software that solves a specific problem

Signup and view all the flashcards

LOC

Lines of Code.

Signup and view all the flashcards

Three software forces

Total cost, development schedule, and software quality.

Signup and view all the flashcards

Software cost

Lines of delivered code costs.

Signup and view all the flashcards

Software Schedule

The time to deliver software.

Signup and view all the flashcards

Productivity

Output/input resources in software development.

Signup and view all the flashcards

Software Quality

Measured via functionality, reliability, usability...

Signup and view all the flashcards

Stakeholders

Customer, managers, developers, testers and users

Signup and view all the flashcards

Process

A particular method with a number of steps

Signup and view all the flashcards

Software Process

Steps to produce software

Signup and view all the flashcards

Two major processes

Engineering and management

Signup and view all the flashcards

5 development activities

What are common Software Development activities/phases?

Signup and view all the flashcards

Software Pyramid

Software development Paradigm, programming paradigm, Software Design Paradigm.

Signup and view all the flashcards

Requirement Analysis

Describe problem precisely!

Signup and view all the flashcards

Design phase

A major step in to solution domain

Signup and view all the flashcards

Coding phase

Converts design into code.

Signup and view all the flashcards

Testing phase

To find and remove all defects.

Signup and view all the flashcards

Delivery phase

Output = The Operations group’s job.

Signup and view all the flashcards

Process model

A process model that is optimal for a class of problems.

Signup and view all the flashcards

Software models

Waterfall, Prototyping, Iterative, Timeboxing and Agile.

Signup and view all the flashcards

Waterfall Model

Linear sequence of stages/phases.

Signup and view all the flashcards

Prototyping Model

To understand requirements with demonstrations.

Signup and view all the flashcards

Iterative Model

Develop and deliver software in increments

Signup and view all the flashcards

Time boxing

Divide iteration in a few equal stages

Signup and view all the flashcards

Agile model

Difficult to predict software analysis and design, construction.

Signup and view all the flashcards

Study Notes

Introduction to Software Engineering

  • The lecture introduces the fundamentals of software engineering, its scope, and various process models.
  • Dr. Rasha Kashef presents the information.

Software Defined

  • Software is a collection of executable programming code, associated libraries, and documentations.
  • Implies it is large, robust, reusable, and evolving.
  • Why studying it is important: teaches design, systematic problem solving.

Software Systems

  • System software examples: compilers, editors, file management utilities.
  • Application Software examples: standalone programs for specific needs.
  • Engineering/Scientific software: features "scientific-related" algorithms.
  • Embedded software: resides within a product or system.
  • Product-line software: focuses on a limited marketplace to address mass consumer market.
  • Web & network centric software: are built in sophisticated environments integrated with remote databases and business applications.
  • Intelligent systems: makes use of non-numerical algorithms to solve complex problems like robotics, expert systems, and pattern recognition.

Software Engineering (SE) Defined

  • The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, according to IEEE Standard 610.12.
  • As defined by the Canadian Standards Association: it is the systematic activities involved in the design, implementation and testing of software to optimize its production and support."

Software Engineering Scope

  • It is part of a much larger system design that includes telephone switching, banking, and hospital admin systems, and aircraft.
  • Performing it correctly requires a comprehensive look at all aspects.
  • Involves entities, activities, and interfaces with other systems and users.
  • Key attribute: understanding the application and user needs.
  • Activity support: decide what activities the system should support and how.
  • Software systems development: requires emphasis on different priorities depending on application domain like telecom in time-to-market, aerospace/NASA on safety, and telecom/banking on maintainability.

The Software Problem

  • "A Software" means industrial strength software that solves a specific problem.
  • Three forces at play: cost, schedule, and quality.

Cost of Software

  • Lines of Code (LOC) & Person-Month (PM) provides context to costs involved.
  • Approximately 1000 LOC can be produced per PM.
  • Cost per LOC is about : $3-$10, so the Cost = $3K to $10K/PM.
  • Developing a simple business application (20KLOC to 50KLOC) can cost $100K-$2.25 Million; it can run on $10K-$20K hardware.
  • Hardware costs in an IT solution are small, relative to software costs.

Software Schedule

  • Shorter demanded by business requirements.
  • Products have often failed to complete on time.
  • Cycle time + Cost : a fundamental driving force

Productivity - Cost and Schedule

  • Modeled by productivity.
  • Productivity = output / input resources.
  • Output is measured via LOC or KLOC.
  • Input resources: effort in person months as well as overhead.
  • Higher productivity results in lower cost/cycle time.
  • Quality and productivity drives software projects.

Software Quality

  • Developing high-quality software is a basic goal; productivity and quality drives software projects.
  • Quality is harder to define.
  • The ISO Standard dictates six quality attributes.
  • There are multiple dimensions of quality that makes it difficult to quantify with a simple value.
  • Being project specific depending on the needs.
  • Reliability is generally the most important criterion

ISO Standard Quality Attributes:

  • Functionality
  • Reliability
  • Usability
  • Efficiency
  • Maintainability
  • Portability

Stakeholders in Software

  • Customer/client: wants software built, but often doesn't know specifics.
  • Managers/Designers: plan software, but hard to foresee all issues.
  • Developers: write code to implement software, but hard to write complex code for large systems.
  • Testers: perform quality assurance, but impossible to test all actions.
  • Users: purchase and use software product, but can misunderstand it.

Software Development Fundamentals

  • Process: A particular method of activities, actions and tasks performed when some product is to be created.
  • Software Process: A sequence of steps/activities, accompanied by constraints on order of execution, that lead to software with the desired outcome.

Software Development Process Key Points

  • Process is distinct from product.
  • Products are the outcomes of executing a process.
  • Software Engineering focuses on process.
  • Proper processes deliver software products in a timely manner, within budget, at high quality.

Key Processes in Software Development

  • Software Development -> Engineering and Project Management
  • Other -> Configuration management, Change management, Inspection process, Improvement process

Two Major Processes

  • Engineering: encompasses development and quality assurance needed to engineer the software
  • Project management: provides the planning and controlling of the development process.
  • Roles: developers execute the Engineering and Project managers execute the management process.

Common Phases in Software Development

  • Requirements Analysis
  • Design
  • Coding
  • Testing
  • Delivery

Basic Software Development Process

  • Phases: Requirements, Design, Implementation, Testing, Integration, Maintenance.
  • Requirements is under the Software Development Paradigm
  • Design is under the Software Design Paradigm
  • Implementation is under Programming Paradigm
  • Software Design Models: Procedural, Object Oriented, Logic, Functional.
  • Involves Planning/Design & Documentation

Phase 1: Requirement Analysis

  • States the problem precisely.
  • Forms a basis of agreement between the user and developer.
  • Specifies "what"
  • Is difficult as the problem is often not well understood.
  • Even medium systems can have specification documents spanning hundreds of pages.
  • Output is the Software Requirements Specification (SRS) document.

Phase 2: Design

  • Moves from problem domain to solution domain.
  • Key tasks: Architecture design (components/connectors), High-level + Detailed design (modules and data structures).
  • Methodologies: Focuses on architecture or high-level design.
  • Outputs are architecture/description/logic design documents.

Phase 3: Coding

  • Converts design into code in specific language.
  • Goal: Implement design simply and understandably. Well-written code reduces testing and maintenance effort.
  • Coding phase affects both testing and maintenance.
  • Output is Code.

Phase 4: Testing & Quality Assurance

  • Defects can be introduced within each phase.
  • Goals include: Identifying most of defects and to Remove defects for high quality.
  • Task: Very expensive and must be properly planned and executed.
  • Output: Test plans/results, and final, reliable and tested code.

Phase 5: Delivery

  • The "Operations" group typically handles delivery.
  • The mode is variable by distribution of e.g. shrink wrapped software, in house software, web based and Software As A Service (SaaS).
  • From a user perspective, it can be equally important to the initial design.

Software Development Life Cycle: Typical Effort Distribution

  • Requirements: 10-20%
  • Design: 10-20%
  • Coding: 20-30%
  • Testing: 30-50%
  • Costliest aspect is Coding.

Error Introduction and Detection

  • Most errors introduced in Coding (50%), followed by Design (30%) and Requirements (20%).
  • Defects can be injected at any of the major phases.
  • Cost of defect removal increases exponentially with latency time.
  • Cheapest way to detect and remove defects is by checking after every phase

Software Project and Process Models

  • Project: building a software system within cost and schedule while achieving high quality and customer satisfaction.
  • Process model: abstract general specifications optimized for a particular class of problems; effective practices used for project success.
  • Different process models perform the five phases of the development process in different manners.
  • A project may select its process through one of the process models.

Software Process Models Defined

  • An abstract representation of a process and a description of a process from some particular perspective.

Process Model Categorization

  • Traditional: Waterfall (oldest, widely used), Prototyping (followed by Waterfall), Iterative (used widely in product development), and Timeboxing (Iterative 2.0).
  • Modern: Agile (lightweight methodologies, best for mobile applications).

Waterfall Model

  • Stages: Requirements, High Level Description, Detailed Design, Code, Test, and Deploy.
  • Phases proceed in a linear sequence with no opportunity for feedback. Partition project addressing specific task

Waterfall Model, More info

  • The linear ordering implies each phase should have some output.
  • The output must be validated/certified
  • Common outputs: SRS, project plan, design/test plans, final code, and supporting documentation.

Waterfall Model: Advantages an Disadvantages

  • Advantages: Natural approach for problem solving and is conceptually simple.
  • Advantages: Easy to administer in a contractual setup; each phase signifies milestone.
  • Disadvantages: Inflexible partitioning makes adaptation to changing requirements difficult.
  • Disadvantages: Suited when the requirements are well-understood. Model describes stepwise refinement process".
  • Extensively applied military, healthcare, and aerospace sectors.

Prototyping Model

  • Use: risky or unfamiliar projects
  • Addresses the requirement specification limitation of waterfall
  • Instead of defining specifications, it is built to understand the requirements..
  • Helps alleviate risk and Expect to "throw away" first version.
  • Replaces requirements stage with a small waterfall model.

Prototyping Model Development

  • Begins with basic requirements.
  • Focuses on key features requiring the best understanding are included in the prototype.
  • Including features that are already well-understood are unnecessary.
  • Used to improve the understanding of requirements.

Prototyping Model: Development Cost

  • Can be kept low by only including features needing clarification and omitting elements like Exception handling, and standards. A small percentage of costs is enough.
  • Can contribute to building.

Prototyping Model: Advantages and Disadvantages

  • Advantages: Stable requirements, satisfies user needs, early exploration of scaling issues, the ability to modify/cancel the project early, and enhanced user engagement.
  • Disadvantages: Potential hit on cost/schedule, false sense of security if prototype does not focus on high-risk areas
  • Applicability: difficulty in eliciting requirements, confidence is low, and in areas where design is driven by end-user requirements.

Iterative Model

  • Addresses limitations of the waterfall (the "all or nothing").
  • Combines the benefits of prototyping and waterfall approaches.
  • Allows for the development and delivery of software in increments.
  • Each increment is complete in itself.
  • Feedback from one iteration is used in future iterations.
  • Commonly used in customized development
  • Most Software Products follow it
  • Newer approaches XP, Agile relies on Iterative Development

Iterative Model Advantages and Disadvantages

  • Advantages: Get-as-you-pay and Feedback for improvement.
  • Disadvantages: Architecture/design may not be optimal, the amount of refactoring may increase and the Total cost may increase.
  • Applicability: response time important, all requirements are unknown.
  • Execution: Each iteration is a mini-waterfall (decide the specs, then plan the iteration). The amount of new functionality determines length of iteration.

Time Boxing

  • Alterration of the iterative development
  • Fix iteration duration + determine the specifics.
  • Divides iteration in a few equal stages.
  • Integrates pipelining principles.
  • General approach: fixing functionality for each iteration, then plan and perform.
  • In time boxed iterations – adjust functionality to fit a fixed period.

Time Boxing Model: Execution and Team Sizes

  • Duration of each iteration, total workload, and productivity stays the same- Average cycle or delivery timeline cuts to a third.
  • Team Size->Linear Execution
  • The same team performs all stages. For a stage, it is S in linear execution the total team size is also S.
  • To achieve pipeline execution, the total team size should be three times (one for each stage)
  • Total team size in timeboxing is larger, reducing cycle time.
  • Timeboxing allows for structured addition of manpower to minimize turnaround.
  • It is worth noting time stay unchangeable.

Time Boxing Model: Advantages & Disadvantages

  • Advantages: Use of manpower shortens delivery schedules while increases flexibility.
  • Disadvantages: demands larger project management, and high synchronization.
  • Applications: When rapid delivery schedules, flexible features and stable architecture are needed.

Agile Model

  • Assumptions: Difficulty in predicting software requirements, analysis, and development.
  • Assumptions: Design/construction must be interleaved.
  • Solution: Process adaptability
  • Example: XP, extreme programming
  • The process includes planning (stories), design, programming, testing, communication is paramount.

Summary

  • The process achieves project objectives (Q&P).
  • Process models form the basis of the project.
  • The process has an identifiable task.
  • Many model for Development
  • Tailor best suited for.

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 Essentials Quiz
3 questions
Software Engineering Methods Quiz
10 questions
Intro to Software Engineering Lecture #1
18 questions
Aircraft Software Control and MCDU Programming
40 questions
Use Quizgecko on...
Browser
Browser