Podcast
Questions and Answers
Which of the following best describes software, according to the material?
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.
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.
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.
According to the material, higher productivity can lead to ______ cost and cycle time.
According to the material, which of the following is NOT one of the '6 attributes of Quality' according to ISO standards?
According to the material, which of the following is NOT one of the '6 attributes of Quality' according to ISO standards?
Match the following roles with their primary responsibility in software development:
Match the following roles with their primary responsibility in software development:
Which of the following best describes a 'Software Process'?
Which of the following best describes a 'Software Process'?
The 'Engineering' process in software development mainly involves planning and controlling the development process.
The 'Engineering' process in software development mainly involves planning and controlling the development process.
According to the material provided, what are the 5 activities/phases of Software Development Process?
According to the material provided, what are the 5 activities/phases of Software Development Process?
The output of the Requirement Analysis phase is often a Software ______ Specification (SRS) document.
The output of the Requirement Analysis phase is often a Software ______ Specification (SRS) document.
Which of the following is the primary goal of the Coding phase?
Which of the following is the primary goal of the Coding phase?
During the testing phase, the primary concern is to create test cases, not to identify and remove defects.
During the testing phase, the primary concern is to create test cases, not to identify and remove defects.
What are two activities carried out by the "Operations" group during the Delivery phase?
What are two activities carried out by the "Operations" group during the Delivery phase?
Defects introduced in earlier phases are ______ to fix if they are detected later.
Defects introduced in earlier phases are ______ to fix if they are detected later.
Which is an underlying principle of software project and process models?
Which is an underlying principle of software project and process models?
Match the following Software Process Models with their descriptions:
Match the following Software Process Models with their descriptions:
In the Waterfall model, when does a phase typically start?
In the Waterfall model, when does a phase typically start?
Prototyping models are best suited to projects with well-defined and stable requirements from the outset.
Prototyping models are best suited to projects with well-defined and stable requirements from the outset.
In the Prototyping model, what is the purpose of building a prototype?
In the Prototyping model, what is the purpose of building a prototype?
Unlike the Waterfall model, the Iterative model delivers software in ______.
Unlike the Waterfall model, the Iterative model delivers software in ______.
What is a key characteristic of the Timeboxing model?
What is a key characteristic of the Timeboxing model?
The Agile model is primarily suitable for projects where requirements are easily predictable and unlikely to change.
The Agile model is primarily suitable for projects where requirements are easily predictable and unlikely to change.
State two key assumptions that the Agile model relys on?
State two key assumptions that the Agile model relys on?
In Agile development, the tests are the ______.
In Agile development, the tests are the ______.
According to the material, what does 'Software' consist of?
According to the material, what does 'Software' consist of?
Software Engineering exclusively focuses on coding and debugging.
Software Engineering exclusively focuses on coding and debugging.
List three factors that contribute to the 'software problem'.
List three factors that contribute to the 'software problem'.
According to ISO standards, software quality is described by six attributes, one of which is ______.
According to ISO standards, software quality is described by six attributes, one of which is ______.
Which role is responsible to test software?
Which role is responsible to test software?
Match the following words with a fitting description:
Match the following words with a fitting description:
Which is a step in the software development?
Which is a step in the software development?
Design is the final step in software development.
Design is the final step in software development.
Name two steps in the software development process
Name two steps in the software development process
The SRS is the software ______ specification
The SRS is the software ______ specification
What must be found and removed for high software quality?
What must be found and removed for high software quality?
Coding is the most expensive task in the software development lifecycle.
Coding is the most expensive task in the software development lifecycle.
What happens in the delivery phase?
What happens in the delivery phase?
A prototype should be low ______
A prototype should be low ______
Is the agile way of development applicable where requirements are well understood?
Is the agile way of development applicable where requirements are well understood?
The waterfall method is a modern method of software development.
The waterfall method is a modern method of software development.
Which of the following is most indicative of 'Software' in the context of software engineering?
Which of the following is most indicative of 'Software' in the context of software engineering?
According to the IEEE standard 610.12, software engineering is simply the application of coding to software development.
According to the IEEE standard 610.12, software engineering is simply the application of coding to software development.
Which of the following considerations falls under the scope of software engineering?
Which of the following considerations falls under the scope of software engineering?
In the context of software development, increased productivity typically leads to ______ cost and ______ cycle time.
In the context of software development, increased productivity typically leads to ______ cost and ______ cycle time.
According to the ISO standard, which of the following is considered an attribute of software quality?
According to the ISO standard, which of the following is considered an attribute of software quality?
What are the three basic forces at play during the development of industrial strength software?
What are the three basic forces at play during the development of industrial strength software?
Match the stakeholder with their role in software production:
Match the stakeholder with their role in software production:
Software process is simply a detailed coding standard that all developers must adhere to.
Software process is simply a detailed coding standard that all developers must adhere to.
Which of the following activities is typically part of the software development process?
Which of the following activities is typically part of the software development process?
In the context of software development phases, the conversion of design into code in a specific language takes place during the ______ phase.
In the context of software development phases, the conversion of design into code in a specific language takes place during the ______ phase.
Which of the following is a primary goal of the testing phase in software development?
Which of the following is a primary goal of the testing phase in software development?
What is the main characteristic of the Waterfall model in software development?
What is the main characteristic of the Waterfall model in software development?
A key advantage of the Prototyping model is that it avoids a costly requirements stage.
A key advantage of the Prototyping model is that it avoids a costly requirements stage.
In the context of time boxing, what is typically fixed?
In the context of time boxing, what is typically fixed?
Which of the following is a key characteristic of the Agile model?
Which of the following is a key characteristic of the Agile model?
Flashcards
Software
Software
Collection of executable programming code, associated libraries and documentation.
System software
System software
Software dealing directly with hardware.
Application software
Application software
Software for specific user needs.
Engineering/scientific software
Engineering/scientific software
Signup and view all the flashcards
Embedded software
Embedded software
Signup and view all the flashcards
Product-line software
Product-line software
Signup and view all the flashcards
Web & network centric software
Web & network centric software
Signup and view all the flashcards
Intelligent systems
Intelligent systems
Signup and view all the flashcards
Software Engineering (SE)
Software Engineering (SE)
Signup and view all the flashcards
A Software
A Software
Signup and view all the flashcards
LOC
LOC
Signup and view all the flashcards
Three software forces
Three software forces
Signup and view all the flashcards
Software cost
Software cost
Signup and view all the flashcards
Software Schedule
Software Schedule
Signup and view all the flashcards
Productivity
Productivity
Signup and view all the flashcards
Software Quality
Software Quality
Signup and view all the flashcards
Stakeholders
Stakeholders
Signup and view all the flashcards
Process
Process
Signup and view all the flashcards
Software Process
Software Process
Signup and view all the flashcards
Two major processes
Two major processes
Signup and view all the flashcards
5 development activities
5 development activities
Signup and view all the flashcards
Software Pyramid
Software Pyramid
Signup and view all the flashcards
Requirement Analysis
Requirement Analysis
Signup and view all the flashcards
Design phase
Design phase
Signup and view all the flashcards
Coding phase
Coding phase
Signup and view all the flashcards
Testing phase
Testing phase
Signup and view all the flashcards
Delivery phase
Delivery phase
Signup and view all the flashcards
Process model
Process model
Signup and view all the flashcards
Software models
Software models
Signup and view all the flashcards
Waterfall Model
Waterfall Model
Signup and view all the flashcards
Prototyping Model
Prototyping Model
Signup and view all the flashcards
Iterative Model
Iterative Model
Signup and view all the flashcards
Time boxing
Time boxing
Signup and view all the flashcards
Agile model
Agile model
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.