Software Construction. Implementation System Specification Requirements Analysis Architectural Design Detailed Design Coding & Debugging Unit Testing.

Slides:



Advertisements
Similar presentations
Credit hours: 4 Contact hours: 50 (30 Theory, 20 Lab) Prerequisite: TB143 Introduction to Personal Computers.
Advertisements

Configuration management
The Pseudocode Programming Process Chapter 9. Outline  Introduction  Design the routine.  Code the routine.  Check the code.  Clean up loose ends.
1 Program Design Language (PDL) Slides by: Noppadon Kamolvilassatian Source: Code Complete by Steve McConnell, Chapter 4.
Case Tools Trisha Cummings. Our Definition of CASE  CASE is the use of computer-based support in the software development process.  A CASE tool is a.
Chapter 15 Design, Coding, and Testing. Copyright © 2005 Pearson Addison-Wesley. All rights reserved Design Document The next step in the Software.
This set of slides is provided by the author of the textbook1 Introductory Topics l Computer Programming l Programming Life-Cycle Phases l Creating an.
Computers: Tools for an Information Age
Program Flow Charting How to tackle the beginning stage a program design.
Program Flow Charting How to tackle the beginning stage a program design.
Lecture Nine Database Planning, Design, and Administration
Implementation. We we came from… Planning Analysis Design Implementation Identify Problem/Value. Feasibility Analysis. Project Management. Understand.
Design, Implementation and Maintenance
Data Structures and Programming.  John Edgar2.
Upstream Prerequisites
Language Evaluation Criteria
The Pseudocode Programming Process Chapter 9. Summary of Steps in Building Classes and Routines.
Extreme Programming Software Development Written by Sanjay Kumar.
1 Shawlands Academy Higher Computing Software Development Unit.
1 Software Construction Software Construction Chapter 1.
Comp 245 Data Structures Software Engineering. What is Software Engineering? Most students obtain the problem and immediately start coding the solution.
Chapter 2 The process Process, Methods, and Tools
1 BTEC HNC Systems Support Castle College 2007/8 Systems Analysis Lecture 9 Introduction to Design.
RUP Implementation and Testing
Data Structures & AlgorithmsIT 0501 Algorithm Analysis I.
1 Computing Software. Programming Style Programs that are not documented internally, while they may do what is requested, can be difficult to understand.
Types for Programs and Proofs Lecture 1. What are types? int, float, char, …, arrays types of procedures, functions, references, records, objects,...
GCSE OCR 3 A451 Computing Professional standards
CSC-115 Introduction to Computer Programming
TMF1013 : Introduction To Computing Lecture 1 : Fundamental of Computer ComputerFoudamentals.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
BTEC Unit 06 – Lesson 08 Principals of Software Design Mr C Johnston ICT Teacher
SE: CHAPTER 7 Writing The Program
Systems Analysis and Design in a Changing World, Fourth Edition
Construction Planning and Prerequisite
The Software Development Process
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
MNP1163 (Software Construction).  SDLC and Construction Models  Construction Planning  Construction Measurement.
FORTRAN History. FORTRAN - Interesting Facts n FORTRAN is the oldest Language actively in use today. n FORTRAN is still used for new software development.
ANU COMP2110 Software Design in 2003 Lecture 10Slide 1 COMP2110 Software Design in 2004 Lecture 12 Documenting Detailed Design How to write down detailed.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
HNDIT23082 Lecture 09:Software Testing. Validations and Verification Validation and verification ( V & V ) is the name given to the checking and analysis.
Lecture #1: Introduction to Algorithms and Problem Solving Dr. Hmood Al-Dossari King Saud University Department of Computer Science 6 February 2012.
Evolution of C and C++ n C was developed by Dennis Ritchie at Bell Labs (early 1970s) as a systems programming language n C later evolved into a general-purpose.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
Introduction to Computer Programming Concepts M. Uyguroğlu R. Uyguroğlu.
PROGRAMMING (1) LECTURE # 1 Programming and Languages: Telling the Computer What to Do.
Victoria Ibarra Mat:  Generally, Computer hardware is divided into four main functional areas. These are:  Input devices Input devices  Output.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
 System Requirement Specification and System Planning.
Software Construction
Types for Programs and Proofs
Learning to Program D is for Digital.
CSCI-235 Micro-Computer Applications
1. Welcome to Software Construction
The Pseudocode Programming Process
Unit# 9: Computer Program Development
Lecture 09:Software Testing
Software Construction
Software Construction
Chapter 1 Introduction(1.1)
Software Construction
Program Design Language (PDL)
Software Construction
Software Construction Dr. Samer Odeh Hanna (PhD)
Software Construction
What is a System? A system is a collection of interrelated components that work together to perform a specific task.
Software Construction
Chapter 1: Creating a Program.
Introduction To Software Development Environment
Presentation transcript:

Software Construction

Implementation System Specification Requirements Analysis Architectural Design Detailed Design Coding & Debugging Unit Testing System Testing Maintenance

System Construction/Implementation (cont.) Reviewing other team members’ low-level designs and code and having them review yours Polishing code by carefully formatting and commenting it Integrating software components that have been built separately Tuning code to make it smaller and faster

System Construction/Implementation Verifying that the groundwork has been laid so that construction can proceed successfully Designing and writing routines and modules Creating data types and naming variables Selecting control structures and organizing blocks of statements Finding and fixing errors

Why is Software Construction Important? Construction is a large part of software development Construction is the pivotal (center) activity in software development With a focus on construction, the individual programmer’s productivity can improve enormously Construction’s product, the source code, is often the only accurate description of the software Construction is the only activity that’s guaranteed to be done

Software Metaphors/Style of Programming 1.Software Penmanship: Writing Code: It is like writing a casual letter – just write it from start to finish. It does not require any formal planning Problems: if the software is a project that requires more than one person

Software Metaphors/Style of Programming (cont.) 2.Software Farming: Growing a System: It is like planting seeds and growing crops. You design a piece, code a piece, test a piece and add it to the system a little bit at a time Problems: you don’t have any direct control over how the software develops

Software Metaphors/Style of Programming (cont.) 3.Software Oyster Farming: System Accretion: This approach is done by adding to your software a small amount at a time, that is, incremental designing, building and testing Problems: it takes time to finish, but more reliable

Software Metaphors/Style of Programming (cont.) 4.Software Construction: Building Software: –Developing software like building a tower –It covers planning, preparation, and execution –Apply reuse code, library, tools, etc to speed up the process

Prerequisites to Construction (Why is it important?) Prerequisites: the work that must be done to prepare for software construction. Many programmers don’t make preparation because: –They can’t resist the urge to begin coding –Managers force programmer to do coding soon Doing prerequisites before construction is necessary for: –Planning the stages of software development –Create a blueprint to be reviewed and approved before coding –Finding error or mistakes at the early stages

Problem-Definition Prerequisite Problem Definition Requirements Analysis Architecture Construction System Testing Future Improvement A clear statement of the problem that the system is supposed to solve.

Requirements Prerequisite Formal requirements is important –Help to ensure that the user, not programmer, drives the system functionality –Minimize changes to a system after development –Specifying requirements adequately is a key to a project success, perhaps even more important than effective construction techniques. The cost of errors detected in architecture stage is 5 times more expensive than in requirement phase. If detected in coding, 10 times more expensive; during system test is 20 times; during acceptance test is 50 times; and during maintenance is 100 times.

Architecture/Design Prerequisite The quality of the design determines the conceptual integrity of the system, and the quality of the system

Typical architectural components: Program organization (project modules) Change strategy (make it flexible to change) Buy vs build decisions (tools, libraries) Major data structures (database structure) Key algorithms (such as sorting technique) Major objects to be implemented Generic functionality (user interface, input/output) Error processing (preventing & detecting error) Robustness (ability to continue running after error) Performance goals (in terms of speed & memory) General architectural quality (open platform, future improvements)

Language Selection ProgramBest LanguagesWorst Lang Structured dataC/C++, PascalBasic, Assembler Quick projectVisual ProgrammingPascal, Assembler Fast executionAssembler, CBasic Easy-to-maintainPascal, C++Fortran Real-time program.Assembler, CBasic, Fortran String manipulationBasic PascalC DatabaseOracle, DB2, InformixAccess, GUI + OOVisual ProgrammingC, Cobol, Fortran Numeric ProcessingFortranBasic, C++

STEPS IN BUILDING ROUTINE Design the routine Check the design Check the code Code the routine Begin Done

PDL (Program Design Language) Use English-like statements that precisely describe specific operations Avoid syntactic elements from the target programming language Write PDL at the level of intent Write PDL at a low enough level that generating code from it will be nearly automatic

Example of PDL Increment resource number by 1 Allocate a dig struc using malloc If malloc() returns NULL then return 1 Invoke 0Srsrc_init to initialize a resource Example of bad PDL Example of Good PDL Keep track of current number of resources If another resource is available Allocate a dialog box structure If a dialog box structure could be allocated Note that one more resource in use Initialize the resource Store the resource number Endif Return TRUE if a new resource was created

Benefits of using PDL PDL makes reviews easier PDL supports the idea of iterative refinement PDL makes changes easier PDL minimizes commenting efforts PDL is easier to maintain than other forms of design documentation

Design the Routine Check the prerequisites Define the problem the routine will solve Name the routine Decide how to test the routine Think about efficiency Research the algorithms and data structures Write the PDL Think about the data Check the PDL Iterate

Code the Routine Write the routine declaration –Example: // This routine outputs an error msg // based on an error code supplied.... Procedure RecordErrorMsg { ErrorCode : ErrorCode_t; Var Status: Status_t; };

Code the Routine Turn the PDL into high-level comments, –Example: begin //set the default status.... end

Code the Routine Fill in the code below each comment Example: Check the code informally Clean up the leftovers Repeat steps as needed begin // set the default status Status := Failure; …… end

Code the Routine Check the code formally –Mentally check the routine for errors –Compile the routine –Use the computer to check the routine for errors –Remover errors from the routine