Software Development Fundamentals, Design-Software Project Management-Lecture Notes, Study notes of Software Project Management

Project Management is the art of maximizing the probability that a project delivers its goals on Time, to Budget and at the required Quality. This lecture handout was provided by Sir Debashis Koppale. It includes: Software, Technical, Development, Structure, Data, Attribute, Design, Kernel, Algorithmic, Process, Part, Configuration

Typology: Study notes

2011/2012

Uploaded on 08/07/2012

angana
angana 🇮🇳

4.4

(52)

158 documents

1 / 5

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Software Project Management (CS615)
107
LECTURE # 16
2. Software Development Fundamentals
Technical Fundamentals
2.12 Design
Management Aspect
Major design styles
Object, structured, data-structured design
Foundational design concepts
Information hiding, abstraction, encapsulation, Inheritance, basic
algorithms & data structures, ...
Attributes of SW Design
Software design is actually a multi step process that focuses on four
distinct attributes of a program:
Data structure,
Software architecture,
Interface representations, and procedural (algorithmic) detail.
The design process translates requirements into a representation of the
software that can be assessed for quality before coding begins.
Like requirements, the design is documented and becomes part of the
software configuration.
Design is the technical kernel of software engineering. During design,
progressive refinements of data structure, architecture, interfaces, and
procedural detail of software components are developed, reviewed, and
documented.
Design results in representations of software that can be assessed for
quality. A number of fundamental software design principles and concepts
have been proposed over the past four decades.
Design principles guide the software engineer as the design process
proceeds. Design concepts provide basic criteria for design quality.
docsity.com
pf3
pf4
pf5

Partial preview of the text

Download Software Development Fundamentals, Design-Software Project Management-Lecture Notes and more Study notes Software Project Management in PDF only on Docsity!

LECTURE # 16

2. Software Development Fundamentals

Technical Fundamentals

2.12 Design

 Management Aspect

  • Major design styles
    • Object, structured, data-structured design
  • Foundational design concepts
    • Information hiding, abstraction, encapsulation, Inheritance, basic algorithms & data structures, ...

 Attributes of SW Design

Software design is actually a multi step process that focuses on four distinct attributes of a program:

  • Data structure,
  • Software architecture,
  • Interface representations, and procedural (algorithmic) detail.

The design process translates requirements into a representation of the software that can be assessed for quality before coding begins_._

Like requirements, the design is documented and becomes part of the software configuration.

Design is the technical kernel of software engineering. During design, progressive refinements of data structure, architecture, interfaces, and procedural detail of software components are developed, reviewed, and documented.

Design results in representations of software that can be assessed for quality. A number of fundamental software design principles and concepts have been proposed over the past four decades.

Design principles guide the software engineer as the design process proceeds. Design concepts provide basic criteria for design quality.

docsity.com

a. Code generation

The design must be translated into a machine-readable form. The code generation step performs this task. If design is performed in a detailed manner, code generation can be accomplished mechanistically.

b. Testing

Once code has been generated, program testing begins. The testing process focuses on the logical internals of the software, ensuring that all statements have been tested and on the functional externals; that is, conducting tests to uncover errors and ensure that defined input will produce actual results that agree with required results.

 Key Features of Design

A number of fundamental software design principles and concepts have been proposed over the past four decades. Design principles guide the software engineer as the design process proceeds. Design concepts provide basic criteria for design quality. Support

Support

Software will undoubtedly undergo change after it is delivered to the customer (a possible exception is embedded software). Change will occur because errors have been encountered, because the software must be adapted to accommodate changes in its external environment (e.g. a change required because of a new operating system or peripheral device), or because the customer requires functional or performance enhancements.

Software support/maintenance reapplies each of the preceding phases to an existing program rather than a new one.

Modularity

Modularity (in both program and data) and the concept of abstraction enable the designer to simplify and reuse software components. Refinement provides a mechanism for representing successive layers of functional detail. Program and data structure contribute to an overall view of software architecture, while procedure provides the detail necessary for algorithm implementation.

docsity.com

  • To ensure that project stays consistent over time: You need to:

a) Evaluate proposed changes b) Track the changes c) Control the Version d) Check integrity of Source code, documents, plans, design e) Ensure quality

 Software Configuration Management Activities

SCM is used to establish and maintain integrity of software items and ensure that they can be traced easily. Using SCM, you can define a library structure for storage and retrieval of software items. SCM needs to be performed at all phases in the SDLC of a software project. The various SCM activities are:

  1. Identifying Objects
  2. Controlling Versions
  3. Controlling Changes
  4. Auditing
  5. Communicating Changes 1. Identifying Objects

The first activity in SCM involves identifying software configurable items (SCIs). SCI is an aggregation of software that is designated for configuration management. It is treated as a single entity in the configuration management process. For example, design documents, program code, test case, and custom requirement document are configurable items.

You can use the Item Traceability Matrix to identify SCIs at the end of each phase. A sample of Item Traceability Matrix is displayed in Table

  1. In the table, you can see the different SCIs in different phases of the development process.

docsity.com

Table 1: Item Traceability Matrix Phase Deliverable Name Requirement Analysis Design Construction Testing

Requirement Analysis Document

Requirement Analysis Document

Design Document

Functional Specification Document and Program Specification Document

Code

Code A Code B Code C

Test Document

Unit Test Cases System Test Cases Database Design Document

Database Design Specification

To identify SCls, you need to first breakdown the project deliverable to the SCI level. Each phase in the project has its own deliverables. To trace the deliverables, you need to map the SCls to the phases in which they are delivered.

2. Controlling Versions

Version control combines procedures and tools to manage different versions of configuration objects that are created during software product development. To control versions, you can use Version Control Register. In Version Control Register, you enter the details of components, such as component identification numbers, their versions, and dates of validity. It is advisable to release a baseline after a version is released. Baseline is a specification or a product that is formally reviewed and agreed upon. This serves as the basis for further development. Baseline can be changed only through formal change control procedures. A baseline consists of a set of SCIs that are logically related to each other. Baselines are established when subsequent changes to the SCIs need to be controlled. Version control is essential so that everybody uses only the latest version. Any kind of version mismatch might result in rework.

docsity.com