What is Software Engineering?
Software engineering is the branch of engineering related to the development of software product in a systematic way using well-defined scientific principles, methods and procedures.
Software Engineering Economics
Software engineering economics is about making decisions related to software engineering in a business context. It provides a way to study the attributes of software and software processes in a systematic way that relates them to economic measures. It’s concerned with software technical decisions with the business goals of the organization.
Software Development Life Cycle
Software Development Life Cycle (SDLC) includes a detailed plan for how to Develop, Maintain & Replace a software system.
“SDLC” involves several distinct stages:
- Requirement Gathering
- Design (Visual representation of requirements)
- Coding
- Testing
- Installing
- Maintenance
Waterfall model explains the above Software development life cycle Clearly.
Waterfall Model
Waterfall model is the simplest model of software development Paradigm.
1. Requirements Gathering Phase
The reality is that gathering requirement is a lot of work. This phase is critical to the success of the project. All possible requirements are captured in product requirement documents. This is an important process with much communication between stakeholders and users and the project team.
The following techniques can be used to gather requirements:
- Identify each action that a user will take.
- Identify and capture stakeholder requirements.
- Prototypes can be made to show the customer what the end product will look like.
What is Software Requirement?
Software requirement is a capability met by the software or system component in order to achieve an object and to solve a real-world Problem.
- Tools for Software Requirements Gathering
- Context Diagram
Context diagram shows the system’s boundary, its surrounding environment and all the interacting entities.
- Functional decomposition diagram
Functional decomposition diagram provides a top-down view of the business process.
- Use Case Diagram
Use case diagram helps depict the interaction between the system and the user. In this case, the User is “Actor”.
- Sequence Diagram
The sequence diagram shows the interactions between objects over time. In this case, the objects are called “Actors”.
- AS-IS AND TO-BE Process Model
The “AS-IS process model” shows the current business process flow. “TO-BE process model” usually adds the system as a swim lane and describes how the business process is adjusted.
- Mind Maps
Mind Maps is a tool to capture requirements, ideas and help to organize a conversation.
2. Designing Phase
Designing is one of the earliest and important stages in the project. During designing, an outline of the project is created.
Which includes:
- A description of the project
- Goals, Objectives and Outcomes
- Major features & deliverables
- The organization responsible for completing the project
- Budget estimates
- Success Criteria
- Tools/Steps for Software Designing
- Define Project Goal
- Determine objectives, deliverables and Outcomes
- Make sure they are:
- Specific
- Measurable
- Achievable
- Relevant
- Time-bound
- Identify Risks, Constraints and Assumptions
- Prepare a Visual Aid
- It Includes:
- Sketches
- Flow charts
- Photos
- Screenshots
- Plans
- Rough blueprints
- Prototypes
- Ballpark your Budget
- Determine Monitoring process and Approval
- Use Proper Project Design Documents
3. Coding Phase
The objective of the coding phase is to change/transform the design of a system into code in a high-level language and then to test this code. Good coding in software engineering/development helps to control complexity, prevent errors and improve the maintainability of the project. Understanding the Coding phase in software engineering leads, delivery teams, project managers and organization overall.
- Tools for Software Coding
- Atom
- Cloud 9
- GitHub
- Linux
- Bitbucket
- Bootstrap
- Node.js
- codeLobster
- AngularJS
4. Testing Phase
The Important part of software development is Testing. A software product cannot be deployed into the market without testing.
Testing a software program consists of providing the program with a set of test inputs and observing if the program behaves as expected. Software testing is a process to find whether the developed software met the specified requirements or not. We test our software in each and every step to avoid malfunction.
- Tools for Software Testing
- Automated Testing Tools
- These tools help automate functional Testing of your application under test.
- Selenium
- TestingWhiz
- HPE Unified Functional Testing
- Squish
- Ranorex
- Testim
- Sahi
- Watir
- WatiN
- Test Management Tools
- These tools help organize the end to end test Cycle.
- qTest
- TestPad
- Zephyr
- QMetry
- TestLink
- Load Testing Tools
- These tools help performance test a site.
- Webload
- Wapt
- Jmeter
- Loadfocus
- BlazeMeter
5. Installing Phase
Installing phase means installing the software on user machines. Software needs post-installation configurations at the user end. Once the software testing phase is over and no bugs or errors left in the system then the final deployment process starts.
6. Maintenance Phase
The Software maintenance phase in Software development life cycle (SDCL) is the modification of software product after delivery to correct faults. The maintenance phase is a widely accepted part of the Software development life cycle (SDCL) nowadays. Maintenance of software can include software upgrades, repairs, and fixes of the software if it breaks. The Maintenance phase of the SDCL occurs after the product is in full operation. The software is a product/model of the real world. When real world changes, the software are required to modify. There are a lot of reasons, why Upgradations/Modifications are required.
Some reasons are mentioned below:
- Market Conditions
- Client Requirements
- Host Modifications
- Organization Changes
- Tools for Software Maintenance
- MANTOOL