Beginning software engineering
Discover the foundations of software engineering with this easy and intuitive guide In the newly updated second edition of Beginning Software Engineering, expert programmer and tech educator Rod Stephens delivers an instructive and intuitive introduction to the fundamentals of software engineering....
Otros Autores: | |
---|---|
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
Hoboken, New Jersey :
John Wiley & Sons, Inc
[2023]
|
Edición: | Second edition |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009752728906719 |
Tabla de Contenidos:
- Cover
- Title Page
- Copyright Page
- About the Author
- Acknowledgments
- Contents
- Introduction
- What Is Software Engineering?
- Why Is Software Engineering Important?
- Who Should Read This Book?
- Approach
- What This Book Covers (and What It Doesn't)
- What Tools Do You Need?
- Conventions
- Errata
- Important URLs
- Contacting the Author
- Disclaimer
- Part I Software Engineering Step-by-Step
- Chapter 1 Software Engineering from 20,000 Feet
- Requirements Gathering
- High-Level Design
- Low-Level Design
- Development
- Testing
- Deployment
- Maintenance
- Wrap-up
- Everything All at Once
- Summary
- What You Learned in This Chapter
- Chapter 2 Before the Beginning
- Document Management
- Historical Documents
- Code
- Code Documentation
- Application Documentation
- Summary
- What You Learned in This Chapter
- Chapter 3 The Team
- Team Features
- Clear Roles
- Effective Leadership
- Clear Goals
- Consensus
- Open Communication
- Support for Risk-Taking
- Shared Accountability
- Informal Atmosphere
- Trust
- Team Roles
- Common Roles
- More-Specialized Roles
- Informal Roles
- Roles Wrap-Up
- Team Culture
- Interviews
- Interview Puzzles
- The Bottom Line
- Physical Environment
- Creativity
- Office Space
- Ergonomics
- Work-Life Balance
- Collaboration Software
- Searching
- Overload
- Outsourcing
- Summary
- What You Learned in This Chapter
- Chapter 4 Project Management
- Executive Support
- Project Management
- PERT Charts
- Critical Path Methods
- Gantt Charts
- Scheduling Software
- Predicting Times
- Get Experience
- Break Unknown Tasks into Simpler Pieces
- Look for Similarities
- Expect the Unexpected
- Track Progress
- Risk Management
- Summary
- What You Learned in This Chapter
- Chapter 5 Requirements Gathering
- Requirements Defined.
- Clear
- Unambiguous
- Consistent
- Prioritized
- Verifiable
- Words to Avoid
- Requirement Categories
- Audience-Oriented Requirements
- Business Requirements
- User Requirements
- Functional Requirements
- Nonfunctional Requirements
- Implementation Requirements
- FURPS
- FURPS+
- Common Requirements
- Gathering Requirements
- Listen to Customers (and Users)
- Use the Five Ws (and One H)
- Who
- What
- When
- Where
- Why
- How
- Study Users
- Refining Requirements
- Copy Existing Systems
- Clairvoyance
- Brainstorm
- Recording Requirements
- UML
- User Stories
- Use Cases
- Prototypes
- Requirements Specification
- Validation and Verification
- Changing Requirements
- Digital Transformation
- What to Digitize
- How to Digitize
- Summary
- Exercises
- What You Learned in This Chapter
- Chapter 6 High-Level Design
- The Big Picture
- What to Specify
- Security
- Hardware
- User Interface
- Internal Interfaces
- External Interfaces
- Architecture
- Monolithic
- Client/Server
- Component-Based
- Service-Oriented
- Data-Centric
- Event-Driven
- Rule-Based
- Distributed
- Mix and Match
- Reports
- Other Outputs
- Database
- Audit Trails
- User Access
- Database Maintenance
- NoSQL
- Cloud Databases
- Configuration Data
- Data Flows and States
- Training
- UML
- Structure Diagrams
- Behavior Diagrams
- Activity Diagrams
- Use Case Diagram
- State Machine Diagram
- Interaction Diagrams
- Sequence Diagram
- Communication Diagram
- Timing Diagram
- Interaction Overview Diagram
- UML Summary
- Summary
- What You Learned in This Chapter
- Chapter 7 Low-Level Design
- Design Approaches
- Design-to-Schedule
- Design-to-Tools
- Process-Oriented Design
- Data-Oriented Design
- Object-Oriented Design
- Hybrid Approaches
- High, Low, and Iterative Design
- OO Design.
- Identifying Classes
- Building Inheritance Hierarchies
- Refinement
- Generalization
- Hierarchy Warning Signs
- Object Composition
- Database Design
- Relational Databases
- First Normal Form
- Second Normal Form
- Third Normal Form
- Higher Levels of Normalization
- When to Optimize
- Summary
- What You Learned in This Chapter
- Chapter 8 Security Design
- Security Goals
- Security Types
- Cybersecurity
- Shift-Left Security
- Malware Menagerie
- Phishing and Spoofing
- Social Engineering Attacks
- Crapware
- Password Attacks
- User Access
- Countermeasures
- Cyber Insurance
- Summary
- What You Learned in This Chapter
- Chapter 9 User Experience Design
- Design Mindset
- UI vs. UX
- UX Designers
- Platform
- User Skill Level
- Beginners and Beyond
- Configuration
- Hidden Configuration
- Models
- Metaphors and Idioms
- Case Study: Microsoft Word
- Design Guidelines
- Allow Exploration
- Make the Interface Immutable
- Support Commensurate Difficulty
- Avoid State
- Make Similar Things Similar
- Provide Redundant Commands
- Do the Right Thing
- Show Qualitative Data, Explain Quantitative Data
- Give Forms Purpose
- Gather All Information at Once
- Provide Reasonable Performance
- Only Allow What's Right
- Flag Mistakes
- Form Design
- Use Standard Controls
- Decorating
- Displaying
- Arranging
- Commanding
- Selecting
- Entering
- Display Five Things
- Arrange Controls Nicely
- Summary
- What You Learned in This Chapter
- Chapter 10 Programming
- Tools
- Hardware
- Network
- Development Environment
- Source Code Control
- Profilers
- Static Analysis Tools
- Testing Tools
- Source Code Formatters
- Refactoring Tools
- Training
- Collaboration Tools
- Algorithms
- Top-Down Design
- Programming Tips and Tricks
- Be Alert
- Write for People, Not the Computer.
- Comment First
- Write Self-Documenting Code
- Keep It Small
- Stay Focused
- Avoid Side Effects
- Validate Results
- Practice Offensive Programming
- Use Exceptions
- Write Exception Handlers First
- Don't Repeat Code
- Defer Optimization
- Summary
- What You Learned in This Chapter
- Chapter 11 Algorithms
- Algorithm Study
- Algorithmic Approaches
- Decision Trees
- Knapsack
- The Eight Queens Problem
- Exhaustive Search
- Backtracking
- Pruning Trees
- Branch and Bound
- Heuristics
- Greedy
- Divide and Conquer
- Recursion
- Dynamic Programming
- Caching
- Randomization
- Monte Carlo Algorithms
- Las Vegas Algorithms
- Atlantic City Algorithms
- State Diagrams
- Design Patterns
- Creational Patterns
- Structural Patterns
- Behavioral Patterns
- Design Pattern Summary
- Parallel Programming
- Artificial Intelligence
- Definitions
- Learning Systems
- Natural Language Processing
- Artificial Neural Network
- Deep Learning
- Expert System
- Artificial General Intelligence
- Algorithm Characteristics
- Summary
- What You Learned in This Chapter
- Chapter 12 Programming Languages
- The Myth of Picking a Language
- Language Generations
- First Generation
- Second Generation
- Third Generation (3GL)
- Fourth Generation
- Fifth Generation
- Sixth Generation
- IDEs
- Language Families
- Assembly
- Imperative
- Procedural
- Declarative
- Object-Oriented
- Functional
- Specialized
- Language Family Summary
- The Best Language
- Summary
- What You Learned in This Chapter
- Chapter 13 Testing
- Testing Goals
- Reasons Bugs Never Die
- Diminishing Returns
- Deadlines
- Consequences
- It's Too Soon
- Usefulness
- Obsolescence
- It's Not a Bug
- It Never Ends
- It's Better Than Nothing
- Fixing Bugs Is Dangerous
- Which Bugs to Fix
- Levels of Testing
- Unit Testing.
- Integration Testing
- Regression Testing
- Automated Testing
- Component Interface Testing
- System Testing
- Acceptance Testing
- Other Testing Categories
- Testing Techniques
- Exhaustive Testing
- Black-Box Testing
- White-Box Testing
- Gray-Box Testing
- Testing Habits
- Test and Debug When Alert
- Test Your Own Code
- Have Someone Else Test Your Code
- Fix Your Own Bugs
- Think Before You Change
- Don't Believe in Magic
- See What Changed
- Fix Bugs, Not Symptoms
- Test Your Tests
- How to Fix a Bug
- Estimating Number of Bugs
- Tracking Bugs Found
- Seeding
- The Lincoln Index
- Summary
- What You Learned in This Chapter
- Chapter 14 Deployment
- Scope
- The Plan
- Cutover
- Staged Deployment
- Gradual Cutover
- Incremental Deployment
- Parallel Testing
- Deployment Tasks
- Deployment Mistakes
- Summary
- What You Learned in This Chapter
- Chapter 15 Metrics
- Wrap Party
- Defect Analysis
- Species of Bugs
- Discoverer
- Severity
- Creation Time
- Age at Fix
- Task Type
- Defect Database
- Ishikawa Diagrams
- Software Metrics
- Qualities of Good Attributes and Metrics
- Using Metrics
- Process Metrics
- Project Metrics
- Things to Measure
- Size Normalization
- Function Point Normalization
- Count Function Point Metrics
- Multiply by Complexity Factors
- Calculate Complexity Adjustment Value
- Calculate Adjusted FP
- Summary
- What You Learned in This Chapter
- Chapter 16 Maintenance
- Maintenance Costs
- Task Categories
- Perfective Tasks
- Feature Improvements
- New Features
- The Second System Effect
- Adaptive Tasks
- Corrective Tasks
- Preventive Tasks
- Clarification
- Code Reuse
- Improved Flexibility
- Bug Swarms
- Bad Programming Practices
- Individual Bugs
- Not Invented Here
- Task Execution
- Summary
- What You Learned in This Chapter.
- Part II Process Models.