Functional Analysis

Cyriel Mallart
Ludovic Deneuville
Rémi Pépin

Outline

  1. Functional Analysis
    • Definition
    • UML Diagrams
  2. Software Architecture
    • Definition
    • Separation of Responsibilities

Analyse fonctionnelle

Project

  • A need ➡️ Why are we doing it?
  • A scope ➡️ What are we going to deliver?
  • People ➡️ Who is involved?
  • Resources ➡️ What do we need?
  • Constraints ➡️ How much time? How much money?
  • Quality ➡️ What level of quality is expected?

Project Phases

  • Analysis of the needs (specifications)
  • Planning
  • Design
  • Development
  • Testing
  • Deployment
  • Maintenance

Project actors

Actor Main responsibility
Client / Sponsor Defines the objectives and validates major decisions
Product Owner / Business Represents user needs and priorities
Project Manager Coordinates scope, time, cost and risks
Functional team Translates business needs into functional requirements
Technical team Designs and implements the solution
Users Use the product and provide feedback

What is Functional Analysis?

  • First step in all projects
  • Determines the functions and actors of the product to meet client needs
  • Diagrams to communicate with the client
  • Prioritizes tasks

Questions to Ask

  • What types of users will use my application (administrator, manager, client, etc.)?
  • What are the features? Common features between profiles?
  • How do the application processes work?
  • Which diagrams should be used?

UML Diagrams

  • First-year course
  • UML 2.5, Pascal Roques, Eyrolles, Memento (ENSAI library)

Note

It is agnostic of the chosen programmation language !

A functional analysis UML diagram is its own language.

Questions?

Software Architecture

What is Software Architecture?

  • The technical counterpart of functional analysis
  • Now that we have the who and what, we determine the how
  • We design the code of our application
  • Macro vision of our application (arrangement of major components)

Why It’s Important: Parallel with Architecture

Why It’s Important: Parallel with Architecture

  • Rooms, electrical installation, water, gas, legislative constraints, adapting to the terrain…
  • Need to think about how to arrange all this from the beginning
  • If we build as we go, we risk ending up with an inconsistent house (at best)
  • This is not wasted time!

A Major Principle: Separation of Concerns

Main Layers of an Application

  • Presentation: everything related to display (web page, console, window)
  • Business: the core of your application, its added value
  • Persistence: manages data persistence. Database or file system

For Your Project

  • Presentation: Front-end
  • Business: Back-end
  • Persistence: Database

Focus on the business layer

Layers of the Business Layer 1/2

  • DAO (Data Access Object):
    • The part of your code that communicates with the database (Lecture 4/Practical 3)
  • Service:
    • Business code
    • Manipulates business objects to create information or value
    • Requests objects from the DAO layer (Practical 3)
    • Calls external web services (Practical 4)

Layers of the Business Layer 2/2

  • Business Objects:
    • Transversal layer
    • Represent business concepts that your code will manipulate
    • Objects with mostly attributes and few methods
  • Controller:
    • Retrieves user inputs
    • Returns data to be displayed

Why Separate into Layers?

  • Teamwork 🦸‍♀️🧙‍♂️👨‍💼👩‍🔬
  • Code readability 📖
  • Debugging 🐞

Limit the risk of errors when modifying code (avoid spaghetti code) 🍝

Key Takeaways

  • Spending time thinking about the different modules of an application is not a waste of time 🕵️‍♀️
  • Dividing into layers allows parallel work 🧪🧫📚
  • But we still need to think about how to code well 🤖