Unit 7: Object-Oriented Implementations
Implementation, also known as programming or coding, is the process of using a programming language to convert specified requirements into software source code and later into compiled code for execution. Programmers can use automated tools to convert design requirements into code. Sometimes, vendors are subcontracted to develop all or part of the software and even the hardware it will run on, according to specified requirements. In these situations, vendors will bid on the subcontract by providing a proposal.
Completing this unit should take you approximately 2 hours.
Upon successful completion of this unit, you will be able to:
- differentiate between types of programming languages, including system languages, domain-specific languages, and scripting languages;
- identify the characteristics of and select software programming languages, such as systems programming languages and web programming languages; and
- explain the benefit of version control systems.
7.1: History of Programming
What is the difference between OOL (Object Oriented Language) and OOD?
7.2: Choosing Implementation Languages
A programming language is often selected before a development project begins or may be specified in the requirements. The selection of a programming language depends on several factors, including business goals, market strategy, language features, familiarity and expertise in a language, compatibility with available hardware and software systems, and compatibility with organizational models, processes, procedures, practices, methodologies, and tools. The factors determining the language choice for a software development project affect cost, schedule, quality, and achievement of other project objectives.
This section discusses OO implementation. "OO" is a design abstraction, meaning it can be implemented in several (perhaps many) ways. It is implemented via programming language features built into an OOL (Object Oriented Language). However, there are other ways to implement OO. For example, OO could be implemented at a lower level, using operating system processes, data, and network functions, or it could be implemented at a higher level, using a development environment. OO could even be implemented at the lowest level via hardware or firmware. Consider project requirements that specify an application design that shall be deployed for any programming language and computer hardware with a full-function operating system.
Construction languages include all forms of communication that a human can use to specify an executable problem solution to a computer. As you read, differentiate between different languages and three general kinds of notation used for programming languages: linguistic (word-like strings of text), Formal (words and text strings backed up by precise, unambiguous, and formal or mathematical definitions), and visual (direct visual interpretation and placement of visual entities).
Software construction includes coding of components, linking with library code, and integration of components to form a complete system. Software construction is an activity where the transition from the solution domain (planning, architecture, design) to the problem or real-world domain starts or increases depending on the software development methodology used. This gives a concise and relevant overview of software construction. It is relevant for all programming languages: old languages like COBOL and FORTRAN, current languages like Java, C++, and Python, internet languages like HTML and JavaScript, and distributed and concurrent programming languages.
7.3: Version Control Systems
Version control is a process or tool for tracking and managing changes to software code. Changes occur during the code development, testing phases, and maintenance. Changes are made by you or your teammates working on the code. A change could result from an improvement, an error, or a change. Software code is organized according to the software architecture and stored as modules. Version control provides a standard way of assigning a version identifier to a module file, which includes the version name and creation date/time. Version control is one activity of Software Configuration Management (SCM).
Version control tools have existed since the beginning of assembler language programming. Yes, they have improved over the years to include some Software Configuration and project management functions and improvements in usability, security, performance, adaptability, etc. However, conceptually (i.e., at a higher level of abstraction), they have not changed because they provide support for the identification and control of stored data and changes to that data - fundamental functional requirements that are not likely to be affected by new technology or, in other terms, the process and procedures for version control, except for increasing efficiency, scale, or security. For example, Git and GitHub are old but still among the most popular tools for version control and software code repositories. Here are summaries of these two code support tools.
- Git (2005) - Linux open source community - distributed version control system or software code management system - supports branching, merging of branches, distributed development, CI/CD (continuous integration / continuous deployment), cloud storage, developer collaboration;
- GitHub (2009) Microsoft - software code repository platform - web-based management of software code repositories, uses Git for version control and developer collaboration.
Software configuration management (SCM) is a critical element of software engineering. Read about the benefits of control systems and consider issues that might arise in the implementation process. SCM is a supporting software life cycle process that helps development and maintenance activities, assurance activities, and project management in general. We will discuss these further in Unit 9.
Software Configuration Management is a process for identifying, controlling, and managing software artifacts during the SDLC and the entire life cycle of the developed software system. Beginning with the Software Requirements, project development produces an architectural structure that evolves into an organization of many software components, each of which may have many versions. The versions result from changes to specifications during development, correction of errors, or allocation to multiple hardware platforms and operational environments. A software configuration is an integral subset of the architectural component versions needed to satisfy requirements. Multiple software configurations may be necessary to meet all the requirements.
As with version control tools, SCM software support has not changed. The SCM processes and procedures have been stable. New technology has not changed them but has improved their "ilities" – usability, adaptability, reliability, and scalability.
Unit 7 Assessment
- Receive a grade
Take this assessment to see how well you understood this unit.
- This assessment does not count towards your grade. It is just for practice!
- You will see the correct answers when you submit your answers. Use this to help you study for the final exam!
- You can take this assessment as many times as you want, whenever you want.