1.s/w prob Flashcards
What is Software Engineering?
The term software engineering is the product of two words, software, and engineering
software:
1. The software is a collection of integrated programs.
2. Software is a prog or set of progs containing instructions that provide desired functionality.
Engineering:
Engineering is a process of designing or building something that serves a particular purpose and finds a cost effective solution to a problem
** process of designing, developing, testing And maintaining software. It is a systematic and disciplined approach to software development that aims to create high quality, reliable and maintainable software**
Why is Software Engineering required?
5
- To manage Large software
- For more Scalability
- Cost Management
- To manage the dynamic nature of software
- For better quality Management
Need of Software Engineering
5
The necessity of software engineering appears because of a higher rate of progress in user requirements and the environment on which the program is working.
1. Huge Programming:
It is simpler to manufacture a wall than to a house or building, similarly, as the measure of programming become extensive engineering has to step to give it a scientific process.
2.Adaptability: If the software procedure were not based on scientific and engineering ideas, it would be simpler to re-create new software than to scale an existing one.
3.Cost:
As the hardware industry has demonstrated its skills and huge manufacturing has let down the cost of computer and electronic hardware. But the cost of programming remains high if the proper process is not adapted.
4. Dynamic Nature:
The continually growing and adapting nature of programming hugely depends upon the environment in which the client works. If the quality of the software is continually changing, new upgrades need to be done in the existing one.
5. Quality Management: Better procedure of software development provides a better and quality software product.
Characteristics of a good software engineer
The features that good software engineers should possess are as follows:
Exposure to systematic methods, i.e., familiarity with software engineering principles.
Good technical knowledge of the project range (Domain knowledge).
Good programming abilities.
Good communication skills. These skills comprise of oral, written, and interpersonal skills.
High motivation.
Sound knowledge of fundamentals of computer science.
Intelligence.
Ability to work in a team
Discipline, etc.
Importance of Software Engineering
The importance of Software engineering is as follows:
Reduces complexity: Big software is always complicated and challenging to progress. Software engineering has a great solution to reduce the complication of any project. Software engineering divides big problems into various small issues. And then start solving each small issue one by one. All these small problems are solved independently to each other.
To minimize software cost: Software needs a lot of hardwork and software engineers are highly paid experts. A lot of manpower is required to develop software with a large number of codes. But in software engineering, programmers project everything and decrease all those things that are not needed. In turn, the cost for software productions becomes less as compared to any software that does not use software engineering method.
To decrease time: Anything that is not made according to the project always wastes time. And if you are making great software, then you may need to run many codes to get the definitive running code. This is a very time-consuming procedure, and if it is not well handled, then this can take a lot of time. So if you are making your software according to the software engineering method, then it will decrease a lot of time.
Handling big projects: Big projects are not done in a couple of days, and they need lots of patience, planning, and management. And to invest six and seven months of any company, it requires heaps of planning, direction, testing, and maintenance. No one can say that he has given four months of a company to the task, and the project is still in its first stage. Because the company has provided many resources to the plan and it should be completed. So to handle a big project without any problem, the company has to go for a software engineering method.
Reliable software: Software should be secure, means if you have delivered the software, then it should work for at least its given time or subscription. And if any bugs come in the software, the company is responsible for solving all these bugs. Because in software engineering, testing and maintenance are given, so there is no worry of its reliability.
Effectiveness: Effectiveness comes if anything has made according to the standards. Software standards are the big target of companies to make it more effective. So Software becomes more effective in the act with the help of software engineering.
Evolving nature of the software
software:
1. The software is a collection of integrated programs.
2. Software subsists of carefully-organized instructions and code written by developers on any of various particular computer languages.
Characteristics of software:
1.Functionality
2.Reliability
3.Usability
4.Efficiency
5.Maintainability
6.Portability
Changing nature of the software:
1. sys s/w:
Election of programmes which are returned to service other programmes some software processes are complex but determinate informative structures but other system application process largely indeterminate data
2. Application software
programmes that solve a specific business need
3. Engineering & scientific s/w
s/w Which are used to facilitate engineering & scientific functions and tasks
4. Embedded software
This resides within the system of the product and is used to implement and control features and functions for the end users and for the system itself
5. Product line software
Designed to provide specific capability for use by many different customers
6. Web application
client server computer programme which client runs on web browser
**Artificial intelligence s/w **
Makes use of non numerical algorithm to solve a complex problem that is not amenable to computation or straight forward analysis
Layered technology in software engineering
Software engineering is a fully layered technology to develop software we need to go from 1 layer to another all these layers are connected and each layer demands the fulfilment of the previous layer
layers:
1. A Quality focus
2. process
3. Method
4. tools
**1. Quality focus: **Continuous process of improvement of principles of software
- It provides integrity that means provides security to the s/w that only accessed by authorised persons
-focuses on usability and maintainability
2. Process: Foundation or base layer of SE
-It is the key that binds all the layers together which enables the development of software before the deadline or on time
- It defines framework that must be established for effective delivery of SE technology
- The software process covers all the activities actions and tasks required to be carried out for s/w development
Process activities:
a. Communication
b. Planning
c. modeling
d. construction
e. deployement
3. method: It has information of all tasks which includes
communication,
recruitment analysis,
design modelling,
program construction,
testing and
support
4. Tools: SE tools provide self operating system for processes and methods
- Tools are integrated which means information created by one tool can be used by another
s/w myths
https://www.codingninjas.com/studio/library/software-engineering-myths
s/w process
Software process is a set of activities and associated outcomes that produce software product
These are four key process activities which are common to all software processes:
1. Software specifications
Functionality of the software
and
Constraints(Restrictions) On its operations must be defined clearly
2. Software development
Software produce should meet all the requirements
3. software validation
Software must do what the customer wants to Validated
4. software evolution
It should evolve to meet changing client needs
s/w crisis
- Quality
- delayed delivery
- cost
- size
SDLC
Software development life cycle Is a lifecycle model maps all the activities performed on software product from its Establishment to retirement
- It is pictorial and diagrammatic representation of software lifecycle
- It also captures the structure in which these methods are to be undertaken
need:
1. A development team must determine a suitable life cycle model for particular plan and then observe to it (Waterfall or other models)
2. Also, all the team members should have clear understanding among team representative and about when and what to do
3. so Entry and exit criteria for each phase is very important which is described by software lifecycle
4. Next phase can only begin when its stage entry criteria has been fulfilled
5. Without software lifecycle models, it would be tough for software managers to monitor the progress of the project
SDLC
stages:
1. Recruitment analysis
2. Defining
3. designing
4. coding
5. testing
6. deployment
7. maintenance
1) Recruitment analysis \ Planning
Inputs from customers, Clients, Marketing team and stakeholders are taken
- Planning for quality assurance requirements and identifications of risk associated with the project is also done at this stage
-
Defining requirements
Once the requirement analysis is done, the next stage Is to make a document that contains software requirements and get them accepted by project stakeholders
- This is accomplished through srs (software requirement specification ) document Which contains views of all the above members and Quality recruitment and potential risk factors -
designing the software
With the reference of srs the software designers come up with the best architecture for the software
- Hence, with the requirements defined in Srs, multiple designs for the product architecture are present in dds( Design document specification)
- DDS It is assessed by market analyst and stakeholders
- After analysing all the possible factors, the most practical and logical design is chosen for development -
Developing product
Heres the Building of the product starts according to the Design mentioned in DDS
- It is very important for the coders to follow the protocol set by the association in dds
- According to the design selected from dds programming languages programming tools like compilers, debuggers, etc, are used -
Testing
After the development of the Product , It is tested to ensure its smooth execution and find its flaws
- Although minimal testing is conducted at every stage of Hdlc but in this stage probable flaws are fixed and retested
- This also ensures the product reaches the quality requirements of srs -
Deployment and maintenance
After detailed testing, the final product is released in phases as per the organisation strategy
- It is tested in real industrial environment to make sure that it ensures smooth performance
- Then the organisation sends the product out as a whole
- It retrieves feedback from the customers Make any improvements if required(Maintainance requirement analysis)
SDLC models
sdlc is a spiritual model used in Project management that defines stages Included in a project development from initial study to maintenance of completed application
- There are difference after development lifecycle models specify and design, which are followed during the software development phases, called as software development process models
- Waterfall model
- RAD model
- spiral model
- V Model
- Incremental Model.
- Agile model
- iterative model
- Big Bang model
1- waterfall model
- Introduced by Winston Royce in 1970
- All the phases in waterfall model will follow order. And do not overlap
- The developer must complete every phase before starting the next phase
- This phase is called as waterfall model because of its resemblance to a cascade of waterfalls in its diagrammatic representation
phases(5):
1. Recruitment analysis and specification
2. design phase
3. implementation and unit testing
4. integration and system testing
5. operation and maintenance phase.
Recruitment analysis and specification
In this phase the requirements of customers are taken and documented properly
- Here, both customer and software Developer work together to create a document with all functions, performance and interfacing requirements of the software
- A large document called SRS(software requirement specification)
Design phase
- In this phase requirements Gathered in Srs R transformed into suitable form, which permits them to further code in programming language
- It defines the overall detailed design of the product and is documented in sdd (software design document)
Implementation and unit testing
Here, the design is implemented and A software developer can follow sdd document
- And smaller modules are tested by writing some overhead code to cheque the interaction between these modules and flow of intermediate output
Integration and system testing
Here, the quality of the end product is determined by effectiveness of testing carried out
- The better output will lead to satisfied customers. Lower maintenance costs and accurate results
- The whole system is tested
Operation and maintenance phase
- Maintenance task is done by every user once the software has been delivered to the customer, installed and operated
When to use waterfall model
1) When the requirements are constant and not changed regularly
2) Project is short
3) resources are well prepared and available to use
4) Tools and technology used are constant and not changing
adv:
1. simple to Implement as resources are minimal
2. Requirements are simple and remain unchanged during the entire project
3. Start and end points of each says, is fixed. So it is easy to cover progress and avoids overlap
4. Release date for the completed product as well as Final cost can be determined before development
diadv:
1. Risk factor is high, so not suitable for more significant and complex problems
2. cannot accept changes in req during dev..t
3. tought to go back to prev phase
4. testing is dome in later stages.. It does not allow identifying the risks and challenges in the earlier phase
RAD
rapid aplication development
Linear sequential software development process model That has a concise development cycle Using element based construction approach
- RAD process enables the development team to create a completely functional system with a concise time.
- RAD is a concept that products can be developed faster and of higher quality through:
- Gathering requirements using workshop or focus groups
- Prototyping an early reiterative user testing of designs
- Reuse of software components
- Less formalities in reviews and other than team communication
steps
1. Business modelling
2. data modelling
3. process modelling
4. application modelling
5. testing and turnover
-
Business modelling
Information flow among business functions is defined by answering questions like, what drives the business process? What data is generated? Who generates it and so on -
Data modelling
The data collected from business modelling is refined into a set of data objects that are needed to support the business
The attributes are identified in relation between these objects are defined -
Process modelling
The object information object defined in the data merging phase are transformed to achieve data flow necessary to implement business function
- Processing descriptions are created for adding, modifying, deleting or retrieving a data object -
Application generation
- Automated tools are used to facilitate construction ofs/w -
Testing and turnover
Many of the programming components have already been tested since rad emphasis release This reduces the overall testing time, but the new part must be tested.
When to use rad model
1. When systems need to create projects in short span of two to three months
2. Requirements are well known
3. technical risks are limited
4. when budget is more, that is allowing to use automatic code generation tools
adv
1. Flexible for change
2. Each phase in rad gives highest priority functionality to the customer
3. Reduced development time
4. increases reusability of features
diasdv
1. Requires highly skilled designers
2. All applications are not compatible with rad
3. smaller projects cannot be developed with rad model
4. when technical risks are there this is not suitable
5. User involvement is required