Unit 1: Introduction
Unit 2: Software Processes
- Simple and easy to understand because the phases are clearly defined.
- Easy to manage because each phase has specific goals and deliverables.
- Proper documentation is produced at every stage.
- Works well when requirements are clear and unlikely to change.
- Progress can be measured easily because the development follows fixed phases.
- Difficult to accommodate changes once a phase has been completed.
- Working software is available only near the end of development.
- Testing starts relatively late, so errors may be discovered late.
- Not suitable when requirements are unclear or frequently changing.
- Customers have limited involvement after the requirements phase.
Strong focus on risk identification and management.
Suitable for large and complex projects.
Changes can be incorporated during development.
Customer feedback is obtained regularly.
Disadvantages:
More expensive than simpler models.
Requires experienced risk-analysis personnel.
Can be complex to manage.
Not suitable for small and low-risk projects.
- Simple and easy to understand because the phases are clearly defined.
- Easy to manage because each phase has specific goals and deliverables.
- Proper documentation is produced at every stage.
- Works well when requirements are clear and unlikely to change.
- Progress can be measured easily because the development follows fixed phases.
- Difficult to accommodate changes once a phase has been completed.
- Working software is available only near the end of development.
- Testing starts relatively late, so errors may be discovered late.
- Not suitable when requirements are unclear or frequently changing.
- Customers have limited involvement after the requirements phase.
Short Notes
1. Open-Source Development
Open-source development is a software development approach in which the source code is publicly available and developers can use, modify, and distribute it according to its license.
Source code is available to developers and users.
Developers can modify and improve the software.
Development is usually done by a community of developers.
Users can report bugs and suggest new features.
It encourages collaboration and knowledge sharing.
Software is distributed under an open-source license.
Examples include Linux, Mozilla Firefox, and Apache.
2. Agile Project Management
Agile project management is an approach that manages software projects through small, iterative development cycles with continuous customer feedback.
Work is divided into small units called iterations or sprints.
Working software is delivered frequently.
Customer feedback is collected throughout development.
It allows requirements to change easily.
Development teams communicate and collaborate regularly.
Problems are identified and corrected early.
Common Agile methods include Scrum and Kanban.
3 System Engineering
System engineering is the process of designing, developing, integrating, and managing a complete system, including hardware, software, people, and other components.
It focuses on the entire system, not only software.
It identifies system requirements and constraints.
It includes both hardware and software components.
It manages the interaction between different system components.
It considers factors such as cost, performance, safety, and reliability.
It includes system design, integration, testing, and maintenance.
It is useful for large and complex systems.
4. Release Testing
Release testing is the process of testing a software system before it is released to customers or users.
It is performed on the complete software system.
Its main purpose is to check whether the system is ready for release.
It verifies that the software meets its specified requirements.
It checks important qualities such as performance, reliability, and security.
Testing is usually performed by an independent testing team.
It helps identify serious defects before delivery.
The final decision to release the software is made based on the testing results.
5. Software Pricing Strategies
Software pricing strategy is the method used by a software company to determine the price charged for its software product or service.
Cost-based pricing: Price is determined by development and operating costs.
Market-based pricing: Price is based on competitors and market conditions.
Value-based pricing: Price depends on the value provided to customers.
Per-user pricing: Customers pay according to the number of users.
Subscription pricing: Customers pay regularly, such as monthly or yearly.
Tiered pricing: Different features are offered at different price levels.
Pricing may also use free trials or freemium models to attract users.
6.Design Patterns in Object-Oriented Design
Design patterns are reusable solutions to common software design problems in object-oriented systems.
They provide proven solutions to frequently occurring design problems.
They improve software structure and maintainability.
They encourage reuse of design ideas rather than directly reusing code.
They make communication between developers easier.
Design patterns are commonly grouped into Creational, Structural, and Behavioral patterns.
Examples include Factory, Singleton, Adapter, Observer, and Strategy.
They help create software that is flexible and easier to modify.
7. Reliability Validation
Reliability validation is the process of checking whether software can perform its required functions correctly and continuously for a specified period under specified conditions.
It focuses on the reliability of the software system.
It checks whether the software works correctly for a long period.
Testing is performed under realistic or expected operating conditions.
It measures failures and the frequency of failures.
Reliability testing helps identify faults and weak areas.
It is important for systems where failure can cause serious problems.
Examples include banking, medical, aviation, and safety-critical systems.
8. Reverse Engineering
Reverse engineering is the process of examining an existing software system to understand its design, structure, components, and functionality.
It starts with an existing software system.
The source code or system behavior is analyzed to understand its structure.
It helps recover missing or outdated design and documentation.
It can be used when maintaining old or legacy software.
It helps developers understand software developed by others.
It can support software maintenance and modernization.
Reverse engineering does not necessarily mean changing the software; its main purpose is understanding the existing system.
Unit 3: Agile Software Development
- Differentiate plan driven and agile development.
- What are the principles of agile development? Explain agile development techniques.
- Explain the Agile software development and its applications.
- Explain the agile software development. Compare between agile software development with prototyping software development.
Unit 4: Requirements Engineering
- What is requirements elicitation? Explain different requirements elicitation techniques used in requirements engineering process.
- Briefly explain on the requirements of engineering process.
- What is the difference between functional and non-functional requirement? Which is more critical and why?
- Explain the main activities used in requirements engineering. What are the desirable characteristics of a good SRS documents? Explain with example.
- Differentiate between functional and non-functional requirements. What are the various types of functional and non-functional requirements that are placed on the system? Explain with an example.
- Briefly explain functional, non-functional, and domain requirements.
- Explain the process of requirement engineering.
- Differentiate between functional and non-functional requirement. Describe any three functional and non-functional requirement for library management system.
- What is requirements engineering? Explain the requirements engineering process in detail including requirements elicitation, specification, validation, and change management. What are the challenges in managing requirements change? Illustrate with an example.
- What is formal specification? Discuss interface specification in detail.
- Discuss the structure of SRS document.
Unit 5: System Modeling
- Draw a context model and use case diagram for an Online Food Delivery System. Make necessary assumptions.
- Draw use case diagram, class diagram and sequence diagram for online book recommendation system. Make your own assumptions.
- Draw use case diagram and class diagram for online bus ticketing system.
- Discuss the importance of use case diagram in object-oriented development. Draw a use case diagram for library system.
- Draw use case diagram and sequence diagram for online movie ticketing system.
- Explain system modeling with suitable example.
- Differentiate between structural and behavioral models. What is the importance of behavioral model.
- Differentiate between structural and behavioral models.
- Explain the behavioral model with example.
- Differentiate between structural models and behavioral models in system modeling. Draw an activity diagram for "Online Shopping Checkout Process."
- What are context models in system modeling? Draw a context model for a Smart Home Automation System showing the system boundary and external entities. Explain its importance.
- Draw the following UML diagrams for a Hospital Management System: a) Use case diagram b) Class diagram showing at least 5 classes with relationships c) Sequence diagram for "Patient Appointment Booking" scenario d) State diagram for "Appointment" object. Make necessary assumptions.
- Explain the concept of Model-Driven Architecture (MDA). How does it help in system modeling? What are its advantages and disadvantages?
Unit 6: Architectural Design
- Explain architectural design decisions that must be made during the architectural design process. Describe the following architectural patterns with suitable diagrams: a) Model-View-Controller (MVC) architecture b) Client-Server architecture c) Pipe and Filter architecture
- Explain architectural views. Illustrate on layered architecture, repository architecture, and pipe and filter architecture.
- Explain any one application of architecture.
- What are the activities of architectural design process? Discuss abstract machine model.
- What is modular decomposition? Discuss object oriented model of decomposition.
Unit 7: Design and Implementation
- What do you understand by implementation issues in software development? Discuss reuse, configuration management, and host-target development as implementation issues.
- What do you understand by design patterns? What role does it have in object oriented design.
- Explain the component base software engineering and its advantages.
- Explain the component based software engineering.
- Discuss with example of reuse base software engineering.
- What are the drawbacks of software reuse? Explain.
- Write down the software version control process.
Unit 8: Software Testing
- What is software testing? Explain the software testing process in detail. Differentiate between development testing and release testing. How does Test-Driven Development (TDD) improve software quality? Explain with an example.
- Difference between verification and validation. Explain software inspection process.
- Differentiate between verification and validation.
- Compare between verification and validation. why validation is particularly difficult process? Explain with example.
- What is release testing? Differentiate between release testing and system testing.
- What is software quality assurance? Explain with example.
- What do you understand by software quality assurance?
- Differentiate between Alpha testing and Beta testing.
- Discuss path testing with suitable example.
- Differentiate between user testing and development testing. Explain alpha testing, beta testing, and acceptance testing with examples.
- What is Test-Driven Development (TDD)? Explain the TDD process with an example. What are the benefits and challenges of implementing TDD?
Unit 9: Software Evolution
- What is software evolution? Explain the software evolution process. Why is evolution considered inevitable in software systems?
- Differentiate between corrective, adaptive, perfective, and preventive maintenance. Which type of maintenance consumes the most resources and why?
- "Software maintenance is one of the most importance activity." Justify the statement with an example.
- What do you mean by legacy system? Explain its importance.
- Explain maintenance process in detail.
- Differentiate between reengineering and reverse engineering.
Unit 10: Software Management
- What is project management? Explain different project management activities in detail. Discuss risk management process with suitable example showing how risks are identified, analyzed, and mitigated in a software project.
- How risk management is carried out during software development? Explain.
- Discuss different types of risks which are likely to arise in software projects. Briefly explain risk analysis stage during risk management process.
- Explain the importance of software pricing. Highlight COCOMO cost modeling technique. List its disadvantage.
- A software project is estimated to be 320 KLOC. Using the COCOMO model, calculate the effort (person-months) and development time (months) for: a) Organic mode b) Embedded mode. Use the following formulas: Organic: Effort = 2.4(KLOC)^1.05, Time = 2.5(Effort)^0.38; Embedded: Effort = 3.6(KLOC)^1.20, Time = 2.5(Effort)^0.32
- Suppose that a project was estimated to be 400 KLOC. Calculate the effort and development time for organic and semidetached.
- Explain COCOMO model.
- Explain with example how COCOMO can be used for software cost estimation?
- Discuss COCOMO model in cost estimation of software in detail.
- A project manager needs to estimate the cost of a software project with the following characteristics: Size: 450 KLOC, Mode: Semi-detached. Calculate using COCOMO: a) Effort in person-months b) Development time in months c) Average team size required. Use formulas: Effort = 3.0(KLOC)^1.12, Time = 2.5(Effort)^0.35
- What is project scheduling? Explain different project scheduling techniques. How does critical path method (CPM) help in project planning?
- Explain people management in software project management. Discuss the factors that influence team working and how to select appropriate people for software projects.
- What is software quality management? Explain the relationship between quality management, quality assurance, and quality control with examples.
- In the software development process, how does software configuration management facilitate the changes that may occur during different stages of a software development life cycle? Justify your explanation with example.
- Explain in detail about the activities carried out in software configuration management. Why it is required?
- Explain the detail tasks in a software configuration management process with example.
