CS302 Study Guide

Unit 7: Implementation

7a. Differentiate between types of programming languages, including system languages, domain-specific languages, and scripting languages

  • What are the activities of the implementation phase?
  • What are the implementation or programming activities?
  • How are the work products of the implementation activities represented?
  • What principles guide the activities of the Implementation Phase?
  • Is programming the only activity for Implementation?
  • Why is purchasing an issue for software development, particularly the implementation phase?

The implementation phase activities build the programming or implementation model utilizing the requirements and design models and any additional data collected in the implementation phase. As with other models, we capture and document traceability from the design to the implementation model. This traceability information links a requirement to the software code that implements the corresponding design. This traceability is useful in maintenance since a change to a requirement affects the design elements and software code that the requirement traces to. Implementation activities identify the programming language constructs corresponding to the design model elements. 

Implementation activities identify the language constructs to define implementation objects, object attributes, methods, object instances, and messages to realize (build according to) the design specifications. The static and dynamic structures, including class hierarchy and message dynamics, are coded either by programming the code or obtaining it from a code library. We document the code according to coding standards, compile it, review it, test it, package it for the execution environment, and allocate it to the hardware. Updates to the design artifacts, for example, implementation objects and classes, must be added to the class and object diagrams or tables.

Design principles guide coding, incorporating encapsulation or information hiding, modularization, coupling, and cohesion. We created these principles to enhance the quality of the code, including maintainability, reusability, and testability. Since design "determines" code, we also apply these principles to the design. Moreover, these design and programming principles promote non-technical characteristics, such as non-ambiguity or clarity. Other non-technical characteristics derive from non-functional requirements. 

The course emphasizes the early phases of the development life-cycle, the Requirements and Design Phases. The Implementation Phase includes data gathering, analysis, specification, and verification. Data gathering is a continuous activity that applies throughout development to all Phases. For the Implementation Phase, analysis and specification are the programming processes not directly addressed in the course because they are the subject of programming courses, not software engineering.

Data-oriented coding activities and artifacts focus on data coding, values, structure, and processes that operate on data. We updated the design artifacts with implementation information. UML diagrams, except those that depend on inheritance, that pertain to the three sets of activities are applicable for representing data-oriented artifacts.

Process-oriented design activities and artifacts focus on the processes and, then, the data that is the input or output for processing. Updates to the design artifacts using the implementation information. UML diagrams are applicable for representing data-oriented artifacts that pertain to the three sets of activities, except those that depend on inheritance.

Software can be developed, purchased, or reused. The programming activities of the Implementation Phase produce developed software. An RFP procurement process obtains purchased software. We obtain reusable software from open sources or in-house software libraries.

Purchasing hardware, software, or services is an issue for a development project because a part of the development (a phase, activity, subsystem, or component) may not be performed in-house but instead outsourced or acquired. These decisions are made by project management and called make-buy decisions. If the project decision is to purchase hardware, software, or services and the cost is substantial, we use an RFP procurement process. 

To review, see:


7b. Identify the characteristics of and select software programming languages, such as systems programming languages and web programming languages

  • How is a programming language characterized?
  • Why is it beneficial to characterize programming languages?

Programming language characteristics include technical and non-technical properties. Non-technical properties include project management, requirements, quality, and business. Programming language characteristics are helpful information in making a variety of development and project decisions, including what programming language to use for the application or part(s) of the application. We determine what programming assignments to make to members of the team and what additional software tools we may need to support programming, how compatible a language is with a development methodology, what areas of the software should be emphasized in testing, and what impact may affect the maintenance of the software. 

In selecting a programming language for a development project, programming language characteristics may not differentiate between programming languages because most current languages have features that cover most, if not all, of the properties. The difference between languages is in the degree or extent to which they have a given property. In such situations, non-technical properties or requirements often decide a choice. 

To review, see Software Construction and Choosing Implementation Languages.


7c. Explain the benefit of version control systems

  • Why is version control important?

A version control system is a software tool that identifies and controls different file, document, or software component versions. It is a subset of a software configuration management system (CMS). 

Development involves numerous changes to files, documents, and software components. Other changes cause changes; for example, a change to a requirement may cause changes to design, code, and test components. Changes may occur due to errors, improvements, and accommodation of multiple types of hardware (like different processors) or software (like programming languages). Also, implementing changes involves shared team activity, which complicates control of the changes. In effect, identifying and controlling components and their changes for a large software development project is complex, and the risk of loss can be significant if versions are lost. 

To review, see Version Control Systems and Software Configuration Management.


Unit 7 Vocabulary

This vocabulary list includes terms you must know to complete the final exam successfully.

  • implementation phase
  • programming language characteristics
  • version control system