Software is a program or set of programs that perform tasks on a computer. There are three main types of software: application software, system software, and malware. Software engineering is the application of engineering principles to the development of software in a systematic way. It helps reduce complexity when developing large software through techniques like abstraction and decomposition. The need for software engineering has arisen to manage costs and quality when developing large, complex software that must be maintained over time.
Software is a program or set of programs that perform tasks on a computer. There are three main types of software: application software, system software, and malware. Software engineering is the application of engineering principles to the development of software in a systematic way. It helps reduce complexity when developing large software through techniques like abstraction and decomposition. The need for software engineering has arisen to manage costs and quality when developing large, complex software that must be maintained over time.
Software is a program or set of programs that perform tasks on a computer. There are three main types of software: application software, system software, and malware. Software engineering is the application of engineering principles to the development of software in a systematic way. It helps reduce complexity when developing large software through techniques like abstraction and decomposition. The need for software engineering has arisen to manage costs and quality when developing large, complex software that must be maintained over time.
Software is a program or set of programs that perform tasks on a computer. There are three main types of software: application software, system software, and malware. Software engineering is the application of engineering principles to the development of software in a systematic way. It helps reduce complexity when developing large software through techniques like abstraction and decomposition. The need for software engineering has arisen to manage costs and quality when developing large, complex software that must be maintained over time.
Download as PPTX, PDF, TXT or read online from Scribd
Download as pptx, pdf, or txt
You are on page 1of 35
Chapter One
Introduction and Overview
03/26/2024 I wish All the Best for you 1
What Is Software ? Software is a program or set of programs containing instructions that provide desired functionality. Software is the collection of computer programs, procedures and documentation that performs different tasks on a computer system. There are three broad classifications: ▪ Application Software: It enables the end users to accomplish certain specific tasks. They include programs such as web browsers, office software, games, and programming tools. System Software: It helps in running computer hardware and the computer system. System software refers to the operating systems; device drivers, servers, windowing systems and utilities (e.g. anti-virus software, firewalls, disk defragmenters).
Malicious Software or Malware: Malware refers to any malicious software to harm
and disrupt computers. Adware, spyware, computer viruses, worms, Trojan horses and scareware are malware. 03/26/2024 I wish All the Best for you 2 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. Software products may be • Generic - developed to be sold to a range of different customers. • Bespoke (custom) - developed for a single customer according to their specification.
03/26/2024 I wish All the Best for you 3
What Is Software Engineering ? The term software engineering is composed of two words, software and engineering. Software is more than just a program code. A program is an executable code, which serves some computational purpose. Software is considered to be a collection of executable programming code, associated libraries and documentations. Software, when made for a specific requirement is called software product. Engineering on the other hand, is all about developing products, using well-defined, scientific principles and methods. So, we can define software engineering as an engineering branch associated with the development of software product using well-defined scientific principles, methods and procedures. The outcome of software engineering is an efficient and reliable software product. “SE The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software”IEEE.
03/26/2024 I wish All the Best for you 4
What Is Software Engineering ? We can alternatively view it as a systematic collection of past experience. The experience is arranged in the form of methodologies and guidelines. A small program can be written without using software engineering principles. But if one wants to develop a large software product, then software engineering principles are absolutely necessary to achieve a good quality software cost effectively. Without using software engineering principles it would be difficult to develop large programs. In industry it is usually needed to develop large programs to accommodate multiple functions. A problem with developing such large commercial programs is that the complexity and difficulty levels of the programs increase exponentially with their sizes. Software engineering helps to reduce this programming complexity.
03/26/2024 I wish All the Best for you 5
What Is Software Engineering ? Software engineering principles use two important techniques to reduce problem complexity: abstraction and decomposition. The principle of abstraction implies that a problem can be simplified by omitting irrelevant details. In other words, the main purpose of abstraction is to consider only those aspects of the problem that are relevant for certain purpose and suppress other aspects that are not relevant for the given purpose. Once the simpler problem is solved, then the omitted details can be taken into consideration to solve the next lower level abstraction, and so on. Abstraction is a powerful way of reducing the complexity of the problem. The other approach to tackle problem complexity is decomposition. In this technique, a complex problem is divided into several smaller problems and then the smaller problems are solved one by one. 03/26/2024 I wish All the Best for you 6 Why Software Engineering ? The need of software engineering arises because of higher rate of change in user requirements and environment on which the software is working. Large software - It is easier to build a wall than to a house or building, likewise, as the size of software become large engineering has to step to give it a scientific process. Scalability- If the software process were not based on scientific and engineering concepts, it would be easier to re-create new software than to scale an existing one. Cost- As hardware industry has shown its skills and huge manufacturing has lower down the price of computer and electronic hardware. But the cost of software remains high if proper process is not adapted. Dynamic Nature- always growing and adapting nature of software hugely depends upon the environment in which the user works. If the nature of software is always changing, new enhancements need to be done in the existing one. This is where software engineering plays a good role. Quality Management- Better process of software development provides better and quality software product.
03/26/2024 I wish All the Best for you 7
Why Software Engineering ? Well-engineered and crafted software is expected to have the following characteristics: Operational This tells us how well software works in operations. It can be measured on: Budget Usability Efficiency Correctness Functionality Dependability Security Safety Transitional This aspect is important when the software is moved from one platform to another: Portability Interoperability Reusability Adaptability
03/26/2024 I wish All the Best for you 8
Why Software Engineering ? Maintenance This aspect briefs about how well a software has the capabilities to maintain itself in the ever-changing environment: Modularity Maintainability Flexibility Scalability In short, Software engineering is a branch of computer science, which uses well-defined engineering concepts required to produce efficient, durable, scalable, in-budget and on- time software product.
03/26/2024 I wish All the Best for you 9
In general, Software engineering is a modeling activity. A model is an abstract representation of a system that enables us to answer questions about the system. Software engineers deal with complexity through modeling, by focusing at any one time on only the relevant details and ignoring everything else. Models are useful when dealing with systems that are too large, too small, too complicated, or too expensive to experience firsthand. Software engineering is a problem solving activity. It is not algorithmic. In its simplest form, the engineering method includes five steps: 1. formulate the problem 2. analyze the problem 3. search for solutions 4. decide on the appropriate solution 5. specify the solution
03/26/2024 I wish All the Best for you 10
Software engineering is a Knowledge acquisition activity. In modeling the application and solution domain, software engineers collect data, organize it into information, and formalize it into knowledge. Knowledge acquisition is nonlinear, as a single piece of data can invalidate complete models. Software engineering is a Rationale management activity. When acquiring knowledge and making decisions about the system or its application domain, software engineers also need to capture the context in which decisions were made and the rationale behind these decisions. enables software engineers to understand the implication of a proposed change when revisiting a decision.
03/26/2024 I wish All the Best for you 11
Software Engineering Body of Knowledge
03/26/2024 I wish All the Best for you 12
Software Quality Software quality is defined as a field of study and practice that describes the desirable attributes of software products. There are two main approaches to software quality: defect management and quality attributes. Defect Management approach A software defect can be regarded as any failure to address end-user requirements. Common defects include missed or misunderstood requirements and errors in design, functional logic, data relationships, process timing, validity checking, and coding errors. The software defect management approach is based on counting and managing defects. Quality Attribute approach This approach to software quality is best exemplified by fixed quality models, such as ISO/IEC 25010:2011. Functional suitability Reliability Security Compatibility Operability Performance efficiency Maintainability
03/26/2024 I wish All the Best for you 13
Reading Assignment 1. Attributes of good software 2. Software Engineering and its profession 3. Ethics in Software Engineering
03/26/2024 I wish All the Best for you 14
Chapter Two:- Software Process and Models SP is a set of activities whose goal is the development or evolution of software Fundamental activities in all software processes are: 1. Specification - what the system should do and its development constraints 2. Development - production of the software system (design and implementation) 3. Validation - checking that the software is what the customer wants 4. Evolution - changing the software in response to changing demands Software Process Model SPM is a simplified representation of a software process, presented from a specific perspective. Examples of process perspectives: Workflow perspective represents inputs, outputs and dependencies Data-flow perspective represents data transformation activities Role/action perspective represents the roles/activities of the people involved in software process
03/26/2024 I wish All the Best for you 15
The Software Process Models Some of different types of SPM are: - Waterfall model Iteration model V-shaped model Spiral model Extreme model Strength evolutionary model Prototyping model Rapid Application model Incremental model
03/26/2024 I wish All the Best for you 16
Waterfall Model The Waterfall Model was first Process Model to be introduced. It is also referred to as a linear sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed before the next phase can begin and there is no overlapping in the phases. In "The Waterfall" approach, the whole process of software development is divided into separate phases. In Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially.
03/26/2024 I wish All the Best for you 17
Waterfall Model The Waterfall Model was first Process Model to be introduced. It is also referred to as a linear sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed before the next phase can begin and there is no overlapping in the phases. In "The Waterfall" approach, the whole process of software development is divided into separate phases. In Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially.
03/26/2024 I wish All the Best for you 18
The sequential phases in Waterfall model are: 1. Requirement Gathering and analysis: All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification doc. 2. System Design: The requirement specifications from first phase are studied in this phase and system design is prepared. System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture. 3. Implementation: With inputs from system design, the system is first developed in small programs called units, which are integrated in the next phase. Each unit is developed and tested for its functionality which is referred to as Unit Testing. 4. Integration and Testing: All the units developed in the implementation phase are integrated into a system after testing of each unit
03/26/2024 I wish All the Best for you 19
The sequential phases in Waterfall model are: 5. Deployment of system: Once the functional and non functional testing is done, the product is deployed in the customer environment or released into the market. 6. Maintenance: There are some issues which come up in the client environment. To fix those issues patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment. Waterfall Model Problems Inflexible partitioning of the project into distinct stages Difficult to respond to changing customer requirements
This model is only appropriate when the requirements are well-understood
Waterfall model describes a staged development process
03/26/2024 I wish All the Best for you 20
Pros and Cons of Waterfall Model: Pros Simple, easy to understand and use Easy to manage due to the rigidity of the model Phases are processed and completed one at a time. Works well for smaller projects where requirements are very well understood. Easy to arrange tasks and Process and results are well documented. Cons High amounts of risk and uncertainty. Not a good model for complex and object-oriented projects. Not suitable for the projects where requirements are at a moderate to high risk of changing. It is difficult to measure progress within stages.
03/26/2024 I wish All the Best for you 21
Iterative Model: In the Iterative model, iterative process starts with a simple implementation of a small set of the software requirements and iteratively enhances the evolving versions until the complete system is implemented and ready to be deployed. An iterative life cycle model does not attempt to start with a full specification of requirements. Instead, development begins by specifying and implementing just part of the software, which is then reviewed to identify further requirements. This process is then repeated, producing a new version of the software at the end of each iteration of the model. At each iteration, design modifications are made and new functional capabilities are added. The basic idea behind this method is to develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental).
03/26/2024 I wish All the Best for you 22
Iterative Model:
03/26/2024 I wish All the Best for you 23
Iterative Model: Pros Some working functionality can be developed quickly and early in the life cycle. Results are obtained early and periodically. Parallel development can be planned. Progress can be measured. Less costly to change the scope/requirements. Testing and debugging during smaller iteration is easy. Risks are identified and resolved during iteration; and each iteration is an easily managed milestone. Easier to manage risk - High risk part is done first. Risk analysis is better. It supports changing requirements. Cons More resources may be required. Highly skilled resources are required for risk analysis. More management attention is required. Projects progress is highly dependent upon the risk analysis End of project may not be known which is a risk. 03/26/2024 I wish All the Best for you 24 Iterative Model: Pros Some working functionality can be developed quickly and early in the life cycle. Results are obtained early and periodically. Parallel development can be planned. Progress can be measured. Less costly to change the scope/requirements. Testing and debugging during smaller iteration is easy. Risks are identified and resolved during iteration; and each iteration is an easily managed milestone. Easier to manage risk - High risk part is done first. Risk analysis is better. It supports changing requirements. Cons More resources may be required. Highly skilled resources are required for risk analysis. More management attention is required. Projects progress is highly dependent upon the risk analysis End of project may not be known which is a risk. 03/26/2024 I wish All the Best for you 25 V-Shaped SDLC Model The V-model is an SDLC model where execution of processes happens in a sequential manner in a V-shape. It is also known as Verification and Validation model. The V-Model is an extension of the waterfall model and is based on the association of a testing phase for each corresponding development stage. This means that for every single phase in the development cycle, there is a directly associated testing phase. This is a highly-disciplined model and the next phase starts only after completion of the previous phase. The corresponding testing phase of the development phase is planned in parallel. So, there are Verification phases on one side of the ‘V’ and Validation phases on the other side. The Coding Phase joins the two sides of the V-Model.
03/26/2024 I wish All the Best for you 26
V-Shaped SDLC Model
03/26/2024 I wish All the Best for you 27
V-Model Verification Phase Requirement Analysis This is the first phase in the development cycle where the product requirements are understood from the customer’s perspective. This phase involves detailed communication with the customer to understand his expectations and exact requirement. This is a very important activity and needs to be managed well, System Design Once you have the clear and detailed product requirements, it is time to design the complete system. The system design will have the understanding and detailing the complete hardware and communication setup for the product under development. Architectural Design Architectural specifications are understood and designed in this phase. Usually more than one technical approach is proposed and based on the technical and financial feasibility the final decision is taken.
03/26/2024 I wish All the Best for you 28
V-Model Verification Phase Module Design In this phase, the detailed internal design for all the system modules is specified, It is important that the design is compatible with the other modules in the system architecture and the other external systems. Coding Phase The best suitable programming language is decided based on the system and architectural requirements. The coding is performed based on the coding guidelines and standards. transform algorithms into software
03/26/2024 I wish All the Best for you 29
V-Model Validation Phase Unit Testing Unit testing is the testing at code level and helps eliminate bugs at an early stage Integration Testing Integration testing is associated with the architectural design phase. Integration tests are performed to test the coexistence and communication of the internal modules within the system.. System Testing System testing is directly associated with the system design phase. System tests check the entire system functionality and the communication of the system under development with external systems. Most of the software and hardware compatibility issues can be assed during this system test execution.
03/26/2024 I wish All the Best for you 30
V-Model Validation Phase Acceptance Testing Acceptance testing is associated with the requirement analysis phase and involves testing the product in user environment. It also discovers the non-functional issues such as load and performance defects in the actual user environment.
03/26/2024 I wish All the Best for you 31
Spiral Model The spiral model combines the idea of iterative development with the systematic, controlled aspects of the waterfall model. This Spiral model is a combination of iterative development process model and sequential linear development model It allows incremental releases of the product or incremental refinement through each iteration around the spiral. The spiral model has four phases. A software project repeatedly passes through these phases in iterations called Spirals. Identification This phase starts with gathering the business requirements in the baseline spiral identification of system requirements, subsystem requirements and unit requirements are all done in this phase. understanding the system requirements by continuous communication between the customer and the system analyst. At the end of the spiral, the product is deployed in the identified market.
03/26/2024 I wish All the Best for you 32
Spiral Model Design The Design phase starts with the conceptual design in the baseline spiral and involves architectural design, logical design of modules, physical product design and the final design in the subsequent spirals. Construct or Build The Construct phase refers to production of the actual software product at every spiral. This phase refers to development of the final software product at every spiral. when the product is just thought (initial idea is think) and the design is being developed, a Proof of Concept (POC) is developed in this phase to get the users’ feedback.
03/26/2024 I wish All the Best for you 33
Spiral Model Evaluation and Risk Analysis Risk Analysis includes identifying, estimating and monitoring the technical feasibility and management risks, such as schedule slippage and cost overrun. After testing the build, at the end of first iteration, the customer evaluates the software and provides feedback. Based on the customer assessment, development process enters into the next iteration and afterwards follows the linear approach to implement the feedback provided by the user.
03/26/2024 I wish All the Best for you 34
Spiral Model Evaluation and Risk Analysis Risk Analysis includes identifying, estimating and monitoring the technical feasibility and management risks, such as schedule slippage and cost overrun. After testing the build, at the end of first iteration, the customer evaluates the software and provides feedback. Based on the customer assessment, development process enters into the next iteration and afterwards follows the linear approach to implement the feedback provided by the user.