This document provides an overview of software engineering. It discusses that software plays an important role in daily life and its development requires engineering techniques. Software engineering aims to develop reliable software through processes like requirements analysis, design, implementation, testing and evolution. The document also summarizes various software development models including waterfall, incremental and spiral models as well as verification and validation techniques used to ensure software quality.
Download as DOCX, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
234 views
Software Engineering - Unit - 1
This document provides an overview of software engineering. It discusses that software plays an important role in daily life and its development requires engineering techniques. Software engineering aims to develop reliable software through processes like requirements analysis, design, implementation, testing and evolution. The document also summarizes various software development models including waterfall, incremental and spiral models as well as verification and validation techniques used to ensure software quality.
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 22
Software Engineering
Unit I Short Notes
Introduction: Software playing important role in our day to day life ranging from purchasing bus ticket to maintaining our national security. Software Engineering is essential for national and international societies. Software Systems are abstract and intangible. They are not constrained by properties of material, governed by physical laws or manufacturing process. Because of lack of physical constraint, software system quickly become more complex. Software systems are many types 1) simple embedded system, 2) complex world wide system. It is meaningless to looks for common notation , methods or techniques between 1 & 2. Developing an Organizational System is different from developing Controller for scientific instrument. All these application require software engineering but different software engineering techniques. Many software projects that uses software engineering ends with software failure because of two reasons. 1) Increasing demands, 2) Low Expectations. The need for complex software increases every day. Small software firms not following software engineering techniques. History of Software Engineering: The notation of software engineering was first proposed in 1968 at the conference held to discuss about software crisis. It is very clear individual approaches to program development did not worked for large complex software projects. It is unreliable, cost more then budget and delivered late. Through out 1970 to 1980 many software engineering techniques were proposed. Ex : Structured Programing, OOD. Professional Software Development: Many people write program for hobby or for personal use but a professional software should be developed for some purpose. The professional software is developed by a team of professional rather then individuals. It follows certain development procedures. It is maintained and changed through out its life. Software = Computer Program + Associated Document + Configuration Data. These 3 files helps software to work correctly. Common Terms What is software? Computer programs and associated documentation. Software products may be developed for a particular customer or may be developed for a general market. What are the attributes of good software? Good software should deliver the required functionality and performance to the user and should be maintainable, dependable, and usable. What is software engineering? Software engineering is an engineering discipline that is concerned with all aspects of software production. What are the fundamental software engineering activities? Software specification, software development, software validation, and software evolution. What is the difference between software engineering and computer science? Computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software. What are the key challenges facing software engineering? Coping with increasing diversity, demands for reduced delivery times, and developing trustworthy software.
What are the costs of software engineering? Roughly 60% of software costs are development costs; 40% are testing costs. For custom software, evolution costs often exceed development costs. What are the best software engineering techniques and methods? While all software projects have to be professionally managed and developed, different techniques are appropriate for different types of system. For example, games should always be developed using a series of prototypes whereas safety critical control systems require a complete and analyzable specification to be developed. You cant, therefore, say that one method is better than another. What differences has the Web made to software engineering? The Web has led to the availability of software services and the possibility of developing highly distributed service-based systems. Web-based systems development has led to important advances in programming languages and software reuse. Software Engineering Paradigm Process Activities Software Specification Feasibility study The purpose of the study is to check current hardware and software meets user needs. Requirement Elicitation And Analysis Deriving the system requirement through observation of existing system. Requirement specification Translation of information gathered during analysis into user and system requirement. Requirement Validation This activity checks the requirements for realism, consistency and completeness.
Software Design and Implementation Architectural Design The overall structure of the system is designed. Interface Design Interface between components are designed. Component Design Individual components are developed by programmers according to requirement. Database Design Process of designing data structure and representing the data structure in database.
Software Validation Development Testing Each component is tested at the time of development . System Testing The integrated components are checked against interface errors. Acceptance Testing The user acceptance test is performed with real user data for the purpose of finding unidentified errors using simulated test data.
Software Evolution The change in software system is cheaper compared to the change in hardware based system. The software evolution is important process and it cost more then software development. The software evolution is long time process where multiple engineers work for same project in different time. Software engineering is an evolutionary process where software is continually changed over its lifetime in response to changing requirements and customer needs.
Coping with Change System Prototyping The change can be avoided using system prototyping model, The change can be identified in the early stages and it will not propagate to full version of products. It is also called change avoidance. Incremental Delivery The incremental delivery process model will deliver the system in increments based on user feedback. The change can be well tolerated because the change is implemented only in new incremental development process. It is also called change tolerance.
Boehm Spiral Model Objective Setting The objective for each phase is defined based on user and system requirement. Risk Assessment and reduction The risk for particular phase is identified and reduced based on in depth analysis Design and Validation The product for particular phase is developed and validated based on objective. The final phase is validated with real user data. Planning Further phases are planed based on previous design phase and it continues till last phase.
Rationale Unified Process Inception The phase should identify all external entities (people and systems) that will interact with the system and define these interactions. Elaboration The goal of the phase is to establish an architectural framework for the system. Construction The construction phase involves system design, programming, and testing. Parts of the system are developed in parallel and integrated during this phase. Transition This phase moves software from development to user community.
Software Process Models The waterfall model, Incremental development, Reuse-oriented software engineering.
Waterfall Model:
Incremental Model
Reuse Oriented Software Engineering
Verification & Validation.
Software testing is a part of verification and validation. V & V have many process to assure the software quality. V & V is also called as software quality assurance. It have multi step verification process for quality assurance. Verification checks that a particular function is implemented correctly. Validation is the process of verifying that the built software is matching customer requirement. Verification: "Are we building the product right?" Validation: "Are we building the right product?"
Few Activities in V Model or V & V Model. formal technical reviews, quality and configuration audits, performance monitoring, simulation, feasibility study, documentation review, database review, algorithm analysis, development testing, qualification testing, installation testing
Life Cycle Models Problem Solving or Software Development The process Methods Tools & Phases
Linear Sequential Model LSM is also called as Classic life cycle model or waterfall model.
Prototyping Model If Detailed Input and output specification is not provided by customer then prototyping model is better to build great software.
Rapid Application Development RAD is a high speed adaption of Linear Sequential Model in which RAD is achieved using component based construction of Software. Business Modeling The information flow among business function is modeled. Data Modeling Information flow is refined as set of data objects Process Modeling Data Modeling is transformed to support business function Application Generation RAD creates application using fourth generation technique. Testing New Components are tested.
EVOLUTIONARY SOFTWARE PROCESS MODELS Incremental Model Linear Sequential Model + Prototyping Model Spiral Model Combines iterative nature of prototyping with the controlled and systematic aspects of the linear sequential model. WIN WIN Spiral Model Negotiating takes places at the beginning of each phase. The Concurrent Development Model The status of each phase can be easily tracked and development goes in a concurrent way.
Incremental Model
Spiral Model
WIN WIN Spiral Model
Concurrent Development Model
Component Based Development Model
The Formal Methods Model In this model, the software is analyzed using formal mathematical notations. It is also called as Clean Room Software Engineering. Challenges: The development of formal models is currently quite time consuming and expensive. Because few software developers have the necessary background to apply formal methods, extensive training is required. It is difficult to use the models as a communication mechanism for technically unsophisticated customers. Fourth Generation Technique The software development is carried out by tools that automatically generates codes based on specification. This kind of tools are called as computer aided software engineering(CASE) tools.
System Engineering System engineering focus on variety of elements, it will analyze, design and organize those elements into a system that may be product or service or technology. System Engineering is classified into two types Business process engineering Product engineering. Both systems are developed using computer based system.
What is it? Learning about software working environment. Who does it? System engineer works with client, user and others. Why is it important? Understanding about system is important to develop software What are the steps? Requirement, Analysis , specification, modeling and model validation What is work product? Prototype, model, specification even symbolic notation. But it should represent the behaviors. How do I ensure that I did perfect product? By comparing specification with work product.
Computer Based System The goal of computer based system is to support some business function or to create a product that generate a revenue. The computer based system uses variety of system elements they are Hardware Software People Database Documentation Procedures System Engineering Hierarchy
Hierarchy is divided into multiple stages they are World View (WV) Domain View(DV) Element View(EV) Detailed View(DV) WV = {d1,d2,d3,.,dk} DV = {e1,e2,e3,..,ek} EV = {c1,c2,c3,..,ck} Activities in System Engineering System Modeling System Simulation
System Modeling Factors Assumption Assumes pre-defined set of constraints. Simplification Simplifies inputs and outputs. Limitation Limiting the system inputs and outputs. Preferences Preferred solution is used with assumptions. Constraints Constraints the system for simplification. System Simulation Simulation and Modeling tools helps the system engineer to test drive the specification of the system. The development activity is performed after the simulation that avoids software failure.
Business Process Engineering Business Process Engineering creates three architecture Data Architecture Information needs of the business is satisfied through data objects. Application Architecture The data objects are transformed for specific needs of the business. Technology Infrastructure Used to support data & application architecture.
Product Engineering Product engineering enables business organization to create a product based on customer needs to produce revenue for the business. Product engineering contains four components Hardware The hardware required to support product function is created. Software The software required to support business function is designed People The people engineering activity considers the interaction of people with systems. Data The data that is primary driving vehicle of any business is organized in a way that is used by other components,