Podcast
Questions and Answers
Which of the following best describes the primary goal of software engineering?
Which of the following best describes the primary goal of software engineering?
In software engineering, what does 'analysis' primarily involve?
In software engineering, what does 'analysis' primarily involve?
What is the main purpose of 'synthesis' in the context of software engineering?
What is the main purpose of 'synthesis' in the context of software engineering?
What is a 'method' as defined in software engineering?
What is a 'method' as defined in software engineering?
Signup and view all the answers
Which of the following is the best description of a 'paradigm' in software engineering?
Which of the following is the best description of a 'paradigm' in software engineering?
Signup and view all the answers
Which of the following is NOT a primary way to consider quality in software engineering?
Which of the following is NOT a primary way to consider quality in software engineering?
Signup and view all the answers
From the perspective of a user, which of the following is the most important aspect for determining the quality of a software product?
From the perspective of a user, which of the following is the most important aspect for determining the quality of a software product?
Signup and view all the answers
What is the primary goal of modeling the software development process?
What is the primary goal of modeling the software development process?
Signup and view all the answers
Which model focuses on improving the development process and organizational maturity?
Which model focuses on improving the development process and organizational maturity?
Signup and view all the answers
When assessing the quality of software in the context of the business environment, what is a common metric used?
When assessing the quality of software in the context of the business environment, what is a common metric used?
Signup and view all the answers
Study Notes
Chapter 1: Introduction to Software Engineering Concepts
- Software products: Large and complex, requiring analysis and synthesis
- Analysis (decomposing): Breaking a large problem into smaller, understandable pieces; abstraction is key
- Synthesis (building): Composing a software product from smaller building blocks; composition is challenging
- Analysis process: A hierarchical breakdown of a problem into smaller subproblems
- Synthesis process: Combining solutions to the subproblems into a complete solution
- Software engineering method: Formal procedure (recipe) for accomplishing a goal, independent of the tools used
- Software engineering tool: Instrument or automated system for accomplishing something better
- Software engineering procedure: Combination of tools and techniques to produce a software product
- Software engineering paradigm: Philosophy or approach for building a product (e.g., object-oriented vs. structured approaches)
- Computer science: Focuses on hardware, compilers, operating systems, and programming languages
- Software engineering: a discipline using computer and software technologies as problem-solving tools
- Relationship between computer science and software engineering: Computer science provides theories and functions, while software engineering uses tools and techniques to solve problems
1.2: How Successful Have We Been?
- Software performs tasks quickly and effectively (e.g., word processing, spreadsheets, e-mail)
- Supports advances in various fields (medicine, agriculture, transportation, multimedia education)
- However, software is not without problems
1.2: Terminology for Describing Bugs
- Fault: Occurs when a human makes a mistake (error) during software activities
- Failure: Departure from the system's required behavior; a fault can lead to a failure
1.2: Examples of Software Failure
- IRS's automated tax form processing (extra costs, lost refunds, overtime costs)
- Therac-25 malfunctioning code (killed multiple people)
- Reliability constraints canceling many safety-critical systems (systems whose failure poses a threat to life)
1.3: What is Good Software?
- Quality: Perspective can be transcendental, user-based, manufacturing, product-based, value-based
- Good Software Engineering: Must include a strategy for producing quality software
- Quality considerations: Quality of the product, quality of the process, quality in the context of the business environment
1.3: Quality of the Product
- Users: Judge external characteristics (correct functionality, number of failures, type of failures)
- Designers/Maintainers: Judge internal characteristics (types of faults)
- Stakeholders: Have different criteria; need quality models to relate user view to developer view
1.3: McCall's Quality Model
- Model dimensions: Correctness, Reliability, Efficiency, Integrity, Usability, Maintainability, Testability, Flexibility, Portability, Reusability, Interoperability
- Model attributes: Traceability, Completeness, Consistency (Accuracy, Error Tolerance, Execution Efficiency, Storage efficiency, Access control, Accessibility, Audit, Operability, Simplicity, Conciseness, Instrumentation, Self-descriptiveness, Expandability, Generality, Modularity, Software System Independence, Machine Independence, Communications commonality, and Data commonality)
1.3: Quality of the Process
- Importance of development and maintenance processes
- Need for modeling (faults, early fault detection, fault tolerance, alternative activities)
- Models for process improvement (SEI's CMM, ISO 9000, SPICE)
1.3: Quality of the Context
- Business value is as important as technical value; business value needs to be quantified
- Return on Investment (ROI) needs to be considered (reducing costs, predicting savings, improving productivity)
1.4: Who Does Software Engineering?
- Customer: Company or person paying for the software
- Developer: Company or person building the software
- User: Person who will use the software
1.4: Participants in a software project
- Customer (Sponsors system development)
- User (Uses system)
- Developer (Builds system and addresses $$ needs)
- Different roles required for a successful project
1.5: System Approach
- Hardware, software, and people interaction
- Defining activities and objects
- Defining system boundaries
- Considering nested systems and interrelationships
- Example Systems such as a Human Respiratory System and a Paycheck Production System
1.6: Engineering Approach
- Requirement analysis and definition
- System design
- Program design
- Writing the Programs
- Unit testing
- Integration testing
- System testing
- System delivery
- Maintenance
1.7: Members of the Development Team
- Requirement analysts (customer interaction, document requirements)
- Designers (create system level description)
- Programmers (implement the design)
- Testers (identify faults)
- Trainers (demonstrate system use to users)
- Maintenance (fixing faults after delivery)
- Librarian (software requirement documentation and archives)
- Configuration Management (Maintains artifacts)
1.7: Typical developer roles
- Analyst
- Designer
- Programmer
- Tester
- Trainer
1.8: How Has Software Engineering Changed?
- Before 1970s: Single processors (mainframes), transformation design, transaction design
- After 1970s: Multiple systems, multi-functions
- Wasserman's Seven Key Factors: Critically of time-to-market, Shifts in the economics of computing, Availability of powerful desktop computing, Extensive local- and wide-area networking, Availability and adoption of object-oriented technology, Graphical user interfaces, Unpredictability of the waterfall model
1.8: Software Engineering Discipline Changes
- Abstractions
- Analysis and design techniques and notations
- User interface prototyping
- Software architecture
- Software process
- Reuse methodology
- Measurement
- Tools and integrated environments
1.9: Information System Example (Piccadilly Television)
- Regional British TV franchise
- Advertising constraints (time, actor, product, time-bought)
- Software requirements to track airtime
1.10: Real-time Example (Ariane-5 Rocket)
- European Space Agency rocket failure
- June 4, 1996; Failure after 40 seconds
- Destroyed four satellites; $500 million in loss
- Reused code from Ariane-4 rocket
1.11: What this Chapter Means for You
- Analyze and synthesize solutions
- Recognize that requirements can change
- Assess quality from different viewpoints
- Understand fundamental software engineering concepts (abstraction, measurement)
- Understand system boundaries
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Related Documents
Description
Test your understanding of the fundamental concepts in software engineering, including analysis and synthesis processes. Explore the various methods, tools, and paradigms that shape the discipline. This quiz covers the foundational elements vital for any aspiring software engineer.