122:
1513:
25:
840:
written instructions can be added for each number on the screen example. For example, a login screen can have the username field labeled '1' and password field labeled '2,' and then each number can be declared in writing, for use by software engineers and later for beta testing purposes to ensure that functionality is as intended. The benefit of this method is that countless additional details can be attached to the screen examples.
1503:
839:
One popular method of writing a functional specification document involves drawing or rendering either simple wire frames or accurate, graphically designed UI screenshots. After this has been completed, and the screen examples are approved by all stakeholders, graphical elements can be numbered and
125:
Systems engineering model of
Specification and Levels of Development. During system development a series of specifications are generated to describe the system at different levels of detail. These program unique specifications form the core of the configuration baselines. As shown here, in addition
830:
When the team agrees that functional specification consensus is reached, the functional spec is typically declared "complete" or "signed off". After this, typically the software development and testing team write source code and test cases using the functional specification as the reference. While
126:
to referring to different levels within the system hierarchy, these baselines are defined at different phases of the design process.Note: There is one minor (and ironic) typo in the image above. SI&T is "System
Integration and Test" not "System Integration and Text".
762:
There are many purposes for functional specifications. One of the primary purposes on team projects is to achieve some form of team consensus on what the program is to achieve before making the more time-consuming effort of writing
826:
the functions will be realized using a chosen software environment. In non industrial, prototypical systems development, functional specifications are typically written after or as part of requirements analysis.
720:
stage. On more complex systems multiple levels of functional specifications will typically nest to each other, e.g. on the system level, on the module level and on the level of technical details.
749:) and the software system. When the user provides input to the system by clicking the OK button, the program responds (or should respond) by closing the dialog window containing the OK button.
732:
specification does not define the inner workings of the proposed system; it does not include the specification of how the system function will be implemented.
664:
740:
When the user clicks the OK button, the dialog is closed and the focus is returned to the main window in the state it was in before this dialog was displayed.
705:
is a document that specifies the functions that a system or component must perform (often part of a requirements specification) (ISO/IEC/IEEE 24765-2010).
618:
989:
1549:
708:
The documentation typically describes what is needed by the system user as well as requested properties of inputs and outputs (e.g. of the
585:
831:
testing is performed, the behavior of the program is compared against the expected behavior as defined in the functional specification.
657:
437:
89:
849:
791:
61:
42:
1592:
68:
779:
on the project at hand after having negotiated a cost-effective way to achieve the requirements the software needs to fulfill.
575:
427:
1506:
1372:
1301:
650:
550:
306:
291:
1195:
1098:
928:
570:
75:
901:
608:
982:
923:
881:
517:
281:
1542:
1175:
1042:
1027:
384:
108:
57:
864:
507:
502:
258:
1956:
891:
712:
system). A functional specification is the more technical response to a matching requirements document, e.g. the
636:
1709:
1602:
1577:
1331:
1258:
1248:
1093:
1022:
527:
240:
220:
46:
389:
1668:
1582:
1516:
1382:
1311:
1253:
975:
854:
713:
326:
316:
266:
1951:
1930:
1535:
1321:
1180:
1047:
918:
896:
613:
341:
157:
1745:
1658:
1243:
1238:
1052:
432:
404:
1607:
1438:
1286:
1281:
1233:
1210:
1190:
555:
399:
286:
276:
215:
82:
1755:
1740:
1443:
1433:
869:
321:
301:
1961:
1770:
1643:
1587:
1346:
1128:
1037:
462:
331:
311:
1617:
1612:
1296:
1140:
859:
798:
776:
590:
472:
351:
225:
35:
1892:
1597:
1351:
1108:
1103:
729:
532:
442:
394:
336:
1826:
1796:
1572:
1170:
1123:
947:
717:
356:
172:
162:
962:
1917:
1887:
1468:
1306:
1165:
1155:
1067:
1012:
998:
886:
819:
702:
452:
296:
230:
197:
177:
138:
121:
8:
1897:
1882:
1851:
1558:
1488:
1473:
1341:
1205:
1113:
1057:
698:
447:
366:
192:
1907:
1902:
1653:
1622:
1478:
1118:
565:
1861:
1801:
1392:
1150:
1866:
1836:
1765:
1760:
1699:
1684:
1463:
1407:
1185:
1077:
1072:
746:
522:
485:
467:
457:
182:
1912:
1811:
1806:
1750:
1725:
1689:
1483:
1336:
1316:
1200:
1062:
811:
409:
361:
245:
167:
1841:
1831:
1786:
1730:
1627:
1387:
1291:
1032:
735:
A functional requirement in a functional specification might state as follows:
1945:
1821:
1816:
1791:
1663:
1367:
1135:
152:
1856:
1402:
1397:
1326:
913:
745:
Such a requirement describes an interaction between an external agent (the
235:
764:
775:. Typically, such consensus is reached after one or more reviews by the
1846:
1412:
1377:
967:
784:
1527:
948:
ISO/IEC/IEEE 24765:2010 Systems and software engineering — Vocabulary
772:
768:
187:
24:
1160:
709:
560:
512:
497:
492:
1704:
963:
Painless
Functional Specifications, 4-part series by Joel Spolsky
1694:
1017:
875:
271:
1217:
346:
1735:
1428:
810:
In the ordered industrial software engineering life-cycle (
580:
843:
49:. Unsourced material may be challenged and removed.
752:
1943:
1543:
983:
658:
876:Types of software development specifications
716:"PRD". Thus it picks up the results of the
1550:
1536:
990:
976:
665:
651:
850:Advanced Microcontroller Bus Architecture
109:Learn how and when to remove this message
1593:Earth systems engineering and management
1181:Software development process/methodology
997:
691:functional specifications document (FSD)
120:
1557:
1944:
814:), functional specification describes
619:Electrical and electronics engineering
1531:
971:
844:Examples of functional specifications
695:functional requirements specification
1502:
1196:Software verification and validation
1099:Component-based software engineering
929:Software verification and validation
47:adding citations to reliable sources
18:
902:Software Requirements Specification
13:
924:Specification (technical standard)
882:Bit specification (disambiguation)
14:
1973:
1628:Sociocultural Systems Engineering
1176:Software configuration management
1043:Search-based software engineering
1028:Experimental software engineering
956:
818:has to be implemented. The next,
545:Standards and bodies of knowledge
1512:
1511:
1501:
865:Real-time specification for Java
23:
892:Diagnostic design specification
753:Functional specification topics
637:Outline of software development
34:needs additional citations for
1710:Systems development life cycle
1603:Enterprise systems engineering
1578:Biological systems engineering
1023:Empirical software engineering
941:
1:
1669:System of systems engineering
1583:Cognitive systems engineering
934:
855:Extensible Firmware Interface
714:Product Requirements Document
1048:Site reliability engineering
919:Software development process
897:Product design specification
7:
1746:Quality function deployment
1659:Verification and validation
1053:Social software engineering
907:
801:know what they are getting.
723:
10:
1978:
1608:Health systems engineering
1191:Software quality assurance
834:
805:
771:, followed by a period of
757:
400:Software quality assurance
58:"Functional specification"
1926:
1875:
1779:
1756:Systems Modeling Language
1718:
1677:
1636:
1565:
1497:
1456:
1421:
1360:
1274:
1267:
1226:
1086:
1005:
870:Single UNIX Specification
1771:Work breakdown structure
1649:Functional specification
1644:Requirements engineering
1588:Configuration management
1347:Model-driven engineering
1146:Functional specification
1129:Software incompatibility
1038:Requirements engineering
679:functional specification
385:Configuration management
1618:Reliability engineering
1613:Performance engineering
1141:Enterprise architecture
860:Multiboot Specification
794:know what tests to run.
609:Artificial intelligence
1957:Software documentation
1893:Industrial engineering
1598:Electrical engineering
1352:Round-trip engineering
1109:Backward compatibility
1104:Software compatibility
533:Infrastructure as code
379:Supporting disciplines
127:
1827:Arthur David Hall III
1797:Benjamin S. Blanchard
1573:Aerospace engineering
1171:Software architecture
1124:Forward compatibility
718:requirements analysis
390:Deployment management
124:
1918:Software engineering
1888:Computer engineering
1469:Computer engineering
1166:Software archaeology
1156:Programming paradigm
1068:Software maintenance
1013:Computer programming
999:Software engineering
887:Design specification
820:Systems architecture
703:software development
210:Paradigms and models
139:Software development
43:improve this article
1952:Systems engineering
1898:Operations research
1883:Control engineering
1852:Joseph Francis Shea
1559:Systems engineering
1489:Systems engineering
1474:Information science
1254:Service orientation
1206:Structured analysis
1114:Compatibility layer
1058:Software deployment
822:document describes
787:know what to build.
699:systems engineering
133:Part of a series on
1908:Quality management
1903:Project management
1731:Function modelling
1654:System integration
1623:Safety engineering
1479:Project management
1244:Object orientation
1211:Essential analysis
1119:Compatibility mode
528:Release automation
405:Project management
128:
1939:
1938:
1862:Manuela M. Veloso
1802:Wernher von Braun
1525:
1524:
1452:
1451:
1393:Information model
1297:Incremental model
1151:Modeling language
675:
674:
566:ISO/IEC standards
119:
118:
111:
93:
1969:
1867:John N. Warfield
1837:Robert E. Machol
1766:Systems modeling
1761:Systems analysis
1700:System lifecycle
1685:Business process
1552:
1545:
1538:
1529:
1528:
1515:
1514:
1505:
1504:
1464:Computer science
1272:
1271:
1186:Software quality
1078:Systems analysis
1073:Software testing
992:
985:
978:
969:
968:
950:
945:
667:
660:
653:
614:Computer science
523:Build automation
130:
129:
114:
107:
103:
100:
94:
92:
51:
27:
19:
16:Type of document
1977:
1976:
1972:
1971:
1970:
1968:
1967:
1966:
1962:Software design
1942:
1941:
1940:
1935:
1922:
1913:Risk management
1871:
1812:Harold Chestnut
1807:Kathleen Carley
1775:
1751:System dynamics
1726:Decision-making
1714:
1690:Fault tolerance
1673:
1632:
1561:
1556:
1526:
1521:
1493:
1484:Risk management
1448:
1417:
1356:
1337:Waterfall model
1307:Prototype model
1302:Iterative model
1263:
1239:Aspect-oriented
1222:
1201:Software system
1082:
1063:Software design
1001:
996:
959:
954:
953:
946:
942:
937:
910:
878:
846:
837:
812:waterfall model
808:
760:
755:
726:
683:functional spec
671:
642:
641:
632:
624:
623:
604:
596:
595:
546:
538:
537:
488:
478:
477:
423:
415:
414:
410:User experience
380:
372:
371:
262:
251:
250:
211:
203:
202:
148:
147:Core activities
115:
104:
98:
95:
52:
50:
40:
28:
17:
12:
11:
5:
1975:
1965:
1964:
1959:
1954:
1937:
1936:
1934:
1933:
1927:
1924:
1923:
1921:
1920:
1915:
1910:
1905:
1900:
1895:
1890:
1885:
1879:
1877:
1876:Related fields
1873:
1872:
1870:
1869:
1864:
1859:
1854:
1849:
1844:
1842:Radhika Nagpal
1839:
1834:
1832:Derek Hitchins
1829:
1824:
1819:
1814:
1809:
1804:
1799:
1794:
1789:
1787:James S. Albus
1783:
1781:
1777:
1776:
1774:
1773:
1768:
1763:
1758:
1753:
1748:
1743:
1738:
1733:
1728:
1722:
1720:
1716:
1715:
1713:
1712:
1707:
1702:
1697:
1692:
1687:
1681:
1679:
1675:
1674:
1672:
1671:
1666:
1661:
1656:
1651:
1646:
1640:
1638:
1634:
1633:
1631:
1630:
1625:
1620:
1615:
1610:
1605:
1600:
1595:
1590:
1585:
1580:
1575:
1569:
1567:
1563:
1562:
1555:
1554:
1547:
1540:
1532:
1523:
1522:
1520:
1519:
1509:
1498:
1495:
1494:
1492:
1491:
1486:
1481:
1476:
1471:
1466:
1460:
1458:
1457:Related fields
1454:
1453:
1450:
1449:
1447:
1446:
1441:
1436:
1431:
1425:
1423:
1419:
1418:
1416:
1415:
1410:
1405:
1400:
1395:
1390:
1388:Function model
1385:
1380:
1375:
1370:
1364:
1362:
1358:
1357:
1355:
1354:
1349:
1344:
1339:
1334:
1329:
1324:
1319:
1314:
1309:
1304:
1299:
1294:
1292:Executable UML
1289:
1284:
1278:
1276:
1269:
1265:
1264:
1262:
1261:
1256:
1251:
1246:
1241:
1236:
1230:
1228:
1224:
1223:
1221:
1220:
1215:
1214:
1213:
1203:
1198:
1193:
1188:
1183:
1178:
1173:
1168:
1163:
1158:
1153:
1148:
1143:
1138:
1133:
1132:
1131:
1126:
1121:
1116:
1111:
1101:
1096:
1090:
1088:
1084:
1083:
1081:
1080:
1075:
1070:
1065:
1060:
1055:
1050:
1045:
1040:
1035:
1033:Formal methods
1030:
1025:
1020:
1015:
1009:
1007:
1003:
1002:
995:
994:
987:
980:
972:
966:
965:
958:
957:External links
955:
952:
951:
939:
938:
936:
933:
932:
931:
926:
921:
916:
909:
906:
905:
904:
899:
894:
889:
884:
877:
874:
873:
872:
867:
862:
857:
852:
845:
842:
836:
833:
807:
804:
803:
802:
795:
788:
759:
756:
754:
751:
743:
742:
725:
722:
673:
672:
670:
669:
662:
655:
647:
644:
643:
640:
639:
633:
630:
629:
626:
625:
622:
621:
616:
611:
605:
602:
601:
598:
597:
594:
593:
588:
583:
578:
573:
568:
563:
558:
556:IEEE standards
553:
547:
544:
543:
540:
539:
536:
535:
530:
525:
520:
515:
510:
505:
500:
495:
489:
484:
483:
480:
479:
476:
475:
470:
465:
460:
455:
450:
445:
440:
435:
430:
424:
421:
420:
417:
416:
413:
412:
407:
402:
397:
392:
387:
381:
378:
377:
374:
373:
370:
369:
364:
359:
354:
349:
344:
339:
334:
329:
324:
319:
314:
309:
304:
299:
294:
289:
284:
279:
274:
269:
263:
261:and frameworks
257:
256:
253:
252:
249:
248:
243:
238:
233:
228:
223:
218:
212:
209:
208:
205:
204:
201:
200:
195:
190:
185:
180:
175:
170:
165:
160:
155:
149:
146:
145:
142:
141:
135:
134:
117:
116:
31:
29:
22:
15:
9:
6:
4:
3:
2:
1974:
1963:
1960:
1958:
1955:
1953:
1950:
1949:
1947:
1932:
1929:
1928:
1925:
1919:
1916:
1914:
1911:
1909:
1906:
1904:
1901:
1899:
1896:
1894:
1891:
1889:
1886:
1884:
1881:
1880:
1878:
1874:
1868:
1865:
1863:
1860:
1858:
1855:
1853:
1850:
1848:
1845:
1843:
1840:
1838:
1835:
1833:
1830:
1828:
1825:
1823:
1822:Barbara Grosz
1820:
1818:
1817:Wolt Fabrycky
1815:
1813:
1810:
1808:
1805:
1803:
1800:
1798:
1795:
1793:
1792:Ruzena Bajcsy
1790:
1788:
1785:
1784:
1782:
1778:
1772:
1769:
1767:
1764:
1762:
1759:
1757:
1754:
1752:
1749:
1747:
1744:
1742:
1739:
1737:
1734:
1732:
1729:
1727:
1724:
1723:
1721:
1717:
1711:
1708:
1706:
1703:
1701:
1698:
1696:
1693:
1691:
1688:
1686:
1683:
1682:
1680:
1676:
1670:
1667:
1665:
1664:Design review
1662:
1660:
1657:
1655:
1652:
1650:
1647:
1645:
1642:
1641:
1639:
1635:
1629:
1626:
1624:
1621:
1619:
1616:
1614:
1611:
1609:
1606:
1604:
1601:
1599:
1596:
1594:
1591:
1589:
1586:
1584:
1581:
1579:
1576:
1574:
1571:
1570:
1568:
1564:
1560:
1553:
1548:
1546:
1541:
1539:
1534:
1533:
1530:
1518:
1510:
1508:
1500:
1499:
1496:
1490:
1487:
1485:
1482:
1480:
1477:
1475:
1472:
1470:
1467:
1465:
1462:
1461:
1459:
1455:
1445:
1442:
1440:
1437:
1435:
1432:
1430:
1427:
1426:
1424:
1420:
1414:
1411:
1409:
1408:Systems model
1406:
1404:
1401:
1399:
1396:
1394:
1391:
1389:
1386:
1384:
1381:
1379:
1376:
1374:
1371:
1369:
1366:
1365:
1363:
1359:
1353:
1350:
1348:
1345:
1343:
1340:
1338:
1335:
1333:
1330:
1328:
1325:
1323:
1320:
1318:
1315:
1313:
1310:
1308:
1305:
1303:
1300:
1298:
1295:
1293:
1290:
1288:
1285:
1283:
1280:
1279:
1277:
1275:Developmental
1273:
1270:
1266:
1260:
1257:
1255:
1252:
1250:
1247:
1245:
1242:
1240:
1237:
1235:
1232:
1231:
1229:
1225:
1219:
1216:
1212:
1209:
1208:
1207:
1204:
1202:
1199:
1197:
1194:
1192:
1189:
1187:
1184:
1182:
1179:
1177:
1174:
1172:
1169:
1167:
1164:
1162:
1159:
1157:
1154:
1152:
1149:
1147:
1144:
1142:
1139:
1137:
1136:Data modeling
1134:
1130:
1127:
1125:
1122:
1120:
1117:
1115:
1112:
1110:
1107:
1106:
1105:
1102:
1100:
1097:
1095:
1092:
1091:
1089:
1085:
1079:
1076:
1074:
1071:
1069:
1066:
1064:
1061:
1059:
1056:
1054:
1051:
1049:
1046:
1044:
1041:
1039:
1036:
1034:
1031:
1029:
1026:
1024:
1021:
1019:
1016:
1014:
1011:
1010:
1008:
1004:
1000:
993:
988:
986:
981:
979:
974:
973:
970:
964:
961:
960:
949:
944:
940:
930:
927:
925:
922:
920:
917:
915:
912:
911:
903:
900:
898:
895:
893:
890:
888:
885:
883:
880:
879:
871:
868:
866:
863:
861:
858:
856:
853:
851:
848:
847:
841:
832:
828:
825:
821:
817:
813:
800:
796:
793:
789:
786:
782:
781:
780:
778:
774:
770:
766:
750:
748:
741:
738:
737:
736:
733:
731:
721:
719:
715:
711:
706:
704:
700:
696:
692:
688:
684:
680:
668:
663:
661:
656:
654:
649:
648:
646:
645:
638:
635:
634:
628:
627:
620:
617:
615:
612:
610:
607:
606:
600:
599:
592:
589:
587:
584:
582:
579:
577:
574:
572:
569:
567:
564:
562:
559:
557:
554:
552:
549:
548:
542:
541:
534:
531:
529:
526:
524:
521:
519:
516:
514:
511:
509:
506:
504:
501:
499:
496:
494:
491:
490:
487:
482:
481:
474:
471:
469:
466:
464:
461:
459:
456:
454:
451:
449:
446:
444:
441:
439:
436:
434:
431:
429:
426:
425:
419:
418:
411:
408:
406:
403:
401:
398:
396:
395:Documentation
393:
391:
388:
386:
383:
382:
376:
375:
368:
365:
363:
360:
358:
355:
353:
350:
348:
345:
343:
340:
338:
335:
333:
330:
328:
325:
323:
320:
318:
315:
313:
310:
308:
305:
303:
300:
298:
295:
293:
290:
288:
285:
283:
280:
278:
275:
273:
270:
268:
265:
264:
260:
259:Methodologies
255:
254:
247:
244:
242:
239:
237:
234:
232:
229:
227:
224:
222:
219:
217:
214:
213:
207:
206:
199:
196:
194:
191:
189:
186:
184:
181:
179:
176:
174:
171:
169:
166:
164:
161:
159:
156:
154:
153:Data modeling
151:
150:
144:
143:
140:
137:
136:
132:
131:
123:
113:
110:
102:
91:
88:
84:
81:
77:
74:
70:
67:
63:
60: –
59:
55:
54:Find sources:
48:
44:
38:
37:
32:This article
30:
26:
21:
20:
1857:Katia Sycara
1741:Optimization
1648:
1403:Object model
1398:Metamodeling
1327:Spiral model
1227:Orientations
1145:
943:
914:Benchmarking
838:
829:
823:
815:
809:
799:stakeholders
777:stakeholders
761:
744:
739:
734:
727:
707:
694:
690:
686:
682:
678:
676:
513:UML Modeling
508:GUI designer
173:Construction
163:Requirements
105:
99:October 2008
96:
86:
79:
72:
65:
53:
41:Please help
36:verification
33:
1094:Abstraction
790:To let the
783:To let the
765:source code
231:Prototyping
226:Incremental
198:Maintenance
178:Engineering
1946:Categories
1847:Simon Ramo
1413:View model
1378:Data model
935:References
785:developers
769:test cases
730:functional
603:Glossaries
193:Deployment
69:newspapers
1637:Processes
1566:Subfields
1422:Languages
773:debugging
422:Practices
246:Waterfall
221:Cleanroom
188:Debugging
158:Processes
1931:Category
1678:Concepts
1517:Category
1383:ER model
1249:Ontology
1161:Software
1087:Concepts
908:See also
724:Overview
710:software
631:Outlines
561:ISO 9001
503:Profiler
498:Debugger
493:Compiler
468:Stand-up
1705:V-Model
1507:Commons
1332:V-model
835:Methods
806:Process
797:To let
792:testers
758:Purpose
681:(also,
302:Lean SD
241:V model
183:Testing
83:scholar
1780:People
1695:System
1268:Models
1018:DevOps
1006:Fields
576:SWEBOK
297:Kanban
272:DevOps
236:Spiral
168:Design
85:
78:
71:
64:
56:
1719:Tools
1444:SysML
1368:SPICE
1361:Other
1322:Scrum
1282:Agile
1234:Agile
1218:CI/CD
697:) in
687:specs
571:PMBOK
486:Tools
347:SEMAT
342:Scrum
216:Agile
90:JSTOR
76:books
1736:IDEF
1429:IDEF
1373:CMMI
1259:SDLC
816:what
767:and
747:user
701:and
586:IREB
581:ITIL
551:CMMI
428:ATDD
337:SAFe
307:LeSS
282:DSDM
62:news
1439:USL
1434:UML
1312:RAD
1287:EUP
824:how
591:OMG
518:IDE
473:TDD
463:SBE
453:DDD
438:CCO
433:BDD
357:TSP
352:TDD
332:RUP
327:RAD
322:PSP
317:MSF
312:MDD
292:IID
287:FDD
277:DAD
267:ASD
45:by
1948::
1342:XP
1317:UP
728:A
693:,
689:,
685:,
677:A
458:PP
448:CD
443:CI
367:XP
362:UP
1551:e
1544:t
1537:v
991:e
984:t
977:v
666:e
659:t
652:v
112:)
106:(
101:)
97:(
87:·
80:·
73:·
66:·
39:.
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.