Software Engineering Full Notes... B-Tech (C.S.) , Bsc (CS) , BCA....


 WHAT IS SOFTWARE ENGINEERING ?

👉 It is a technique through which we can develop or create software for computer system and any other electronic devices.

* Software Engineering build these software by using designing and programming languages.

* In order to make complex software, we should use Software Engineering as well as to reduce the complexity, we should use Abstraction and Decomposition.


ABSTRACTION:- It is a process of removing unnecessary details and focusing on the overview, this                                          allow the program to run faster.

DECOMPOSITION:- It is a process of breaking large, complex problem into smaller parts.


------------------------------------------------

Purpose of Software Engineering :

>  To manage large software.

>  For greater scalability.

>  To manage the cost.

>  To manage the dynamic nature of software.

>  For better quality management.

-----------------------------------------------------

 SDLC :  It stands for Software Development life cycle model. It describes the sequence of phases  or steps to develop any software.

    It contain 3 main stages :-

1. Conception stage

2. Implementation stage

3. Maintenance

The SDLC model is classified into 6 catagories 

1. Waterfall Model

2. Prototype Model

3. Spiral Model

4. RAD Model

5. Evolutionary Model

6. Component-based Development Model

`````````````````````````````````

Waterfall Model -


Waterfall model diagram

Review :-

1. It is the simple and classical model  of all.

2. This model is also known as linear sequential model.

3. This model is the theoretically model not a practical model.

4. This model is suitale for small projects.

5. In this model, once a phase is successfully completed then only we can move to the next phase, so        there is no overlapping between the phases.

6. Each phase has a well defined task and review process.


  Dis-advantages-

1. Not use for big task.

2. We cant move back in last phase.

3. This Model contain high risk.

4. It is poor model for complex and object oriented projects.

````````````````````````````````````````````````````````````````````````````````

Prototype Model -




Review:-

1. It is a very famous software development model.

2. We can also use the prototype model with other model.

3. It is an iterative development cycle between client and developer.

Advantages-

1. If users are not satisfied with the prototype, then a new prototype is created again.

2. Costomer feedback is available.

3. Error can be detected at earlier stage.

Disadvantage-

1. Total dependency on prototype.

2. Sometime it takes long time.

````````````````````````````````````````````````````````````````

Spiral Model -



 

Review :-

1. It is also called meta model because it contain all the life cycle model.

2. The main purpose of spiral model to reduce the risk in project.

3. This model is mainly suitable for large and complex project.

4. Best technology is used inside the spiral model.


Dis-advantages -

1. The cost of project will be high.

2. It is not suitable for small project.

3. Each loop contain four quadrant so takes more time to complete.

```````````````````````````````````

RAD Model -




* The RAD (Rapid Application Development) model is based on prototyping and iterative development with no specific planning involved. The process of writing the software itself involves the planning required for developing the product.

````````````````````````````````````````````````````````````````````````````````````````````

Evolutionary Models -

  1. It is used in large projects where you can easily find modules for incremental implementation. Evolutionary model is commonly used when the customer wants to start using the core features instead of waiting for the full software.
  2. Evolutionary model is also used in object oriented software development because the system can be easily portioned into units in terms of objects.




`````````````````````````````````````````````````````````````````````````````````````



SRS : SRS stands for Software requirement specification. It is a document prepared by business analyst.

     * The SRS consists of all necessary requirements required for the potential development.

        * SRS documents is actually an agreements between the client and developer.

 Parts of SRS documents -

1. Functional requirement of the system.

2. Non-Functional requirement of the system.

3. Goal of implementation.

Characteristics of SRS:

1. Complete

2. Consistent

3. Modifiable

4. Feasible

5. Testable

6.Correct

7.Verifiable

💨 Without proper SRS document, it is very difficult to provide the maintenance for the engineers.

``````````````````````````````````````````````````````````````````````````````````````````

Software Designing : Software design is a very important phase in the SDLC. It is a technique through which we can design a meaningful representation of something that we want to built.

* It is a process by which the requirement ( SRS ) are translated into blueprint for creating a software.

* The blueprint g DDEives us the complete details of working software.

* It is also reduce efforts and error that came during design.

* The entire software designing concept is divided into 2 parts :

1. Top or high level design

2. Detail or internal design

`````````````````````````````````````````````````````````````

Coupling and Cohesion : We represent coupling in Top Level Design and its describve the inter-dependancy and interaction between the module of a software and coupling should be low for better software design.

Types of coupling -

1. Content Coupling                               

2. Common Coupling

3. External Coupling

4. Control Coupling

5. Stamp Coupling

6. Data Coupling


*Cohension represent detail design and it describe how the element in a particular module are closely      related to each other and it should be high for better software design.

Types -

1. Functional Cohesion

2. Sequentional Cohesion

3. Communicational Cohesion

4. Procedural Cohesion

5. Temporal Cohesion

6. Logical Cohesion

7. Co-Incidental Cohesion

``````````````````````````````````````````````````````````````````````````````````

Different Approach Of Software Design -

1. Functional Oriented Design ( FOD )

2. Object Oriented Design ( OOD )

---------------------------------------------

#01 Functional Oriented Design - In FOD, the Top-Level module is successfully decomposed into more                                                        sub-modules where each module has a well defined task.


#02 Object Oriented Design -  In OOD, instead of concentrating on function we concentrate upon                                                          object, an object contains both data and function which are used                                                              to create application.

      * In ODD, the entire stystem is viewed as an object.

     * Each objects has its own state and behaviour.

  `````````````````````````````````````````````````

DFD:-  It stands for "Data Flow Diagram". Itr is also known as Bubble Chart through which we can represent the flow of data graphically in an information system.

* By using the DFD, we can easily understand the overall functionality of system because diagram represent the incoming data flow, outcoming data flow.

* It describe how data is processed in a system in term of input and output.

* A DFD model uses a number of notation or symbol to represent flow of data :-

1. External Entity

2. Data Flow

3. Process or Bubble

4. Data Store

Rules of DFD:-                              

1.Each process should have atleast one input and one output.
2. Each data store should have atleast one data flow in and one data flow out.
3. All the process in a DFD go to either another process or data store.

Level of DFD:-

1. 0th Level dfd- It is a diagram which provide the entire system data flow and processing with a single process (bubble) is called as Context.

2. 1st Level dfd- This is a more details version of the previous level that includes the database and version important units.

`````````````````````````````````````````````````
Coding and Testing:-

Coding- It is an essential part of software engineering to develop a dynamic and reliable software.

* By using coding we can transform the design of a system into a programming language.
* The coding standard guidelines are the rules how to write the code, so the overall coding becomes understadable.

The following steps describe the representation of coding standard-

1. Less use of global variable.
2. Exception handling mechanism.
3. Use of comments.
4. Dont use same identfiers for multiple purpose.
 --------------------------------------------

Testing- Testing means software testing. It find the bug in the developed software or existing software.

Types:

1. Black Box Testing- It is a testing in which the testor does not have the knowledge of the coding. In this testing, we only check the functionality of the software that is input by pass and output the software produce.

2. White Box Testing- In this , testor has knowledge of coding and internal structure of existing software wheather the internal structure is correct or not.

3. Unit Testing- It is used to check the independent and indivisual unit or module of software.

4.Integeration Testing- This testing will integerate all module one by one.

4. System Testing- In this Testing, we put the software in different environment.
---------------------------------

TQM:- It stands for Total Quality Management. It is a management activity that integrate all organisational functions such as Marketing, Sales, Finance etc.
It is mainly focus on customer requirement , product quality and top management commitment and support.

Key Principle of TQM-

1. Commitment from the management.
2. Employee Envirenment
3. Continuous Improvement
4. Customer Requirement

Effect of TQM:

1. Improve Quality.
2. Increase Producivity.
3. Lower cost and higher profit
4. Organization Growth

---------------------------------

Software Quality Assurance:- It is simply a way to assure quality in the software. It is a process which works parallel to development of software. It is a kind of umberella activity that is applied throughout the software process.
* Generally, the quality of software is verified b y the 3rd party organization.

A software quality product has several quality factor-

~ Portability
~ Reliability
~ Functionality
~ Error-free
~ Usability

Benifits of SQA-

1. By using SQA, the quality of software will be high.
2. Easy to use.
3. Security
------------------------
ISO:- It stands for International organization for standardization.
* It is an organization to verify the quality of a product during the development of the product.
* ISO implicity use the TQM technology to provide certificate for our organization based on quality of product.

Why ISO Certificate-

~ If a company is ISO Certified than the company has big name in the International marked.
~ We can increase revenue and business because once we get ISO certified than the customer starts believing on the organization.

-------------------------------

SEICMM:- It stands for Software Engineering Institute Capability maturity model. It is a process or methodology used to develop and refine an organization software development process.
~ The CMM provides the different level based on the standard a company aquires so if an IT company is a new company than  the CMM will provide " Level1 ".

The CMM provide total 5 levels-

1. Initial
2. Repeatable
3. Defined
4. Managed
5. Optimizing
------------------------------

Software Maintenance:- It is very important activity in an organization because we want to do more better performance with our software.
~ Software must be upgraded and maintain regurely either depending upon the user requirement or change in technology.
~ It is needed to connect the errors in the existing product.

Types: 

1. Corrective Maintenance-  The problem reported by the user at a time of using the software product.

2. Adaptive Maintenance- It describe it has the ability to run on different platform different OS and change in GUI depending upon the new software or hardware.

3. Perfective Maintenance- This maintenance will describe that a software should be support new features different functions and we can extend the software according to user requirement.

-------------------------

Software Reverse Engineering:- * It is also called Back Engineering. It is the process of recovering and understand the basic method design and the requirement specifications of legacy software product.
* First we analyze, the already created software source code after that recreating it so we can findout the original code with some improvement.
* In simple word, it is a process to re-think, re-structure and re-built our legacy software.

Why Reverse Engineering Required:-

~ Sometimes situation arises that requires the use of reverse-engineering.

For Ex-  If a part of an super computer is breaks, which is not freely sold in market then reverse-engineering will first be used to understand the design and manufacturing process of that part. After that, the part will be manufactured.



********************************************************

Comments

Post a Comment

Popular posts from this blog

Python Notes for B-Tech , Bsc , Bca....

Data Mining Assignment