Software
So the question is What is software explain? The answer is so simple when we write a program for computer we named it as software.Software is not just a program; many things other than the program are also included in software. Some of the constituted items of software are described below.
Program: The program or code itself is definitely included in the software.
Data: The data on which the program operates is also considered as part of the
software.
Documentation: Another very important thing that most of us forget is documentation. The documents related to the software are also considered as part of the software.
Note:
So the software is not just the code written in Cobol, Java, Fortran or C++. It also includes the data and all the documentation related to the program.
Why is it important?
Software is playing a vital role in all the field of life these days. We can see many software applications being operated around us in our daily routine.
Some of the major areas in which software has played an important role are identified as under.
Business decision-making
Modern scientific investigation and engineering problem solving.
Games
Education
Office Automation
Internet Applications
Engineering?
If you survey some of the dictionaries then you will find the following definition of engineering.
“The process of productive use of scientific knowledge is called engineering.”
Relation between Computer Science and Software Engineering:
”This is the process of utilizing our knowledge of computer science in effective production of software systems.”
Software Engineering?
Software Engineering is the set of processes and tools to develop software.Or
Software Engineering is the combination of all the tools, techniques, and processes that used in software production.
Software Engineering is nothing but a disciplined and systematic approach to software development.
Therefore Software Engineering encompasses all those things that are used in software production like:
Programming Language
Programming Language Design
Software Design Techniques
Tools
Testing
Maintenance
Development etc.
So all those thing that are related to software are also related to software engineering.
Well Engineered Software:
Well-engineered software is one that has the following characteristics.
It is reliable
It has good user-interface
It has acceptable performance
It is of good quality
It is cost-effective
SOFTWARE DEVELOPMENT ACTIVITIES:
Software Development: The activities involved in software development can broadly be divided into two major categories.1. Construction 2. Management.
1. Construction: The construction activities are those that directly related to the development of software, i.e.
Requirement Gathering
Design Development
Coding
Testing
2. Management: These are kind of activities that are used to smoothly and successfully perform the construction activities, i.e.
Project Planning and Management
Configuration Management
Software Quality Assurance
Installation and Training
Software Development
workflow of software |
Quality
Focus: The quality focus demands that processes be defined for normal
and timely development of software. And quality should be ensured while
executing these processes.
Processes: The processes define the tasks to be performed and the order in which they are to be performed. Every task has some deliverables and every deliverable should be delivered at a particular milestone.
Methods: Methods provide the techniques to carryout these tasks. There could be more than one technique to perform a task and different techniques could be used in different situations.
Tools: Tools provide automated or semi-automated support for software processes, methods, and quality control.
Technical Development: In this stage we try to find the solution of the problem on technical grounds. This is the stage where a new system is actually developed that solves the problem defined in the first stage.
Solution Integration: If there are already developed system(s) available with which our new system has to interact then those systems should also be the part of our new system. All those existing system(s) integrate with our new system at this stage.
Status Quo: Status Quo means current situation. After going through the previous three stages successfully, when we actually deployed the new system at the user site then that situation is called status quo. But once we get new requirements then we need to change the status quo.
Software Engineering Phases: There are four basic phases of software development
Vision – focus on why
Definition – focus on what
3. Development – focus on how
4. Maintenance – focus on change
Software Project: A Software Project is the complete procedure of software development from requirement gathering to testing and maintenance, carried out according to the execution methodologies, in a specified period of time to achieve intended software product.
The image above shows triple constraints for software projects. It is an essential part of software organization to deliver quality product, keeping the cost within client’s budget constrain and deliver the project as per scheduled. There are several factors, both internal and external, which may impact this triple constrain triangle. Any of three factor can severely impact the other two.
Therefore, software project management is essential to incorporate user requirements along with budget and time constraints.
Software Management Activities
Software project management is a huge topic and includes a number of activities, in which important activities are project planning, Project Estimation, project scheduling and project risk management.
Project Planning: Software project planning is task, which is performed before the production of software actually starts. It is there for the software production but involves no concrete activity that has any direction connection with software production; rather it is a set of multiple processes, which facilitates software production.
Project Scheduling: Project Scheduling in a project refers to roadmap of all activities to be done with specified order and within time slot allotted to each activity. Project managers tend to tend to define various tasks, and project milestones and them arrange them keeping various factors in mind. They look for tasks lie in critical path in the schedule, which are necessary to complete in specific manner (because of task interdependency) and strictly within the time allocated.
For scheduling a project, it is necessary to :
Processes: The processes define the tasks to be performed and the order in which they are to be performed. Every task has some deliverables and every deliverable should be delivered at a particular milestone.
Methods: Methods provide the techniques to carryout these tasks. There could be more than one technique to perform a task and different techniques could be used in different situations.
Tools: Tools provide automated or semi-automated support for software processes, methods, and quality control.
Software Development Loop
Problem Definition: In this stage we determine what is the problem against which we are going to develop software. Here we try to completely understand the issues and requirements of the software system to build.Technical Development: In this stage we try to find the solution of the problem on technical grounds. This is the stage where a new system is actually developed that solves the problem defined in the first stage.
Solution Integration: If there are already developed system(s) available with which our new system has to interact then those systems should also be the part of our new system. All those existing system(s) integrate with our new system at this stage.
Status Quo: Status Quo means current situation. After going through the previous three stages successfully, when we actually deployed the new system at the user site then that situation is called status quo. But once we get new requirements then we need to change the status quo.
Software Engineering Phases: There are four basic phases of software development
Vision – focus on why
Definition – focus on what
3. Development – focus on how
4. Maintenance – focus on change
- Vision: Here we determine why are we doing this thing and what are our business objectives that we want to achieve.
- Definition: Here we determine what are the activities and things involved.
- Development: Here we determine, what should be the design of the system, how will it be implemented and how to test it.
- Maintenance: This is very important phase of software development. Here we control the change in system, whether that change is in the form of enhancements or defect removal. Maintenance is Correction, adaptation, enhancement.
SOFTWARE PROJECT MANAGEMENT
Project: A project is well-defined task, which is a collection of several operations done in order to achieve a goal (for example, software development and delivery). A Project can be characterized as:- Every project may have a unique and distinct goal.
- Project is not routine activity or day-to-day operations.
- Project comes with a start time and end time.
- Project ends when its goal is achieved hence it is a temporary phase in the lifetime of an organization.
- Project needs adequate resources in terms of time, manpower, finance, material and knowledge-bank.
Software Project: A Software Project is the complete procedure of software development from requirement gathering to testing and maintenance, carried out according to the execution methodologies, in a specified period of time to achieve intended software product.
The image above shows triple constraints for software projects. It is an essential part of software organization to deliver quality product, keeping the cost within client’s budget constrain and deliver the project as per scheduled. There are several factors, both internal and external, which may impact this triple constrain triangle. Any of three factor can severely impact the other two.
Therefore, software project management is essential to incorporate user requirements along with budget and time constraints.
Software Management Activities
Software project management is a huge topic and includes a number of activities, in which important activities are project planning, Project Estimation, project scheduling and project risk management.
Project Planning: Software project planning is task, which is performed before the production of software actually starts. It is there for the software production but involves no concrete activity that has any direction connection with software production; rather it is a set of multiple processes, which facilitates software production.
Project Scheduling: Project Scheduling in a project refers to roadmap of all activities to be done with specified order and within time slot allotted to each activity. Project managers tend to tend to define various tasks, and project milestones and them arrange them keeping various factors in mind. They look for tasks lie in critical path in the schedule, which are necessary to complete in specific manner (because of task interdependency) and strictly within the time allocated.
For scheduling a project, it is necessary to :
- Break down the project tasks into smaller, manageable form
- Find out various tasks and correlate them
- Estimate time frame required for each task
- Divide time into work-units
- Assign adequate number of work-units for each task
- Calculate total time required for the project from start to finish
Project
Risk Management: Risk management is the process of measuring or
assessing risk and then developing strategies to manage the risk. Risk
management involves all activities refer to identification, analyzing
and making establishment for expectable and expectable risks in the
project. Risk may include the following:
- Experienced staff leaving the project and new staff coming in.
- Change in organizational management.
- Requirement change or misinterpreting requirement.
- Under-estimation of required time and resources.
- Technological changes, environmental changes, business competition
Project Estimation: For
an effective management accurate estimation of various measures is a
must. With correct estimation managers can manage and control the
project more efficiently and effectively.
Project estimation may involve the following:
- Software size estimation
Software size may be estimated either in terms of KLOC (Kilo
Line of Code) or by calculating number of function points in
the software. Lines of code depend upon coding practices and Function points vary according to the user or software
requirement.
- Effort estimation
The managers estimate efforts in terms of personnel
requirement and man-hour required to produce the
software. For effort estimation software size should be known. This can
either be derived by managers’ experience,
organization’s historical data or software size can be converted into efforts by using some standard formulae.
- Time estimation
Once size and efforts are estimated, the time required to
produce the software can be estimated.Efforts required are
segregated into sub categories as per the requirement specifications and interdependency of various components of software.
Software tasks are divided into smaller tasks, activities
or events by Work Breakthrough Structure (WBS). The tasks are scheduled
on day-to-day basis or in calendar months.
The sum of time required to complete all tasks in hours or days
is the total time invested to complete the project.
- Cost estimation
This might be considered as the most difficult of all because
it depends on more elements than any of the previous ones.
For estimating project cost, it is required to consider size of
software,software quality, hardware, additional software or
tools, licenses etc, skilled personnel with task-specific skills, travel involved, communication, training and
support.
Requirements management
Requirement management is the process of identifying,
producing, documenting, analyzing, tracing, prioritizing
and agreeing on requirements and then controlling change and communicating to relevant investors. It also includes
requirements analysis which is an important part
of the software engineering process. Business analysts or software
developers identify the needs or requirements of a client,
having identified these requirements they are then in a
position to design a solution.
SOFTWARE REQUIREMENTS:
What is a requirement?
A
requirement is a singular documented physical and functional need that a
particular design, product or process must be able to perform. It is
most commonly used in systems engineering, software engineering.
Requirements measures:
Speed:
Processed transactions/second
User/Event response time Screen refresh time
Size;
M Bytes
Number of ROM chips
Ease of use:
Training time
Number of help frames
Reliability:
Mean time to failure
Probability of unavailability
Rate of failure occurrence
Availability
Robustness;
Time to restart after failure
Percentage of events causing failure
Probability of data corruption on failure
Portability:
Is the usability of the same software in different environments.
portability is the key issue for development cost reduction.
The
requirements themselves are the descriptions of the system services and
constraints that are generated during the requirements engineering
process.
- Types of requirement: There are three types of requirements.
- User requirements: Statements in natural language plus diagrams of the services the system provides and its operational constraints. It is written for customers.
- System requirements: A structured document setting out detailed descriptions of the system’s functions, services and operational constraints. It defines what should be implemented that is part of a contract between client and contractor.
- Software specification: A detailed software description which can serve as a basis for a design or implementation. It is written for developers
- Functional requirements: Statements of services the system should provide, how the system should react to particular inputs and how the system should behave in particular situations. Describe functionality or system services. It depends on the type of software, expected users and the type of system where the software is used. Functional user requirements may be high-level statements of what the system should do but functional system requirements should describe the system services in detail.
- Non-functional requirements: Constraints on the services or functions offered by the system such as timing constraints, constraints on the development process, standards etc.
These
define system properties and constraints e.g. reliability, response
time and storage requirements. Non-functional requirements may be more
critical than functional requirements. If these are not met, the system
is useless. It can be branched as;
- Product requirements: Requirements which specify that the delivered product must behave in a particular way e.g. execution speed, reliability, etc.
- Organisational requirements: Requirements which are a consequence of organisational policies and procedures e.g. process standards used, implementation requirements, etc.
- External requirements: Requirements which arise from factors which are external to the system and its development process e.g. interoperability requirements, legislative requirements, etc.
- Domain requirements: Requirements that come from the application domain of the system and that reflect characteristics of that domain. Domain requirements be new functional requirements, constraints on existing requirements or define specific computations. If domain requirements are not satisfied, the system may be unworkable.
Invent a standard format and use it for all requirements.
Use language in a consistent way. Use shall for mandatory
requirements, should desirable requirements.
Use text highlighting to identify key parts of the requirement.
Avoid the use of computer jargon.LEARN MORE SOFTWARE DESIGN
No comments:
Post a Comment
We are happy for leaving comments,we will don't let you bite stay with us