INF3705
Assignment 2
DUE 6 September 2024
, Introduction
The questions presented encompass a broad spectrum of software engineering principles and
practices essential for the successful development and maintenance of software systems. From
examining the intricacies of software testing methodologies to exploring the strategic options for
legacy system evolution, each query delves into critical aspects of the software engineering
domain. As the Software Engineering Manager within an organization, addressing these
questions necessitates a comprehensive understanding and application of fundamental concept
taught in courses like INF3705. Concepts such as requirements engineering, software design,
testing, and maintenance emerge as pivotal pillars guiding the endeavors of software engineerin
teams. By harnessing these concepts effectively, teams can navigate the complexities of system
construction, evolution, and management, ensuring the delivery of robust and reliable software
solutions that meet the ever-evolving needs of stakeholders and users.
In pursuit of excellence in software engineering endeavors, it is imperative to dissect and analyz
each question with a disciplined and methodical approach. The inquiry into fault-tolerant
architectures or the intricacies of system construction by composition demands a meticulous
examination of underlying principles, methodologies, and best practices. As the custodian of
software engineering teams, leveraging insights gleaned from courses like INF3705 becomes
imperative in fostering a culture of innovation, collaboration, and excellence. Through the diligen
application of software engineering concepts, teams can navigate the challenges posed by
system evolution, mitigate risks, and deliver software solutions that stand the test of time.
, Question 1 [15 marks]
Explain the difference between Development testing
and Test-driven development.
Development Testing:
Definition: Development testing is a process where developers test individual units or components of software
during the development phase to ensure they function correctly.
Timing: It typically occurs after coding but before integration and system testing.
Approach: Developers write tests to verify the behavior of their code, including edge cases and expected
outcomes.
Purpose: Its primary aim is to catch defects early in the development process, reducing the cost of fixing them
later.
Test-driven Development (TDD):
Definition: Test-driven development is a software development approach where tests are written before the cod
is implemented.
Timing: Tests are written before writing the code, following a "Red-Green-Refactor" cycle.
Approach: Developers start by writing a failing test (Red), then implement the code to make the test pass
(Green), and finally refactor the code to improve its design while ensuring all tests still pass.
Purpose: TDD aims to improve code quality, maintainability, and design by focusing on small, testable units of
code.
Question 2 [9 marks]
What are the strategic options for legacy system evolution? When would
you normally replace all or
part of a system rather than continue maintenance of the software?
.Strategic Options:
●
Reengineering: Rewriting or restructuring the existing system to improve its maintainability, scalability, or
functionality.
●
Integration: Integrating legacy systems with newer technologies or platforms to extend their lifespan and
enhance their capabilities.
●
Migration: Moving parts of the legacy system to modern architectures or platforms, such as cloud-based
solutions.
●
Componentization: Breaking down the monolithic legacy system into modular components for easier
maintenance and updates.
●
Maintenance: Continuously maintaining and updating the existing system to meet changing business needs.
When to Replace:
●
Obsolete Technology: When the technology stack of the legacy system becomes outdated and unsupported.
●
Scalability Issues: When the system struggles to handle increasing loads or fails to adapt to changing busine
requirements.
●
Security Risks: If the system poses significant security vulnerabilities that cannot be adequately mitigated.
●
Cost of Maintenance: When the cost of maintaining the system outweighs the benefits it provides.
●
Competitive Advantage: If replacing the system with modern alternatives offers a competitive advantage in th
market.