Lecture notes in Software Engineering

how software engineering works. lecture notes on software engineering concepts and lecture notes on ooad. how software engineering is different from hardware engineering pdf free download
Dr.JamesSmith Profile Pic
Published Date:11-07-2017
Your Website URL(Optional)
LECTURE NOTES ON SOFTWARE ENGINEERING & OOAD CODE: MCA -201 By Asst. Prof. Mrs. Mrs Etuari Oram Asst. Prof. Mr Sanjib Kumar Nayak Asst. Prof. Mr Bighnaraj Naik SYLLABUS Module I (10 Lectures) Introductory concepts: Introduction, definition, objectives, Life cycle – Requirements analysis and specification. Design and Analysis: Cohesion and coupling, Data flow oriented Design: Transform centered design, Transaction centered design. Analysis of specific systems likes Inventory control, Reservation system. Module II (10 Lectures) Object-oriented Design: Object modeling using UML, use case diagram, class diagram, interaction diagrams: activity diagram, unified development process. Module III (10 Lectures) Implementing and Testing: Programming language characteristics, fundamentals, languages, classes, coding style efficiency. Testing: Objectives, black box and white box testing, various testing strategies, Art of debugging. Maintenance, Reliability and Availability: Maintenance: Characteristics, controlling factors, maintenance tasks, side effects, preventive maintenance – Re Engineering – Reverse Engineering – configuration management – Maintenance tools and techniques. Reliability: Concepts, Errors, Faults, Repair and availability, reliability and availability models, Recent trends and developments. Module IV (10 Lectures) Software quality: SEI CMM and ISO-9001. Software reliability and fault-tolerance, software project planning, monitoring, and control. Computer-aided software engineering (CASE), Component model of software development, Software reuse. Book: 1. Rajib Mall, Fundamentals of Software Engineering, PHI. 2. R.S. Pressman, Software Engineering Practitioner’s Approach, TMH. nd 3. S.L. Pfleeger, Software Engineering – Theory and Practice, 2 Edition, Pearson Education. 4. M.L. Shooman, Software Engineering – Design, Reliability and Management, McGraw Hill. Contents Module: I Lecture 1: Introduction to Software Engineering Lecture 2: Definition & Principles of Sofware Engg., Software Characteristics Lecture 3: Causes & Solution of Software Crisis, Software Application and 2 Under revision processes. Lecture 4: Software Life Cycles Methods and Description of Classical Water fall Model. Lecture 5: Iterative water fall life cycle Model, Prototyping/Rapid Prototyping Model and Spiral Model Lecture 6: Software requirement & Specification Lecture 7: Complex Logic: Decision tree & Decision Table, Specification of Complex Logic. Lecture 8: Cohesion and Coupling Lecture 9: Data Flow Oriented Design Lecture 10: Transaction Analysis, Inventory Control System Module II Module III Module IV MODULE-I Lecture Note: 1 Software: Software is defined as a collection of programs, procedures, rules, data and associated documentation. The s/w is developed keeping in mind certain h/w and operating system consideration commonly known as platform. And engineering means systematic procedure to develop software. Some of the software characteristics are, it 3 Under revision can be engineer or developed and second thing is software is complex in nature. Important of software are due to much reason as it is used in: i)Business decision making Ex- accounting s/w, billing s/w ii)For scientific research & engineering problem solving. Ex-weather forecasting system, space research s/w iii)It is embedded in multifunctional systems such as medical, telecom entertainment etc. Ex-s/w for medical patient automation, s/w of GSM/CDMA service provides. Software Quality Several quality factors associated with software quality are as following: • Portability: A software product is said to be portable, if it can be easily made to work in different operating system environments, in different machines, with other software products, etc. • Usability: A software product has good usability, if different categories of users (i.e. both expert and novice users) can easily invoke the functions of the product. • Reusability: A software product has good reusability, if different modules of the product can easily be reused to develop new products. • Correctness: A software product is correct, if different requirements as specified in the SRS document have been correctly implemented. • Maintainability: A software product is maintainable, if errors can be easily corrected, new functions can be easily added to the product, and the functionalities of the product can be easily modified, etc. Types of software:- Computer s/w is mainly divided into two types. a)system s/w Application s/w consists of programs to perform user oriented tasks. System s/w includes the operating system & all the utilities to enable the computer to run. Ex- window operating system b)application s/w 4 Under revision Application s/w consists of programs to perform user oriented tasks. Ex-word processor, database management. Application s/w sits about the system s/w because it needs help of the system s/w to run. Program vs Software product PROGRAMS PRODUCTS Set of instruction related each other Collection of program designed for specific task. Programs are defined by individuals for A sum product is usually developed by a their personal use. group of engineers working as a team. Usually small size. Usually large size. Single user. Large no of users. Single developer. Team of developer. Lack proper documentation. Good documentation support. ADHOC development. Systematic development. Lack of UI. Good UI. Have limited functionality. Exhibit more functionality. programs Source Object code code documenta tion Operating procedure Types of software products: -Generic products: This type of software product are developed by a organization and sold on open market to any customer, (System software,, application software ) 5 Under revision -Customized (or bespoke) products: This type of software products are developed by a software contractor and especially for a customer. -Embedded Product: Combination of both hardware and software Software Engineering Application of engineering for development of software is known as software engineering. It is the systematic, innovative technique and cost effective approach to develop software. And person involved in developing product is called software engineer. S/w engineer is a licensed professional engineer who is skilled in engineering discipline. Qualities / Skills possessed by a good software engineer: 1. General Skill (Analytical skill, Problem solving skill, Group work skill) 2. Programming Skill (Programming language , Data structure , Algorithm , Tools( Compiler, Debugger)) 3. Communication skill (Verbal , Written, Presentation) 4. Design Skill (s/w engineer must be familiar with several application domain) Lecture Note : 2 IEEE definition of Software engineering: A systematic, disciplined and quantifiable approach to the development, operation, maintenance and refinement of software. Factor in emergence of software engineering: 6 Under revision 1. People who are developing software were consistently wrong in their estimation of time, effort and cost. 2. Reliability and maintainability was difficult of achieved 3. Fixing bug in a delivered software was difficult 4. Delivered software frequently didn’t work 5. Changes in ration of hw to s/w cost 6. Increased cost of software maintenance 7. Increased demand of software 8. Increased demand for large and more complex software system 9. Increasing size of software S/W ENGINEERING PRINCIPLES:- Software engineering is a layered technology. The bedrock that supports software engineering is a quality focus. The foundation for software engineering is the process layer. Software engineering process is the glue that holds the technology layers together and enables rational and timely development of computer software. Process defines a framework for a set of key process areas that must be established for effective delivery of software engineering technology. The key process areas form the basis for management control of software projects and establish the context in which technical methods are applied, work product (models, documents, data, reports, forms, etc.) are produced, milestones are established, quality is ensured, and change is properly managed. Software engineering methods provide the technical how-to's for building software. That encompass requirements analysis, design, program construction, testing, and support. 7 Under revision Software engineering methods rely on a set of basic principles that govern each area of the technology and include modeling activities and other descriptive techniques. Software engineering tools provide automated or semi-automated support for the process and the methods. When tools are integrated so that information created by one tool can be used by another, a system for the support of software development, called computer-aided software engineering(CASE), is established. CASE combines software, hardware, and a software engineering database (a repository containing important information about analysis, design, program construction, and testing) to create a software engineering environment analogous to CAD/CAE (computer-aided design/engineering) for hardware. S/W CHARACTERISICS:- Characteristics of a s/w can be easily distinguished as of from the h/w. 8 Under revision The change of failure rate over the product lifetime for a typical hardware and a software product are sketched in above fig. For hardware products, it can be observed that failure rate is initially high but decreases as the faulty components are identified and removed. The system then enters its useful life. After some time (called product life time) the components wear out, and the failure rate increases. This gives the plot of hardware reliability over time its characteristics is like “bath tub” shape. On the other hand, for software the failure rate is at its highest during integration and test. As the system is tested, more and more errors are identified and removed resulting in reduced failure rate. This error removal continues at a slower pace during the useful life of the product. As the software becomes obsolete no error corrections occurs and the failure rate remains unchanged. Therefore after analyzing the facts we can write the key characteristics as follows:- a)Most s/w s are custom built rather than assembled from existing components. b)s/w is developed or engineered not manufactured. c)s/w is flexible. d)s/w does not wear out. 9 Under revision Lecture Note : 3 CAUSES AND SOLUTION FOR S/W CRISIS:- Software engineering appears to be among the few options available to tackle the present software crisis. Let us explain the present software crisis in simple words, by considering the following. The expenses that organizations all around the world are incurring on software purchases compared to those on hardware purchases have been showing a worrying trend over the years (as shown in fig. 1.6) Organizations are spending larger and larger portions of their budget on software not only are the software products turning out to be more expensive than hardware, but also presented lotst of other problems to the customers such as: software products are difficult to alter, debug, and enhance; use resources non optimally; often fail to meet the user requirements; are far from being reliable; frequently crash; and are often delivered late. Due to ineffective development of the product characterized by inefficient resource usage and time and cost over-runs. Other factors are larger problem sizes, lack of adequate training in software engineering, increasing skill shortage, and low productivity Improvements. 10 Under revision S/W crisis from programmer point of view:- i)Problem of compatibility. ii)Problem of Portability. iii)Proclaiming documentation. iv)Problem of pirated s/w. v)Problem in co-ordination of work of different people. vi)Problem of proper maintenance. S/W crisis from user point of view:- i)s/w cost is very high. ii)Price of h/w grows down. iii)Lack of development specification. iv)Problem of different s/w versions. v)Problem of bugs or errors. S/W Application:- S/W applications can be grouped into 8 different area as given below. i)System s/w ii)Real-time s/w iii)Embeded s/w iv)Business s/w v)PC s/w vi)AI s/w vii)Web-based s/w viii)Engineering & scientific s/w S/W engineering processes:- Process: The process is a series of states that involves activities, constraints, resources that produce an intended output of some kind. Or it is a state that takes some input and produced output Software process: A s/w process is a related set of activities & sub processes that are involved in developing & involving a s/w system. There are four fundamental process activities carried out by s/w engineering while executing the s/w process are . i) s/w specification The functionality of s/w & constraints on its operation must be defined. ii)s/w development 11 Under revision The s/w that mixes the specification must be produced. iii)s/w validation The s/w must be validated to ensure that it performs desired customer activities. iv)s/w evolution:- The s/w must evolve to meet changing customer needs with time. The scenario of s/w process & its sub process are shown below:- The s/w industry considers the entire s/w development task as a process according to Booch & Rumbaugh. According to them a process defines who is doing what, when & how to reach a certain goal. Generic attributes in a software process: 1. Understandability 2. Visibility 3. Reliability 4. Robustness 5. Adaptability 6. Rapidity 7. Maintainability 8. Supportability Characteristic of a software process: 1. Understandability 2. Visibility 3. Reliability 4. Robustness 5. Adaptability 6. Rapidity 7. Maintainability 8. Supportability Software Project: 1. A project is a temporary endeavor undertaken to create a unique product. 2. Temporary means every project has a definite beginning and a definite end. 3. Unique means the product must be different in some ways from all similar product 12 Under revision Software Product: Outcome of software project is known as software product. Software process vs software project vs software product Software Process Software Project-1 Software Project-2 Software Project-n Software Product-1 Software Product-2 Software Product-n 13 Under revision Lecture Note : 4 S/W LIFE CYCLE METHOD:- Introduction:- A software life cycle model (also called process model) is a descriptive and diagrammatic representation of the software life cycle. A life cycle model represents all the activities required to make a software product transit through its life cycle phases. It also captures the order in which these activities are to be undertaken. In other words, a life cycle model maps the different activities performed to develop software product from its inception to retirement. Different life cycle models may map the basic development activities to phases in different ways. The need for s/w life cycle model:- -The development team must identify a suitable life cycle model for the particular project and then adhere to it. -Without using of a particular life cycle model the development of a software product would not be in a systematic and disciplined manner. So when a software product is being developed by a team there must be a clear understanding among team members about when and what to do, Otherwise it would lead to chaos and project failure. -A software life cycle model defines entry and exit criteria for every phase. A phase can start only if its phase-entry criteria have been satisfied. So without software life cycle model the entry and exit criteria for a phase cannot be recognized. Without software life cycle models (such as classical waterfall model, iterative waterfall model, prototyping model, evolutionary model, spiral model etc.) it becomes difficult for software project managers to monitor the progress of the project. Different s/w life cycle model:- Many life cycle models have been proposed so far. Each of them has some advantages as well as some disadvantages. A few important and commonly used life cycle models are as follows: a.Classical Waterfall Model b. Iterative Waterfall Model c. Prototyping Model d. Evolutionary Model e. Spiral Model 14 Under revision a. Classical Waterfall Model: Different phases of the classic waterfall model:- The classical waterfall model is intuitively the most obvious way to develop software. Though the classical waterfall model is elegant and intuitively obvious, it is not a practical model in the sense that it cannot be used in actual software development projects. Thus, this model can be considered to be a theoretical way of developing software. Classical waterfall model divides the life cycle into the following phases as shown in fig.2.1: -Feasibility Study -Requirements Analysis and Specification -Design -Coding and Unit Testing -Integration and System Testing -Maintenance 15 Under revision Activities in each phase of the life cycle: • Activities undertaken during feasibility study: - The main aim of feasibility study is to determine whether it would be financially and technically feasible to develop the product. Rough understanding between the team members about estimate based on the client side requirement. After over all discussion they search for variety of solution on the basis of kind of resources and time requirement etc. Activities undertaken during requirements analysis and specification: - The aim of the requirements analysis and specification phase is to understand the exact requirements of the customer and to document them properly. This phase consists of two distinct activities, namely -Requirements gathering and analysis, and -Requirements specification 16 Under revision The goal of the requirements gathering activity is to collect all relevant information from the customer regarding the product to be developed. This is done to clearly understand the customer requirements so that incompleteness and inconsistencies are removed. -After all ambiguities, inconsistencies, and incompleteness have been resolved and all the requirements properly understood, the requirements specification activity can start. -During this activity, the user requirements are systematically organized into a Software Requirements Specification (SRS) document. Activities undertaken during design: - The goal of the design phase is to transform the requirements specified in the SRS document into a structure that is suitable for implementation in some programming language. During the design phase the software architecture is derived from the SRS document. Two distinctly different approaches are available: -the traditional design approach and - the object-oriented design approach. Activities undertaken during coding and unit testing:- The purpose of the coding and unit testing phase (sometimes called the implementation phase) of software development is to translate the software design into source code. Each component of the design is implemented as a program module. The end-product of this phase is a set of program modules that have been individually tested then proceeds for next stage. During this phase, each module is unit tested to determine the correct working of all the individual modules. It involves testing each module in isolation way as this is the most efficient way to debug the errors identified at this stage. Activities undertaken during integration and system testing: - Integration of different modules is undertaken once they have been coded and unit tested. During the integration and system testing phase, the modules are integrated in a planned manner. Integration is normally carried out incrementally over a number of steps. During each integration step, the partially integrated system is tested and a set of previously planned modules are added to it. Finally, when all the modules have been successfully integrated and tested, system testing is carried out. The goal of system testing is to ensure that the developed system conforms to its requirements laid out in the SRS document. System testing usually consists of three different kinds of testing activities: α – testing: It is the system testing performed by the development team. β – testing: It is the system testing performed by a friendly set of customers. 17 Under revision acceptance testing: It is the system testing performed by the customer himself after the product delivery to decide whether to accept or reject the delivered product. Activities undertaken during maintenance: - Maintenance of a typical software product requires much more effort than the effort necessary to develop the product itself. Maintenance involves performing any one or more of the following three kinds of activities: -Correcting errors that were not discovered during the product development phase. This is called corrective maintenance. - Improving the implementation of the system, and enhancing the functionalities of the system according to the customer’s requirements. It is called perfective maintenance. - Porting the software to work in a new environment. For example, porting may be required to get the software to work on a new computer platform or with a new operating system. It is called adaptive maintenance. Disadvantages of waterfall model:- i)It can not handle satisfactorily different types of risks associated with real time s/w project, because, the requirements have to be pre decided by the client. ii)Most real life project can’t follow the exact frame sequence of the waterfall model. 18 Under revision Lecture Note : 5 b. ITERATIVE WATERFALL LIFE CYCLE MODEL:- This waterfall model allows us to correct the error committed during the developmental phase. The principle of detecting errors as close to their point of introduction as possible is known as phase containment of errors. These errors are not possible to be always detected at their point of occurrence. But, they must be detected as they are possible, because finding the errors at higher stage causes entire system testing hence cost is increased/high. c. PROTYPING/RAPID PROTOTYPING MODEL:- Development Requirements Gathering Maintenance Initial design Revised customer Build prototype requirements 19 Under revision Customer evolution of prototype Customer approved Design Implementation Testing Maintainance Fig: Prototyping life cycle model This model specify that before the actual system is being built the working model or the prototype system should be built in. Prototype means dummy, it is a modern and advance implementation system with limited functional capabilities & is comparatively inefficient with the actual system. Need for a prototype in software development There are several uses of a prototype. An important purpose is to illustrate the input data formats, messages, reports, and the interactive dialogues to the customer. This is a valuable mechanism for gaining better understanding of the customer’s needs. The possibilities may be: • how the screens might look like • how the user interface would behave • how the system would produce outputs This is something similar to what the architectural designers of a building do; they show a prototype of the building to their customer. The customer can evaluate whether he likes it or not and the changes that he would need in the actual product. A similar thing happens in the case of a software product and its prototyping model. Another reason for developing a prototype is that it is impossible to get the perfect product in the first attempt. Many researchers and engineers advocate that if you want to develop a good product you must plan to throw away the first version. The experience gained in developing the prototype can be used to develop the final product. A prototyping model can be used when technical solutions are unclear to the development team. A developed prototype can help engineers to critically examine the 20 Under revision

Advise: Why You Wasting Money in Costly SEO Tools, Use World's Best Free SEO Tool Ubersuggest.