FM

SE Final

Chapter 6: Architectural Design

Importance of Architecture: Helps in stakeholder communication, system analysis (non-functional reqs), and large-scale reuse.

Architectural Patterns:

MVC: Separates data, view, controller; good for multi-view systems. Advantage: independent data/view changes.

Layered: Functionality in layers; allows easier replacement, but can affect performance.

Repository: Centralized data access; good for data-driven systems but a single point of failure.

Client–Server: Distributed services; servers = points of failure, performance depends on the network.

Architecture’s Impact:

Performance: localize operations

Security: layered architecture

Safety: isolate critical subsystems

Availability: redundancy

Maintainability: small, replaceable components

---

Chapter 7: Design & Implementation

Build or Buy: COTS products reduce time and cost; design focuses on configuration.

Design Process:

Object identification is hard and iterative.

Use models: static (structure) & dynamic (interactions).

Design Patterns:

Observer: sync views when data changes

Façade: simplify interfaces

Iterator: standard data access

Decorator: add behavior at runtime

Implementation Focus: Reuse, config mgmt, host-target setup

Reuse Levels: Abstraction, Object, Component, System

Licensing:

GPL: must open-source derived work

LGPL: link without open-sourcing own code

BSD: no obligation to open source

---

Chapter 8: Software Testing

Goals: Validate (meets reqs), Detect Defects

Types of Testing:

Development: unit, component, system

Release: external use readiness

User: alpha, beta, acceptance

V vs V:

Verification = "Are we building it right?"

Validation = "Are we building the right thing?"

Inspections: Static, no execution, find anomalies

Automated Testing: JUnit, etc. for fast feedback

Test Techniques:

Partitioning: group similar inputs

Guideline-based: use known bug patterns

Interface Testing: check boundaries, nulls, invalid calls

Use-case Testing: simulate real-world usage

TDD: write test first, develop to pass

Regression Testing: re-run tests after changes

---

Chapter 9: Software Evolution

Types of Maintenance:

Corrective (bugs), Adaptive (env changes), Perfective (new reqs)

Challenges:

Costs often exceed development

Staff turnover, lack of documentation, code decay

Reengineering vs Refactoring:

Reengineering = overhaul for maintainability

Refactoring = continuous improvements

Legacy System Strategies:

Scrap, Maintain, Reengineer, Replace

Maintenance Cost Factors: program age, team skill, system complexity

---

Chapter 22: Project Management

Success = On time, on budget, meets expectations, happy team

Risks:

Project (delays, staff issues)

Product (defects, tools fail)

Business (tech shift, competition)

Risk Process: Identify → Analyze → Plan → Monitor

People Management: respect, honesty, inclusion, cohesion = better teams

---

Chapter 23: Project Planning

Plan Includes:

Risk plan, validation plan, schedule, resources, etc.

Scheduling Issues:

Task breakdown, dependencies, milestones, delays

Cost Estimation:

Experience-based: judgment from past projects

COCOMO 2: empirical model

COCOMO 2 Models: application comp., early design, reuse, post-architecture

Effort & Duration:

Use formulas to estimate staff/time based on size