Module1.pptx Module2.pptx cyber module 2 hackers tools and techniques
pu5112462
0 views
81 slides
Sep 27, 2025
Slide 1 of 81
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
About This Presentation
Module2.pptx cyber module 1 hackers tools and techniques
Size: 1.39 MB
Language: en
Added: Sep 27, 2025
Slides: 81 pages
Slide Content
Software Engineering and Project Management Course Code: BCS501 Module 1
Introduction Software: Software is a collection of computer programs, procedures, rules, associated documentation and data. It is developed to perform specific tasks or solve particular problems using a computer system. Engineering: Engineering is the process of designing and building something that serves a particular purpose and finds a cost-effective solution to problems. Software Engineering: is the process of designing, developing, testing, and maintaining software. It is a systematic and disciplined approach to software development that aims to create high-quality, reliable, and maintainable software.
Characteristics of Software Intangible (Non-physical): Unlike hardware, software cannot be touched or physically measured. Exists only in digital form. Engineered not Manufactured: Software is created through design, coding, and testing and not manufactured like hardware. Cost is mainly in development, not reproduction. Doesn’t Wear Out: Software doesn't degrade over time like mechanical parts. However, it can fail due to bugs or changes in the environment. Easily Modified: Software can be updated or changed (maintenance) much more easily than hardware. Dependent on Hardware: Software runs on hardware and is useless without it. Compatibility with devices is crucial. Complex and Logical: Software development involves deep logical thinking and abstraction. It can be highly complex due to millions of lines of code.
Software Application Software applications are categorized based on their purpose and functionality. Below are the main types of software applications: System Software: System software acts as a bridge between the user and the hardware. It manages hardware and provides basic functionalities for other software to run. Examples : Operating Systems (Windows, Linux), Device Drivers, Compilers. Purpose : System management, hardware control Application Software: Designed to help users perform specific tasks. Examples : MS Word, Excel, Photoshop, Browsers. Purpose : Productivity, content creation, user-level activities. Networking and Web Applications Software: Software that enables communication and services over a network (especially the internet). Examples : Web browsers (Chrome), Email clients (Outlook), Zoom, WhatsApp Web. Purpose : Internet communication, online services, collaboration
4 . Embedded Software: Software built into hardware devices to control and operate them. Examples : Software in washing machines, ATMs, microwave ovens, smart TVs. Purpose: Control specific functions of embedded systems or hardware. Reservation Software: Specialized software for booking and scheduling services. Examples : Airline ticketing systems, Hotel booking platforms like OYO. Purpose: Manage reservations, availability, and customer data. Business Software: Software used by businesses to manage operations, finance, HR, and services. Examples: Tally (accounting), SAP (ERP), Salesforce (CRM). Purpose: Business management, analytics, operations automation. Entertainment Software: Software designed for fun, leisure, and multimedia purposes. Examples: VLC Media Player, Games (PUBG, FIFA), Netflix, Spotify. Purpose : Gaming, movie streaming, music, animation.
Utilities Software: Tools that help in system maintenance, performance improvement, and troubleshooting. Examples: Antivirus (Norton), File Compressors (WinRAR), Disk Cleanup, Task Manager. Purpose: System optimization, security, backup, repair. System software Application software It is designed to manage the resources of the computer system, like memory and process management, etc. It is designed to fulfill the requirements of the user for performing specific tasks. Written in a low-level language. Written in a high-level language. Less interactive for the users. More interactive for the users. System software plays vital role for the effective functioning of a system. Application software is not so important for the functioning of the system, as it is task specific. It is independent of the application software to run. It needs system software to run.
Web Apps Web Applications (Web Apps) are software programs that are accessed via web browsers over a network (like the Internet or an Intranet). They are unique when compared to traditional desktop or mobile applications due to their architecture, accessibility, and behavior. A Web Application is an interactive program that runs on a web server and is accessed through a web browser using the internet or an intranet. Examples: Gmail, Facebook, Google Docs, Online Banking Systems. Components of Web Apps: Client Side (Frontend): HTML, CSS, JavaScript Runs in browser (UI/UX) 2. Server Side (Backend) : Languages like PHP, Python, Java, Node.js, Handles logic, database, authentication 3. Database : Stores data (e.g., MySQL, MongoDB)
Characteristics of Web Apps Network-Dependent: Web Apps require a network usually the internet to function. Platform-Independent: Can run on any device/OS that has a browser (Windows, Mac, Android). Interactive: Allows real-time interaction between users and the application. Security Concerns: Exposed to internet threats which requires authentication, encryption, etc. Scalability: Can handle thousands to millions of users with proper backend support. Integration Capability: Easily integrated with databases, APIs, and other services.
Needs of Software Engineering Handling Big Projects: A corporation must use a software engineering methodology in order to handle large projects without any issues. To manage the cost: Software engineering programmers plan everything and reduce all those things that are not required. To decrease time: It will save a lot of time if you are developing software using a software engineering technique. Reliable software: It is the company’s responsibility to deliver software products on schedule and to address any defects that may exist. Effectiveness: Effectiveness results from things being created in accordance with the standards. Reduces complexity: Large challenges are broken down into smaller ones and solved one at a time in software engineering. Individual solutions are found for each of these issues. Productivity: Because it contains testing systems at every level, proper care is done to maintain software productivity.
Software Engineering as a Layered Technology Software engineering is a fully layered technology to develop software we need to go from one layer to another. All the layers are connected and each layer demands the fulfillment of the previous layer. Figure 1. Layered Technology
Layered Technology A quality focus (top layer): It defines the continuous process improvement principles of software. The main goal of software engineering is to ensure quality software. It provides integrity that means providing security to the software so that data can be accessed by only an authorized person, no outsider can access the data. It also focuses on reliability, maintainability, usability and performance. Process: It is the foundation or base layer of software engineering. It is key that binds all the layers together which enables the development of software before the deadline or on time. Process defines a framework that must be established for the effective delivery of software engineering technology and it defines how software is developed. The software process covers all the activities, actions, and tasks required to be carried out for software development.
Layered Technology Method: Methods provide the technical approach to building software. It includes requirements analysis, design, coding practices, testing techniques, etc. During the process of software development, the answers to all “how-to-do?” questions are given by method. It has the information of all the tasks which includes communication, requirement analysis, design modeling, program construction, testing, and support. These methods guide developers to build software that meets user needs. Tools: Software engineering tools provide a self-operating system for processes and methods. Tools are integrated which means information created by one tool can be used by another. Tools improve accuracy, speed, and productivity.
Software Myths Software Myths are false beliefs or misconceptions about software development, its process, tools, and outcomes. These myths are commonly held by managers, developers, and users, and they often lead to poor decisions, unrealistic expectations, and project failures. Categories of Software Myths: 1. Management Myths 2. Customer/ User Myths 3. Practitioners/Developers Myths
1. Management Myths Myth 1: “Manuals will have simple procedures, principles, and standards that are required for developers to enquire about every piece of information during software development.” Reality: While manuals may contain standards and guidelines, they are often outdated, too generic, or not adaptable to the specific project. Developers may not follow every standard strictly, as practical experience, flexibility, and team collaboration often play a greater role in ensuring quality and timely delivery . Myth 2: “ If we get behind schedule, we can add more programmers and catch up. ” Reality: Adding more people to delayed projects can increase the issues. Hence, developers who work on projects have to teach newcomers and this may delay the project. Also, the newcomers are much less productive compared to the developers. Therefore, they find it difficult to meet the deadline due to the extra time spent on newcomers. This is famously known as Brooks’ Law: “Adding manpower to a late software project makes it later.”
1. Management Myths Myth 3: If I give the software project to another company (outsourcing), I don’t have to worry, they will take care of everything. Reality: Even if the work is given to another company, you still need to be involved. You have to give proper instructions, check their progress, and guide them when needed. Otherwise, the final software may not match what you wanted. Myth 4 : Once the software is developed and delivered, the job is finished. Reality: The job is not over after delivery. Software needs regular updates, bug fixing, and improvements to keep it working well and useful for users. The team still has to take care of it even after it's delivered.
2. Customer/User Myths Myth 1: A general idea or statement is enough to start coding; we can figure out the details later. Reality: If the software goals are not clear from the beginning, the final result may not match what the customer wanted. Myth 2: Since software is flexible, changing the requirements anytime is easy. Reality: Making changes later in the project is harder and more expensive, and it can delay the overall progress. Myth 3: Customers may think that once they provide the initial requirements, their job is done and they don’t need to be involved during the development process. Reality: Ongoing communication with the customer is needed to make sure the software meets their real needs.
3. Practitioners/Developers Myths Myth 1: Once we finish writing the program and it works, our job is over. Reality: Even after the program works, the job is not finished. We still need to test it, fix any issues, improve it, and maintain it over time. Myth 2: The only thing that matters in a project is the working program. Reality: A successful project includes more than just code, but it also needs proper planning, design documents, user guides, and testing reports to ensure long-term use and maintenance. Myth 3: Software engineering means writing too much unnecessary documentation and slows down the project. Reality: Good documentation actually helps the team understand, manage, and maintain the software. It may take some time, but it saves time and prevents confusion later in the project.
Software Engineering Practices Understand the Problem Clearly: Before development, know exactly what the user needs and gather proper requirements. Plan Before You Build: Create a plan for time, cost, resources, and development steps to avoid confusion later. Follow a Structured Process: Use a proper software development model (like Agile or Waterfall) to build the software step by step. Focus on Quality: Ensure quality at every stage through reviews, standards, and continuous testing. Be Ready for Changes: Requirements may change so that handle changes efficiently using version control and feedback. Write Useful Documentation: Maintain clear documentation for future maintenance and easy understanding. Test Continuously: Test the software at every level (unit, integration, system) to avoid errors in the final product.
Software Development Life Cycle (SDLC) Software Development Life Cycle (SDLC) is a step-by-step process used by software engineers to plan, create, test, deploy, and maintain software systems. It helps in developing high-quality software in a structured, cost-effective, and time-efficient manner.
Steps of Software Development Life Cycle (SDLC) 1. Planning This is the first and most important phase. It involves understanding what needs to be built, setting the project goals, estimating cost, time, and resources, and checking whether the project is technically and financially possible. A clear project plan is created in this phase to guide the entire development process. 2. Requirement Analysis and Gathering In this phase, detailed information is collected from the customer about what the software should do. Functional requirements (what the system should do) and non-functional requirements (how the system should perform) are gathered by business analysts and documented. This helps avoid confusion later in the development.
Steps of Software Development Life Cycle (SDLC) 3. Design This phase turns the requirements into a blueprint for the system. It includes: i . User Interface (UI) design ii. Database design iii. System architecture iv. Data flow diagrams Design helps developers understand how the system will work before they start coding. 4. Development(Coding) In this phase, developers write the actual code to build the software. They use programming languages, tools, and frameworks suitable for the project. It is the longest phase in the SDLC and needs careful coordination and version control.
Steps of Software Development Life Cycle (SDLC) 5. Testing After coding is done, the software is tested for bugs, errors, and performance issues. Testing ensures that the software meets the requirements and works correctly. Types of testing include unit testing, integration testing, system testing, and user acceptance testing. 6. Deployment Once the software is tested and approved, it is deployed to the user's environment. This can mean installing it on client systems or releasing it online. Training and documentation are also given to the users. 7. Maintenance Even after deployment, the software needs regular updates, bug fixes, and improvements. User feedback is collected, and new features may be added over time. This phase ensures the software remains useful and up-to-date.
Example: Instagram App – SDLC Steps 1. Planning Instagram’s idea was to create a platform where users could share photos instantly with friends. The planning team discussed the app's purpose, features (like photo upload, filters, likes, comments), budget, and target audience. 2. Requirement Analysis and Gathering Detailed requirements were collected: i . Users should be able to sign up/login ii. Upload photos and videos iii. Like and comment on posts iv. Follow/unfollow users v. Use filters These were documented, and technical needs (like image storage, server support) were analyzed.
Example: Instagram App – SDLC Steps 3. Design Designers created the app's interface: i . Home page layout with feed ii. Profile page, camera interface iii. UI/UX design for mobile responsiveness They also designed backend architecture for storing and managing millions of photos securely. 4. Development(Coding) Developers coded the app using languages like Swift (for iOS) and Kotlin (for Android). Backend was handled using Python (Django), with cloud storage for images. APIs were developed for posting, following, liking, etc.
Example: Instagram App – SDLC Steps 5. Testing Instagram was tested for: i . Image upload speed ii. UI performance iii. Security and privacy (especially for personal data) Bugs were identified and resolved before public release. 6. Deployment The app was launched on app stores (Android and iOS). It was promoted and installed by users globally. 7. Maintenance Instagram regularly updates features like Reels, Stories, and privacy controls. Bugs are fixed, and performance is improved based on user feedback.
Software Process A process is a group of activities, actions, and tasks done to create a product or result. An activity is something that helps achieve a broad goal , like communicating with clients. Activities are used in all types of software projects, no matter the size or complexity. In software engineering, a process is not a strict rulebook . Instead, it’s a flexible method that helps the software team choose the right steps based on their project needs. The main goal of the process is to deliver the software on time and with good quality , so that both the customer and users are satisfied.
Generic Process Framework in Software Engineering The Generic Process Model is a basic structure that describes the common activities involved in developing any software, no matter the size, type, or method used. It gives a general view of what steps are followed in most software projects.
Generic Process Framework in Software Engineering 1. Communication This is the first and most important step . In this activity, the development team communicates with the customer or stakeholder to understand: * What problem they are facing? * What software they want? * What features and functions they expect? Goal: Clearly understand the requirements . 2. Planning After understanding the requirements, a proper plan is created. Planning includes: * Estimating time and cost * Deciding the team roles * Selecting tools and technologies * Creating a schedule Goal: Make sure everything is ready before starting development.
Generic Process Framework in Software Engineering 3. Modeling (Design) In this activity, the system is designed . This means creating: * User Interface (what users will see) * Database design (how data will be stored) * Architecture (how parts of the system work together) Goal: Prepare a blueprint before building the software. 4. Construction (Coding + Testing) This step includes: * Coding – writing the program using programming languages. * Testing – checking the program for errors or bugs. Goal: Build and test the software to ensure it works correctly.
Generic Process Framework in Software Engineering 5. Deployment In this final step, the software is delivered to the user. It is installed or hosted for real use. The team may also train users or provide user manuals. Goal: Make the software live and usable. Increased Releases After the initial deployment (when the software is delivered to the customer or made live), the development doesn’t stop. In modern software development, new versions or updates of the software are often delivered regularly. This ongoing process of delivering improved or updated versions is called “Increased Releases” Examples: Mobile Banking App for a Bank, Online Food Delivery App, etc.
Umbrella Activity in Software Engineering Umbrella activities are a series of steps or procedures followed by a software development team to maintain the progress, quality, changes, and risks of complete development tasks. These steps of umbrella activities will evolve through the phases of the generic view of software development. The activities in the software development process are supplemented by many general activities. Generally, common activities apply to the entire software project and help the software development team manage and track progress, quality, changes, and risks. Importance of Umbrella Activities: Ensure Software Quality: They help maintain high quality by checking the work at every stage. Manage Risks Early: Help identify and fix possible problems before they grow bigger. Track Progress Clearly: Keep the project on schedule through regular monitoring and control. Support Main Activities: They make the core development process smoother and more organized.
Tasks of Umbrella Activity:
1. Software project tracking and control: This activity allows the software team to check the progress of software development. Before the actual development starts, make a software development plan and develop on this basis, but after a certain period of time, it is necessary to analyze the development progress to find out what measures need to be taken. It must be accepted at an appropriate time after the completion of development, testing, etc. The test results may need to reschedule the development time. 2. Risk management: Risk management is a series of steps to help software development teams understand and manage uncertainty. It is a very good idea to identify it, assess the likelihood of it happening, assess its impact, and develop an "if the problem does happen" contingency plan. 3. Software quality assurance: As its name suggest this defines and conducts the activities required to ensure software quality. The quality of the software, such as user experience, performance, workload flexibility, etc., must be tested and verified after reaching the specified milestones, which reduces the tasks at the end of the development process, which must be performed by a dedicated team so that the development can continue.
4. Technical reviews: It assesses software engineering work products in an effort to uncover and remove errors before they are propagated to the next activity. Software engineering is done in clusters or modules after completing each module, it is good practice to review the completed module to find out and remove errors so their propagation to the next module can be prevented. 5. Measurement: This includes all measurements of all aspects of the software project. Define and compile process, project, and product metrics to help the team deliver software that meets the needs of stakeholders; it can be used in conjunction with all other frameworks and general operations. 6. Software configuration management : It manages the impact of changes throughout the software development process. Software configuration management is a set of activities designed to manage changes by identifying work products that can be changed, establishing relationships between them, and defining mechanisms for managing different versions of them. Work product.
7. Reusability management: Define the standards for the reuse of work products (including software components), and develop mechanisms to implement reusable components. This includes the approval of any part of a backing-up software project or any type of support provided for updates or updates in the future. Update the software according to user/current time requirements. 8. Work product preparation and production: It encompasses the activities required to create work products such as models, documents, logs, forms, and lists. Umbrella activities in software engineering provide essential support for the main development tasks. They ensure project management, quality assurance, and configuration control, maintaining consistency and quality. Documentation supports understanding and future maintenance. Overall, these activities enhance efficiency and reliability throughout the development process.
Process assessment and improvement What is Process Assessment? Process Assessment means checking how good or effective a software development process is. It helps answer questions like: * Are we following the process correctly? * Is the process giving us good results (like on-time delivery, fewer bugs)? * Where can we improve? It’s like examining the health of the software development process. Goals of Process Assessment: Identify strengths and weaknesses in the current process Find ways to improve quality, speed, and efficiency Ensure the team follows standard practices Help the organization become more mature and reliable
Process assessment and improvement What is Process Improvement? After assessment, Process Improvement is the next step taking action to make the process better . This may involve: * Reducing steps that waste time * Adding tools or automation * Training the team * Improving communication * Redefining workflows Relationship Between Them: Process Assessment Process Improvement Finding problems or gaps Fixing those problems Analysing current practices Updating practices for better results Like a doctor’s check-up Like taking medicine to get better
Process assessment and improvement Example: Let’s say a software company often delivers late and with bugs. Assessment: They analyze and find that: There is no clear planning phase Testing is done only at the end Developers don’t follow coding standards Improvement: Add a proper planning step Do testing at each stage (unit testing, integration testing) Conduct a training session on clean coding practices Result: Now the projects are delivered faster and with fewer errors.
Standards Used in Assessment & Improvement: CMMI CMMI stands for Capability Maturity Model Integration . It is a framework that helps organizations improve their software development processes. CMMI tells you how mature, organized, and efficient your development process is. Purpose of CMMI: CMMI helps organizations: Develop high-quality software Improve performance of teams and processes Reduce errors and delays Deliver projects on time and within budget Why is CMMI Important? It brings discipline and standardization to software projects I t helps organizations move from chaotic to controlled development Companies with higher CMMI levels are seen as more trustworthy and reliable
The 5 Maturity Levels of CMMI CMMI levels describe how mature and organized a software development process is in an organization. Level 1: Initial (Chaotic Level) The process is unpredictable There are no standard practices Success depends on individual effort Projects often face delays and quality issues Scenario: A startup builds apps quickly, but without proper planning. One developer uses Python, another uses JavaScript. No common rules. Projects are late and buggy, but some-how they "just manage ".
The 5 Maturity Levels of CMMI Level 2: Managed Basic project management is introduced Requirements, cost, and timelines are tracked Each project may use its own version of process, but it’s managed Scenario: Now the team begins planning. They prepare timelines, set deadlines, and manage resources better. But still, each team may follow slightly different approaches. Level 3: Defined The organization creates a standard set of processes All teams use the same methods for design, coding, testing, etc. Teams are trained to follow the standard process Documentation and process control become strong Scenario: The company creates a Software Development Life Cycle (SDLC) model and applies it across all projects. For example, every team must do requirement gathering, design approval, coding standards, and unit testing and all documented.
The 5 Maturity Levels of CMMI Level 4: Quantitatively Managed The organization begins to measure and control its processes using data Metrics are collected (like defect rate, delivery speed, code quality) These numbers are used to predict and control project performance Risks are managed scientifically Scenario: The testing team logs the number of bugs weekly. The project manager uses delivery reports to predict how long the next module will take. If error rates rise, an alert is triggered. Level 5: Optimizing Focus is on continuous improvement The organization learns from past mistakes and feedback Innovation and automation are used to make things even better Scenario: The company holds regular reviews after each project to learn what went well and what didn’t. New tools like AI testing, DevOps, or automation are introduced to increase speed and reduce cost.
Prescriptive Process Models in Software Engineering A Prescriptive Process Model is a well-defined, structured approach to software development that follows a set of predefined steps and rules. It prescribes (recommends or instructs) what to do, how to do it, and in what order during the software development lifecycle. A prescriptive process model tells the development team: * What tasks to perform (like planning, designing, coding, testing) * In which order to do them * How each step should be done The goal is to make software development organized, predictable, and repeatable , especially for large and complex projects.
Prescriptive Process Models in Software Engineering Prescriptive Process Models: Waterfall Model V-Model (Validation and Verification) Incremental Model Evolutionary process models Spiral Model Concurrent models Specialized process models.
Waterfall Model The Waterfall Model is a type of prescriptive process model used in software development. In this model, the development process follows a linear and step-by-step flow, just like water flowing down a waterfall. Each phase in the process must be completed fully before moving to the next one. There is no overlapping or going back once a step is finished, you continue forward. Because of this structure, the Waterfall Model is also called a "linear sequential model."
V-Model The V-Model (Verification and Validation Model) is an extension of the Waterfall model. In the V-Model, each development phase is directly connected to a corresponding testing phase. It’s called the “V” model because the process is shaped like the letter V, showing the development steps on the left side and the testing/validation steps on the right side. The next phase starts only after completion of the previous phase i.e., for every stage of development, there is a matching test activity to ensure correctness early in the process. Importance / Objective of V-Model Ensures early testing planning Reduces errors at later stages Improves product quality Encourages structured and disciplined development
V-Model The representation of V-Model
V-Model Left Side of V – Development (Verification Phases) Requirements Modeling – Understand what the customer wants – Document all functional and non-functional requirements Architectural Design – Design the overall system structure (how components interact) Component Design – Design each module/component individually Code Generation – Start writing code based on the component design
V-Model Right Side of V – Testing (Validation Phases) Unit Testing – Test individual components for correctness Integration Testing – Test how components work together as a group System Testing – Test the entire system for bugs, performance, and reliability Acceptance Testing – Test the final product with the user to ensure it meets requirements
V-Model Advantages of V-Model Simple and easy to follow: Easy to understand and manage for students and beginners Testing at every stage: Reduces bugs and improves quality early Saves time in long run: Early error detection prevents rework It enables project management to track progress accurately. Disadvantages of V-Model Not flexible for changing needs: If requirements change in the mid-project, it's hard to adjust No early working software: Software is only ready at the end High risk and uncertainty. It is not good for complex and object-oriented projects.
Incremental Model The Incremental Model is a software development process model where the system is developed step-by-step (in increments).
Incremental Model When an incremental model is used, the first increment is often a core product. That is, basic requirements are addressed but many supplementary features (some known, others unknown) remain undelivered. The core product is used by the customer (or undergoes detailed evaluation). As a result of use and/or evaluation, a plan is developed for the next increment. The plan addresses the modification of the core product to better meet the needs of the customer and the delivery of additional features and functionality. This process is repeated following the delivery of each increment, until the complete product is produced. The incremental process model focuses on the delivery of an operational product with each increment.
Incremental Model When to Use the Incremental Model: Requirements are clear but delivered in parts Project needs to be released early User feedback is important Resources (team, time) are limited or phased Advantages of Incremental Model Customer can start using parts of the system sooner Issues are found and fixed in smaller increments Easier to accommodate changes in later increments Disadvantages of Incremental Model Total cost may be high: More planning and design updates between increments Integration issues: New features must fit well with earlier parts
Evolutionary Process Model The Evolutionary Process Model is a software development process model where the software is developed and improved step by step , based on user feedback and changing requirements . Each version (also called an increment or prototype) is tested and reviewed by the customer. The model allows the software to evolve gradually based on user feedback and changing requirements. It is flexible and supports changes even after the initial planning. When to Use the Evolutionary Process Model If the customer is not fully sure about what they want in the software When You Need Early Delivery of a Working Product When Regular Customer Feedback is Needed When the Project is Large and Complex
Evolutionary Process Model
Evolutionary Process Model Software Concept : Start with the basic idea of the software. Preliminary Requirement Analysis : Collect initial requirements from the customer. Design of Architecture and System Core : Create the basic structure of the system. Develop a Version : Build the first working version of the software. Deliver the Version : Give this version to the customer to use. Elicit Customer Feedback : Ask the customer for their opinions, suggestions, or problems. Incorporate Customer Feedback : Improve the next version based on the feedback. Repeat Steps 4–7 : Continue updating the software with better versions. Deliver Final Version : Once the customer is satisfied, deliver the full and final product.
Spiral Model The Spiral Model is a software development model where software is built in repeated cycles (spirals) . In each cycle, the team goes through planning, risk analysis, development, and evaluation , and builds a better version each time. The Spiral Model combines the features of both the Waterfall Model and Prototyping Model.
Spiral Model Phases of the Spiral Model: Planning – Gather requirements for that particular version – Understand what needs to be developed in the current cycle Risk Analysis/ Modeling – Identify possible problems (technical, time, cost) – Find ways to reduce those risks before development Development & Testing – Design, code, and test the current version of the product Deployment – Show the product to the customer – Collect feedback to improve the next version After these 4 stages, the process repeats for the next cycle (spiral), with improved versions each time.
Spiral Model When to Use the Spiral Model: It is risk-driven and is especially used for large and complex projects. Requirements are not well understood at the beginning Customer feedback is important at every stage You want to deliver small working versions regularly Advantages of Spiral Model Focuses on identifying and reducing risks early Regular feedback helps shape the software correctly Requirements can be updated in each cycle Disadvantages of Spiral Model Not suitable for small/simple projects Requires experienced project managers and developers
Concurrent Model The Concurrent Model is a software development model where multiple activities (like design, coding, and testing) can happen at the same time (concurrently) instead of waiting for one phase to finish before the next begins. The Concurrent Model allows different parts of the software process to work in parallel, making it suitable for complex and large projects where different teams handle different activities simultaneously. Example: * While one team is doing design for Module A, * another team can start coding for Module B, * and a third team can be doing testing for Module C — all happening at the same time. When to Use the Concurrent Model: * Projects are large and divided into modules * Development teams are working in parallel * You want flexibility and faster delivery
States in the Concurrent Model (Modeling Activity) Inactive - The task has not started yet. Under Development - The task is currently being worked on or created. Under Review - The completed task is being reviewed for correctness and quality. Awaiting Changes - The task needs modifications based on the review feedback. Under Revision - The task is being updated or corrected. Baselined - The task is approved and frozen (official version saved). Done - The task is completed and no further changes are needed.
Concurrent Model Advantages of Concurrent Model Multiple tasks can run at the same time – saves time. Good for large projects with different teams working on different parts. Easy to manage changes during development. Shows the current state of each task clearly (like under review, done, etc.). Disadvantages of Concurrent Model Can be confusing if not managed properly. Needs good communication between teams. Hard to use for small or simple projects. Difficult to track everything if too many tasks are active at once. Requires experienced developers and managers to handle it well.
Specialized Process Models Specialized process models are customized software process models used for particular kinds of software development tasks that cannot be efficiently managed using generic models. These are designed for specific types of projects or special situations. Unlike general models like Waterfall or Spiral, these models are custom-made to handle unique project needs such as component reuse, rapid changes, or short timelines.
1. Component Based Development Model The Component-Based Development (CBD) Model focuses on building software using pre-existing, reusable components instead of developing everything from scratch. Process of CBD Model: * Component Identification – Identify existing components that can be reused. * Component Integration – Assemble the components to form the system. * Customization & Testing – Modify and test the integrated components. * Deployment & Maintenance – Deliver the final system and provide updates. Case Study : E-Commerce Website (Amazon)Scenario: - Amazon needs to develop features like login, payment, product catalog, reviews, etc. How CBD is used: - The payment system is reused across different Amazon services (like Kindle, Prime, etc.). - Components like user authentication, product recommendation, and shopping cart are developed once and reused in multiple services.
CBD Model Advantages of CBD Model Faster development by reusing existing components Saves time, improves consistency Reduces cost and effort Encourages modular design and maintainability Disadvantages: Integration challenges due to compatibility issues Dependency on third-party components Limited customization if components are pre-built
2. The Formal Methods Model The Formal Methods Model is based on mathematical techniques and logic to specify, develop, and verify software. It is mainly used in safety-critical systems (e.g., medical, aviation, and defense software). Steps in Formal Methods Model: * Mathematical Specification – Define system requirements using formal logic. * Design & Development – Implement based on the specifications. * Verification & Proofs – Use mathematical proofs to ensure correctness. * Testing & Deployment – Perform additional validation before deployment. Case Study: NASA’s Space Shuttle Software Scenario: - NASA developed onboard software for its space shuttle systems. How Formal Methods were used: - They used mathematical techniques to prove the software was logically correct before implementation. - All mission-critical functions like navigation, fuel control, and safety protocols were formally verified.
Formal Methods Model Advantages: Ensures high reliability and correctness Eliminates ambiguities in software specifications Reduces critical failures in software systems Disadvantages: Complex and difficult to apply Requires advanced mathematical expertise Costly and time-consuming
3. Aspect-Oriented Software Development (AOSD) Model The Aspect-Oriented Software Development (AOSD) Model focuses on separating concerns (such as security, logging, and error handling) into independent aspects that can be reused across different modules. Key Features of AOSD: * These common features like security checks, logging, or error messages often appear in many parts of a program. * Instead of repeating the same code everywhere, AOSD puts it in one place and links it where needed. * It increases code clarity, reduces duplication, and makes the program easier to update or fix. * Common in large -scale enterprise applications. Case Study: Online Banking System Scenario - A bank like HDFC or SBI builds a large application that includes user login, fund transfers, statements, etc. How AOSD is used: - Features like logging, security checks, and transaction monitoring are needed in almost every module. - Instead of writing the same code again and again, AOSD keeps these aspects in separate modules and connects them across the system.
3. Aspect-Oriented Software Development (AOSD) Model Advantages: Improves software modularity Reduces redundancy in code Simplifies maintenance and updates Disadvantages: Complex to understand and implement Requires specialized tools and frameworks
Unified Process The Unified Process (UP) is a software development methodology that emphasizes iterative development, collaboration, and flexibility. It is based on the Unified Modeling Language (UML) and is characterized by its use of use cases to drive development, its focus on architecture-centric development, and its emphasis on risk management and incremental delivery. UP is a flexible and adaptable process that can be tailored to meet the specific needs of a project or organization, making it a popular choice for many software development teams. Unified Process (UP) is characterized by its iterative and incremental approach to software development.
Phases of Unified Process The phases in Unified Process provide a structured framework for managing the various activities and tasks involved in building a software system. Here's an in-depth look at each phase: 1. Inception This is the initial phase where the project's scope, objectives, and feasibility are determined. Key activities in this phase include identifying stakeholders, defining the initial requirements, outlining the project plan, and assessing risks. The goal of this phase is to establish a solid foundation for the project and ensure that it is worth pursuing.
Phases of Unified Process 2. Elaboration In this phase, the project requirements are analyzed in more detail, and the architecture of the system is defined. Key activities include developing use cases, creating the architectural baseline, identifying key components, and refining the project plan. The goal of this phase is to mitigate major risks and establish a solid architectural foundation for the project. 3. Construction This is the phase where the actual implementation of the system takes place. Key activities include developing, testing, and integrating the system components, as well as continuously verifying that the system meets the requirements. The goal of this phase is to build a complete, high-quality software product that is ready for deployment.
Phases of Unified Process 4. Transition In this final phase, the software is deployed to end users. Key activities include user training, final system testing, and transitioning the system to the operations and maintenance team. The goal of this phase is to ensure a smooth transition from development to production and to address any issues that arise during deployment. - These phases are iterative, meaning that they may be revisited multiple times throughout the project to incorporate feedback, make improvements, and address changes in requirements. - This iterative approach allows for flexibility and adaptability, making the Unified Process well-suited for complex and evolving software projects.
Work flow in Unified Process Requirements Workflow: Identifies, analyzes, and prioritizes system requirements, ensuring alignment with stakeholder needs. Analysis and Design Workflow: Translates requirements into system designs, defining the architecture and high-level structure of the system. Implementation Workflow: Implements system functionality based on design specifications, coding and integrating components as needed. Test Workflow: Designs and executes test cases to verify system functionality, ensuring the software meets quality standards. Deployment Workflow: Prepares and transitions the system for deployment, ensuring a smooth transition from development to production. Configuration and Change Management: Manages configuration items and tracks changes, ensuring version control and integrity throughout development. Project Management Workflow: Oversees project progress, resources, and schedule, ensuring timely delivery and adherence to quality standards. Environment Workflow: Sets up and maintains development, testing, and production environments, enabling efficient software development.
Importance of Unified Process Complex software projects are made more manageable by Unified Process. It breaks them into smaller, iterative chunks. Clear guidelines and workflows from Unified Process boost communication. It ensures stakeholder collaboration is seamless. Continuous feedback is emphasized by UP's approach. High-quality software meeting requirements are the result. Key Principles of Unified Process Iterative and Incremental: Unified Process divides the development process into multiple iterations, with each iteration adding new functionality incrementally. Use Case Driven: The Unified Process focuses on identifying and prioritizing use cases that represent the system's functionality from the user's perspective. Architecture-Centric: The Unified Process emphasizes defining and refining the system architecture throughout the development process. Risk Management: Unified Process identifies and manages project risks proactively to minimize their impact on the project's success. Continuous Validation: Unified Process ensures continuous validation of the system's requirements, design, and implementation through reviews, testing, and feedback.
Personal Software Process (PSP) Personal Software Process (PSP) is the skeleton or the structure that assist the engineers in finding a way to measure and improve the way of working to a great extend. It helps them in developing their respective skills at a personal level and the way of doing planning, estimations against the plans. PSP model defines 5 framework activities: 1. Planning The engineers should plan the project before developing because without planning a high effort may be wasted on unimportant activities which may lead to a poor and unsatisfactory quality of the result. Here the development tasks are identified, and project scheduling takes place. 2. High level design In this framework activity, external specification of each component is created, and prototype are built. 3. High level design review Verification process is applied to uncover the errors in the design. 4. Development Here the code is generated, reviewed, compiled and tested. 5. Postmortem Here the effectiveness of the process is defined.
Levels of Personal Software Process (PSP) Personal Software Process (PSP) has four levels- PSP 0 - The first level of Personal Software Process, PSP 0 includes Personal measurement, basic size measures, coding standards. PSP 1 - This level includes the planning of time and scheduling. PSP 2 - This level introduces the personal quality management, design and code reviews. PSP 3 - The last level of the Personal Software Process is for the personal process evolution . Objectives of PSP The PSP helps software engineers to: Improve their approximating and planning skills. Make promises that can be fulfilled. Manage the standards of their projects. Reduce the number of faults and imperfections in their work.
Advantages of PSP (Personal Software Process): Improved productivity: Helps individuals work more efficiently by breaking tasks into smaller steps. Improved quality: Focuses on reducing errors and improving the quality of the software. Personalized approach: Adapts to the developer’s own skills, habits, and work style. Improved estimation: Encourages better time and effort estimation for tasks. Continuous improvement: Promotes learning from past mistakes to do better in future projects. Disadvantages of PSP: Time-consuming: Requires extra time to learn and follow the process initially. Complex: Can be hard to understand for beginners or non-technical users. Heavy documentation: Involves a lot of writing and recording during development. Limited to individuals: Not suitable for team-based projects or large-scale collaboration.
Team Software Process (PSP) Team Software Process (TSP) is a team-based process. TSP focuses on team productivity. Basically, it is a top-down approach. The TSP is an adaptive process, and process management methodology. The goal of TSP is to build a “self-directed” project team that organizes itself to produce high-quality software. TSP defines 7 framework activities: Launch process : The team meets to define the project goals, scope, and schedule. They also identify the risks and challenges associated with the project. High-level design : The team creates a high-level design of the software system, which includes identifying the major components of the system and their relationships. Implementation : The team implements the high-level design. This includes writing the code, testing it, and integrating it with other components of the system. Integration : They integrate the individual components of the system into a complete working system.
Testing: The team tests the system to ensure that it meets the requirements and is free of defects. Postmortem : They conduct a postmortem review to identify the lessons learned from the project. Process improvement : The team uses the lessons learned from the postmortem review to improve their software development process. Objectives of TSP: Improve Team Productivity: - Helps the team plan and manage their work effectively to complete projects faster and better. Enhance Software Quality: - Focuses on reducing defects and delivering high-quality software from the start. Better Project Planning and Tracking: - Encourages accurate estimation and continuous tracking of progress to avoid delays. Promote Team Responsibility and Discipline: - Every team member takes ownership of their work, leading to better coordination and accountability.
Advantages of TSP (Team Software Process): Improved productivity: Helps teams work efficiently by breaking tasks into manageable steps. Improved quality: Focuses on building high-quality, error-free software through regular analysis. Team collaboration: Encourages teamwork by using the strengths of all team members. Improved estimation: Helps in making accurate project plans and time estimates. Continuous improvement: Encourages teams to learn from past projects and improve future performance. Disadvantages of TSP: Time-consuming: Takes extra time for training and data analysis, especially at the start. Complex: Can be difficult to adopt for teams unfamiliar with software processes. Heavy documentation: Requires writing detailed reports and records throughout the project. Requires discipline: Teams must strictly follow the process, which may not suit everyone. Costly: May require investment in training and tools to implement properly.