💻

Understanding Software Development and Architecture

Sep 3, 2024

Lecture Notes on Software Development and Architecture

Key Points

  • Historical Context

    • Software development was seen as risky.
    • 1996 statistics:
      • 31% of US development projects failed.
      • 53% were over budget, schedule, or missing functionality.
      • Only 16% met initial expectations.
  • Waterfall Model

    • Traditional approach to software development.
    • Steps:
      1. Gather requirements from user representatives.
      2. Schedule and budget development.
      3. Hand off documentation to tech team.
      4. Integrate and test system.
    • Drawbacks:
      • Long planning and documentation cycles.
      • Mistakes revealed only at the end.
      • Difficulty in translating business requirements to technical specifics.
  • Need for New Approaches

    • Gap between project managers/analysts and engineers.
    • Engineers focus on technical puzzles, not business problems.
    • Emergence of Solution Architecture to bridge this gap.

Evolution of Software Development Practices

  • Rational Unified Process (RUP)

    • Introduced by Rational Software in 1999.
    • Suggested iterative development and re-evaluation at each phase.
  • Agile Methods

    • Modern development teams often use methods like Scrum, Lean, and Kanban.
  • Solution Architecture

    • Emerged to address communication differences in enterprise systems.
    • Architecture borrowed from construction to signify complexity.

Roles in Architecture

  1. Enterprise Architect
    • Oversees the entire corporate tech ecosystem from a business perspective.
  2. Solution Architect
    • Works with specific products to address business questions with technology.
    • Bridges enterprise and software perspectives.
  3. Software Architect
    • Specifies system structure and behavior from a technical perspective.

Requirements Gathering and Analysis

  • Requirement Types:
    • Functional Requirements: User stories related to product behavior.
    • Non-functional Requirements: General software qualities (speed, security, etc.).
  • Constraints:
    • Budget, manpower, time, licensing, and risks.
  • Role of Business Analyst:
    • Documents requirements and provides inputs to the solution architect.

Complexity of Product Integration

  • Products must fit into existing enterprise architecture.
  • Solution architects ensure compatibility with legacy systems.

Solution Architect Tasks

  • Designing resilient, performant, and secure architectures.
  • Selecting technology stacks and architectural patterns.
  • Communication is key:
    • Engage with various stakeholders to capture business processes and requirements.

Skills Required for Solution Architects

  • Technical Background:
    • Experience in engineering and complex projects.
    • Domain knowledge in specific industries (e.g., finance, healthcare).
  • Certifications:
    • AWS and Azure provide certifications for cloud architecture.
  • Soft Skills:
    • Effective communication to ensure alignment among different parties.

Impact and Effectiveness of Solution Architecture

  • Capgemini and University of Amsterdam Study (2009):
    • Solution architecture reduces budget overruns by about 19%.
    • Enhances customer satisfaction and improves technical fit.
  • Not all projects require solution architects, mainly applicable in complex projects.