Ingenieria de Software
Ingenieria de Software
Ingenieria de Software
• ¿ Q u e e s l a i n g e n i e r í a d e s of t w a re ?
• ¿ C u a l e s l a d i f e re n c i a e n t re P ro g r a m a d o r
d e S of t w a re , D e s a r ro l l a d o r d e S of t w a re e
I n g e n i e ro d e S of t w a re ?
I n g e n i e r í a d e S o f t w a re
• Evaluación del proyecto
• Gestión de la Configuración
• Aseguramiento de la Calidad
• Gestión de la Seguridad de la Información
• …
Desarrollo de Software
• Análisis
• Diseño
Programación
• Codificación
• Pruebas
• Implementación
• Mantenimiento
Assessment
Implementation and
Life Cycle Processes Assessment Characteristics
42010 And
42030 Systems Engineering Software Engineering Certification
9001 Architecture
Quality System
15288 12207 15504 9126
330xx 14598
38500 24748-2 24748-3 14756
Governance 29169 Software Quality
15289 Process
26511 24748-4 Assessment
16337
19759 3535, 5806 14102, 14471 10746, 13235, 14750 8807, 15437 14568
Tools and
BOK
Methods
5807, 8631 15940, 18018 14752, 14753, 14769 15909, 19501 15474
24773 8790, 11411 23026, 24766 14771, 15414, 19500 19505, 19793 15475
29154 12182, 14759 26500, 26501 19770-2, 19770-3 24744, 19505 15476
Cerification
SC7 Legacy Standards Tools, Methods and
Envirinment 19770-6, 19770-7 19507 19506
Specification Modeling Interchange
12207.0
1. Scope
2. References
3. Definitions
4. Application
5. Primary processes
6. Supporting processes
7. Organizational processes
Annexes A - D
Annexes E - J
12207.2
https://www.dote.osd.mil/Portals/97/docs/TEMPGuide/IEEE_EIA_12207.2_1997.pdf
/ Procesos de apoyo
5.1. Acquisition / Adquisición
6.1. Documentation / Documentación
5.2. Supply / Suministro
6.2. Configuration Management /
5.4. Operation / Gestión de la configuración
5.3. Development Operación
/ Desarrollo 6.3. Quality Assurnce / Aseguramiento
5.5. Maintenance /
Mantenimiento de la calidad
5.1.2. Request-for-proposal Preparation / Preparación de solicitud de propuesta 5.2.2. Preparation of response / Preparación de respuesta
5.3.4. Software requirements design 5.3.9. Software qualification testing 5.5.2. Problem and modification analysis
https://www.dote.osd.mil/Portals/97/docs/TEMPGuide/IEEE_EIA_12207.2_1997.pdf
/ Procesos de apoyo
5.1. Acquisition / Adquisición
6.1. Documentation / Documentación
5.2. Supply / Suministro
6.2. Configuration Management /
5.4. Operation / Gestión de la configuración
5.3. Development Operación
/ Desarrollo 6.3. Quality Assurnce / Aseguramiento
5.5. Maintenance /
Mantenimiento de la calidad
5.1.2. Request-for-proposal Preparation / Preparación de solicitud de propuesta 5.2.2. Preparation of response / Preparación de respuesta
5.3.4. Software requirements design 5.3.9. Software qualification testing 5.5.2. Problem and modification analysis
5.1.2. Request-for-proposal Preparation / Preparación de solicitud de propuesta 5.2.2. Preparation of response / Preparación de respuesta
5.3.4. Software requirements design 5.3.9. Software qualification testing 5.5.2. Problem and modification analysis
HACER la solución
Pruebas de software en busca de:
• Errores | Mal funcionamiento | Situaciones no deseadas
5.1.2. Request-for-proposal Preparation / Preparación de solicitud de propuesta 5.2.2. Preparation of response / Preparación de respuesta
5.3.4. Software requirements design 5.3.9. Software qualification testing 5.5.2. Problem and modification analysis
Poner en operación
5.1.2. Request-for-proposal Preparation / Preparación de solicitud de propuesta 5.2.2. Preparation of response / Preparación de respuesta
5.3.4. Software requirements design 5.3.9. Software qualification testing 5.5.2. Problem and modification analysis
Evaluación y evolución
\> cd Project
Restore succeeded.
Data /
Processes
MACRO
POINT
TA
Enterprise Architecture
Architecture
DETAILED
Applications
Technical
TA
Infraestructure
EA
EA Enterprise
System
Abstract
POINT
TA Technical
DETAILED
Software
Architecture
Software Design Patterns
Detail
4+1 Model
using System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hola mundo");
_ ÿ X
Hola mundo
}
}
}
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Variables
VS Code | .Net Core | Consola
int edad;
edad
edad = 19;
edad
edad;
edad
tipo
type int edad = 19;
identificador
edad identifier
x y
namespace p01
{
class Program
{
static void Main(string[] args)
{
double l = 5;
A = Mat.Pow ( l , 2 )
double P = 4 * l;
Costo
y
Productividad Tiempo
INTEGRADO
actividades en las fases iniciales
SUPERIOR
1. Análisis
JUEGO DE HERRAMIENTAS
3. Desarrollo
También llamadas workbench,
4. Pruebas
apoyan en actividades y
INFERIOR
5. Implementación
6. Mantenimiento
Automatización y soporte de las
actividades dirigidas a las ultimas
fases desarrollo
U-CASE
I-CASE
2. Diseño
3. Desarrollo
L-CASE
4. Pruebas
5. Implementación
6. Mantenimiento
Ejercicio
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Program.cs
x y
Mat.Pow
Garlan
Se encarga de la coherencia de toda la solución en todos los aspectos y
actividades la organización. Se encarga de garantizar la integridad técnica y la
coherencia de la solución en cada etapa de su ciclo de vida.
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Estilos arquitectónicos
Structure Deployment Communication Domain
Component Tier
SOA BDD
- Based Architecture
1 Tier
SDK Monolithic REST TDD
1960-1970
Pipes - N-Tiers
2000 Peer to Peer Onion
Filters
Broker Clean
https://docs.microsoft.com/es-mx/previous-versions/msp-n-
p/ee658117(v=pandp.10)?redirectedfrom=MSDN
Response
(Bussines Logic): Contiene las reglas de
Request
Ejercicio
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
User
Mobile Interface
Web
System Test
CLI
Integration Test
Application Unit Test
DB
Infrastructure Files
Equipo 0
𝑨𝑨 = 𝑙𝑙 2
l 𝑷𝑷 = 4𝑙𝑙
Cuadrado
Monolithic application
P2P - Peer-to-peer
Client-server
Microservices
UI UI UI UI
UI UI UI UI BL UI UI BL
UI DA BL DA BL DA BL DA BL
DA DA
DA BL
UI UI BL SE SE
SE
DA
DA BL DA BL DA DA
DA
SE SE SE SE
DA DA DA DA
Client-server
• SCA Input
Sensor-Controller-Actuator
• MVP
Model–View–Presenter MVC MVVM
• MVC
Model-View-Controller
Input
• MVVM
Model–View–ViewModel
• MVPVM Input
Model-View-Presenter-ViewModel
Arquitectura
• REST
Representational State Rransfer MVP - PM MVP - SC
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Technical Architecture TA
• Arquitectura Técnica
Responsable del diseño a nivel de código, como lo que hace cada módulo, el alcance de
las clases y los propósitos de las funciones.
https://www.youtube.com/watch?v=K902i_tsXl0
Valor 1
múltiples hilos, si dos hilos de ejecución class Program
intentan crear la instancia al mismo {
tiempo y esta no existe todavía, solo static void Main(string[] args)
{
uno de ellos debe lograr crear el objeto. Clase c1 = new Clase(); Clase c2
c1.atributo = "Valor 1";
Ejemplo: acceso a un recurso físico único Valor 2
(como el ratón o un archivo abierto) o Clase c2 = new Clase();
c2.atributo = "Valor 2";
cuando cierto tipo de datos debe estar
disponible para todos. Console.WriteLine("Clase 1: " + c1.atributo);
Console.WriteLine("Clase 2: " + c2.atributo);
}
}
//Clase 1: Valor 1
//Clase 2: Valor 2
private Clase() { }
}
}
Clase
} Valor 2
class Program
{
static void Main(string[] args)
{
Clase c1 = Clase.Instance;
c1.atributo = "Valor 1";
Clase c2 = Clase.Instance;
c2.atributo = "Valor 2";
https://www.youtube.com/watch?v=K902i_tsXl0
class Concret : Clase
{
de solicitar una copia, que será override public Clase Clone()
desarrollada luego por las clases {
// Copia superficial
concretas de prototipos. return (Clase)this.MemberwiseClone();
}
}
• Ejemplo: en un editor gráfico, se
pueden crear copias de algún
class Program
{
rectángulo, círculos u otros, en ese static void Main(string[] args)
{
caso, son clonados y el nuevo objeto Concret c1 = new Concret();
12207.0
1. Scope
2. References
3. Definitions
4. Application
5. Primary processes
6. Supporting processes
7. Organizational processes
Annexes A - D
Annexes E - J
12207.2
6.2.4. Configuration status accounting 6.2.5. Configuration evaluation 6.1.6. Release management and delivery
Nueva Elemento
versión versionado
Elemento Nueva
versionado versión
Aseguramiento de la Calidad QA
12207.0
1. Scope
2. References
3. Definitions
4. Application
5. Primary processes
6. Supporting processes
7. Organizational processes
Annexes A - D
Annexes E - J
12207.2
6.2.4. Configuration status accounting 6.2.5. Configuration evaluation 6.1.6. Release management and delivery
Instituto de Ingenieros
cliente a un costo y en un tiempo aceptable
revisiones
Esfuer zo realizado, con y sin
usuarios.
• Una parte de las pruebas las realizan los programadores; otra junto con los analistas.
• Los planes de prueba se crean en las primeras etapas del SDLC y se refinan a medida
que el proyecto progresa.
Without
inspections
With
Pressman
inspections
QA
Pressman
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Mejora Continua de la Calidad del software
Q C / Q A / TQ M
La mejora continua de la calidad es uno de los 8 principios de la gestión de la calidad dice que
“la mejora continua del desempeño global de la organización debería ser un objetivo
permanente de ésta” (ISO 9000).
El objetivo no es alcanzar una calidad perfecta, sino la necesaria y
suficiente para cumplir con las necesidades reales del usuario.
Los modelos de calidad:
• QC / Calidad a nivel de producto
Está orientado a verificar el cumplimiento de los requisitos que permitan alcanzar la
satisfacción del cliente definidos en las etapas iniciales.
• QA / Calidad a nivel de proceso
La calidad debe ser programada desde el inicio, y posteriormente en cada fase del desarrollo,
controlar y dar seguimiento a los aspectos de la calidad.
• QM / Calidad a nivel de sistema
Esta orientada a la gestión y en el Servicio.
4
PA. 4.2 Se miden los procesos estándar usando técnicas cuantitativas.
PA. 4.1 Se controlan los procesos estándar. Nivel
Predecible
3
PA. 3.2 Se utilizan los procesos estándar.
PA. 3.1 Se tienen procesos estándar.
Nivel
Establecido
Nivel 2
Gestionado
PA. 2.2 Se establecen, controlan y mantienen los procesos.
1
PA. 2.1 Se gestiona la realización del procesos.
Nivel
PA. 1.1 Existe evidencia de la realización de procesos. Realizado
Nivel 0
Incompleto
Risk
Quality
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
CMMI
Capability Maturity Model Integration
Modelos de calidad a nivel de proceso
Predecible
Consistente
5
4
Disciplinado
Optimizado
3 Medible
2
1
Definido
Administrado
Initial
Probability of success
Probability of success
Probability of success
Probability of success
Time Time Time Time Time
1 Performed Initial
2 Managed Repeated
3 Established Defined
4 Predictable Managed
5 Optimizing Optimizing
QC
Phases
Testing
QA
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Gestión de la Calidad
Calidad a nivel de sistema
Continuous
Improvement
ISO 20000 permite verificar si una organización está cumpliendo con las prácticas propuestas por ITIL
ITIL
Corporate
Gobernance of IT
Evaluate
Direct Monitor
Proposals
Plans Policies Performance
Conformance
Business Processes
IT Projects IT Operations
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hola mundo");
Hola mundo
}
}
}
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Variables
VS Code | .Net Core | Consola
int edad;
edad = 19;
edad;
value
identifier
Cuadrado
x
namespace ConsoleUI
{
class Program
{
static void Main(string[] args)
{
double l = 5;
A = Mat.Pow ( l , 2 )
double P = 4 * l;
namespace ConsoleUI
{
class Program
{
static void Main(string[] args)
{
}
}
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Program.cs
using System;
namespace ConsoleUI
{
class Program
{
static void Main(string[] args)
{
}
}
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Program.cs
using System;
namespace ConsoleUI
{
class Program
{
static void Main(string[] args)
{
//Cadena
String cadena = Console.ReadLine();
//Entero
int entero = Convert.ToInt32(Console.ReadLine());
//Double Juan
double flotante = Convert.ToDouble(Console.ReadLine()); 32
//Booleano 12.5
bool booleano = Convert.ToBoolean(Console.ReadLine());
true
Console.WriteLine(cadena);
Console.WriteLine(entero);
Console.WriteLine(flotante);
Console.WriteLine(booleano);
}
}
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Git
Sof tware de control de ver siones
distribuido, pensando en la eficiencia y
la confiabilidad del mantenimiento de
ver siones de código fuente.
Descentralizado
Centralizado -
sincronizan su trabajo con él. repositorios remotos y locales.
fetch clone
rebase
commit add
cd Project
\Project dotnet new console
The template "Console Application" was created successfully.
Processing post-creation actions...
Running 'dotnet restore' on Program\Program.csproj...
Determinando los proyectos que se van a restaurar...
Se ha restaurado C:\Users\juan_\Project\Program\Program.csproj (en 75 ms).
\Project code . Restore succeeded.
commit add
git pull
add commit
<<<<<<< HEAD
En el repo local.
=======
En el repo remoto.
>>>>>>>
git add .
git commit -m "Fix"
git push
git branch
luis/fix01
* main
12207.0
1. Scope
2. References
3. Definitions
4. Application
5. Primary processes
6. Supporting processes
7. Organizational processes
Annexes A - D
Annexes E - J
12207.2
https://www.dote.osd.mil/Portals/97/docs/TEMPGuide/IEEE_EIA_12207.2_1997.pdf
/ Procesos de apoyo
5.1. Acquisition / Adquisición
6.1. Documentation / Documentación
5.2. Supply / Suministro
6.2. Configuration Management /
5.4. Operation / Gestión de la configuración
5.3. Development Operación
/ Desarrollo 6.3. Quality Assurnce / Aseguramiento
5.5. Maintenance /
Mantenimiento de la calidad
https://www.dote.osd.mil/Portals/97/docs/TEMPGuide/IEEE_EIA_12207.2_1997.pdf
/ Procesos de apoyo
5.1. Acquisition / Adquisición
6.1. Documentation / Documentación
5.2. Supply / Suministro
6.2. Configuration Management /
5.4. Operation / Gestión de la configuración
5.3. Development Operación
/ Desarrollo 6.3. Quality Assurnce / Aseguramiento
5.5. Maintenance /
Mantenimiento de la calidad
6.2.4. Configuration status accounting 6.2.5. Configuration evaluation 6.1.6. Release management and delivery
6.2.4. Configuration status accounting 6.2.5. Configuration evaluation 6.1.6. Release management and delivery
Assessment
Implementation and
Life Cycle Processes Assessment Characteristics
42010 And
42030 Systems Engineering Software Engineering Certification
9001 Architecture
Quality System
15288 12207 15504 9126
330xx 14598
38500 24748-2 24748-3 29169 14756
Software Quality
Governance Process
15289 Assessment
26511 24748-4
26512 90005 19770-1 25000
Fundation 26513 90003 Series
19770-5 Software Quality
26514 19770-8 SQuaRE
24765 26515 24748-1 29110 Asset
Vocabulary Documentation Management
Life Cycle Management Very Small Entities
14143
24774 IT Service 19761
Process
Description
29148 29119 14764 Management 20926
Requirements Testing Software Manintenance 20968
20000 24570
BOK 16326 15026, 16085 15939, 29155 29881
and Prject Management Risk and Integrity Measurement 90006 Software Functional
Size Measurement
Professionalization
16337
19759 3535, 5806 14102, 14471 10746, 13235, 14750 8807, 15437 14568
Tools and
BOK
Methods
5807, 8631 15940, 18018 14752, 14753, 14769 15909, 19501 15474
24773 8790, 11411 23026, 24766 14771, 15414, 19500 19505, 19793 15475
29154 12182, 14759 26500, 26501 19770-2, 19770-3 24744, 19505 15476
Cerification
SC7 Legacy Standards Tools, Methods and
Envirinment 19770-6, 19770-7 19507 19506
Specification Modeling Interchange
Operations
Acceptance
Problem Analisys and
(User)
Maintenance
System
Design
(Version)
SDLC STLC
Integration
Build
Unit
Acceptance
(User)
System
(Version)
STLC
Integration
Unit
Pruebas Beta
Pruebas Beta Test Pruebas de
Automatizadas Usabilidad
Automated Testing Usability Test
Pressman
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Prueba de unidad
• La técnica de Casos de Prueba generados a partir del Caso de Uso (ó Historia
de Usuario) se diseñan para descubrir errores debidos a cálculos erróneos,
comparaciones incorrectas o flujo de control inadecuado.
• La técnica de prueba de Caja Negra es utilizada para realizar pruebas
funcionales enfocadas solamente en las entradas y salidas del sistema del
sistema sin tomar en cuenta la estructura interna de código.
Pressman
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Pruebas de integración
Verificar el software en su conjunto probando sus interfaces.
Entrada
Real
Salida
Pressman
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Pruebas de integración
• La técnica de Prueba de regresión es toda prueba que intenta descubrir
errores (bugs) o mal funcionamiento con respecto al esperado, causados
por la realización de un cambio en el programa.
• La técnica de Prueba de humo es diseñada como un mecanismo de ritmo
para proyectos críticos en el tiempo para exponer los errores “paralizantes”
que evitarán a la construcción realizar adecuadamente su función y que
tengan la mayor probabilidad de retrasar el proyecto. La construcción se
integra con otras construcciones, y todo el producto (en su forma actual) se
somete a prueba de humo diariamente.
Pressman
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Pruebas de sistema
Verifica y valida mediante la integración de componentes para crear una versión del sistema
y, luego, poner a prueba el sistema integrado.
Gold
https://docs.microsoft.com/es-mx/aspnet/core/test/razor-pages-tests
• Base de datos
• Canalización de solicitud-respuesta
• Sistema de archivos
• Aplicaciones de red
Pa t r ó n Ar r a n ge - Act - As s er t
Set up
Act: Actuar en un objeto. prerequisites If
Assert: Afirmar si algo es como se esperaba. Any
Arrange Data
using Xunit;
Unit Text
// Act – Perform
var act = arrange.Sum(5, 5);
Verify the Test
// Assert – Verify
Assert.Equal(10, act);
Assess the Test
}
}
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
Fa c t s - T h e o r i e s
Facts: Pruebas siempre ciertas (condiciones invariantes).
Theories: Pruebas solo ciertas para un conjunto de datos.
Facts Theories
using Xunit; using Xunit;
CLI
Application
Infrastructure
Infrastructure
// Act – Perform
var act = calculator.Sum(5, 5);
// Assert – Verify
Assert.Equal(arrange, act);
}
}
}
namespace Program.Unit.Tests
{
public class CalculatorTests
{
[Theory]
[InlineData(-1, 2, 1)]
[InlineData(0, 4, 4)]
[InlineData(1, 30, 31)]
public void Calculator_Sum_Success(int n1, int n2, int res)
{
// Arrange – Set up
var arrange = res;
var calculator = new Calculator();
// Act – Perform
var act = calculator.Sum(n1, n2);
// Assert – Verify
Assert.Equal(arrange, act);
}
}
}
<p>
Lorem ipsum dolor sit amet,
Lorem ipsum dolor sit amet, consectetur consectetur adipiscing elit. Proin at
<strong>adipiscing</strong> elit. Proin
at consectetur odio.<br/>Praesent
consectetur odio.
iaculis tincidunt <em>urna</em>, eget Praesent iaculis tincidunt urna, eget
pellentesque justo tempus vitae.
</p>
pellentesque justo tempus vitae.
<img src="//placehold.jp/24/cc9999/993333
/150x100.png">
<form>
First name:
<input type="text" name="fname">
<br>
Last name:
<input type="text" name="lname">
<br>
<br>
<button>Submit</button>
</form>
https://gist.github.com/jyacomp/c07a55fac8b0d7e79b3a36e2126cae05
namespace WebUI
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages();
// endpoints.MapGet("/", async context =>
// {
// await context.Response.WriteAsync("Hello World!");
// });
});
}
}
}
ConsoleUI @functions
Program.cs {
double perimetro;
double area;
WebUI
public void OnPost(double lado)
Index.cshtml
{
Startup.cs area = Cuadrado.CalcularArea(lado);
perimetro = Cuadrado.CalcularPerimetro(lado);
}
Application.UnitTest }
UnitTestCuadrado.cs
<h1>
Calculadora de Área y Perímetro del Cuadrado
</h1>
<form method="POST">
Dame el lado: <input type="number" name="lado" step="0.01">
<br />
<button>Calcular</button>
</form>
<p>
Área: @(area)cm2<br />Perímetro: @(perimetro)cm
</p>
Application.UnitTest
UnitTestCuadrado.cs
// Act – Perform
Application.UnitTest double resultado = PrismaCuadrangular.CalcularVolumen(area, altura);
UnitTestCuadrado.cs
UnitTestPrismaCuadrangular.cs // Assert – Verify
Assert.Equal(resultado, volumen);
}
}
}
perimetro = Cuadrado.CalcularPerimetro(lado);
area = Cuadrado.CalcularArea(lado);
<h1>
Calculadora de Área y Perímetro del Cuadrado
</h1>
<form method="Post">
Dame el lado: <input type="number" name="lado" step="0.01">
<br />
Dame la altura: <input type="number" name="altura" step="0.01">
<br />
<button>Calcular</button>
</form>
<p>
Área: @(area)cm2<br />Perímetro: @(perimetro)cm<br />Volumen: @(volumen)cm3
</p>
Application
Infrastructure
https://gist.github.com/jyacomp/40f598667feb7bfd20a564dc18b44176
Sof tware
2ª par te del Proyecto de
Tests
Todos los integrantes
using System;
namespace Program
{
menos un commit
double p = cal.Perimetro(8.5);
Console.WriteLine("P: " + p);
double a = cal.Area(8.5);
Documento.pdf
Console.WriteLine("A: " + a);
Metería:
}
}
}
Tema:
Integrantes:
Equipo:
Fecha:
Git*:
Git
src test
https://gist.github.com/jyacomp/92ddd3ef58d12cf8362c28f38d30bef0
https://d3vsoft-my.sharepoint.com/:w:/g/personal/luis_edu_d3v_mx/EXW4KWE3EIBKulxsYpBfeZIBl3nTNW3i2q5liUW6O2QHiA
Application
Infrastructure
https://gist.github.com/jyacomp/015b4768662c5756293529214b752053
ConsoleUI
Program.cs
WebUI
Index.cshtml
Privacy.cshtml
Startup.cs
Application.UnitTest
UnitTestCuadrado.cs
UnitTestPrismaCuadrangular.cs
Application.IntegrationTest
IntegrationTestApplication.cs
WebUI.IntegrationTest
IntegrationTestPages.cs
ConsoleUI
Program.cs
WebUI
Index.cshtml
Privacy.cshtml
Startup.cs
Application.UnitTest
UnitTestCuadrado.cs
UnitTestPrismaCuadrangular.cs
Application.IntegrationTest
IntegrationTestApplication.cs
WebUI.IntegrationTest
IntegrationTestPages.cs
ConsoleUI
Program.cs
WebUI
Index.cshtml
Privacy.cshtml
Startup.cs
Application.UnitTest
UnitTestCuadrado.cs
UnitTestPrismaCuadrangular.cs
Application.IntegrationTest
IntegrationTestApplication.cs
WebUI.IntegrationTest
IntegrationTestPages.cs
CALIDAD EN EL PRODUCTO
PRODUCTO • ISO 9126 Software Engineering – Product Quality
• ISO 14598 Software Product Evaluation
• ISO 25000 (SQuaRE) Product Quality & Evaluation
CALIDAD EN EL PRODUCTO
PRODUCTO • ISO 9126 Software Engineering – Product Quality
• ISO 14598 Software Product Evaluation
• ISO 25000 Product Quality & Evaluation
SEGURIDAD
CALIDAD EN VARIABLES
• ISO 27001, SGSI Security Manamen
Análisis e Interpretación
recursos, desde diferentes puntos de vista.
Basada en analogía Modelo de estimación formal ANGEL, Weighted Micro Function Points
Modelos paramétricos Modelo de estimación formal COCOMO, SLIM, SEER-SEM, TruePlanning for Software
• Una funcionalidad puede variar sus SLOC dependiendo del lenguaje de programación
• Las SLOC varían entre deferentes desarrolladores (mas eficientes que otros) definiéndose :
• Physical line of code LOC
• Logical lines of code LLOC
for (i = 0; i < 100; i++) printf("hello"); /* How many lines of code is this? */
Assessment
Implementation and
Life Cycle Processes Assessment Characteristics
42010 And
42030 Systems Engineering Software Engineering Certification
9001 Architecture
Quality System
15288 12207 15504 9126
330xx 14598
38500 24748-2 24748-3 29169 14756
Software Quality
Governance
15289 Process
Assessment
26511 24748-4
26512 90005 19770-1 25000
Fundation 26513 90003 Series
19770-5 Software Quality
26514 19770-8 SQuaRE
24765 26515 24748-1 29110 Asset
Vocabulary Documentation Management
Life Cycle Management Very Small Entities
16337
19759 3535, 5806 14102, 14471 10746, 13235, 14750 8807, 15437 14568
Tools and
BOK
Methods
5807, 8631 15940, 18018 14752, 14753, 14769 15909, 19501 15474
24773 8790, 11411 23026, 24766 14771, 15414, 19500 19505, 19793 15475
29154 12182, 14759 26500, 26501 19770-2, 19770-3 24744, 19505 15476
Cerification
SC7 Legacy Standards Tools, Methods and
Envirinment 19770-6, 19770-7 19507 19506
Specification Modeling Interchange
FPA = PFNA * FA
FA = 0.65 + (0.01 * SVA)
Complejidad
Descripción Cuenta Total
Simple Medio Complejo
Entradas Externas (EI) x3 x4 x6
Salidas Externas (EO) x4 x5 x7
Numero de Consultas Externas (EIN) x3 x4 x6
Ficheros Internos Lógicos (ILF) x7 x 10 x 15
Ficheros Externos Lógicos (ELF) x5 x7 x 10
Puntos de Función No Ajustados (PFNA)
Juan Luis Carrillo Garcia | j u a n _ ca r r i l l og @ my. u ni te c. e d u. mx | @ jyacomp | linkedin.com/in/jlcarrillog/
IFPUG - ISO/IEC 20926
Atributos Influencia
1 Comunicación de datos
2 Funciones distribuidas
3 Prestaciones
4 Gran uso de la configuración
5 Velocidad de las transacciones
6 Entrada de datos en línea
7 Diseño para la eficiencia del usuario final
8 Actualización de datos en línea
9 Complejidad del proceso lógico interno de la aplicación
10 Reusabilidad del código
11 Facilidad de instalación
12 Facilidad de operación
13 Localizaciones múltiples
14 Facilidad de cambios
Suma de los valores de los atributos (SVA)
donde:
• E es el esfuerzo requerido por el proyecto, en persona-mes
• Tdev es el tiempo requerido por el proyecto, en meses
• P es el número de personas requerido por el proyecto
• a, b, c y d son constantes con valores definidos en una tabla, según cada submodelo
• Kl es la cantidad de líneas de código, en miles.
• m(X) Es un multiplicador que depende de 15 atributos.
Cada submodelo se divide en modos que representan el tipo de proyecto, y puede ser:
• Simple - orgánico: proyectos pequeños de < 50KLDC y con experiencia en proyectos similares; para
pequeños grupos de programadores experimentados.
• Moderado - semiorganico, semilibre o semiencajado: complejidad media de < 300 KLDC y con poca
experiencia en proyectos similares; el grupo de desarrollo puede incluir una mezcla de personas
experimentadas y no experimentadas.
• Incrustado - rígido o empotrado: proyectos complejos donde la experiencia es nula y se utiliza
tecnologías de frontera; el proyecto tiene fuertes restricciones, que pueden estar relacionadas con la
funcionalidad y/o pueden ser técnicas. El problema a resolver es único y es difícil basarse en la
experiencia, puesto que puede no haberla.
Intermedio: m(X) = RELY * DATA * CPLX * TIME * STOR * VIRT * TURN * ACAP * AEXP * PCAP * VEXP * LEXP * MODP * TOOL * SCED
Valor
Atributos
Muy bajo Bajo Nominal Alto Muy alto Extra alto
Atributos de software
Fiabilidad 0,75 0,88 1,00 1,15 1,40
Tamaño de Base de datos 0,94 1,00 1,08 1,16
Complejidad 0,70 0,85 1,00 1,15 1,30 1,65
Atributos de hardware
Restricciones de tiempo de ejecución 1,00 1,11 1,30 1,66
Restricciones de memoria virtual 1,00 1,06 1,21 1,56
Volatilidad de la máquina virtual 0,87 1,00 1,15 1,30
Tiempo de respuesta 0,87 1,00 1,07 1,15
Atributos de personal
Capacidad de análisis 1,46 1,19 1,00 0,86 0,71
Experiencia en la aplicación 1,29 1,13 1,00 0,91 0,82
Calidad de los programadores 1,42 1,17 1,00 0,86 0,70
Experiencia en la máquina virtual 1,21 1,10 1,00 0,90
Experiencia en el lenguaje 1,14 1,07 1,00 0,95
Atributos del proyecto
Técnicas actualizadas de programación 1,24 1,10 1,00 0,91 0,82
Utilización de herramientas de software 1,24 1,10 1,00 0,91 0,83
Restricciones de tiempo de desarrollo 1,22 1,08 1,00 1,04 1,10
𝒃𝒃 𝒅𝒅 𝑷𝑷 = 𝑬𝑬/𝑻𝑻𝒅𝒅𝒅𝒅𝒅𝒅
𝑬𝑬 = 𝒂𝒂 𝑲𝑲𝑲𝑲 𝒎𝒎(𝑿𝑿) 𝑻𝑻𝒅𝒅𝒅𝒅𝒅𝒅 = 𝒄𝒄 𝑬𝑬
𝟏𝟏.𝟎𝟎𝟎𝟎 hombres en
𝑬𝑬 = 𝟐𝟐. 𝟒𝟒 𝟑𝟑𝟑𝟑 𝟏𝟏 𝑬𝑬 = 𝟗𝟗𝟗𝟗. 𝟑𝟑𝟑𝟑 𝑬𝑬 = 𝟗𝟗𝟗𝟗 un mes