Unit:1 Introduction ( Software Development Third Year First Parts in IT Engineering )

Unit:1 Introduction ( Software Development Third Year First Parts in IT Engineering )

Unit:1_Introduction_(_Software_Development_Third_Year_First_Parts_in_IT_Engineering_)

1.1 Introduce the Software Engineering and its importance. 

Software engineering has two parts: software and engineering.

 

Software


Software is a collection of codes, documents, and triggers that does a specific job and fills a specific requirement.

Engineering

Engineering is the development of products using best practices, principles, and methods.

What is software engineering? 

It is a branch of engineering that deals with the development of software products. It operates within a set of principles, best practices, and methods that have been carefully honed throughout the years, changing as software and technology change.

Software engineering leads to a product that is reliable, efficient, and effective at what it does. While software engineering can lead to products that do not do this, the product will almost always go back into the production stage. 

                            Or

The term software engineering is the product of two words, software, and engineering.

The software is a collection of integrated programs.

Software subsists of carefully-organized instructions and code written by developers on any of various particular computer languages.

Computer programs and related documentation such as requirements, design models and user manuals.

Engineering is the application of scientific and practical knowledge to invent, design, build, maintain, and improve frameworks, processes, etc. 

Unit:1_Introduction_(_Software_Development_Third_Year_First_Parts_in_IT_Engineering_)

Software Engineering

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.

Why is Software Engineering required?

Software Engineering is required due to the following reasons:

Need of Software Engineering

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.

oHuge 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.

oAdaptability: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.

oCost: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.

oDynamic 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.

oQuality Management:Better procedure of software development provides a better and quality software product. 

Importance of Software Engineering

Unit:1_Introduction_(_Software_Development_Third_Year_First_Parts_in_IT_Engineering_)

Program vs Software Product:

 

1.A program is a set of instructions that are given to a computer in order to achieve a specific task whereas software is when a program is made available for commercial business and is properly documented along with its licensing. Software=Program+documentation+licensing.


2.A program is one of the stages involved in the development of the software, whereas a software development usually follows a

life cycle, which involves the feasibility study of the project, requirement gathering, development of a prototype, system design, coding, and testing.

Characteristics of software

Intangibility: Software is intangible, meaning it cannot be touched or physically sensed. It exists as a collection of instructions, data, and documentation.

Abstraction: Software is built on layers of abstraction, allowing developers to focus on high-level concepts without worrying about the underlying details. This abstraction helps manage complexity and makes software easier to understand and maintain.

Flexibility: Software can be easily modified or updated to accommodate changing requirements or to fix issues. It is highly flexible and can be adapted to various scenarios without requiring extensive physical changes.

Reproducibility: Software can be replicated effortlessly. Once developed, it can be copied and distributed across multiple machines, enabling widespread use and availability.

Scalability: Software can be designed to handle varying workloads and accommodate increasing demands. It can be scaled up to support more users, data, or transactions without major physical modifications.

Modularity: Software can be organized into modules or components that can be developed and tested independently. This modularity promotes reusability, maintainability, and ease of collaboration among developers.

Complexity: Software can be intricate and involve numerous interdependencies. It often requires careful design and planning to manage the complexity effectively.

Evolving: Software is not static; it undergoes continuous evolution. Updates, bug fixes, and feature enhancements are common to address changing user needs, improve functionality, or address security concerns.

Interoperability: Software can communicate and interact with other software systems or components, allowing for integration and interoperability between different technologies.

Portability: Software can be designed to run on various hardware platforms or operating systems. It can be developed once and deployed on multiple environments with minimal modifications.

Maintainability: Software should be designed and documented in a way that facilitates easy maintenance and future enhancements.

This involves using clean coding practices, providing clear documentation, and following established software engineering principles.

These characteristics collectively contribute to the uniqueness and versatility of software in the modern digital world.

Software applications:

Software finds applications in various domains and industries. Here are some different applications of software:

Operating Systems: 

Software is used to develop operating systems (e.g., Windows, macOS, Linux) that manage computer hardware and provide a platform for other software applications to run.

Business Applications: 

Software is extensively used for developing applications that support business operations, such as enterprise resource planning (ERP) systems, customer relationship management (CRM) software, project management tools, and accounting software.

Web Development: 

Software is employed to create websites and web applications using programming languages like HTML, CSS, JavaScript, and frameworks like Django, Ruby on Rails, or WordPress.

Mobile Applications: 

Software is used to develop mobile applications for smartphones and tablets. Platforms like iOS (using Swift or Objective-C) and Android (using Java or Kotlin) enable developers to create mobile apps for various purposes, such as gaming, social media, productivity, and e-commerce.

Embedded Systems: 

Software plays a crucial role in embedded systems, which are dedicated computer systems within larger devices or machinery. These systems control and monitor the functioning of devices like cars, home appliances, medical equipment, industrial machinery, and consumer electronics.

Artificial Intelligence and Machine Learning: 

Software is used to build intelligent systems that can perform tasks that typically require human intelligence. Applications include natural language processing, computer vision, recommendation systems, and autonomous vehicles.

Scientific and Engineering Software

Software is used in scientific research and engineering fields for modeling, simulation, data analysis, and visualization. Examples include computational chemistry software, finite element analysis tools, and data analysis software like MATLAB or Python libraries like NumPy and SciPy.

Gaming: 

Software is utilized in the development of video games, encompassing areas like game engines, graphics rendering, physics simulations, and artificial intelligence for game characters.

Healthcare:

Software applications are used in healthcare for electronic medical records (EMR), medical imaging, clinical decision support systems, telemedicine, and health monitoring devices.

Education: 

Software is employed in educational institutions for e-learning platforms, learning management systems, educational games, and interactive educational content.

Financial Systems: 

Software is used for banking applications, trading platforms, financial analysis, risk management, and transaction processing systems.

Communication and Networking: 

Software underlies communication technologies like email clients, web browsers, instant messaging applications, video conferencing tools, and network protocols for data transmission.

These are just a few examples, and software applications continue to expand into new domains as technology advances.

Deliverables and milestones

Deliverables are tangible or intangible outcomes, results, or outputs that are expected to be produced or provided as part of a project, contract, or agreement. They represent the final or interim products, services, or documents that are delivered to the client, stakeholders, or customers to fulfill specific requirements and meet the objectives of the project or agreement.

Deliverables can take various forms depending on the nature of the project or agreement. They can include physical products, such as hardware or equipment, software applications or systems, reports, studies, research findings, design documents, prototypes, training materials, user manuals, website development, marketing materials, or any other tangible items or completed tasks that are specified in the project scope.

A milestone is a significant event or achievement that marks a specific point in a project, process, or journey. It represents a key turning point or a notable stage of progress towards a goal. Milestones are often used as markers to measure and track the advancement of a project, providing a sense of accomplishment and indicating important stages of completion.

In project management, milestones serve as reference points for project managers, team members, and stakeholders to assess the project's progress, identify key deliverables, and ensure that the project stays on track. They help establish a timeline, set deadlines, and allow for effective monitoring and control of project activities.

Product and Process

 Product is the final production phase in the project.
 Process refers to a set of sequence of steps that should be followed with the goal of creating a project.
 Product focuses on the final result. 
 Process focuses on completing every step involved in the project that is being developed.

Software Processes

The term software specifies to the set of computer programs, procedures and associated documents (Flowcharts, manuals, etc.) that describe the program and how they are to be used.

A software process is the set of activities and associated outcome that produce a software product. Software engineers mostly carry out these activities. These are four key process activities, which are common to all software processes. These activities are:

1.Software specifications:The functionality of the software and constraints on its operation must be defined.

2.Software development:The software to meet the requirement must be produced.

3.Software validation:The software must be validated to ensure that it does what the customer wants.

4.Software evolution:The software must evolve to meet changing client needs.

Product metrics

Product metrics are software product measures at any stage of their development, from requirements to established systems.Product metrics are related to software features only.

Product metrics fall into two classes:  


1.Dynamic metrics that are collected by measurements made from a program in execution.


2.Static metrics that are collected by measurements made from system representations such as design, programs, or documentation.


Dynamic metrics help in assessing the efficiency and reliability of a program while static metrics help in understanding and maintaining the complexity of a software system.

Generic and customized software

Generic software: is a ready-to-use solution that may be customized to fit the needs of a wide range of customers.

 Custom software: is a one-of-a-kind design created to fit a single client's unique requirements, depending on their budget and specifications.

Roles of management in software development

Software project management is an art and discipline of planning and supervising software projects. It is a sub-discipline of software project management in which software projects planned, implemented, monitored and controlled.

It is a procedure of managing, allocating and timing resources to develop computer software that fulfills requirements.

In software Project Management, the client and the developers need to know the length, period and cost of the project.

There are three needs for software project management. These are:

1.Time
2.Cost
3.Quality

In software development, management plays several important roles to ensure the successful execution of projects and the efficient utilization of resources. Here are some key roles of management in software development:

Project Planning and Coordination:Management is responsible for planning and coordinating software development projects. 

Team Management:Management oversees the software development team, including hiring and allocating resources, defining roles and responsibilities, and fostering a collaborative and productive work environment. 

Risk Management:Management identifies potential risks and develops strategies to mitigate them. This includes assessing technical, operational, and external risks that may impact the project's success. 

Budgeting and Resource Allocation:Management is responsible for budgeting software development projects, allocating resources, and tracking expenditures.

Stakeholder Communication:Management serves as a bridge between the software development team and stakeholders, such as clients, executives, and end-users.

Quality Assurance:Management is involved in ensuring the quality of software products. They establish quality standards, define testing methodologies, and oversee quality assurance processes to identify and resolve defects and bugs. 

Performance Evaluation:Management assesses the performance of the software development team and individuals through regular evaluations. 

Continuous Improvement:Management promotes a culture of continuous improvement within the software development team.

These roles collectively help management ensure that software development projects are executed efficiently, meet quality standards, and deliver value to stakeholders while effectively managing resources, risks, and timelines.

The Management Spectrum | 4 P’s in Software Project Planning

There are 4 critical components in software project planning which are known as the 4P’s namely:

Product

Process

People

Project 

Unit:1_Introduction_(_Software_Development_Third_Year_First_Parts_in_IT_Engineering_)

These components play a very important role in your project that can help your team meet its goals and objective. Now, Let’s dive into each of them a little in detail to get a better understanding:

  People  

The most important component of a product and its successful implementation is human resources. In building a proper product, a well-managed team with clear-cut roles defined for each person/team will lead to the success of the product. We need to have a good team in order to save our time, cost, and effort. Some assigned roles in software project planning are project manager, team leaders, stakeholders, analysts, and other IT professionals. Managing people successfully is a tricky process which a good project manager can do.  

Product  

As the name inferred, this is the deliverable or the result of the project. The project manager should clearly define the product scope to ensure a successful result, control the team members, as well technical hurdles that he or she may encounter during the building of a product. The product can consist of both tangible or intangible such as shifting the company to a new place or getting a new software in a company.

Process  

In every planning, a clearly defined process is the key to the success of any product. It regulates how the team will go about its development in the respective time period. The Process has several steps involved like, documentation phase, implementation phase, deployment phase, and interaction phase.

   Project  

The last and final P in software project planning is Project. It can also be considered as a blueprint of process. In this phase, the project manager plays a critical role. They are responsible to guide the team members to achieve the project’s target and objectives, helping & assisting them with issues, checking on cost and budget, and making sure that the project stays on track with the given deadlines.

Introduction to System

A system is a group of two or more related parts that interact over time to form a whole that has a purpose or function. It can be an interrelated set of business procedures used within one business unit, working together for some purpose. A system consists of interacting elements arranged in a manner that produces a unified whole. The different components of a system interrelate, and each contributes to a project’s goals and success.

Information System and its types 

An information system is a set of components that collect, process, store, and distribute information to support decision making and control in an organization. The main types of information systems are: 

Transaction Processing System: used to collect, modify and retrieve business transactions on demand. 

Management Information System: used to study the people, technology, organization, and the relationships between them.

Decision Support System:used to support problem solving and decision making. 

Expert System:used to emulate the knowledge and skills of human experts. 

Office Automation System:used to automate office tasks and improve productivity. 

Knowledge Management System:used to create, store, and share knowledge within an organization.

Role and attributes of system analyst

A systems analyst is an IT professional who works on a high level in an organization to ensure that systems, infrastructures and computer systems are functioning as effectively and efficiently as possible. System analysts carry the responsibilities of researching problems, finding solutions, recommending courses of actions and coordinating with stakeholders in order to meet specified requirements. They study the current system, procedures and business processes of a company and create action plans based on the requirements set.

Systems analysts need to be familiar with different operating systems, hardware configurations, programming languages, and software and hardware platforms. They can be involved starting from the analysis phase of the project until the post deployment assessment review.

The job’s responsibilities are as follows:

Communicate with customers and stakeholders to learn and document requirements in order to create a technical specification

Interact and coordinate with developers and implementers

Help perform system testing

Deploy the system

Help with technical documentation like manuals

 Deliberate over post-project assessment

Tools Used by System Analyst

System analysts use various tools to facilitate their work throughout the analysis, design, and implementation phases of a project. These tools help them gather requirements, model systems, communicate with stakeholders, and manage project-related tasks. Here are some common tools used by system analysts:

Requirements Gathering Tools:

Interviews and Surveys: Although not software tools, interviews and surveys are fundamental techniques for gathering requirements.

Requirement Management Software: Tools like Jira, Trello, or ReqView help manage and track requirements throughout the project lifecycle.

Prototyping Tools: Prototyping tools like Axure RP, Balsamiq, or Sketch allow system analysts to create interactive prototypes to gather feedback and validate requirements.

Modeling Tools:

Unified Modeling Language (UML) Tools: 

Software like Microsoft Visio, Lucidchart, or Enterprise Architect supports UML diagrams such as use case diagrams, class diagrams, sequence diagrams, and more.

Data Modeling Tools:

Tools like ER/Studio, Lucidchart, or IBM InfoSphere Data Architect assist in creating and managing data models, including entity-relationship diagrams (ERD).

Documentation Tools:

Word Processors: Microsoft Word, Google Docs, or LaTeX are commonly used for creating documentation such as requirement specifications, design documents, and user manuals.

Collaboration Platforms: Tools like Confluence or SharePoint facilitate collaborative documentation creation and version control.

Project Management Tools:

Project Management Software: Tools such as Microsoft Project, Asana, or Monday.com help system analysts plan, schedule, and track project tasks, milestones, and resources.

Issue Tracking Systems: Jira, Redmine, or Bugzilla assist in tracking and managing project issues, defects, and change requests.

Communication and Collaboration Tools:

Video Conferencing Tools: Platforms like Zoom, Microsoft Teams, or Google Meet facilitate remote meetings and collaboration with stakeholders.

Instant Messaging: Tools like Slack or Microsoft Teams provide real-time communication channels for team collaboration and quick discussions.

Version Control Systems:

Git: Version control systems like Git, along with platforms like GitHub or GitLab, help manage changes to project artifacts, code, and documentation.

Analysis and Design Tools:

Software Development Environments (IDEs): Tools like Visual Studio, Eclipse, or IntelliJ IDEA are used by system analysts for analyzing and designing software systems, especially in cases where they may need to delve into code or review software architecture. 

Testing Tools:

Test Management Software: Tools such as TestRail, QTest, or Zephyr help system analysts plan, execute, and track testing activities and test cases.

These tools help system analysts streamline their work processes, collaborate effectively with stakeholders and project teams, and ensure successful project outcomes.

Post a Comment

0 Comments