Software Engineering Fundamentals: Tools, Design, and SDLC
Week 2: Build Tools, Testing, and Maintainable Code
- Maven: Build automation tool for Java.
- Dependency: External library or project used by software.
- IDE: Integrated Development Environment.
- Coding Standards: Rules for consistent, readable code.
- Unit Testing: Testing small, isolated methods or components.
- Integration Testing: Testing components working together.
- System Testing: Testing the whole application.
- TDD: Write test → fail → write code → pass → refactor.
- Javadoc: Documentation generator for
Principles of Effective User Interface Design
Command and Natural Languages
Command languages represent text-based interaction where the user types commands instead of selecting from menus.
Basic Goals of Language Design
- Precision and compactness
- Ease of writing and reading
- Fast learning and simplicity (to reduce errors)
- Easy retention
Higher-Level Goals
- Match real-world tasks and be convenient for user tasks
- Compatible with existing notation
- Flexible for both novices and experts
- Expressive and visually appealing
Programming Languages
Programming languages
Read MoreUML Modeling and Software Engineering Fundamentals
Risk Management in Project Management
Project risk management is the process that project managers use to manage potential risks that may affect a project in ways both positive and negative.
- The goal is to minimize the impact of these risks.
- Risk management is applicable to large and small projects in different ways.
- Negative risk is the type which may damage a project.
Key Modeling Concepts
- Link: A link is an instance-level connection between two objects in an object diagram, representing an association
Essential Software Testing Principles and Techniques
Fundamental Software Testing Principles
Software testing follows certain fundamental principles that help improve the effectiveness of testing.
- 1) Testing shows presence of defects: Testing can reveal defects (bugs) in the software. Example: Even after testing, some hidden bugs may remain.
- 2) Exhaustive testing is impossible: It is not possible to test all inputs, conditions, and paths. Testing is done on selected test cases.
- 3) Early testing: Testing should start as early as possible in the development
Software Testing Principles and Methodologies
Software Testing Fundamentals
Software Testing is the dynamic verification that a program provides expected behaviors on a finite set of test cases, selected from the usually infinite execution domain.
- Dynamic: Testing always means actually running the program on inputs. Static analysis (code reviews, etc.) is a separate, complementary discipline covered under Software Quality.
- Finite: You can never test everything. Even simple programs have theoretically infinite test cases. Testing is always a subset
Software Engineering Essentials: Principles and Practices
1. Fundamentals and Professional Responsibility
Software Engineering is not just about writing code; it is an engineering discipline focused on cost-effective and reliable production.
- Software Engineering vs. Computer Science: Computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.
- The Four Essential Attributes:
- Maintainability: Software should be written so that it can evolve to meet the changing needs
