Unit 7 Study Guide and Review: Implementation
7a. Describe programming
- 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 provide guidance to the activities of 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. Traceability from the Design Model to the Implementation Model is captured and documented as it is with other models. 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 that correspond 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. The code is documented per coding standards, compiled, reviewed, tested, packaged for the execution environment, and allocated to the hardware. Can you name some software implementation objects? Updates to the design artifacts, for example, implementation objects and classes, need to be added to the class and object diagrams or tables. What are some artifacts used to document and communicate the implementation to stakeholders? Are UML component and deployment diagrams applicable to the implementation phase? To review, read "What is UML?".
Coding is guided by the same principles that guide design: encapsulation or information hiding, modularization, coupling, and cohesion. These principles were created to support the quality of the code, including maintainability, reusability, and testability. Since design 'determines' code, they are applied to design as well. Moreover, these design and programming principles promote the so-called non-technical characteristics, such as non-ambiguity or clarity. What are other non-technical characteristics? To review, read pages 35, 279, and 641-646 of The New Software Engineering.
The emphasis in the course is on the early phases of the development life-cycle, the Requirements and Design Phases. The Implementation Phase, like those Phases, includes data gathering, analysis, specification, and verification. Data gathering is discussed in Chapter 4 of The New Software Engineering and is a continuous activity that applies throughout development to all Phases. For the Implementation Phase, analysis and specification are the programming processes that are not directly addressed in the course, because they are the subject of programming courses and not software engineering. Verification is partially addressed in the context of testing in Unit 8 of this course. To review, read page 640 of The New Software Engineering.
The following IDEF diagram summarizes the Object-oriented Implementation Phase:
Consider data-oriented methods. What are data-oriented coding activities and artifacts?
The activities and artifacts focus on the coding of data, data values, data structure, and the processes that operate on data. The design artifacts are updated with implementation information. UML diagrams, except those that depend on inheritance, that pertain to the three sets of activities in the box above are applicable for representing data-oriented artifacts. Can you name some of those UML diagrams?
Consider process-oriented methods. What are process-oriented design activities and artifacts? The activities and artifacts focus on the processes, and, then, the data that is input or output of the processing. The design artifacts are updated with implementation information. UML diagrams, except those that depend on inheritance, are applicable for representing data-oriented artifacts that pertain to the three sets of activities in the box above.
7b. Identify the characteristics and selection of programming/implementation languages
- How is a programming language characterized?
- Why is it useful to characterize programming languages?
Programming language characteristics include technical and non-technical properties. Non-technical properties include project management, requirements, quality, business, and so on. Programming language characteristics are useful 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, what programming assignments to make to members of the team, what additional software tools may be needed to support programming, how compatible a language is with a development methodology, what areas of the software should be emphasized in testing, what the impact may affect the maintenance of the software, etc. To review, read pages 640-650 of The New Software Engineering.
In selecting a programming language for a development project, programming language characteristics may not clearly 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, a choice is often decided by non-technical properties. To review, read pages 651-655 of The New Software Engineering.
7c. Describe the concepts for purchasing of hardware and software
- Why is purchasing an issue for software development, in particular the Implementation Phase?
- What is contained in an RFP?
- How is a vendor selected?
- How are hardware, software, or services described in an RFP?
Purchasing hardware or 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 and instead outsourced or acquired. These decisions are made by project management, and called make-buy decisions.
Software can be developed, purchased, or reused. Developed software is produced by the programming activities of the Implementation Phase. Purchased software is obtained by an RFP procurement process. Reusable software is obtained from open sources or from in-house software libraries.
If the project decision is to purchase hardware, software, or services and the cost is substantial, a RFP procurement process is followed. What are some steps of the RFP process?
An RFP is a communication sent to vendors or contractors requesting proposals for hardware, software, or services. It is a detailed document that is similar to a requirements specification. It specifies the requirements of the hardware, software, or service and the information that a vendor or contractor must include in a proposal. What four types of information are included in an RFP?
Hardware, software, or services are identified and described using appropriate criteria, such as features, cost, and so on. What are some other criteria?
Vendors or contractors are selected using a weighting process to support the decision. What is the selection process? What should never be revealed in an RFP?
As with the selection of a programming language, the selection of the 'best' hardware, software, or vendor or contractor is not always clearly indicated by criteria and the evaluation process. Slight changes in the criteria or the weights could change the results due to the sensitivity of the scale used for weighting. Sensitivity analysis is used to identify the sensitivity of the weighting. The results of the evaluation are just information to making the decision, which is ultimately made by project management.
To review these materials, read chapter 18 of The New Software Engineering.
Unit 7 Vocabulary
This vocabulary list includes terms that might help you with the review items above and some terms you should be familiar with to be successful in completing the final exam for the course.
Try to think of the reason why each term is included.
- Algorithm
- Programming
- Programming language characteristics
- Uniformity
- Compactness
- Ambiguity
- Data type
- Exception handling
- Compile
- Execute
- Linearity
- Locality
- Local data
- Global data
- Modularization
- Structure
- Component diagram
- Deployment diagram
- Outsource
- In-house
- Open source
- Reusable subsystem
- RFP
- Evaluation
- Weights
- Scale
- Sensitivity