[L12][18/11/2025][S1 2025-26] SE440 Software Project Management
Overview of Software Engineering Knowledge Areas
Recap of Previous Lecture
- The lecture began with a recap of the previous session, focusing on knowledge areas as per the SWEBOK version 3, which has been updated to version 4 in 2024.
- Mentioned that project management is now categorized under area number 9 in version 4, previously area number 7 in version 3.
Software Requirements
- Discussed five categories of software requirements, differentiating between functional and non-functional requirements.
- Introduced a new classification system for requirements that separates functional and non-functional aspects more clearly.
Software Design Fundamentals
Introduction to Design Knowledge Area
- Transitioned to discussing design knowledge area, emphasizing the importance of fundamental principles in software design.
- Highlighted that software design processes include various principles but did not delve deeply into them due to course focus.
Key Considerations in Software Design
- Addressed concurrency issues when designing systems for multi-core or multi-threading environments.
- Emphasized data persistence and error handling as critical components during the design phase.
Security and Architecture
Security as a Separate Knowledge Area
- Noted that security has become its own knowledge area in version 4, highlighting its significance within software design.
Architectural Styles and Frameworks
- Discussed architectural styles relevant to software design including various frameworks that should be considered during development.
Interface Design and Quality Evaluation
User Interface Considerations
- Stressed the importance of interface design across different types of systems, ensuring appropriate selection based on system needs.
Quality Analysis Methods
- Mentioned quality analysis evaluations as essential factors when assessing designs before implementation.
Software Construction Overview
Definition and Importance
- Defined software construction as the process following design where coding, verification, validation, and testing occur.
Fundamental Principles for Construction
- Suggested minimizing complexity during construction by simplifying systems while managing change requests effectively.
Software Construction and Reusability
Importance of Flexibility in Software Development
- Emphasizes the need for software products to be flexible, allowing for modifications and reusability. This flexibility enables components to be used in different systems or projects.
Verification Process in Software Construction
- Highlights the importance of making verification tasks easy for those checking the construction quality, ensuring that materials like bricks and wood are correctly measured and verified.
Reusability Concepts
- Discusses the concept of "Construction for Reuse," which allows parts of a software system to be utilized in new systems, enhancing efficiency through component reuse.
Quality Assurance During Construction
- Stresses maintaining high-quality standards during construction, focusing on performance, availability, scalability, and other quality factors while integrating various components.
Decomposition in Project Management
- Introduces the idea of decomposition as a method to break down requirements into smaller problems. This process helps identify interrelations among smaller issues until they can be managed effectively.
Testing Strategies in Software Development
Testing Objectives
- Outlines that testing aims to verify whether all functions within the software system operate correctly according to specifications.
Functional vs Non-functional Testing
- Differentiates between functional testing (checking specific functionalities) and non-functional testing (assessing performance metrics), emphasizing their significance in overall quality assurance.
Performance Measurement Techniques
- Discusses how performance is evaluated based on acceptability criteria that may vary across different customers or contexts, using banking ATM examples for illustration.
Maintenance Challenges and Strategies
Maintenance Considerations
- Addresses maintenance as a critical phase following deployment. It involves ongoing updates and addressing issues that arise during operation.
Cost Implications of Maintenance
- Notes that frequent maintenance increases costs over time. The discussion includes strategies for managing these costs effectively while ensuring system reliability.
Technical Issues Management
- Explores how technical challenges must be addressed proactively by management when software issues occur, including communication with development teams about necessary fixes or updates.
Engineering Practices: Reverse Engineering & Migration
Understanding Reverse Engineering
- Defines reverse engineering as a process where existing systems are analyzed for redevelopment purposes. Documentation plays a crucial role here.
System Retirement Considerations
- Discusses scenarios where older systems become obsolete due to advancements; such systems should be archived rather than maintained indefinitely.
This structured approach provides clarity on key concepts discussed throughout the transcript while linking back to specific timestamps for further exploration.
Understanding System Design and Engineering
Overview of System Documentation and Code
- The speaker emphasizes the importance of having all necessary documentation, design sheets, statistics, and source code readily available on the server for system modifications.
- The term "re-engineering" is introduced, highlighting the process of identifying where to make changes in both design and code based on existing documentation.
Reverse Engineering Process
- In cases where no source code or documentation exists, reverse engineering becomes essential. This involves analyzing an executable to understand its structure and functionality.
- The speaker discusses how reverse engineering can help recreate forms and models from an existing system by examining calculations and middleware.
Creating New Documentation
- Through reverse engineering, new documentation and source code can be generated that matches the lost originals. This allows for further re-engineering efforts.
- Once new source code is established, it can be modified to create a new version of the system.
Migration vs Integration vs Installation
Definitions of Key Terms
- Migration refers to transferring data between systems; integration involves combining components into a cohesive whole; installation is setting up a system.
- The speaker explains that migration may involve breaking down problems into smaller components before integrating them into a new system.
Data Migration Challenges
- When developing or modifying systems, data migration must account for potential changes in database structures between old and new versions.
- An example illustrates how names stored in different formats (e.g., full name vs. split fields for first name, last name) complicate data migration processes.
Data Handling Considerations
Splitting Data Fields
- During migration, care must be taken when splitting names into separate fields due to variations in naming conventions (e.g., compound names).
- The speaker highlights the need for thorough cleaning of data before migration to avoid issues with duplicate spaces or incorrect formatting.
Importance of Clean Data
- Proper handling during migration ensures that data integrity is maintained; any errors could undermine the benefits gained from system upgrades.
- A comprehensive understanding of potential exceptions in data formats is crucial for successful migrations.
The Complexity of Data Migration
Challenges Faced During Migration
- The discussion concludes with an acknowledgment that data migration is complex; if not handled correctly, it can lead to significant issues within newly developed systems.