Introduction & History of Software Engineering

Why do software projects fail so often?

Software Processes

A software process is the application of a systematic, disciplined and quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software.
Software engineering is concerned with the cost-effective and timely development of high quality software predictably, particularly for large scale systems.

Some concepts:

Plan vs. agile processes

There are no right or wrong software processes.

Waterfall
systemrequirementssoftwarerequirementsanalysisprogramdesigncodingtestingoperations
Iterative
systemrequirementssoftwarerequirementsanalysisprogramdesigncodingtestingoperations
Spiral
spiral.png
Rational Unified Process (RUP)
rup.png

  1. The product owner gets feedback from users and defines the features and stories.
  2. The team, scrum master and product owner plan the sprint (1-4 weeks of work).
  3. Each day, the scrum master meets with the team to define the daily goals.
  4. Then, another meeting is done to grow the backlog.
  5. The T, SM, PO and C meet to review the sprint (evaluate the improvement of the product).
  6. A sprint retrospective is done to evaluate the quality of the development system (not the product).
  7. If possible, release the increment to the product
  8. Repeat from 2.

Extreme Programming
While SCRUM focuses on project management and teamwork, extreme programming focuses on code quality and individual programmers' work.

Software Verification & Validation

Typical testing stages

UML

A system model is a simplified representation of a system from a certain perspective.

Use Case Diagrams

Shows the relationships between actors (user roles or external systems) and use cases (system functionalities or services as perceived by users).

Ticketing SystemPurchaseTicketsOnlineElectronicPaymentCancelPurchasedTicketsValidadeTicket atEntrySellTicketsat theCounterChoosePlaces<<include>><<extend>>Payment GatewayCustomer<<extend>>Clerksystem boundarysystem nameactor (external system)relates a base use case and a "subroutine" use caserelates an optional extension to a base use casecommunicationassociationactor (user)use case
Documentation template:

Documentation Description
Name Name of the actor that initiates the use case.
Actor Name of the actor that initiates the use case.
Description Brief description highlighting the utility (possibly
including results and responsibilities).
Preconditions Initial conditions (usually about the initial state of
the system and actors and input parameters) to
be able to execute the use case successfully.
Postconditions Effects of use case execution, usually in the form
of outputs produced and changes in the state of
the system and actors (particularly those not
visible in the flow of events).
Normal Flow Textual description (numbered list) of the of
normal events (actions of the system and actors).
Alternative flows and exceptions Alternative or exceptional flows of events,
described in relation to the normal flow.
It can also be written as a user story: As a ... I want ... so that ...

Class Diagrams

Used to organize the vocabulary of the problem domain

ClassNamePackageNameClassPackageNotationDescriptionAssociationGeneralization (extends)DependencyAggregation (parts can exist independently of a wholeComposition (parts only exist within a whole), 0.., 1, 0..1, 1..Multiplicity{constraint}
class domain modelEventnamedescriptiondatestartTimefinishTimeticketPrice{The number oftickets sold for anevent cannotexceed itscapacity.}Roomcapacity1Seatnumber1seatsBookingbookingId {unique}bookingDateTimetotalPricepaymentInfocancellationDateTime [0..1]1bookingsTicketticketId {unique}validationTime [0..1]111..tickets<<enumeration>>PointOfSalce<<enum>>InternetTicketDesk1*

Requirements Engineering

It is the process of studying customer and user needs to arrive at a definition of system, hardware, or software requirements.

Need an ICT-based solution to reduceroad accidents under reduced visibilityconditions.business needs- The system shall be based on special purpose devicesinstalled in each vehicle.- The device shall monitor hazardous events, such asairbag inflation events.- The device shall broadcast corresponding geo-referenced radio alerts.- The device shall receive radio alerts sent from nearbyvehicles and alert the driver as appropriate.system requirementsrequirements engineering
Types of Requirements:

Definitions of quality characteristics

Stakeholders are the main sources of requirements: people who will be affected by the system and who have a direct or indirect influence on the elaboration of requirements.

User Stories

Lightweight way to record a software need, with just enough information (for prioritization, planning, and initiating conversations).

INVEST:

Acceptance Tests

Test cases defined for customers to decide if a system or feature implementation can be accepted (i.e., satisfies requirements and expectations).

A common format is that of Behavior-Driven-Development (BDD), which are test scenarios specifying expected system behaviors according to the template:

VUCA World

SCRUM

SCRUMArtifactsProductBacklogSprintBacklogBurndownChartsRolesProductOwnerScrumMasterTeamMeetingsSprintPlanningDailyMeetingSprintReview
scrum.png

Team

Scrum Master

Product Owner

TeamCapacityProductBacklogBusinessConditionsCurrent ProductTechnologySprint Planning Meeting- Analyze and evaluate productbacklog- Select sprint goalSprint priorization- Decide how to achieve sprint goal(design)- Create sprint backlog (tasks)from product backlog items (userstories / features)- Estimate sprint backlog in hoursSprint PlanningSprintGoalSprintBacklog

eXtreme Programming (XP)

Twelve XP Practices

Fine-scale feedback