Booklet: Development and Acquisition
Section:
Development Procedures
Subsection: Software Development Techniques
 

 

 

 

 

 

OBJECT-ORIENTED PROGRAMMING
Traditionally, programmers wrote programs using sequential lines of code in a high-level, procedural language such as COBOL
additional information. . Programmers also write object-oriented programs in high-level languages such as C++ and Java; however, the programs are written less sequentially.

Object-oriented programming centers on the development of small, reusable program routines (modules) that are linked together and to other objects to form a program. A key component of object-oriented programming involves the classification (modeling) of related data types (numbers, letters, dollars, etc.) and structures (records, files, tables, etc.). Modeling allows programmers to link reusable program modules to modeled data classes. Linking pre-developed program modules to defined data classes reduces development times and makes programs easier to modify.

Programmers use various methods to define and link reusable objects. Initially, structured programming techniques were developed that focused on the arrangement of lines of procedural code. The ad hoc techniques enhanced the layout of a program’s modules and overall design, making it easier to integrate and reuse program modules. Object-oriented programming employs a form of structured programming and adds methods for defining the data classes that are linked to structured program routines.

A drawback to the use of structured programming, and consequently, methods such as object-oriented programming, which use structured programming techniques, has been a lack of standardized coding procedures. The lack of standardized procedures restricts the interoperability of proprietary products, including automated design and development products sometimes referred to as computer-aided software engineering (CASE) tools. However, the software industry is moving towards acceptance of standardized object-oriented modeling protocols.

COMPUTER-AIDED SOFTWARE ENGINEERING
CASE tools are a class of software that automates many of the activities involved in various life cycle phases. For example, when establishing the functional requirements of a proposed application, prototyping tools can be used to develop graphic models of application screens to assist end users to visualize how an application will look after development. Subsequently, system designers can use automated design tools to transform the prototyped functional requirements into detailed design documents. Programmers can then use automated code generators to convert the design documents into code. Automated tools can be used collectively, as mentioned, or individually. For example, prototyping tools could be used to define application requirements that get passed to design technicians who convert the requirements into detailed designs in a traditional manner using flowcharts and narrative documents, without the assistance of automated design software.

Automated tools can also facilitate the coordination of software development activities through the use of data warehouses or repositories. Repositories provide a means to store and access information relating to a project, such as project plans, functional requirements, design documents, program libraries, test banks, etc.

Organizations generally implement automated development tools to increase productivity, decrease costs, enhance project controls, and increase product quality. However, only by managing the various risks associated with automated technologies will organizations ensure they develop systems with appropriate functionality, security, integrity, and reliability.

Common CASE risks and associated controls include:

Bullet

Inadequate Standardization – Linking CASE tools from different vendors (design tool from Company X, programming tool from Company Y) may be difficult if the products do not use standardized code structures and data classifications. File formats can be converted, but usually not economically. Controls include using tools from the same vendor, or using tools based on standard protocols and insisting on demonstrated compatibility. Additionally, if organizations obtain tools for only a portion of the development process, they should consider acquiring them from a vendor that has a full line of products to ensure future compatibility if they add more tools.

Bullet

Unrealistic Expectations – Organizations often implement CASE technologies to reduce development costs. Implementing CASE strategies usually involves high start-up costs. Generally, management must be willing to accept a long-term payback period. Controls include requiring senior managers to define their purpose and strategies for implementing CASE technologies.

Bullet

Quick Implementation – Implementing CASE technologies can involve a significant change from traditional development environments. Typically, organizations should not use CASE tools the first time on critical projects or projects with short deadlines because of the lengthy training process. Additionally, organizations should consider using the tools on smaller, less complex projects and gradually implementing the tools to allow more training time.

Bullet

Weak Repository Controls – Failure to adequately control access to CASE repositories may result in security breaches or damage to the work documents, system designs, or code modules stored in the repository. Controls include protecting the repositories with appropriate access, version, and backup controls.

RAPID APPLICATION DEVELOPMENT
Rapid application development (RAD) is a software development technique that emphasizes short development times (30-90 days). The technique is inappropriate for developing complex applications or applications that quickly process significant volumes of transactions, such as batch processing environments. Organizations may appropriately use the technique to develop or redesign lower-risk applications, or less complex applications such as transactional websites that do not involve a high degree of throughput. Additionally, depending on an organization’s risk tolerance and the mission-critical designation of an application, organizations may use RAD techniques during the design and development phases within a structured development methodology.

Management should consider the functional complexity and security risks of an application when selecting a development methodology. Management should ensure that the development technique selected is appropriate for managing the complexity and risks of the application being developed.

The RAD process may involve only three phases: initiation, development, and implementation. The short duration of RAD projects necessitates the quick identification of functional requirements, which should remain largely unchanged during the development process. Typically, managers assign end users full time to a project and empower them to make key design decisions. However, they normally consult project specialists such as database administrators, network technicians, and system programmers, when they make key decisions.

End users and RAD team members usually create functional designs using prototyping tools in an iterative process. They create, review, and revise the prototypes as needed until they approve a final design.
RAD methodologies often employ object-oriented programming techniques that take advantage of reusable program objects. In the case of redesigned applications, designers and developers select objects based on the function they perform and re-link them to other reusable or newly created objects to form a new application.

Testing often occurs concurrently with the development of functional features. Organizations may conduct testing and implementation procedures quickly or in a structured process similar to SDLC testing and implementation phases. The speed and structure of testing and implementation procedures depends on an organization’s risk tolerance, an application’s mission-critical designation, and a project’s established deadlines.

Developers are increasingly creating web applications using RAD techniques. Numerous CASE-type products (for example, application program interfaces) are available that developers can use to combine pre-designed object-oriented functions to form unified applications.

Appropriate standards and controls should be in place to ensure:

Bullet

Organizations only use RAD techniques when appropriate;

Bullet

Management includes adequate security and control features in all developed applications;

Bullet

Quality assurance personnel verify that security and control features (commensurate with risk levels) exist and function as intended;

Bullet

End users are appropriately involved throughout RAD projects; and

Bullet

Project managers closely monitor project activities.