Music

Author

What is software engineering?



Definition: Software engineering is a detailed study of engineering to the design, development and maintenance of software. Software engineering was introduced to address the issues of low-quality software projects. Problems arise when a software generally exceeds timelines, budgets, and reduced levels of quality. It ensures that the application is built consistently, correctly, on time and on budget and within requirements. The demand of software engineering also emerged to cater to the immense rate of change in user requirements and environment on which application is supposed to be working.

Description: A software product is judged by how easily it can be used by the end-user and the features it offers to the user. An application must score in the following areas:-
1) Operational: -This tells how good a software works on operations like budget , usability, efficiency, correctness ,functionality , dependability , security and safety.
2) Transitional: - Transitional is important when an application is shifted from one platform to another. So, portability, reusability and adaptability come in this area.
3) Maintenance: - This specifies how good a software works in the changing environment. Modularity, maintainability, flexibility and scalability come in maintenance part.


Software Development Lifecycle or SDLC is a series of stages in software engineering to develop proposed software application, such as:
1) Communication
2) Requirement Gathering
3) Feasibility Study
4) System Analysis
5) Software Design
6) Coding
7) Testing
8) Integration
9) Implementation
10) Operations and maintenance
11) Disposition

Software engineering generally begins with the first step as a user-request initiation for a specific task or an output. He submits his requirement to a service provider organization. The software development team segregates user requirement, system requirement and functional requirements. The requirement is collected by conducting interviews of a user, referring to a database, studying the existing system etc. After requirement gathering, the team analyses if the software can be made to fulfil all the requirements of the user. The developer then decides a roadmap of his plan. System analysis also includes an understanding of software product limitations. As per the requirement and analysis, a software design is made. The implementation of software design starts in terms of writing program code in a suitable programming language. Software testing is done while coding by the developers and thorough testing is conducted by testing experts at various levels of code such as module testing, program testing, product testing, in-house testing and testing the product at user’s engagement and feedback.

In software engineering, a software development process is the process of dividing software development work into distinct phases to improve design, product management, and project management. It is also known as a software development life cycle. The methodology may include the pre-definition of specific deliverables and artifacts that are created and completed by a project team to develop or maintain an application.
Most modern development processes can be vaguely described as agile. Other methodologies include waterfall, prototyping, iterative and incremental development, spiral development, rapid application development, and extreme programming.

Some people consider a life-cycle "model" a more general term for a category of methodologies and a software development "process" a more specific term to refer to a specific process chosen by a specific organization. For example, there are many specific software development processes that fit the spiral life-cycle model. The field is often considered a subset of the systems development life cycle.
Why Do We Need Software?
Every Business firm or organization needs a software program to perform various tasks which can ease out the work of a person and reduce the requirement of manpower.Software Developers use a process known as Software Development Life Cycle (SDLC) to Design, Develop and Review High-Quality Software. The purpose of SDLC is to produce something which fulfills the expectations of the customer and completes in estimated time and cost.

Let's Learn About SDLC In Detail
Software Development Life Cycle is a basically a detailed plan which describes how to create, maintain, alter and improve a specific software product (program).
Fig 1 : Diagram Depicting The Software Development Cycle
Software Development Life Cycle (SDLC) consists of the following stages :
1. Planning :
Planning is most Important phage of SDLC, It is performed by the experienced people of the organization as the output and information generated by this phase will be responsible for creating a blueprint for product development. Planning helps a project to implement flawlessly and affects its progress positively.

2. Analysis :
In this phase project managers, stake holders and user (Customer) discuss the requirements of the system, and also discuss about the things like "Who is going to use the system?", "How he will use the system?", "What type of data is needed?" Etc. After gathering all the information about requirements for the system the process of development moves forward in the direction of designing.
3. Design :
Based on the requirements generated in analysis and requirement phase a designed approach is adopted to define the architectural modules of our system which are further followed to create the product.
4. Implementation :
On receiving system design documents, the work is further classified into parts (Modules) and actual development of products starts. This Is the longest phase of the SDLC. If the design phase (previous phase) is implemented properly, code generation in this phase is achieved without any problem. Once our software is developed properly it goes for a proper review to check whether it is functioning properly or not.

5. Testing :
After the code is implemented completely it is checked against our requirements whether it is addressing our needs which are gathered in the analysis phase or not. In this phase, all the defects of our software are tracked and fixed until we obtain our desired product with the defined quality standards.
6. Deployment and Maintenance :
When the products successfully pass the testing phase, it is deployed to the user for Beta Testing for finding bugs so they can be resolved. When our targeted customers start using the product on the basis of their feedback the system is improved for flawless working, this process is known as maintenance.

How can one begin to develop a software?
This question can be answered in two ways:

I
  • If you really want to learn about the SDLC and the software process and how the software is built in the industry, then choose a SDLC and follow it strictly. A SDLC would give you a set of guidelines which would gradually build your software. You need to define the time frame in which you would want to finish your project and divide the work accordingly. There are several papers in the academia which can help you in choosing a SDLC. Since you are still in college, I would suggest you adopt an agile methodology such as Scrum or Kanban.
  • The first and foremost step is to gather and analyze the requirements. This requires identifying the stakeholders, conducting interviews and trying to come out with what is required. If you do not have a client, then the team can brainstorm together on what can be the features you would like in your software. The key is to think from a consumer perspective and not from a developer perspective. Develop Use Case diagrams and UI mockups to finalize the features. Once you have a set of features, derive the architecture of your software. There are several types of software architectures and you might want to look what is best for your software given the features you want to develop. Try to keep your architecture independent of the programming language to be used. At this point, you might start thinking about the language and the technologies you would like to use. Do the implementation as per the methodology your SDLC says. Agile would require you to divide your features into sprints/increments and develop one sprint/increment at a time. Do the testing and bug-fixing when implementation is done. You need not worry about support for a college project.
II
If it's due tomorrow, do it tomorrow.
Basically, sit 2-3 days before the deadline and start coding. This would not teach you anything about the SDLC and how a software is built, but you would have something to show.

What languages are used?
You should not be concerned that much about the language till the later stages of architecture. Start thinking about what are the possible languages which can be used from the start, do some experiments and prototypes during requirements. Once you have the architecture and the set of features, language decision is easy.

What is software engineering? What is software engineering? Reviewed by Raj Tech Info on May 03, 2019 Rating: 5

No comments:

Powered by Blogger.