Software Paradigms (Lesson 1) Introduction & Procedural Programming Paradigm
|
|
|
- Edwin Griffith
- 10 years ago
- Views:
Transcription
1 Software Paradigms (Lesson 1) Introduction & Procedural Programming Paradigm Table of Contents 1 Introduction Programming Paradigm Software Design Paradigm Design Patterns Components: Software Architecture: Frameworks: Software Engineering and Software Paradigms Build and Fix model Waterfall and Modified Waterfall models Waterfall Model Modified Waterfall Model Rapid Prototyping Boehm s Spiral Model Imperative (Procedural) Programming Paradigm Variables and Types Functions (Procedures) Data Exchange between Functions (Procedures) Passing arguments to a function Polymorhic Languages Variable Scope Software Design Methodology (Procedural Paradigm) Design Implementation Testing... 18
2 1 Introduction "Paradigm" (a Greek word meaning example) is commonly used to refer to a category of entities that share a common characteristic. We can distinguish between three different kinds of Software Paradigms: Programming Paradigm is a model of how programmers coomunicate an calculation to computers Software Design Paradigm is a model for implementing a group of applications sharing common properties Software Development Paradigm is often referred to as Software Engineering, may be seen as a management model for implementing big software projects using engineering principles. 1.1 Programming Paradigm A Programming Paradigm is a model for a class of Programming Languages that share a set of common characteristics. A programming language is a system of signs used to communicate a task/algorithm to a computer, causing the task to be performed. The task to be performed is called a computation, which follows absolutely precise and unambiguous rules. At the heart it all is a fundamental question: What does it mean to understand a programming language? What do we need to know to program in a language? There are three crucial components to any language. The language paradigm is a general principles that are used by a programmer to communicate a task/algorithm to a computer. The syntax of the language is a way of specifying what is legal in the phrase structure of the language; knowing the syntax is analogous to knowing how to spell and form sentences in a natural language like English. However, this doesn t tell us anything about what the sentences mean. The third component is semantics, or meaning, of a program in that language. Ultimately, without a semantics, a programming language is just a collection of meaningless phrases; hence, the semantics is the crucial part of a language. There have been a large number of programming languages. Back in the 60 s there were over 700 of them most were academic, special purpose, or developed by an organization for their own needs.
3 Fortunately, there are just four major programming language paradigms: Imperative (Procedural) Paradigm (Fortran, C, Ada, etc.) Object-Oriented Paradigm (SmallTalk, Java, C++) Logic Paradigm (Prolog) Functional Paradigm (Lisp, ML, Haskell) Generally, a selected Programming Paradigm defines main property of a software developed by means of a programming language supporting the paradigm. scalability/modifiability integrability/reusability portability performance reliability ease of creation 1.2 Software Design Paradigm Software Design Paradigm embody the results of people s ideas on how to construct programs, combine them into large software systems and formal mechanisms for how those ideas should be expressed. Thus, we can say that a Software Design Paradigm is a model for a class of problems that share a set of common characteristics. Software design paradigms can be sub-divided as: Design Patterns Components Software Architecture Frameworks It should be especially noted that a particular Programming Paradigm essentially defines software design paradigms. For example, we can speak about Object-Oriented design patterns, procedural components (modules), functional software architecture, etc Design Patterns A design pattern is a proven solution for a general design problem. It consists of communicating objects that are customized to solve the problem in a particular context. Patterns have their origin in object-oriented programming where they began as collections of objects organized to solve a problem. There isn't any fundamental relationship between patterns and objects; it just happens they began there. Patterns may have arisen because objects seem so elemental, but the problems we were trying to solve with them were so complex. Architectural Patterns: An architectural pattern expresses a fundamental structural organization or schema for software systems. It provides a set of predefined subsystems, specifies their responsibilities, and includes rules and guidelines for organizing the relationships between them. Design Patterns: A design pattern provides a scheme for refining the subsystems or components of a software system, or the relationships between them. It describes commonly
4 recurring structure of communicating components that solves a general design problem within a particular context. Idioms: An idiom is a low-level pattern specific to a programming language. An idiom describes how to implement particular aspects of components or the relationships between them using the features of the given language Components: Often equated to design patterns with Emphasis on reusability Software components are binary units of independent production, acquisition, and deployment that interact to form a functioning program. A component is a physical and replaceable part of a system that conforms to and provides the realization of a set of interfaces...typically represents the physical packaging of otherwise logical elements, such as classes, interfaces, and collaborations A component must be compatible and interoperate with a whole range of other components. Examples of components: Window, Push Button, Text Editor, etc. Two main issues arise with respect to interoperability information: 1. how to express interoperability information (e.g. how to add a push button to a window ; 2. how to publish this information (e.g. library with API reusable via an include statement) Software Architecture: Software architecture is the structure of the components of the solution. A particular software architecture decomposes a problem into smaller pieces and attempts to find a solution (Component) for each piece. We can also say that an architecture defines a software system components, their integration and interoperability: Integration means the pieces fit together well. Interoperation means that they work together effectively to produce an answer. There are many software architectures. Choosing the right one can be a difficult problem in itself Frameworks: A software framework is a reusable mini-architecture that provides the generic structure and behavior for a family of software abstractions, along with a context of metaphors which specifies their collaboration and use within a given domain. Frameworks can be seen as an intermediate level between components and a software architecture. Example: Suppose an architecture of a WBT system reuse such components as Text Editing Input object and Push buttons. A software framework may define an HTML Editor which can be firther reused for building the architecture.
5 2 Software Engineering and Software Paradigms The term "software engineering" was coined in about 1969 to mean "the establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines". This view opposed uniqueness and "magic" of programming in an effort to move the development of software from "magic" (which only a select few can do) to "art" (which the talented can do) to "science" (which supposedly anyone can do!). There have been numerous definitions given for software engineering (including that above and below). Software Engineering is not a discipline; it is an aspiration, as yet unachieved. Many approaches have been proposed including reusable components, formal methods, structured methods and architectural studies. These approaches chiefly emphasize the engineering product; the solution rather than the problem it solves. Software Development current situation: People developing systems were consistently wrong in their estimates of time, effort, and costs Reliability and maintainability were difficult to achieve Delivered systems frequently did not work 1979 study of a small number of government projects showed that: 2% worked 3% could work after some corrections 45% delivered but never successfully used 20% used but extensively reworked or abandoned 30% paid and undelivered Fixing bugs in delivered software produced more bugs Increase in size of software systems NASA StarWars Defense Initiative Social Security Administration financial transaction systems Changes in the ratio of hardware to software costs early 60's - 80% hardware costs middle 60's % software costs today - less than 20% hardware costs Increasingly important role of maintenance Fixing errors, modification, adding options Cost is often twice that of developing the software Advances in hardware (lower costs) Advances in software techniques (e.g., users interaction) Increased demands for software Medicine, Manufacturing, Entertainment, Publishing Demand for larger and more complex software systems
6 Airplanes (crashes), NASA (aborted space shuttle launches), "ghost" trains, runaway missiles, ATM machines (have you had your card "swallowed"?), life-support systems, car systems, etc. US National security and day-to-day operations are highly dependent on computerized systems. Manufacturing software can be characterized by a series of steps ranging from concept exploration to final retirement; this series of steps is generally referred to as a software lifecycle. Steps or phases in a software lifecycle fall generally into these categories: Requirements (Relative Cost 2%) Specification (analysis) (Relative Cost 5%) Design (Relative Cost 6%) Implementation (Relative Cost 5%) Testing (Relative Cost 7%) Integration (Relative Cost 8%) Maintenance (Relative Cost 67%) Retirement Software engineering employs a variety of methods, tools, and paradigms. Paradigms refer to particular approaches or philosophies for designing, building and maintaining software. Different paradigms each have their own advantages and disadvantages which make one more appropriate in a given situation than perhaps another (!). A method (also referred to as a technique) is heavily depended on a selected paradigm and may be seen as a procedure for producing some result. Methods generally involve some formal notation and process(es). Tools are automated systems implementing a particular method. Thus, the following phases are heavily affected by selected software paradigms Design Implementation Integration Maintenance The software development cycle involves the activities in the production of a software system. Generally the software development cycle can be divided into the following phases: Requirements analysis and specification Design Preliminary design Detailed design Implementation Component Implementation Component Integration System Documenting
7 Testing Unit testing Integration testing System testing Installation and Acceptance Testing Maintenance Bug Reporting and Fixing Change requirements and software upgrading Software lifecycles that will be briefly reviewed include: Build and Fix model Waterfall and Modified Waterfall models Rapid Prototyping Boehm's spiral model 2.1 Build and Fix model This works OK for small, simple systems, but is completely unsatisfactory for software systems of any size. It has been shown empirically that the cost of changing a software product is relatively small if the change is made at the requirements or design phases but grows large at later phases. The cost of this process model is actually far greater than the cost of a properly specified and designed project. Maintenance can also be problematic in a software system developed under this scenario. Figure: Build and Fix model 2.2 Waterfall and Modified Waterfall models Waterfall Model Derived from other engineering processes in Offered a means of making the development process more structured. Expresses the interaction between subsequent phases.
8 Figure: Waterfall model Each phase cascades into the next phase. In the original waterfall model, a strict sequentially was at least implied. This meant that one phase had to be completed before the next phase was begun. It also did not provide for feedback between phases or for updating/re-definition of earlier phases. Implies that there are definite breaks between phases, i.e., that each phase has a strict, nonoverlapping start and finish and is carried out sequentially. Critical point is that no phase is complete until the documentation and/or other products associated with that phase are completed Modified Waterfall Model Needed to provide for overlap and feedback between phases. Rather than being a simple linear model, it needed to be an iterative model. To facilitate the completion of the goals, milestones, and tasks, it is normal to freeze parts of the development after a certain point in the iteration. Verification and validation are added. Verification checks that the system is correct (building the system right). Validation checks that the system meets the users desires (building the right system). Figure: Modified Waterfall model The waterfall model (and modified waterfall model) are inflexible in the partitioning of the project into distinct phases. However, they generally reflect engineering practice. Considerable emphasis must be placed on discerning users' needs and requirements prior to the system being built. The identification of users' requirements as early as possible, and the agreement between user and developer with respect to those requirements, often is the deciding factor in the success or failure of a software project. These requirements are documented in the
9 requirements specification, which is used to verify whether subsequent phases are complying with the requirements. Unfortunately specifying users' requirements is very much an art, and as such is extremely difficult. Validation feedback can be used to prevent the appearance of a strong divergence between the system under development and the users' expectations for the delivered system. Unfortunately, the waterfall lifecycle (and the modified waterfall lifecycle) are inadequate for realistic validation activities. They are exclusively document driven models. The resulting design reality is that only 50% of the design effort occurs during the actual design phase with 1/3 of the design effort occurring during the coding activity! This is topped by the fact that over 16% of the design effort occurs after the system is supposed to be completed! In general the behavior of many individuals in this type of process is opportunistic. The boundaries of phases are indiscriminately crossed with deadlines being somewhat arbitrary. 2.3 Rapid Prototyping Prototyping also referred to as evolutionary development, prototyping aims to enhance the accuracy of the designer's perception of the user's requirements. Prototyping is based on the idea of developing an initial implementation for user feedback, and then refining this prototype through many versions until an satisfactory system emerges. The specification, development and validation activities are carried out concurrently with rapid feedback across the activities. Generally, prototyping is characterized by the use of very high-level languages, which probably will not be used in the final software implementation but which allow rapid development, and the development of a system with less functionality with respect to quality attributes such as robustness, speed, etc. Figure: Rapid Prototyping model Prototyping allows the clarification of users requirements through, particularly, the early development of the user interface. The user can then try out the system, albeit a (sub) system of what will be the final product. This allows the user to provide feedback before a large investment has been made in the development of the wrong system. There are two types of prototypes: Exploratory programming: Objective is to work with the user to explore their requirements and deliver a final system. Starts with the parts of the system which are understood, and then evolves as the user proposes new features. Throw-away prototyping: Objective is to understand the users' requirements and develop a better requirements definition for the system. Concentrates on poorly understood components. Experiments with prototyping showed that this approach took 40% less time and resulted in 45% less code; however, it produced code which was not as robust, and therefore more difficult to maintain. Documentation was often sacrificed or done incompletely. The schedule expectations of users and managers tended to be unrealistic especially with respect to throw-away prototypes.
10 2.4 Boehm s Spiral Model Need an improved software lifecycle model which can subsume all the generic models discussed so far. Must also satisfy the requirements of management. Boehm proposed a spiral model where each round of the spiral a) identifies the sub problem which has the highest risk associated with it b) finds a solution for that problem.
11 3 Imperative (Procedural) Programming Paradigm Any imperative program consists of Declarative statements which gives a name to a value. A named value is called a variable. Thus, declarative statements create variables. In procedural languages it is common for the same variable to keep changing value as the program runs. Imperative statements which assign new values to variables Program flow control statements which define order in which imperative statements are evaluated. Example: var factorial = 1; /*Declarative statement*/ var argument = 5; var counter = 1; while (counter <= argument) /*Program flow statement*/ factorial = factorial*counter; /*Imperative statement*/ counter++; 3.1 Variables and Types Different variables in a program may have different types. For example, a language may treat a two bytes as a string of characters and as a number. Dividing a string 20 by number 2 may not be possible. A language like this has at least two types - one for strings and one for numbers. Example: var PersonName = new String(); /*variable type string */ var PersonSalary = new Integer(); /*variable type integer */ Types can be weak or strong. Strong type means that at any point in the program, when it is running, the type of a particular chunk of data (i.e. variable) is known. Weak type means that imperative operators may change a variable type. Example: var PersonName; /*variable of a weak type */ PersonName = 0; /*PersonName is an integer */ PersonName = Nick ; /*PersonName is a string */ Obviously, languages supporting weak variable types need sophisticated rules for type conversions. Example: var PersonName; /*variable of a weak type */ PersonName = 0; /*PersonName is an integer */ PersonName = PersonName + Nick + 0; /*PersonName is a string 0Nick0 */ To support weak typing, values are boxed together with information about their type - value and type are then passed around the program together.
12 3.2 Functions (Procedures) Programmers have dreamed/attempted of building systems from a library of reusable software components bound together with a little new code. Imperative (Procedural) Programming Paradigm is essentially based on concept of so-called Functions also known as Modules, Procedures or Subroutines. A function is a section of code that is parceled off from the main program and hidden behind an interface: function factorial(parameter) var i = 1; var result = 1; while(i <= parameter) result = result * i; i++; return(result); The code within the function performs a particular activity, here generating a factorial value The idea of parceling the code off into a subroutine is to provide a single point of entry. Anyone wanting a new factorial value has only to call the factorial function with the appropriate parameters. Here's what the conventional application based on the Imperative (Procedural) Programming Paradigm looks like:
13 Main procedure determines the control flow for the application Functions are called to perform certain tasks or specific logic The main and sub procedures that comprise the implementation are structured as a hierarchy of tasks. The source for the implementation is compiled and linked with any additional executable modules to produce the application 3.3 Data Exchange between Functions (Procedures) When a software system functionality is decomposed into a number of functional modules, data exchange/flow becomes a key issue. Imperative (Procedural) Programming Paradigm extends the concept of variables to be used as such data exchange mechanism. Thus, each procedure may have a number of special variables called parameters. The parameters are just named place-holders which will be replaced with particular values (or references to existing values) of arguments when the procedure is called. Example: function main() var argument = 25; var result = factorial(argument) /* Note, the imperative operator replaces the parameter place holder with a current value of the variable argument */ function factorial(parameter) var i = 1; var result = 1; while(i <= parameter) result = result * i; i++; return(result);
14 3.3.1 Passing arguments to a function There might be two different techniques for such replacement which are known as: passing an argument value and passing an argument reference. In case of passing a value, a current argument value is duplicated as a value for new parameter variable dynamically created for the procedure. In this case, variables used as arguments for calling sub-routines cannot be modified by imperative operators inside of the sub-routines. In case of passing a reference, the sub-routine gets control (i.e. reference) to a current value of the argument variable. In this case, variables used as arguments for calling sub-routines can be modified by imperative operators inside of the sub-routines. Thus, types of variables defined as parameters of a function should be equivalent to (or at least compatible with) types of variables (constants) used as arguments Polymorhic Languages When strong static typing is enforced it can be difficult to write generic algorithms - functions that can act on a range of different types. Polymorphism allows "any" to be included in the type system. For example, the types of a list of items are unimportant if we only want to know the length of the list, so a function can have a type that indicates that it takes lists of "any" type and returns an integer. Moreover, polymorphism allows to combine functions implemented by means of different programming languages supporting potentially different types of variables. Pragmatically speaking, polymorphic languages allow to define new types as hidden functions which should be automatically applied to values of such user-defined type to convert it to values of a standard language type Variable Scope Normally, variables that are defined within a function, are created each time the function is used and destroyed again when the function ends. The value that the function returns is not destroyed, but it is not possible to assign a value to the variable inside the function definition from outside. Example: function one() var dynamiclocalvariable = 25; two(); /* at this point just one variable dynamiclocalvariable exists */ alert(dynamiclocalvariable); /* this operator displays the current value 25 */ function two() var dynamiclocalvariable = 55; /* at this point two variables dynamiclocalvariable exists */ alert(dynamiclocalvariable); /* this operator displays the current value 55 */ Such variables are called dynamic local variables. There may be also so-called static local variables. Static local variables that are defined within a function, are created only once when the function is used for a first time. The value of such variable is not destroyed and can be reused when the function is called again.
15 Example: function one() var x = two(); alert(x); /* this operator displays the current value 10 */ x = two(); alert(x); /* this operator displays the current value 20 */ function two() var static staticlocalvariable = 0; staticlocalvariable = staticlocalvariable + 10; return(staticlocalvariable); Note that function two returns different values for one and the same set of arguments. Such functions are called reactive functions. Generally, testing and maintenance of projects having many reactive functions becomes a very difficult task. For practical reasons many software projects do use some static data. Note, it is still not possible to assign a value to the local static variable inside a function from outside. There may be also so-called static global variables. Static global variables that are defined within any function, are created only once when the whole software system is initiated. The value of such variable is never destroyed and can be reused by imperative operators inside any function. Example: function one() var global globallocalvariable = 0; two(); alert(globallocalvariable); /* this operator displays the current value 10 */ two(); alert(globallocalvariable); /* this operator displays the current value 20 */ function two() globallocalvariable = globallocalvariable + 10; Here, the function two also demonstrates a reactive behavior. Maintaining and testing of projects heavily based on global variables becomes even more difficult than in case of local static variables. Nevertheless, for practical reasons many software development paradigms do use such global static variables.
16 4 Software Design Methodology (Procedural Paradigm) Benefits of the Paradigm: Re-usability: anyone that needs a particular functionality can use an appropriate module, without having to code the algorithm from scratch. Specialization: one person can concentrate on writing a best possible module (function) for a particular task while others look after other areas. Upgradability: if a programmer comes up with a better way to implement a module then he/she simply replace the code within the function. Provided the interface remains the same - in other words the module name and the order and type of each parameter are unchanged - then no changes should be necessary in the rest of the application. However procedural modules have serious limitations: For a start, there is nothing to stop another programmer from meddling with the code within a module, perhaps to better adapt it to the needs of a particular application. There is also nothing to stop the code within the function making use of global variables, thus negating the benefits of a single interface providing a single point of entry. Obviously, the paradigm is best suited for the waterfall model of software development. 4.1 Design A particular software system is viewed in terms of its modules and data flowing between them starting with a high-level view. In this case, software design methodology can be categorized as a Top-down modular design (functional design viewpoint). The basic design concepts include: Modularity Modules are used to describe a functional decomposition of the system A module is a unit containing: executable statements data structures other modules A module: has a name can be separately compiled can be used in a program or by other modules System design generally determines what goes into a module Cohesive
17 Single clearly defined function Description of when and how used Loosely Coupled Modules (Modules implement functionality, but not parts of other modules) Black Boxes (information hiding) each module is a black box each module has a set of known inputs and a set of predictable outputs inner workings of module are unknown to user can be reusable Preliminary and Detailed Design specify the modules to carry out the functions in the DataFlow Diagrams (DFD). Preliminary design deals mainly with Structure Charts Hierarchical tree structure Modules - rectangle boxes calling relationships are shown with arrows arrows are labeled with the data flowing between modules Module Design Title Module ID - from structure charts Purpose Method - algorithm Usage - who calls it External references - other modules called Calling sequence - parameter descriptions Input assertion Output assertion Local variables Author(s) Remarks Preliminary Design Document Cover Page Table of Contents Design Description Software Structure Charts
18 Data Dictionary Module Designs Module Headers Major Data Structures Design Design Reviews (Examination of all or part of the software design to find design anomalies ) Overview of Detailed Design select an algorithm for each module refine the data structures produce detailed design document 4.2 Implementation Coding (for each Module) Source Code Documentation Integration Decide what order the modules will be assembled Assemble and test integration of modules After final assembly perform system test Note, coding and testing are often done in parallel 4.3 Testing Types of testing Unit testing Integration testing Acceptance testing As it was mentioned above, the paradigm is best suited for the waterfall model of software development. Implementing change requirements and especially rapid prototyping are weak points of the programming paradigm.
Introduction to Software Paradigms & Procedural Programming Paradigm
Introduction & Procedural Programming Sample Courseware Introduction to Software Paradigms & Procedural Programming Paradigm This Lesson introduces main terminology to be used in the whole course. Thus,
How To Develop Software
Software Engineering Prof. N.L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture-4 Overview of Phases (Part - II) We studied the problem definition phase, with which
(Refer Slide Time: 01:52)
Software Engineering Prof. N. L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture - 2 Introduction to Software Engineering Challenges, Process Models etc (Part 2) This
Chapter 8 Approaches to System Development
Systems Analysis and Design in a Changing World, sixth edition 8-1 Chapter 8 Approaches to System Development Table of Contents Chapter Overview Learning Objectives Notes on Opening Case and EOC Cases
Software Life Cycle Processes
Software Life Cycle Processes Objective: Establish a work plan to coordinate effectively a set of tasks. Improves software quality. Allows us to manage projects more easily. Status of projects is more
Requirements engineering
Learning Unit 2 Requirements engineering Contents Introduction............................................... 21 2.1 Important concepts........................................ 21 2.1.1 Stakeholders and
Software Development Processes. Software Life-Cycle Models
1 Software Development Processes Sequential, Prototype-based RAD, Phased, Risk-based Spiral (c) 1998 M Young CIS 422/522 4/3/98 1 Software Life-Cycle Models Breaking projects down into pieces for... Planning
TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW
Year 2014, Vol. 1, issue 1, pp. 49-56 Available online at: http://journal.iecuniversity.com TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW Singh RANDEEP a*, Rathee AMIT b a* Department of
A. Waterfall Model - Requirement Analysis. System & Software Design. Implementation & Unit Testing. Integration & System Testing.
Processing Models Of SDLC Mrs. Nalkar Sanjivani Baban Asst. Professor, IT/CS Dept, JVM s Mehta College,Sector 19, Airoli, Navi Mumbai-400708 [email protected] Abstract This paper presents an
Software development life cycle. Software Engineering - II ITNP92 - Object Oriented Software Design. Requirements. Requirements. Dr Andrea Bracciali
Software development life cycle Software life cycle: Software Engineering - II ITNP92 - Object Oriented Software Design Dr Andrea Bracciali Module Co-ordinator 4B86 [email protected] Spring 2014 (elicitation)
Software Engineering Question Bank
Software Engineering Question Bank 1) What is Software Development Life Cycle? (SDLC) System Development Life Cycle (SDLC) is the overall process of developing information systems through a multi-step
Chapter 13: Program Development and Programming Languages
Understanding Computers Today and Tomorrow 12 th Edition Chapter 13: Program Development and Programming Languages Learning Objectives Understand the differences between structured programming, object-oriented
Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University
Software Engineering Introduction & Background Department of Computer Science Kent State University Complaints Software production is often done by amateurs Software development is done by tinkering or
CSCI 3136 Principles of Programming Languages
CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University
Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology
Peter Mileff PhD SOFTWARE ENGINEERING The Basics of Software Engineering University of Miskolc Department of Information Technology Introduction Péter Mileff - Department of Information Engineering Room
And the Models Are 16-03-2015. System/Software Development Life Cycle. Why Life Cycle Approach for Software?
System/Software Development Life Cycle Anurag Srivastava Associate Professor ABV-IIITM, Gwalior Why Life Cycle Approach for Software? Life cycle is a sequence of events or patterns that are displayed in
Software Development Life Cycle
4 Software Development Life Cycle M MAJOR A J O R T TOPICSO P I C S Objectives... 52 Pre-Test Questions... 52 Introduction... 53 Software Development Life Cycle Model... 53 Waterfall Life Cycle Model...
Elite: A New Component-Based Software Development Model
Elite: A New Component-Based Software Development Model Lata Nautiyal Umesh Kumar Tiwari Sushil Chandra Dimri Shivani Bahuguna Assistant Professor- Assistant Professor- Professor- Assistant Professor-
To introduce software process models To describe three generic process models and when they may be used
Software Processes Objectives To introduce software process models To describe three generic process models and when they may be used To describe outline process models for requirements engineering, software
Software Processes. Coherent sets of activities for specifying, designing, implementing and testing software systems
Questions What is the life cycle of a software product? Why do we need software process models? What are the goals of a software process and what makes it different from other industrial processes? Software
Software Development Processes. Software Life-Cycle Models. Process Models in Other Fields. CIS 422/522 Spring 1998 1
1 Software Development Processes Sequential, Prototype-based RAD, Phased, Risk-based Spiral (c) 1998 M Young CIS 422/522 1/10/99 1 Software Life-Cycle Models Breaking projects down into pieces for... Planning
Karunya University Dept. of Information Technology
PART A Questions 1. Mention any two software process models. 2. Define risk management. 3. What is a module? 4. What do you mean by requirement process? 5. Define integration testing. 6. State the main
Engineering Process Software Qualities Software Architectural Design
Engineering Process We need to understand the steps that take us from an idea to a product. What do we do? In what order do we do it? How do we know when we re finished each step? Production process Typical
Functional Decomposition Top-Down Development
Functional Decomposition Top-Down Development The top-down approach builds a system by stepwise refinement, starting with a definition of its abstract function. You start the process by expressing a topmost
Programming Languages
Programming Languages Programming languages bridge the gap between people and machines; for that matter, they also bridge the gap among people who would like to share algorithms in a way that immediately
CS4507 Advanced Software Engineering
CS4507 Advanced Software Engineering Lectures 2 & 3: Software Development Lifecycle Models A O Riordan, 2015 Some diagrams from Sommerville, some notes from Maciaszek/Liong Lifecycle Model Software development
Introduction. Introduction. Software Engineering. Software Engineering. Software Process. Department of Computer Science 1
COMP209 Object Oriented Programming System Design Mark Hall Introduction So far we ve looked at techniques that aid in designing quality classes To implement a software system successfully requires planning,
CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)
CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS) Prescriptive Process Model Defines a distinct set of activities, actions, tasks, milestones, and work products that are required to engineer high quality
Title: Topic 3 Software process models (Topic03 Slide 1).
Title: Topic 3 Software process models (Topic03 Slide 1). Topic 3: Lecture Notes (instructions for the lecturer) Author of the topic: Klaus Bothe (Berlin) English version: Katerina Zdravkova, Vangel Ajanovski
The Phases of an Object-Oriented Application
The Phases of an Object-Oriented Application Reprinted from the Feb 1992 issue of The Smalltalk Report Vol. 1, No. 5 By: Rebecca J. Wirfs-Brock There is never enough time to get it absolutely, perfectly
Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville
Software Engineering Software Processes Based on Software Engineering, 7 th Edition by Ian Sommerville Objectives To introduce software process models To describe three generic process models and when
Software Development Life Cycle (SDLC)
Software Development Life Cycle (SDLC) Supriyo Bhattacharjee MOF Capability Maturity Model (CMM) A bench-mark for measuring the maturity of an organization s software process CMM defines 5 levels of process
Chapter 13: Program Development and Programming Languages
15 th Edition Understanding Computers Today and Tomorrow Comprehensive Chapter 13: Program Development and Programming Languages Deborah Morley Charles S. Parker Copyright 2015 Cengage Learning Learning
(Refer Slide Time 00:56)
Software Engineering Prof.N. L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture-12 Data Modelling- ER diagrams, Mapping to relational model (Part -II) We will continue
Lecture 1: Introduction
Programming Languages Lecture 1: Introduction Benjamin J. Keller Department of Computer Science, Virginia Tech Programming Languages Lecture 1 Introduction 2 Lecture Outline Preview History of Programming
SOFTWARE PROCESS MODELS
SOFTWARE PROCESS MODELS Slide 1 Software Process Models Process model (Life-cycle model) - steps through which the product progresses Requirements phase Specification phase Design phase Implementation
Foundations for Systems Development
Foundations for Systems Development ASSIGNMENT 1 Read this assignment introduction. Then, read Chapter 1, The Systems Development Environment, on pages 2 25 in your textbook. What Is Systems Analysis and
Software Process for QA
Software Process for QA Basic approaches & alternatives CIS 610, W98 / M Young 1/7/98 1 This introduction and overview is intended to provide some basic background on software process (sometimes called
Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces
Software Engineering, Lecture 4 Decomposition into suitable parts Cross cutting concerns Design patterns I will also give an example scenario that you are supposed to analyse and make synthesis from The
Software Process Models. Xin Feng
Software Process Models Xin Feng Questions to Answer in Software Engineering? Questions to answer in software engineering What is the problem to be solved? Definition What are the characteristics of the
Software Engineering Reference Framework
Software Engineering Reference Framework Michel Chaudron, Jan Friso Groote, Kees van Hee, Kees Hemerik, Lou Somers, Tom Verhoeff. Department of Mathematics and Computer Science Eindhoven University of
Agile Software Development Methodologies and Its Quality Assurance
Agile Software Development Methodologies and Its Quality Assurance Aslin Jenila.P.S Assistant Professor, Hindustan University, Chennai Abstract: Agility, with regard to software development, can be expressed
Process Models and Metrics
Process Models and Metrics PROCESS MODELS AND METRICS These models and metrics capture information about the processes being performed We can model and measure the definition of the process process performers
Software Development Life Cycle & Process Models
Volume 1, Issue 1 ISSN: 2320-5288 International Journal of Engineering Technology & Management Research Journal homepage: www.ijetmr.org Software Development Life Cycle & Process Models Paritosh Deore
Fourth generation techniques (4GT)
Fourth generation techniques (4GT) The term fourth generation techniques (4GT) encompasses a broad array of software tools that have one thing in common. Each enables the software engineer to specify some
Software Processes. The software process. Generic software process models. Waterfall model. Waterfall model phases
Software Processes CSC 221 Introduction to Software Engineering software processes extract from Sommerville s chapter 3 slides Alan Dix Coherent sets of activities for specifying, designing, implementing
1-04-10 Configuration Management: An Object-Based Method Barbara Dumas
1-04-10 Configuration Management: An Object-Based Method Barbara Dumas Payoff Configuration management (CM) helps an organization maintain an inventory of its software assets. In traditional CM systems,
D6 INFORMATION SYSTEMS DEVELOPMENT. SOLUTIONS & MARKING SCHEME. June 2013
D6 INFORMATION SYSTEMS DEVELOPMENT. SOLUTIONS & MARKING SCHEME. June 2013 The purpose of these questions is to establish that the students understand the basic ideas that underpin the course. The answers
CHAPTERS A NEW KNOT MODEL FOR COMPONENT BASED SOFTWARE DEVELOPMENT
CHAPTERS A NEW KNOT MODEL FOR COMPONENT BASED SOFTWARE DEVELOPMENT CONTENTS 5.1 Introduction 5.2 Component based software life cycle process model 5.2.1 Rapid Application Development Model 5.2.2 The Y
What is a life cycle model?
What is a life cycle model? Framework under which a software product is going to be developed. Defines the phases that the product under development will go through. Identifies activities involved in each
A system is a set of integrated components interacting with each other to serve a common purpose.
SYSTEM DEVELOPMENT AND THE WATERFALL MODEL What is a System? (Ch. 18) A system is a set of integrated components interacting with each other to serve a common purpose. A computer-based system is a system
A Software Engineering Model for Mobile App Development
APPENDIX C A Software Engineering Model for Mobile App Development As we mentioned early in the book (see Chapter 1), to successfully develop a mobile software solution you should follow an engineering
Chapter 4 Software Lifecycle and Performance Analysis
Chapter 4 Software Lifecycle and Performance Analysis This chapter is aimed at illustrating performance modeling and analysis issues within the software lifecycle. After having introduced software and
A Comparison between Five Models of Software Engineering
International Journal of Research in Information Technology (IJRIT) www.ijrit.com ISSN 2001-5569 A Comparison between Five Models of Software Engineering Surbhi Gupta, Vikrant Dewan CSE, Dronacharya College
Component-based Development Process and Component Lifecycle Ivica Crnkovic 1, Stig Larsson 2, Michel Chaudron 3
Component-based Development Process and Component Lifecycle Ivica Crnkovic 1, Stig Larsson 2, Michel Chaudron 3 1 Mälardalen University, Västerås, Sweden, [email protected] 2 ABB Corporate Research,
Umbrella: A New Component-Based Software Development Model
2009 International Conference on Computer Engineering and Applications IPCSIT vol.2 (2011) (2011) IACSIT Press, Singapore Umbrella: A New Component-Based Software Development Model Anurag Dixit and P.C.
1 INTRODUCTION TO SYSTEM ANALYSIS AND DESIGN
1 INTRODUCTION TO SYSTEM ANALYSIS AND DESIGN 1.1 INTRODUCTION Systems are created to solve problems. One can think of the systems approach as an organized way of dealing with a problem. In this dynamic
Chapter 3 Methodology
Chapter 3 Methodology 3.1 Introduction In developing our system, we had review several software development methodologies to be used. Software development methodology is a framework that is used to structure,
11.1 What is Project Management? Object-Oriented Software Engineering Practical Software Development using UML and Java. What is Project Management?
11.1 What is Project Management? Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 11: Managing the Software Process Project management encompasses all the
SOFTWARE ENGINEERING INTERVIEW QUESTIONS
SOFTWARE ENGINEERING INTERVIEW QUESTIONS http://www.tutorialspoint.com/software_engineering/software_engineering_interview_questions.htm Copyright tutorialspoint.com Dear readers, these Software Engineering
Improving Software Development Economics Part II: Reducing Software Product Complexity and Improving Software Processes
Improving Software Development Economics Part II: Reducing Software Product Complexity and Improving Software Processes by Walker Royce Vice President and General Manager Strategic Services Rational Software
A Review of an MVC Framework based Software Development
, pp. 213-220 http://dx.doi.org/10.14257/ijseia.2014.8.10.19 A Review of an MVC Framework based Software Development Ronnie D. Caytiles and Sunguk Lee * Department of Multimedia Engineering, Hannam University
Chapter 1. Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages
Chapter 1 CS-4337 Organization of Programming Languages Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming
Software Project Models
INTERNATIONAL JOURNAL OF TECHNOLOGY ENHANCEMENTS AND EMERGING ENGINEERING RESEARCH, VOL 1, ISSUE 4 135 Software Project Models Abhimanyu Chopra, Abhinav Prashar, Chandresh Saini [email protected],
SOFTWARE CONFIGURATION MANAGEMENT GUIDEBOOK
Office of Safety and Mission Assurance NASA-GB-9503 SOFTWARE CONFIGURATION MANAGEMENT GUIDEBOOK AUGUST 1995 National Aeronautics and Space Administration Washington, D.C. 20546 PREFACE The growth in cost
Instructional Design Framework CSE: Unit 1 Lesson 1
Instructional Design Framework Stage 1 Stage 2 Stage 3 If the desired end result is for learners to then you need evidence of the learners ability to then the learning events need to. Stage 1 Desired Results
Applications in Business. Embedded Systems. FIGURE 1-17 Application Types and Decision Types
22 CHAPTER 1 Overview of Software Engineering she may determine his or her degree of confidence in the ES's results. These four application types-transaction, query, DSS, and ES-will be referenced throughout
[Refer Slide Time: 05:10]
Principles of Programming Languages Prof: S. Arun Kumar Department of Computer Science and Engineering Indian Institute of Technology Delhi Lecture no 7 Lecture Title: Syntactic Classes Welcome to lecture
Chap 1. Introduction to Software Architecture
Chap 1. Introduction to Software Architecture 1. Introduction 2. IEEE Recommended Practice for Architecture Modeling 3. Architecture Description Language: the UML 4. The Rational Unified Process (RUP)
The Software Process. The Unified Process (Cont.) The Unified Process (Cont.)
The Software Process Xiaojun Qi 1 The Unified Process Until recently, three of the most successful object-oriented methodologies were Booch smethod Jacobson s Objectory Rumbaugh s OMT (Object Modeling
1.1 WHAT IS A PROGRAMMING LANGUAGE?
1 INTRODUCTION 1.1 What is a Programming Language? 1.2 Abstractions in Programming Languages 1.3 Computational Paradigms 1.4 Language Definition 1.5 Language Translation 1.6 Language Design How we communicate
Requirements engineering and quality attributes
Open Learning Universiteit Unit 2 Learning Unit 2 Requirements engineering and quality attributes Contents Introduction............................................... 21 2.1 Important concepts........................................
Basic Testing Concepts and Terminology
T-76.5613 Software Testing and Quality Assurance Lecture 2, 13.9.2006 Basic Testing Concepts and Terminology Juha Itkonen SoberIT Contents Realities and principles of Testing terminology and basic concepts
Chapter 10 Practical Database Design Methodology and Use of UML Diagrams
Chapter 10 Practical Database Design Methodology and Use of UML Diagrams Copyright 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 10 Outline The Role of Information Systems in
Classnotes 5: 1. Design and Information Flow A data flow diagram (DFD) is a graphical technique that is used to depict information flow, i.e.
Classnotes 5: 1. Design and Information Flow A data flow diagram (DFD) is a graphical technique that is used to depict information flow, i.e., a representation of information as a continuous flow that
Software Engineering. What is a system?
What is a system? Software Engineering Software Processes A purposeful collection of inter-related components working together to achieve some common objective. A system may include software, mechanical,
Use Cases. Massimo Felici. Massimo Felici Use Cases c 2004 2011
Use Cases Massimo Felici Use Cases 1 Support requirements engineering activities and the requirement process Capture what a system is supposed to do, i.e., systems functional requirements Describe sequences
Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53
Preface xvi Part I Introduction and System Engineering 1 Chapter 1 Introduction 2 1.1 What Is Software Engineering? 2 1.2 Why Software Engineering? 3 1.3 Software Life-Cycle Activities 4 1.3.1 Software
Object Oriented Programming. Risk Management
Section V: Object Oriented Programming Risk Management In theory, there is no difference between theory and practice. But, in practice, there is. - Jan van de Snepscheut 427 Chapter 21: Unified Modeling
Chapter 7: Software Engineering
Chapter 7: Software Engineering Computer Science: An Overview Eleventh Edition by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Chapter 7: Software Engineering 7.1 The Software Engineering
How To Model Software Development Life Cycle Models
Various Software Development Life Cycle Models Sahil Jindal, Puneet Gulati, Praveen Rohilla Dronacharya College of Engineering, India Abstract:An SDLC model is a conceptual framework describing different
Outline. Definitions. Course schedule
SENG480A/CSC576A Topics in Software Engineering Software Development, Architecture & Evolution Lectures, Sep 17, 20, 2001 Hausi A. Müller University of Victoria Outline Assignment 1 due Sep 27 Last week
TESTING FRAMEWORKS. Gayatri Ghanakota
TESTING FRAMEWORKS Gayatri Ghanakota OUTLINE Introduction to Software Test Automation. What is Test Automation. Where does Test Automation fit in the software life cycle. Why do we need test automation.
The Spiral development model is a risk-driven process model generator. It
1.1 Methodology Research 1.1.1 Spiral Model The Spiral development model is a risk-driven process model generator. It is used to guide multi-stakeholder concurrent engineering of software-intensive systems.
A Capability Maturity Model (CMM)
Software Development Life Cycle (SDLC) and Development Methods There are some enterprises in which a careful disorderliness is the true method. Herman Melville Capability Maturity Model (CMM) A Capability
Programming Languages
Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:
In the IEEE Standard Glossary of Software Engineering Terminology the Software Life Cycle is:
In the IEEE Standard Glossary of Software Engineering Terminology the Software Life Cycle is: The period of time that starts when a software product is conceived and ends when the product is no longer
Introduction and Overview
Introduction and Overview Definitions. The general design process. A context for design: the waterfall model; reviews and documents. Some size factors. Quality and productivity factors. Material from:
Domains and Competencies
Domains and Competencies DOMAIN I TECHNOLOGY APPLICATIONS CORE Standards Assessed: Computer Science 8 12 I VII Competency 001: The computer science teacher knows technology terminology and concepts; the
A Framework for Software Product Line Engineering
Günter Böckle Klaus Pohl Frank van der Linden 2 A Framework for Software Product Line Engineering In this chapter you will learn: o The principles of software product line subsumed by our software product
Software Life Cycle. Management of what to do in what order
Software Life Cycle Management of what to do in what order Software Life Cycle (Definition) The sequence of activities that take place during software development. Examples: code development quality assurance
Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages
ICOM 4036 Programming Languages Preliminaries Dr. Amirhossein Chinaei Dept. of Electrical & Computer Engineering UPRM Spring 2010 Language Evaluation Criteria Readability: the ease with which programs
In this Lecture you will Learn: Implementation. Software Implementation Tools. Software Implementation Tools
In this Lecture you will Learn: Implementation Chapter 19 About tools used in software implementation How to draw component diagrams How to draw deployment diagrams The tasks involved in testing a system
Chapter 13 BUILDING INFORMATION SYSTEMS. How does building new systems produce organizational change?
MANAGING THE DIGITAL FIRM, 12 TH EDITION Learning Objectives Chapter 13 BUILDING INFORMATION SYSTEMS VIDEO CASES Case 1: IBM: Business Process Management in a Service Oriented Architecture and Managing
Chap 1. Software Quality Management
Chap 1. Software Quality Management Part 1.1 Quality Assurance and Standards Part 1.2 Software Review and Inspection Part 1.3 Software Measurement and Metrics 1 Part 1.1 Quality Assurance and Standards
Questions? Assignment. Techniques for Gathering Requirements. Gathering and Analysing Requirements
Questions? Assignment Why is proper project management important? What is goal of domain analysis? What is the difference between functional and non- functional requirements? Why is it important for requirements
Process Methodology. Wegmans Deli Kiosk. for. Version 1.0. Prepared by DELI-cious Developers. Rochester Institute of Technology
Process Methodology for Wegmans Deli Kiosk Version 1.0 Prepared by DELI-cious Developers Rochester Institute of Technology September 15, 2013 1 Table of Contents 1. Process... 3 1.1 Choice... 3 1.2 Description...
A UML Introduction Tutorial
A UML Introduction Tutorial 1/27/08 9:55 PM A UML Introduction Tutorial In this tutorial you will learn about the fundamentals of object oriented modelling, the Unified Modelling Language and the software
Quotes from Object-Oriented Software Construction
Quotes from Object-Oriented Software Construction Bertrand Meyer Prentice-Hall, 1988 Preface, p. xiv We study the object-oriented approach as a set of principles, methods and tools which can be instrumental
