Software Engineering Body of Knowledge (v3) (2014) (811503), страница 39
Текст из файла (страница 39)
Models and methods support a systematic approach tosoftware development and modification.The Software Quality KA is concerned withthe planning, assurance, and control processesfor project and product quality. Measurement andmeasurement results in the Engineering Foundations KA are essential for evaluating and controlling software processes.Business Process ModelingNotationComputer-Assisted SoftwareEngineeringConfiguration ManagementCapability Maturity ModelIntegrationGoal-Question-MetricIntegration DefinitionLevel of EffortOrthogonal Defect ClassificationSoftware Development Life CycleSoftware Product Life CycleUnified Modeling LanguageINTRODUCTIONAn engineering process consists of a set of interrelated activities that transform one or more inputsinto outputs while consuming resources to accomplish the transformation.
Many of the processes oftraditional engineering disciplines (e.g., electrical,mechanical, civil, chemical) are concerned withtransforming energy and physical entities fromone form into another, as in a hydroelectric damthat transforms potential energy into electricalenergy or a petroleum refinery that uses chemicalprocesses to transform crude oil into gasoline.In this knowledge area (KA), software engineering processes are concerned with work activitiesaccomplished by software engineers to develop,maintain, and operate software, such as requirements, design, construction, testing, configuration management, and other software engineeringprocesses. For readability, “software engineeringBREAKDOWN OF TOPICS FORSOFTWARE ENGINEERING PROCESSAs illustrated in Figure 8.1, this KA is concernedwith software process definition, software lifecycles, software process assessment and improvement, software measurement, and software engineering process tools.8-18-2 SWEBOK® Guide V3.0Figure 8.1.
Breakdown of Topics for the Software Engineering Process KA1. Software Process Definition[1*, p177] [2*, p295] [3*, p28–29, p36, c5]This topic is concerned with a definition of software process, software process management, andsoftware process infrastructure.As stated above, a software process is a set ofinterrelated activities and tasks that transforminput work products into output work products.At minimum, the description of a software process includes required inputs, transforming workactivities, and outputs generated. As illustrated inFigure 8.2, a software process may also includeits entry and exit criteria and decompositionof the work activities into tasks, which are thesmallest units of work subject to managementaccountability.
A process input may be a triggering event or the output of another process. Entrycriteria should be satisfied before a process cancommence. All specified conditions should besatisfied before a process can be successfullyconcluded, including the acceptance criteria forthe output work product or work products.A software process may include subprocesses.For example, software requirements validation isa process used to determine whether the requirements will provide an adequate basis for softwaredevelopment; it is a subprocess of the softwarerequirements process.
Inputs for requirements validation are typically a software requirements specification and the resources needed to perform validation (personnel, validation tools, sufficient time).The tasks of the requirements validation activitymight include requirements reviews, prototyping,and model validation. These tasks involve workassignments for individuals and teams. The outputof requirements validation is typically a validatedsoftware requirements specification that providesinputs to the software design and software testing processes. Requirements validation and othersubprocesses of the software requirements processare often interleaved and iterated in various ways;Software Engineering Process 8-3Figure 8.2.
Elements of a Software Processthe software requirements process and its subprocesses may be entered and exited multiple timesduring software development or modification.Complete definition of a software process mayalso include the roles and competencies, IT support, software engineering techniques and tools,and work environment needed to perform theprocess, as well as the approaches and measures(Key Performance Indicators) used to determinethe efficiency and effectiveness of performing theprocess.In addition, a software process may includeinterleaved technical, collaborative, and administrative activities.Notations for defining software processesinclude textual lists of constituent activities andtasks described in natural language; data-flowdiagrams; state charts; BPMN; IDEF0; Petri nets;and UML activity diagrams.
The transformingtasks within a process may be defined as procedures; a procedure may be specified as an orderedset of steps or, alternatively, as a checklist of thework to be accomplished in performing a task.It must be emphasized that there is no best software process or set of software processes. Software processes must be selected, adapted, andapplied as appropriate for each project and eachorganizational context.
No ideal process, or set ofprocesses, exists.1.1. Software Process Management[3*, s26.1] [4*, p453–454]Two objectives of software process managementare to realize the efficiency and effectiveness thatresult from a systematic approach to accomplishing software processes and producing work products—be it at the individual, project, or organizational level—and to introduce new or improvedprocesses.Processes are changed with the expectation thata new or modified process will improve the efficiency and/or effectiveness of the process and thequality of the resulting work products.
Changingto a new process, improving an existing process,organizational change, and infrastructure change(technology insertion or changes in tools) areclosely related, as all are usually initiated with thegoal of improving the cost, development schedule, or quality of the software products. Processchange has impacts not only for the softwareproduct; they often lead to organizational change.Changing a process or introducing a new processcan have ripple effects throughout an organization. For example, changes in IT infrastructure tools and technology often require processchanges.Existing processes may be modified whenother new processes are deployed for the firsttime (for example, introducing an inspectionactivity within a software development projectwill likely impact the software testing process—see Reviews and Audits in the Software QualityKA and in the Software Testing KA).
These situations can also be termed “process evolution.”If the modifications are extensive, then changesin the organizational culture and business modelwill likely be necessary to accommodate the process changes.8-4 SWEBOK® Guide V3.01.2. Software Process Infrastructure[2*, p183, p186] [4*, p437–438]Establishing, implementing, and managing software processes and software life cycle modelsoften occurs at the level of individual softwareprojects. However, systematic application ofsoftware processes and software life cycle models across an organization can provide benefitsto all software work within the organization,although it requires commitment at the organizational level.
A software process infrastructurecan provide process definitions, policies for interpreting and applying the processes, and descriptions of the procedures to be used to implementthe processes. Additionally, a software processinfrastructure may provide funding, tools, training, and staff members who have been assignedresponsibilities for establishing and maintainingthe software process infrastructure.Software process infrastructure varies, depending on the size and complexity of the organizationand the projects undertaken within the organization.
Small, simple organizations and projectshave small, simple infrastructure needs. Large,complex organizations and projects, by necessity, have larger and more complex softwareprocess infrastructures. In the latter case, variousorganizational units may be established (such asa software engineering process group or a steering committee) to oversee implementation andimprovement of the software processes.A common misperception is that establishing asoftware process infrastructure and implementingrepeatable software processes will add time andcost to software development and maintenance.There is a cost associated with introducing orimproving a software process; however, experience has shown that implementing systematicimprovement of software processes tends to resultin lower cost through improved efficiency, avoidance of rework, and more reliable and affordablesoftware.
Process performance thus influencessoftware product quality.2. Software Life Cycles[1*, c2] [2*, p190]This topic addresses categories of software processes, software life cycle models, softwareprocess adaptation, and practical considerations.A software development life cycle (SDLC)includes the software processes used to specifyand transform software requirements into a deliverable software product. A software product lifecycle (SPLC) includes a software developmentlife cycle plus additional software processes thatprovide for deployment, maintenance, support,evolution, retirement, and all other inceptionto-retirement processes for a software product,including the software configuration managementand software quality assurance processes that areapplied throughout a software product life cycle.A software product life cycle may include multiple software development life cycles for evolvingand enhancing the software.Individual software processes have no temporal ordering among them.