Recent Posts

Pages: [1] 2 3 ... 10
1
Software Engineering / Re: System Analysis and Design Tutorial
« Last post by Asif Khan Shakir on Today at 01:03:57 AM »
wc
2
Software Engineering / Code Simplicity
« Last post by Asif Khan Shakir on Today at 12:40:37 AM »
Kindness and Code
It is very easy to think of software development as being an entirely technical activity, where humans don’t really matter and everything is about the computer. However, the opposite is actually true.

Software engineering is fundamentally a human discipline.

Many of the mistakes made over the years in trying to fix software development have been made by focusing purely on the technical aspects of the system without thinking about the fact that it is human beings who write the code. When you see somebody who cares about optimization more than readability of code, when you see somebody who won’t write a comment but will spend all day tweaking their shell scripts to be fewer lines, when you have somebody who can’t communicate but worships small binaries, you’re seeing various symptoms of this problem.

In reality, software systems are written by people. They are read by people, modified by people, understood or not by people. They represent the mind of the developers that wrote them. They are the closest thing to a raw representation of thought that we have on Earth. They are not themselves human, alive, intelligent, emotional, evil, or good. It’s people that have those qualities. Software is used entirely and only to serve people. They are the product of people, and they are usually the product of a group of those people who had to work together, communicate, understand each other, and collaborate effectively. As such, there’s an important point to be made about working with a group of software engineers:

There is no value to being cruel to other people in the development community.

It doesn’t help to be rude to the people that you work with. It doesn’t help to angrily tell them that they are wrong and that they shouldn’t be doing what they are doing. It does help to make sure that the laws of software design are applied, and that people follow a good path in terms of making systems that can be easily read, understood, and maintained. It doesn’t require that you be cruel to do this, though. Sometimes you do have to tell people that they haven’t done the right thing. But you can just be matter of fact about it—you don’t have to get up in their face or attack them personally for it.

For example, let’s say somebody has written a bad piece of code. You have two ways you could comment on this:

“I can’t believe you think this is a good idea. Have you ever read a book on software design? Obviously you don’t do this.”

That’s the rude way—it’s an attack on the person themselves. Another way you could tell them what’s wrong is this:

“This line of code is hard to understand, and this looks like code duplication. Can you refactor this so that it’s clearer?”

In some ways, the key point here is that you’re commenting on the code, and not on the developer. But also, the key point is that you’re not being a jerk. I mean, come on. The first response is obviously rude. Does it make the person want to work with you, want to contribute more code, or want to get better? No. The second response, on the other hand, lets the person know that they’re taking a bad path and that you’re not going to let that bad code into the codebase.

The whole reason that you’re preventing that programmer from submitting bad code has to do with people in the first place. Either it’s about your users or it’s about the other developers who will have to read the system. Usually, it’s about both, since making a more maintainable system is done entirely so that you can keep on helping users effectively. But one way or another, your work as a software engineer has to do with people.

Yes, a lot of people are going to read the code and use the program, and the person whose code you’re reviewing is just one person. So it’s possible to think that you can sacrifice some kindness in the name of making this system good for everybody. Maybe you’re right. But why be rude or cruel when you don’t have to be? Why create that environment on your team that makes people scared of doing the wrong thing, instead of making them happy for doing the right thing?

This extends beyond just code reviews, too. Other software engineers have things to say. You should listen to them, whether you agree or not. Acknowledge their statements politely. Communicate your ideas to them in some constructive fashion.

And look, sometimes people get angry. Be understanding. Sometimes you’re going to get angry too, and you’d probably like your teammates to be understanding when you do.

This might all sound kind of airy-fairy, like some sort of unimportant psychobabble BS. But look. I’m not saying, “Everybody is always right! You should agree with everybody all the time! Don’t ever tell anybody that they are wrong! Nobody ever does anything bad!” No, people are frequently wrong and there are many bad things in the world and in software engineering that you have to say no to. The world is not a good place, always. It’s full of stupid people. Some of those stupid people are your co-workers. But even so, you’re not going to be doing anything effective by being rude to those stupid people. They don’t need your hatred—they need your compassion and your assistance. And most of your co-workers are probably not stupid people. They are probably intelligent, well-meaning individuals who sometimes make mistakes, just like you do. Give them the benefit of the doubt. Work with them, be kind, and make better software as a result.
3
Textile Engineering / Re: Lectures with board versus multimedia.
« Last post by Reza. on Yesterday at 11:14:44 PM »
Thank you.
4
Advances in of Natural Language Processing and Machine Learning are broadening the scope of what technology can do in people’s everyday lives, and because of this, there is an unprecedented number of people developing a curiosity in the fields. And with the availability of educational content online, it has never been easier to go from curiosity to proficiency.

We gathered some of our favorite resources together so you will have a jumping-off point into studying these fields on your own. Some of the resources here are suitable for absolute beginners in either Natural Language Processing or Machine Learning, and others are suitable for those with an understanding of one who wish to learn more about the other.

We’ve split these resources into two categories:

Online courses and textbooks for structured learning experiences and reference material
NLP and Machine Learning blogs to benefit from the work of some researchers and students who distill current advances in research into interesting and readable posts.
The resources on this post are 12 of the best, not the 12 best, and as such should be taken as suggestions on where to start learning without spending a cent, nothing more!

Read more at:
http://blog.aylien.com/12-of-the-best-free-natural-language-processing-and-machine-learning-educational-resources/
5
The words stakeholder and shareholder are often used loosely in business. The two words are commonly thought of as synonyms and are used interchangeably, but there are some key differences between them. These differences reveal how to appropriately manage stakeholders and shareholders in your organization.

For example, a shareholder is always a stakeholder in a corporation, but a stakeholder is not always a shareholder. The distinction lies in their relationship to the corporation and their priorities. Different priorities and levels of authority require different approaches in formality, communication and reporting.

It’s important that these terms are well-defined to avoid confusion. Even if you think you know what they mean, take a moment to refresh yourself.

What Is a Shareholder?
A shareholder is a person or an institution that owns shares or stock in a public or private operation. They are often referred to as members of a corporation, and they have a financial interest in the profitability of the organization or project.

Depending on the applicable laws and rules of the corporation or shareholders’ agreement, shareholders have the right to do the following (and more):

Sell their shares
Vote on those nominated for the board
Nominate directors
Vote on mergers and changes to the corporate charter
Receive dividends
Gain information on publicly traded companies
Sue for a violation of fiduciary duty
Buy new shares
Shareholders have a vested interest in the company or project. That interest is reflected in their desire to see an increase in share price and dividends, if the company is public. If they’re shareholders in a project, then their interests are tied to the project’s success.

The money that is invested in a company by shareholders can be withdrawn for a profit. It can even be invested in other organizations, some of which could be in competition with the other. Therefore, the shareholder is an owner of the company, but not necessarily with the company’s interests first.

What Is a Stakeholder?
We’ve written about what a stakeholder is before, and the definition still stands. A stakeholder can be either an individual, a group or an organization impacted by the outcome of a project. Therefore, they have an interest in the success of a project. They are either from the project group or an outside sponsor.

There are many people who can qualify as a stakeholder, such as:

Senior management
Project leaders
Team members on the project
Customers of the project
Resource managers
Line managers
User group for the project
Subcontractors on the project
Consultant for the project
Therefore, stakeholders can be internal, such as employees, shareholders and managers—but stakeholders can also be external. They are parties that are not directly in a relationship with the organization itself, but still the organization’s actions affect it, such as suppliers, vendors, creditors, the community and public groups. Basically, stakeholders are those who will be impacted by the project when in progress and those who will be impacted by the project when completed.

Stakeholders tend to have a long-term relationship with the organization. It’s not as easy to pull up stakes, so to speak, as it can be for shareholders. However, their relationship to the organization is tied up in ways that make the two reliant on one another. The success of the organization or project is just as critical, if not more so, for the stakeholder over the shareholder. Employees can lose their jobs, while suppliers could lose income.

To read more:
https://www.projectmanager.com/blog/stakeholder-vs-shareholder
6
Quality assurance activities are those actions the quality team takes to view the quality requirements, audit the results of control measurements and analyze quality performance in order to ensure that appropriate quality standards and procedures are appropriately implemented within the project.

The Quality Assurance Activities is an article of the Quality Management Section in the Project Implementation Guide. It describes the three kinds of the activities to help the project manager and the quality team to develop a quality assurance plan template, audit quality performance and review project activities, procedures and processes.

There are three key activities of quality assurance. They are Develop a Quality Assurance Plan and Analyze Project Quality. Let’s view each of the activities.

Develop a Quality Assurance Plan.
The first of the quality assurance activities is about planning the overall process for assuring quality. Its purpose is to design a quality assurance plan template (an efficient tool to assure quality in a project) and monitor problems and drawbacks that may appear during the project implementation process. The quality team needs to use such a plan to do the rest of the quality assurance activities, such Audit and Analysis.

The basic steps in creating a quality assurance plan template are:

Set up goals of project assurance (why to assure the project’s quality?)
Assign responsibilities to members of the quality team and determine the hierarchy of management (who will carry out the quality assurance activities?)
Gather relevant information on the project standards and define compliance criteria (how to make quality assurance?)
Identify a set of measurements and metrics to be used to determine quality levels and performance (is the project performed under appropriate quality levels?)

To read more:
https://mymanagementguide.com/quality-assurance-activities-planning-auditing-and-analyzing-project-quality/
7
Layered (n-tier) architecture
This approach is probably the most common because it is usually built around the database, and many applications in business naturally lend themselves to storing information in tables.

This is something of a self-fulfilling prophecy. Many of the biggest and best software frameworks—like Java EE, Drupal, and Express—were built with this structure in mind, so many of the applications built with them naturally come out in a layered architecture.

The code is arranged so the data enters the top layer and works its way down each layer until it reaches the bottom, which is usually a database. Along the way, each layer has a specific task, like checking the data for consistency or reformatting the values to keep them consistent. It’s common for different programmers to work independently on different layers.

The Model-View-Controller (MVC) structure, which is the standard software development approach offered by most of the popular web frameworks, is clearly a layered architecture. Just above the database is the model layer, which often contains business logic and information about the types of data in the database. At the top is the view layer, which is often CSS, JavaScript, and HTML with dynamic embedded code. In the middle, you have the controller, which has various rules and methods for transforming the data moving between the view and the model.

The advantage of a layered architecture is the separation of concerns, which means that each layer can focus solely on its role. This makes it:

Maintainable

Testable

Easy to assign separate "roles"

Easy to update and enhance layers separately

Proper layered architectures will have isolated layers that aren’t affected by certain changes in other layers, allowing for easier refactoring. This architecture can also contain additional open layers, like a service layer, that can be used to access shared services only in the business layer but also get bypassed for speed.

Slicing up the tasks and defining separate layers is the biggest challenge for the architect. When the requirements fit the pattern well, the layers will be easy to separate and assign to different programmers.

Caveats:

Source code can turn into a “big ball of mud” if it is unorganized and the modules don’t have clear roles or relationships.

Code can end up slow thanks to what some developers call the “sinkhole anti-pattern.” Much of the code can be devoted to passing data through layers without using any logic.

Layer isolation, which is an important goal for the architecture, can also make it hard to understand the architecture without understanding every module.

Coders can skip past layers to create tight coupling and produce a logical mess full of complex interdependencies.

Monolithic deployment is often unavoidable, which means small changes can require a complete redeployment of the application.

To read more:
https://techbeacon.com/app-dev-testing/top-5-software-architecture-patterns-how-make-right-choice
8
Requirements Engineering / How to Write Software Requirements
« Last post by s.arman on Yesterday at 12:23:04 PM »
Why Write Good Quality Software Requirements?
Writing software requirements will help capture even the smallest details of the customer needs.
Capturing every details of requirements will help dev achieve great code coverage which will lead to lesser bugs.
Will help the dev in understanding the  business rules better.
Stake holders can give early feedback on what they intend to see with the software.

Process of Writing Good Software Requirements
In Agile software models, customer requirements are more commonly referred to as User Stories. A good user story should contain the following information.

Who the requirement is for
What output will the user expect to see?
What actions will bring about the output?
User stories can also include ‘conditions of satisfaction’. These terms elaborate the user stories with much more clarity and detail.

Since the Agile software model was created, Mike Cohn, the co-founder of Scrum methodology, proposed a template to write an effective software requirement using the Keywords As, When and Then. The template will look like:

As <user> when < this action happens> then <this will be the output>

For more details:
https://blog.testlodge.com/how-to-write-software-requirements/
9
Artificial Intelligence / How Artificial Intelligence Is Changing Science
« Last post by s.arman on Yesterday at 12:54:25 AM »
No human, or team of humans, could possibly keep up with the avalanche of information produced by many of today’s physics and astronomy experiments. Some of them record terabytes of data every day — and the torrent is only increasing. The Square Kilometer Array, a radio telescope slated to switch on in the mid-2020s, will generate about as much data traffic each year as the entire internet.

The deluge has many scientists turning to artificial intelligence for help. With minimal human input, AI systems such as artificial neural networks — computer-simulated networks of neurons that mimic the function of brains — can plow through mountains of data, highlighting anomalies and detecting patterns that humans could never have spotted.

Of course, the use of computers to aid in scientific research goes back about 75 years, and the method of manually poring over data in search of meaningful patterns originated millennia earlier. But some scientists are arguing that the latest techniques in machine learning and AI represent a fundamentally new way of doing science. One such approach, known as generative modeling, can help identify the most plausible theory among competing explanations for observational data, based solely on the data, and, importantly, without any preprogrammed knowledge of what physical processes might be at work in the system under study. Proponents of generative modeling see it as novel enough to be considered a potential “third way” of learning about the universe.

For more please visit:
https://www.quantamagazine.org/how-artificial-intelligence-is-changing-science-20190311/
10
Cloud computing is quickly becoming the standard way for technology companies to access IT infrastructure, software and hardware resources. The technology enables companies to be able to use applications and other resources managed by third party companies that are stored in high-end server computers and networks. Cloud computing systems are mainly set up for business or research purposes. In this article, we explore the different types of cloud computing solutions.

Cloud computing helps businesses to be more efficient and save on software and hardware that are important for different operations. The definition of cloud computing varies depending on your source but what is generally agreed is that it involves access of software or hardware that are in the “cloud” i.e. use of software or hardware remotely. If your company is using specialized applications where you did not have to set up server or buy hardware or software to run them, then you are probably using a cloud application.

Companies can use cloud computing to increase their IT functionality or capacity without having to add software, personnel, invest in additional training or set up new infrastructure. Below are the major types of cloud computing:

1. Infrastructure as a Service (IaaS)
IaaS is the lowest level of cloud solution and refers to cloud-based computing infrastructure as a fully-outsourced service. An IaaS provider will deliver pre-installed and configured hardware or software through a virtualized interface. What the customers accessing the cloud services do with the service is up to them. Examples of IaaS offerings are managed hosting and development environments.
Your web hosting company is an IaaS provider. Some of the major players offering infrastructure as a service solution include Google, IBM, Rackspace Cloud Servers, Amazon EC2 and Verizon.

Benefits of IaaS Solutions
Reduces total cost of ownership and capital expenditures
Users pay for the service that they want, on the go
Access to enterprise-grade IT resources and infrastructure
Users can scale up and down based on their requirements at any time

To read more:
https://www.chargebee.com/blog/understanding-types-cloud-computing/
Pages: [1] 2 3 ... 10