SOFTWARE ENGINEERING
INTRODUCTION
Software engineering
I learned that Software Engineering is the systematic approach to the design, construction, developing and maintenance of computer programs or in other term is the application of engineering discipline to the development of software.
The aim of software engineering was to overcome software crisis and to produce high-quality software, cheaper, maintainable,easy to use and deliver them at the right time.
TYPES OF SOFTWARE
§ Retail software
This type of software is sold off the shelves of retail stores, and it is very expensive because it includes expensive packaging designed to catch the eye.
§ OEM Software (Original Equipment Manufacture)
Refers to software which is sold to the market but designed to be bundled with hardware.
§ Shareware Software
This is kind of software which is downloadable free from the internet ,the user is allowed to try the program for free but it last for thirty days after the trial period the software must be purchased or uninstalled.
§ Freeware
Is the software which is downloaded from the internet for free but for person only when it is needed for commercial it requires license to be paid.
TOOLS USED IN SOFTWARE ENGINEERING
Software engineering tools are tools or things that are intended to provide automated support for software process system.
Computer Aided Software engineering tools
These are tools used to provide automated support for development of software, i.e., computer code. The CASE functions include analysis, design, and programming.
There are two types of Computer Aided Software
§ Upper case tool
This support strategic, planning and construction of conceptual level product and ignore the design aspect. They support traditional diagrammatic languages such as ER diagrams, Data flow diagram, Structure charts etc.
§ Lower case tool
This concentrates on the back end activities of the software life cycle and hence supports activities like physical design, debugging, construction, testing, and integration of software components, maintenance, reengineering and reverse engineering activities.
METHODOLOGIES OF SOFTWARE ENGINEERING
§ Objects oriented programming (OOP)
Is the computer program style that uses data structure to design application and computer program. Example java
§ Rapid application development (RAD)
This refers to a type of software development life cycle which uses minimal planning in favor of rapid prototyping.
§ Scrum (all at once approach to software engineering)
Is the type of methodology where different people with experience work together so as to manage complex work, such as new product development)
§ Team software process
A defined operational process framework that is designed to help teams of managers and engineers to organize and produce large-scale software projects
CHALLENGES WHICH FACED SOFTWARE ENGINEERING
§ Heterogeneity challenge
Is the challenge of developing techniques for building dependable software that is flexible enough to cope with different types of computer and with different kinds of support systems.
§ Delivery challenge
Is the challenge of shortening delivery times for large and complex systems without affect the quality of the system.
Trust challenge
The trust challenge is to develop techniques that demonstrate that software can be trusted by its users, so that it may be necessary to make rapid changes to a software.
CRITICISMS WHICH FACED SOFTWARE ENGINEERING
§ Fail to manage expectation
One key to successful software engineering project is managing the customer’s expectations to something that can be build and delivered.
§ Poor requirements from customers
The requirements for most Software Engineering projects are incomplete or inconstant. Some customers have little experience writing requirements, other client do not know what they want and say I will know it when I see it.
§ Rising complexity requirement and user expectation of the customer
The probability of failure increases with the size and complexity of the project, this is because of the customers asks more and what is delivered is less.
§ Ongoing change of technology
Criticism argues that develops of new technology and uses them, this proves that older technology and practices were failures.
§ On going failure of the project
Criticism argues that incomplete or poorly designed systems are still too common.
§ Failure to pinpoint causes of problems
Software engineer fail to the causes of the failure of the project and to avoid to repeat in the future.
§ No theorems about people and projects
No theorems explain why one software engineer is more productive than another and why some software projects succeed and other fails.
CONCLUSIONS
In my opinion Software engineering has a bright future (job opportunities) as engineers we have to learn more in order to adapt new technology in order cope with global market, also Software engineers must behave in an honest and ethically responsible way if we want to be respected as professionals.