Software Engineering Notes
Software Engineering
- The term "Software Engineering" is a product of Software and Engineering.
- Software is a collection of integrated programs.
- A Software consists of carefully organised instructions and code written by developers by using many or various programming languages, computer programs and related documentation.
- Engineering is the application of scientific and practical knowledge to invent, design, build, maintain, and improve frameworks, processes, etc.
- Software Engineering is an Engineering branch related to the evolution of software product using well defined scientific principles, techniques, and procedures.
- The result of Software Engineering is an Effective and Reliable software product.
- Software Engineering is a systematic collection of good program development practices and techniques.
- Software Engineering is an Engineering approach to develop software.
- Software Engineering discusses systematic and cost effective techniques for software development. These techniques help to develop software using an Engineering Approach.
Importance of Software Engineering:
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.
Reduce Complexity
Big Software is Always complicated and challenging to progress. Software Engineering has a great solution to reduce the complications 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.
Handling Big Project
Big projects are not done in a couple of days and they need lots of patience, planning and management, and to invest six or seven months of any company, it requires heaps of planning, direction, testing and maintainance. No one can say that he has given four months of a company to a 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.
Effectiveness
Effectiveness comes if anything has made according to the standards. Software Standards are the big target of companies and organisations to make it more effective. So the software becomes more effective in the act with the help of Software Engineering.
Reliable Software
The software should be secure, means if you have delivered the software, then it should work for atleast its given time or subscription. If any bugs come in the software, the company is responsible for solving all these bugs, because in Software Engineering, Testing and Maintainance are Given. So there is no worries of its reliability.
Why is Software Engineering required?
- To manage Larger Software or 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.
- For more scalability or adaptability. If the software procedure were not based on scientific and engineering ideas, it would be simpler to recreate new software than to scale an existing one.
- 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.
Dynamic Nature of the Software
- 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.
Quality Management
- Better procedure of software development provides a better quality of software.
Software Processes
A Software Process is the set of activities and associated outcome that produce a software product. Software Engineers mostly carry out these activities. There are four key process activities which are common to all software processes.
Software Specifications
The functionality of the software and constraints on its operation must be defined.
Software Development LifeCycle
The software to meet the requirements must be provided.
Software Validation
The software must be validated to ensure that it does what the customer wants.
Software Evolution
The software must evolve to meet changing client needs.
Software Crisis
Size
Software is becoming more expensive and more complex with the growing complexity and expectation out of the software. For example, the code in the consumer product is doubling every couple of years.
Quality
Many software products have four qualities, i.e., the software products defects after putting into use due to ineffective testing techniques. Software testing typically finds 25 errors per 1000 lines of code.
Cost
Software Development is costly, i.e. in terms of time taken to develop and the money involved. For example, development of the FAA Advanced Automation System, cost over $700 per lines of code.
Delayed Delivery
Serious schedule overruns are common. Very often the software takes longer than the estimated time to develop, which in turn leads to cost shooting up. For example, one in four large scale development projects is never completed on time.
Software Components
Software is more than Programs. Any Program is a Subset of Software, and it becomes software only if documentation and operating procedures, manuals are provided.
Programs:
Program is a combination of Source Code and Objective.
Documentation:
Documentation consists of different types of Manuals. Examples of Documentation Manuals are Data Flow Diagrams, ER (Entity-Relationship) Diagrams, Flowcharts, etc.
Operating Procedures:
Operating Procedures consists of instructions to set up and use the software system, and instructions on how to react to the system failure. Examples of Operating System Procedures are Procedure Manuals, i.e., Installation Guide, Beginners' Guide, Reference Guide, System Administration guide, etc.
Characteristics of Software Engineers
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 or domain knowledge.
- Good Programming Abilities
- Good Communication Skills, this skill comprises of Oral, Written and Inter-personal skills.
- High motivation.
- Sound knowledge of Fundamentals of Computer Science.
- Intelligence.
- Ability to work in a Team.
- Discipline.
- etc.
Software Development LifeCycle (SDLC):
A Software LifeCycle model (also termed Process model) is a pictorial and diagrammatic representation of the software life cycle. A LifeCycle model represents all the methods required to make a software product transit through its life cycle stages. It also captures the order in which these methods are to be undertaken.
A LifeCycle model maps the various activities performed on a software product from its inception to retirement. It also identifies the entry and exit criteria for each activity. The Development Team of Any Organisation must determine a suitable LifeCycle Model for a particular plan or project and then observe into it.
Planning and Requirement Analysis
Requirement Analysis is the most important and fundamental stage in SDLC. It is performed by the senior members of the team with inputs from the customer, the sales department, market surveys and domain experts in the industry.
Planning for the quality assurance requirements and identification of the risks associated with the project is also done in the planning stage.
The Various Phases of RAD Model are:
Business Modeling
The information flow among distance functions is defined by answering questions like what data drives the business process, what data is generated, who generates it, where does the data go, who processes it and so on.
Data Modeling
The information collected from the business model is used to define data objects that are needed for the business.
