A Comprehensive Guide to Software Development Life Cycle and Methodologies
Object-Oriented Analysis and Development
Object-oriented analysis (OOA) is a method of analysis that examines requirements from the perspective of the classes and objects found in the vocabulary of the problem domain.
Object-oriented development life cycle (OODLC) is a systematic approach to software development that emphasizes the use of object-oriented principles and techniques throughout the process. It involves several stages, each focusing on specific tasks to develop a robust, maintainable, and scalable software system.
Object-Oriented Development Life Cycle Stages:
- System Analysis
- System Design
- Object Design
- Implementation
Basic Characteristics of Object-Oriented Systems:
- Class: A class is an abstraction that describes properties important to an application and ignores the rest.
- Abstraction: The attributes of no concern to the system are left out. This is known as abstraction.
- Inheritance: It is the sharing of attributes and operations among classes based on a hierarchical relationship.
- Polymorphism: It means the same operation may behave differently for different classes.
- Reusability: The classes, once defined, can easily be used by another application.
- Data Hiding: Encapsulation is a technique that allows the programmer to hide the internal functioning of the object from the users of the object.
Unified Modeling Language (UML)
UML is a standardized modeling language consisting of an integrated set of diagrams, developed to help system and software development for specifying, visualizing, constructing, and documenting the artifacts of software systems as well as for business modeling and other non-software systems.
UML Diagram Types:
- Structure Diagrams:
- Class Diagram
- Object Diagram
- Component Diagram
- Deployment Diagram
- Behavioral Diagrams:
- Use Case Diagram
- Sequence Diagram
- Collaboration Diagram
- Statechart Diagram
- Activity Diagram
System Implementation
System implementation is the process of converting the physical system specification into working and reliable software and hardware, documenting the work that has been done, and providing help for current and working computer code by the programming team.
Software Testing
Software testing can be stated as the process of verifying and validating that software or an application is bug-free, meets the technical requirements as guided by its design and development, and meets the user requirements effectively and efficiently while handling all exception and boundary cases.
Applications of Software Testing:
- Cost-Effective Development: Reduces costs by fixing bugs early. Saves time and money through streamlined processes.
- Product Improvement: Enables iterative improvements based on feedback. Improves the product by adding and refining features.
- Test Automation: Automates repetitive tasks for faster testing. Provides reliable, repeatable test results.
- Quality Check: Ensures software meets requirements and performs as expected. Tests software under load and for security vulnerabilities.
Different Types of Tests:
- Inspections
- Desk Checking
- Unit Testing
- Integrating Testing
- System Testing
- Stub Testing
- User Acceptance Testing
Alpha Testing
Alpha testing is conducted in-house by internal testers or the quality assurance team at the developer’s site. It takes place after internal testing and before beta testing, aiming to identify and fix bugs and issues before the software is released to external users. This testing occurs in a controlled, simulated environment, with feedback provided by internal employees to refine the product further.
Beta Testing
Beta testing is performed by external users or customers in their real-world environments after alpha testing and before the final release. Its primary purpose is to gather feedback from real users to identify any remaining issues and make final adjustments. This testing phase helps ensure that the software functions well in actual usage scenarios, with feedback from selected external users guiding the final improvements.
Installation
Installation is the process of moving from the current information system to the new one.
Different Ways of Installation:
- Direct Installation
- Parallel Installation
- Pilot Installation
- Phased Installation
Documentation
Documentation is the process of collecting, organizing, storing, and maintaining a complete record of the system and other documents used or prepared during the different phases of the system development life cycle.
Why Proper System Documentation is Necessary:
- It solves the problem of the indispensability of an individual for an organization. Even if the person who designed or developed the system leaves the organization, the documented knowledge remains with the organization, which can be used for the continuity of that software.
- It makes the system easier to modify and maintain in the future. The key to maintenance is proper and dynamic documentation. It is easier to understand the concept of a system from the documented records.
- It helps in restarting system development that was postponed for some reason. The job need not be started from scratch, and old ideas may still be easily recapitulated from the available documents, which avoids duplication of work and saves a lot of time and effort.
Types of Documentation:
- System Documentation: System documentation records detailed information about a system’s design specification, its internal workings, and its functionality. System documentation is intended primarily for maintenance programmers.
Types of System Documentation:
- Internal Documentation: Internal documentation is part of the program source code or is generated at compile time.
- External Documentation: External documentation includes the outcome of structured diagramming techniques such as data flow and entity-relationship diagrams.
- User Documentation: User documentation consists of written or other visual information about an application system, how it works, and how to use it. User documentation is intended primarily for users. It contains information such as setup and operational details of each system and loading and unloading procedures.
System Maintenance
System maintenance is an ongoing activity that covers a wide variety of activities, including removing program and design errors, updating documentation and test data, and updating user support. System maintenance is the general process of changing a system after it has been delivered.
Four Major Activities of Maintenance:
- Obtaining Maintenance Requests: A formal process should be established whereby users can submit system change requests. When developing the procedures for obtaining maintenance requests, organizations must also specify an individual within the organization to collect these requests and manage their dispersal to maintenance personnel.
- Transforming Requests into Changes: Once a request is received, analysis must be performed to identify the scope of the request. It must be determined how the request will affect the current system and how long such a project will take. As with the initial development of a system, the size of a maintenance request can be analyzed for risk and feasibility.
- Designing Changes: Next, a change request can be transformed into a formal design change, which can then be fed into the maintenance implementation phase.
- Implementing Changes: Once the change design is approved, proposed changes are implemented in the respective components of the system.
Role of CASE in Maintenance:
- Automated Code Analysis: Quickly identifies and fixes bugs and inefficiencies.
- Version Control: Manages and tracks changes to the software.
- Documentation: Maintains up-to-date technical and user documentation.
- Impact Analysis: Identifies affected areas by proposed changes.
- Automated Testing: Ensures updates do not break existing functionality.
- Project Management: Tracks tasks, assigns responsibilities, and monitors progress.
System Development
System
A system is a set of components that interact to accomplish some purpose. For example: a college system, economic system, language system, a business and its parts – marketing, sales, research, shipping, accounting, government, and so on.
Elements of a System:
- Outputs and Inputs
- Processors
- Control
- Feedback
- Environment
- Boundaries and Interfaces
Characteristics of a System:
- Organization
- Interaction
- Interdependence
- Integration
- Central Objective
Information System
An information system is an interrelated set of components working together to collect, process, store, and disseminate information to support decision-making, coordination, control, analysis, and visualization in an organization.
Components of an Information System:
- Hardware
- Software
- Database
- Network
- Procedures
Types of Information Systems:
- Transaction Processing System
- Office Automation System and Knowledge Work System
- Management Information System
- Decision Support System
- Artificial Intelligence and Expert System
Roles of a System Analyst:
- System Analyst as a Consultant
- Analyst as Supporting Expert
- Analyst as Agent of Change
Software Development Models
Waterfall Model
- Planning
- Analysis
- Logical Design
- Physical Design
- Implementation
- Maintenance
CASE Tools
Types:
- Diagram Tools
- Computer Display and Report Generators
- Analysis Tools
- Central Repository
- Documentation Generators
- Code Generators
Prototype Model
- Requirements Gathering
- Quick Design
- Build Prototype
- User Evaluation
- Refining
- Engineer Product
Spiral Model
- Objectives Determination and Identify Alternative Solutions
- Identify and Resolve Risks
- Develop Next Version of the Product
- Review and Plan for the Next Phase
RAD Model
- Identify Objectives
- Work with Users to Design System
- Build System
- Implementation
Agile Model
- Exploration
- Planning
- Iteration to the First Release
- Productionizing
- Maintenance
Extreme Programming
Practices:
- Code Review
- Testing
- Incremental Development
- Simplicity
- Design
- Integration and Testing
Applications of Extreme Programming:
- Small Projects
- Projects Involving New Technology and Research
Advantages of Extreme Programming:
- Reduced Slipped Schedules
- Reduced Cancelled Schedules
- Reduced Costs Incurred in Changes
- Reduced Production and Post-Delivery Defects
Disadvantages of Extreme Programming:
- Difficult to Implement
- Relies on Many Factors
- Code-Centric
SOA (Service-Oriented Architecture)
Characteristics:
- Modular
- Reusable
- Work Together with Other Modules
- Able to Be Categorized and Identified
- Able to Be Monitored
Qualities of a Project Manager
- Leadership
- Management
- Customer Relations
- Technical Problem Solving
- Conflict Management
- Team Management
Outsourcing
Outsourcing is the practice of turning over responsibility for some or all of an organization’s information systems, applications, and operations to an outside firm.
Sources of Outsourcing:
- IT Service Firms
- Packaged Software Producers
- Enterprise-Wide Solutions
- Cloud Computing Vendors
- Open Source Software
Reuse
Areas of Reuse:
- Requirements Specification
- Component Analysis
- Requirements Updation
- Reuse System Design
- Development
- Integration
- System Validation
Alpha Testing vs. Beta Testing
Feature | Alpha Testing | Beta Testing |
---|---|---|
Location | In-house at the developer’s site | At the users’ location in the real-world environment |
Performed By | Internal testers or quality assurance team | External users or customers |
Timing | Before beta testing and after internal testing | After alpha testing and before the final release |
Purpose | Identifies bugs and issues before releasing to external users | Gathers feedback from real users to identify any remaining issues |
Environment | Simulated or controlled environment | Real-world use environment |
Feedback | Internal feedback is used to improve the product | User feedback is used to make final adjustments |
Participants | Limited to developers and internal employees | Limited to a select group of external users |
Identifying and Selecting Development Projects
1. Identifying Potential Development Projects
- Top Management
- Steering Committee
- User Development
- Development Group
2. Clarifying and Ranking Projects
- Value Chain Analysis: Extent to which activities add value and costs when developing products and/or services.
- Strategic Alignment: Extent to which the project is viewed as helping the organization achieve its activities and long-term goals.
- Potential Benefits: Extent to which the project is viewed as improving profits, customer service, etc., and the duration of these benefits.
- Resource Availability: Amount and type of resources the project requires and their availability.
- Project Size/Duration: Number of individuals and the length of time needed to complete the project.
- Technical Difficulty: Level of technical difficulty to successfully complete the project within given time and resource constraints.
3. Selecting IS Development Projects
- Perceived Needs of the Organization
- Existing Systems and Ongoing Projects
- Resource Availability
- Evaluation Criteria
- Current Business Conditions
- Perspectives of the Decision Makers
Assessing Project Feasibility
- Economic
- Operational
- Technical
- Schedule
- Legal and Contractual
- Political
Analysis Phase
Analysis is the first systems development life cycle (SDLC) phase where we begin to understand, in depth, the need for system changes.
Determining System Requirements
- Impertinence: Ask questions about the future.
- Impartiality: Find the best solution to issues raised by all parties.
- Relax Constraints: Eliminate unfeasible solutions that may not always be reasonable.
- Attention to Details
- Reframing
Traditional Methods for Determining Requirements
- Interviews
- Questionnaires
- Directly Observing Users
- Analyzing Procedures and Other Documents
Contemporary Methods
- JAD (Joint Application Development):
- JAD Session Leader
- Users
- Managers
- Sponsor
- System Analyst
- Scribe
- IS Staff
Radical Methods
- Identifying Processes to Re-engineer
- Disruptive Technologies
Black Box Testing vs. White Box Testing
Feature | Black Box Testing | White Box Testing |
---|---|---|
Code Visibility | Tests the software’s functionality without looking at the code. | Tests the internal workings and code of the software. |
Tester Knowledge | Testers don’t need to know the code. | Testers need to know the code. |
Basis | Uses requirements and specifications. | Uses the code and design details. |
Types of Tests | Includes functional and user acceptance tests. | Includes unit tests and code coverage tests. |
Focus | Focuses on input/output, boundary values, and equivalence classes. | Focuses on paths, loops, and conditions in the code. |
Perspective | Tests from a user’s point of view. | Tests from a developer’s point of view. |
Examples | QTP, Selenium, and LoadRunner | JUnit, NUnit, and SonarQube |
Controlling Maintenance Requests
- Prioritization: Assess and prioritize requests based on urgency and impact.
- Clear Communication: Ensure clear communication channels for submitting and tracking requests.
- Documentation: Maintain detailed records of all maintenance requests and actions taken.
- Resource Allocation: Allocate appropriate resources and personnel to handle requests efficiently.
- Regular Reviews: Conduct regular reviews to monitor progress and address any backlog.
Types of Maintenance
- Corrective Maintenance: Fixes bugs and errors found in the software to restore functionality.
- Adaptive Maintenance: Modifies software to accommodate changes in the environment or requirements.
- Perfective Maintenance: Enhances software performance or improves user experience without changing functionality.
- Preventive Maintenance: Proactively addresses potential issues to prevent future problems and improve maintainability.
Database Design
Objectives of a Database
- Controlled Redundancy
- Ease of Learning and Use
- Data Independence
- More Information at Low Cost
- Accuracy and Integrity
- Recovery from Failure
- Privacy and Security
Data Model
Data modeling is the process of creating a data model for the data to be stored in a database.
Types of Data Models:
- Conceptual
- Logical
- Physical
Normalization
Normalization is the process of organizing data into related tables. It also eliminates redundancy and increases integrity, which improves the performance of queries. To normalize a database, we divide the database into tables and establish relationships between the tables.
Denormalization
Denormalization is the process of adding redundant data to speed up complex queries involving multiple table joins.
Types of Normalization:
- First Normal Form (1NF): An entity is in the first normal form if it contains no repeating groups. Example: [Order][Customer][Contact][Person][Total]
- Second Normal Form (2NF): A relation is in 2NF if it is in 1NF and every non-key attribute is fully dependent on each candidate key of the relation. Example:
| Customer | Contact Person |
| Order | Customer | Total | - Third Normal Form (3NF): A relation is in third normal form if it is in 2NF and every non-key attribute is non-transitively dependent on each candidate key of the relation. Example:
| Company | City | State | Zip |
| Company | Zip |
| City | State | Zip | - Boyce-Codd Normal Form (BCNF): A relation is in Boyce-Codd Normal Form (BCNF) if every determinant is a candidate key. Example:
| ClientNo | Interview Date | Interview Time | StaffNo | RoomNo |
| ClientNo | Interview Date | Interview Time | StaffNo |
| StaffNo | Interview Date | RoomNo | - Fourth Normal Form (4NF): A table is in fourth normal form (4NF) if and only if it is in BCNF and contains no more than one multi-valued dependency. Example:
| Employee | Skills | Hobbies |
| Employee | Skills |
| Employee | Hobbies | - Fifth Normal Form (5NF): A table is in fifth normal form (5NF) or Project-Join Normal Form (PJNF) if it is in 4NF and it cannot have a lossless decomposition into any number of smaller tables. Example:
| Buyer | Vendor | Item |
| Buyer | Vendor |
| Buyer | Item |
| Vendor | Item |
Designing Forms and Reports
1.Consistency 2.Organization 3.Clarity 4.Format 5.Flexibility
Characteristics when designing form and report -User, -task, -system, -environment etc.
METHOD OF INTERACTION
1.Command language interaction //Ex:$ cp file .doc newfile.doc
2.Menu interaction 3.Form interaction 4.Object-based interaction
5.Natural language interaction// Ex:Database query
Designing Interface 1.Header information 2.Sequence and time-related information 3.Instruction or formatting information 4.Body or data details 5.Totals or data summary 6.Authorization or signatures 7.Comments
Designing dialogue 1.Designing the dialogue sequence 2.Building a prototype 3.Assessing usability
Designing dialogue sequence 1.Request to view individual customer information 2.Specify the customer of interest 3.Select the year-to-date transaction summary display 4.Review customer information 5.Leave system