All About Software Engineering: Part 2 (Software Development Life Cycle [SDLC] and Process Models)
Source: Eastgate Software

All About Software Engineering: Part 2 (Software Development Life Cycle [SDLC] and Process Models)


*** Previous Parts ***

Part 1: All About Software Engineering: Part 1 (Science, Engineering and Mindset Part)


Story:

After evaluating the essential science, engineering, and mindset shifting for successful software production, Shuvo and Tapu want to explore the steps to follow for software creation. They are now in search of the software life cycle and the ideal process for efficient and smooth software building.


What is SDLC:

Software Development Life Cycle (SDLC) can be considered as a framework for the software development teams which refers to the critical stages of the process of developing software applications (from planning, coding to maintaining, etc.). The SDLC involves several phases that allow teams to break down complex projects into manageable tasks.

Thus, adhering to the SDLC ensures that software is developed in a systematic and organized way, minimizing errors, and reducing the risk of project failure. By following the SDLC, software development teams can produce high-quality software products that meet the needs of their clients/customers.

Phases of SDLC:

There are several stages involves in SDLC. Team wise it can modifies as well based on the team and projects need. But in general we can define the SDLC in the following 7 stages:

  1. Brainstorming & setting goals: This is the early stage of the software development. Business objectives and goals are determined at this early stage, along with any specifications or needs that could be necessary for a successful project conclusion. At this point, it's also important to think about any risks involved in reaching these objectives.
  2. Requirement analysis & planning: Once the business objectives and goals are determined then needs to gathering the requirements from different parties and analyze them for a successful software system. Also need a solid planning too for further processing. This phase aims to define the functionality, features, and constraints of the software system to be developed.
  3. Design & architecture: From this stage, technical parts begin. In this phase, the system architecture and design are planned based on the requirements gathered in the previous phase. Design decisions include selecting appropriate technologies, defining the system's structure, interfaces, modules, and data architecture.
  4. Coding & implementation: This is part where actual coding or implementation done based the the architecture design. Writing code, test code, integration code are the parts of this phase.
  5. Testing & QA: The testing phase verifies that the software meets its requirements, functions correctly, and performs reliably under various conditions. Testing activities include unit testing, integration testing, system testing, and acceptance testing. Test cases are designed, executed, and evaluated to identify defects and ensure quality.
  6. Deployment: Once the software has been tested and validated, it is ready for deployment to production or end-users. Deployment involves installing, configuring, and distributing the software to the target environment, ensuring a smooth transition from development to production.
  7. Maintenance & feedback: The maintenance phase involves ongoing support, monitoring, and maintenance of the software after deployment. This includes bug fixes, updates, enhancements, and optimizations to address issues, improve performance, and adapt to changing requirements over time.


What is Software Process:

We can summarize the software process as a set of activities whose goal is the the development or evaluation of the software. Basically there are 4 fundamental process activities involved in all common software process. They are:

  1. Software specification: define what to produce in between a specified boundary.
  2. Software development: design and programmed the software.
  3. Software validation: test and validate the developed software.
  4. Software evaluation: get and adopt feedback in the software.

What is Software Process Model:

A software process model is a structured approach used to define, organize, and manage the activities involved in software development. It provides a framework for planning, executing, and monitoring the software development process from initiation to completion.

A software process model may be include the workflow model, data flow model, activity model and action/role model.

Different Software Process Models:

Software process model is something that can be vary or not a universal rule that must be followed. Company, organization or team can change or used their own modified format of process model.

But some of the well established generic software process model is as follows:

Waterfall Model:

Source: bap-software

  • The waterfall model follows a linear, sequential approach to software development, where each phase (requirements, design, implementation, testing, deployment) is completed before moving on to the next.
  • Progress flows downward like a waterfall, with distinct phases and well-defined deliverables.
  • This model is suitable for projects with stable requirements and a clear understanding of the end product.

Iterative Model:

Source: reasearchgate

  • The iterative model divides the software development process into smaller iterations or cycles, each consisting of phases such as planning, requirements analysis, design, implementation, and testing.
  • Each iteration results in a working version of the software that can be reviewed, refined, and enhanced in subsequent iterations.
  • Iterative models allow for flexibility, adaptability, and incremental development, making them suitable for projects with evolving requirements or complex systems.

Incremental Model:

Source: guru99

  • The incremental model builds upon the iterative approach by dividing the software development process into multiple increments or releases.
  • Each increment adds new features or functionality to the software, gradually expanding its capabilities over time.
  • Incremental models enable stakeholders to receive early and frequent deliveries of the software, facilitating feedback and validation throughout the development process.

Spiral Model:

Source: wikipedia

  • The spiral model combines elements of both iterative and waterfall approaches, incorporating risk analysis, prototyping, and iterative development cycles.
  • It consists of multiple loops or spirals, each representing a phase of the software development process (e.g., planning, risk analysis, prototyping, evaluation).
  • The spiral model is particularly suitable for projects with high levels of uncertainty, where risk management and early validation are critical.

Agile Model:

Source: javaTpoint

  • Agile methodologies, such as Scrum, Kanban, and Extreme Programming (XP), emphasize collaboration, flexibility, and customer involvement in software development.
  • Agile teams work in short iterations called sprints, delivering small, incremental improvements to the software in response to changing requirements and feedback.
  • Agile models prioritize individuals and interactions over processes and tools, embracing change and continuous improvement to deliver high-quality software efficiently.

From the above generic model, agile model or agile methodology is the most modern and well used software process model in modern days software development.


Summary:

So understanding the software development life cycle (SDLC) and all its stages is crucial for development of efficient working software. Choose and practice the right software process model based on the nature of your software project is also important for the success.


Happy Reading !!!

Happy Learning !!!

Happy Sharing !!!

要查看或添加评论,请登录

社区洞察

其他会员也浏览了