In order to develop, operate, and maintain software and systems integration capabilities inside work-product facilities, you must understand and support the entire software lifecycle, which includes planning, systems, requirements, design, builds, installations, integration, subcontractors, quality, and delivery. Figure 1 shows the necessary disciplines in the software lifecycle.
Figure 1. Disciplines in the Software Lifecycle.
Program and Project Planning
Program and projects are established inside organizations and companies for software- and test-team participation as well as for assignments provided by management. Program and project planning provides the necessary process steps for system planning and the software design and development work that takes place within integration efforts. This type of planning ensures effective results when working on the implementation of supporting software and systems integration activities. The planning and engineering tasks are related to the software-lifecycle disciplines. Engineering tasks, which include software design and development, configuration management, quality, and subcontractor assigned duties regarding programs and/or projects used by engineers during the software lifecycle, require communication, planning, risk management, and deployment.
Software Engineering Tasks
Quality product evaluations
Table 1. Planning and engineering tasks
External software interfaces are defined as part of derived software requirements. To support systems design, graphical representations are prepared and take the form of data flow, collaboration and communications, and component diagrams.
Proper systems design is needed by the product team and the requirements personnel that works with users to ensure an accurate and complete understanding of the restrictions of a system or subsystem that affects work products. Systems design allows you to analyze customer requirements, satisfy specified requirements, and develop a software design and development migration plan for defining the architecture, components, modules, interfaces, and necessary data. This is important for communication, knowledge, the visibility into the software life-cycle, and integration operations. The system and subsystem requirements reviewed by program and project personal ensure accurate and complete understanding of the restrictions of systems design and applied work products. If program or project plans include reusable software interfaces, you can identify and evaluate the requirements. The term “reusable software” is a common term used in military and aerospace programs and/or projects. External software interfaces are defined as part of derived software requirements. To support systems design, graphical representations are prepared and take the form of data flow, collaboration and communications, and component diagrams. The requirements for a system design definition are reviewed with applicable users to ensure an accurate and complete understanding of the restrictions of a system or subsystem that affects work products. The external software interface is defined at those levels and verified for completeness. The program and project plans at times include reusable software and identified interface requirements for use. The external interfaces based on software architecture definitions are part of derived software requirements also.
Defined and documented software requirements provide a systematic approach to developing software requirements derived from multiple resources. The combination of functional software interfaces, performance, verification, and production with required plans, documentation, and procedures make up the basis for software design or development. This discipline can be applied to the initial development of software requirements and any changes to requirement baselines.
Software Design and Development
Software design and development is a consistent approach and method to the development of software requirements in defined designs of a work product. The software architecture definition provides a framework for the creation of the product design and, at times, can provide constrictions. The software design definition implements details about a software product architecture, components, and interfaces. Software designers use element traceability of the design and the software requirements are used by software designers. The traceability data and software design definitions are documented according to program and project plans, ideas, processes, procedures, and applicable internal work instructions.
The software implementation method assures that software engineering builds function as expected in target software and systems environments. It also enables smooth execution for verification and validation activities. Disciplined software implementation principles, planning, and resources for systems build-up provide effective testing to be conducted in a development facility for a software and system integration environment. Software released under configuration management control is described in a defined and documented Configuration Management Plan (CMP) to provide the necessary requirements for software implementation inside integration facilities.
In the early stages of software design and development for military and aerospace programs and projects, a Development Facility (DF) is normally established for software integration activities. This facility is used for preparation of software prior to delivery to a S/SIF. Many statements or comments are made about these facilities and if they have an effective way to test traffic loads on specific work products.
All software delivered or implemented by software integration or testing is processed through a configuration and controlled software library system, where the official status accounting of each delivery is maintained. The integration tasks require that the software design, development, and test processes are in place to ensure integration is ready for team troubleshooting and checkout.
Software integration provides required steps to be conducted for integration and checkout of informal software engineering builds. The software design and development team and test engineers need to develop a strategy for planning, design, execution, data collection, and test evaluation. The software integration activities are informal and flexible for software checkout to prepare for the software and systems integration phase of the work product. The strategy for software integration provides a road map that describes the steps to be conducted as part of the implementation of software to start integration activities. When a strategy is planned, then resources are required. This strategy should be flexible and it should promote an approach that results in change. Sometimes senior program and project managers need to track program and project progress and require the following characteristics:
- Conduct effective technical reviews
- Show different integration techniques and software approaches
- Software designers are required to be involved from the start to the finish
Software and Systems Integration
The software and systems integration method provides a consistent approach to effective integration activities. The software units, components, and sub-systems are assembled by the software designers and test teams to ensure the software and systems elements are created properly. The integration levels and the development plan (DP) for software determine if constructed elements are ready and subject to verification or validation activities. The development plan establishes the plan for development of software during the phase of the program. This plan establishes system level engineering standards, practices, and guidelines for development of CI and non-CI system software.
The effective methods and processes for software and systems integration require disciplined software design and development practices, including test planning, test execution, configuration control, quality, and reporting to management and the customer of the work product being tested inside integration facilities. Software technology books, magazines, and articles all over the world are intended to reflect "best practices" from various integration facilities supporting software companies, military, and aerospace programs and projects. It is the responsibility of management to select effective and responsible test conductors and teams. Successful software and systems integration objectives are accomplished by:
- Agreeing and identifying blocking issues
- Assigning responsibility to fixing blocking issues
- Scheduling dates from responsible teams
- Holding periodic meetings until issues and concerns are closed out
- Evaluating current integration facilities schedules
The roles and responsibilities of the software subcontractor describe how a program and projects can benefit and rely on outside companies’ resources to provide required software and hardware products to be under contract and effective. A customer must understand the subcontractor’s presentation, in which the subcontractor presents his expertise in supporting the lifecycle activities and how companies can use his knowledge. During the presentation, the subcontractor should allow the customer to ask any questions in order for the subcontractor to provide answers that meet the customer’s needs for reliability and support. The software subcontractor provides the necessary support and employment that benefits military and aerospace programs and projects. The software subcontractor can be hired for program and project planning, configuration management, quality, software design and development, testing, and the execution of activities or tasks related to the delivery of software work products to customers. The activities performed are in accordance with a purchase contract and the software work products are delivered to satisfy and comply with specified acceptance and delivery requirements.
A list of requirements, expectations, and interfaces between the program and project are documented in a SOW. The goals of selected software processes are given to the subcontractor per the direction of program and project managers in order to provide plans for required tasks during a software lifecycle. This permits the software subcontractor to abide by internal software processes that require objective evidence to be reviewed and ensure goals are being accomplished.
Software and Systems Integration Delivery
When it is time for a software and systems integration delivery, the delivery requires that integration testing be performed so as to provide assurancethat both software and systems are integrated and working together. The integration practices ensure that units being tested are complete and documented prior to being officially delivered to the customer.
Successful program and project managers focus on the team, processes, and work product. A manager who fails to communicate early in the software development process could pay a heavy price in making wrong decisions. The manager who pays very little attention runs into risks if competent methods and tools are not made available to the team. By having a solid program and project plan, the success of the program and project will not be hindered. Team members need to be highly-skilled software people. The talents that the team should have are:
- Organization skills
- Business Goals
- Work Ethics
The system and software and design developers, along with test, configuration management, and quality teams define objectives. The product objectives identify the goals for design and development of data, which provides functionality in a quantitative manner. The program and project managers select the best approach provided by constraints that are imposed by delivery deadlines, budget issues, available team members, and technical solutions to problems.
The effective methods for software and systems integration will provide assurances that meet customer requirements before any thoughts occur regarding a hurry-up delivery. Stay the course and do not deviate from the plan. Before a delivery of software and systems to customers, it is important to complete the following:
- Software media and data verification and validation.
- Software documentation release and delivery.
- Conducting the necessary FAIs, FCAs and PCAs and closing all action items.
Defined software disciplines include using various approaches or methods during the software lifecycle in order to create startup plans for program and projects to until they are finally delivered to the customer. Although I discussed many methods, the number one method is “quality first,” and the other methods come in second and so on as illustrated in figure 2.
Figure 2. Effective methods flow
Senior managers call for many program and project meetings that both software and hardware engineers attend. In those types of meetings, the hardware teams will sit on one side of the table and the software team will sit on the opposite side. That situation is unique per a person’s job description and responsibility, but that is how it is at times, in my experience. The senior managers and program and project managers will also attend these meetings in order to discuss with the two teams how the software or system is not working correctly when it is time to make the delivery to the integration facilities. With all the finger pointing, you may hear from both teams in a back-and-forth manner that the problem is hardware—not the problem is a software.
The senior manager will then point to the program and project managers and say, “Fix this problem.” This situation shows that in order to have effective methods for software and systems integration, an organization needs to have hardware and software designers work together to solve any issues that could impact integration, quality, and delivery schedules to the customer.